nextclaw 0.17.1 → 0.17.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 (69) hide show
  1. package/dist/cli/index.js +394 -194
  2. package/package.json +10 -10
  3. package/resources/USAGE.md +48 -30
  4. package/ui-dist/assets/ChannelsList-uKmkpD25.js +8 -0
  5. package/ui-dist/assets/ChatPage-CslhBPfT.js +43 -0
  6. package/ui-dist/assets/{DocBrowser-DxdSujSc.js → DocBrowser-C7-1sXqo.js} +1 -1
  7. package/ui-dist/assets/DocBrowser-DQjtSsY3.js +1 -0
  8. package/ui-dist/assets/{DocBrowserContext-CQ-8jMha.js → DocBrowserContext-DN5tjUoS.js} +1 -1
  9. package/ui-dist/assets/{LogoBadge-D-KQIN4U.js → LogoBadge-DDS1sU_U.js} +1 -1
  10. package/ui-dist/assets/MarketplacePage-BZQW70ti.js +1 -0
  11. package/ui-dist/assets/{MarketplacePage-CNeXwz7q.js → MarketplacePage-DE0QjYVv.js} +1 -1
  12. package/ui-dist/assets/{McpMarketplacePage-BGv2wwuk.js → McpMarketplacePage-CeLvv1xy.js} +1 -1
  13. package/ui-dist/assets/ModelConfig-D1JtGtQv.js +1 -0
  14. package/ui-dist/assets/ProviderScopedModelInput-SAJH6nkC.js +1 -0
  15. package/ui-dist/assets/{ProvidersList-BXeGOw0M.js → ProvidersList-1rKi3aQT.js} +1 -1
  16. package/ui-dist/assets/{RemoteAccessPage-vlBOKnMP.js → RemoteAccessPage-bIAKxDky.js} +1 -1
  17. package/ui-dist/assets/RuntimeConfig-BTk9319O.js +1 -0
  18. package/ui-dist/assets/SearchConfig-EjeszXbv.js +1 -0
  19. package/ui-dist/assets/{SecretsConfig-Jduzy42Q.js → SecretsConfig-cnAXvREZ.js} +1 -1
  20. package/ui-dist/assets/{SessionsConfig-CIwqHwvE.js → SessionsConfig-BIXiDaK2.js} +1 -1
  21. package/ui-dist/assets/{book-open-FnK2xCQd.js → book-open-DvWqOode.js} +1 -1
  22. package/ui-dist/assets/chat-session-display-D4bYa0b8.js +1 -0
  23. package/ui-dist/assets/{chunk-JZWAC4HX-B5l0hr_u.js → chunk-JZWAC4HX-CxfKRD7X.js} +1 -1
  24. package/ui-dist/assets/{config-JKmXfZ3q.js → config-BeGwf2Ao.js} +1 -1
  25. package/ui-dist/assets/{createLucideIcon-o1WWhwhd.js → createLucideIcon-C7MmdIX3.js} +1 -1
  26. package/ui-dist/assets/{dist-C_moWYv7.js → dist-B6VMuIQN.js} +1 -1
  27. package/ui-dist/assets/{dist-DazA6Wd_.js → dist-RWNFhxvR.js} +1 -1
  28. package/ui-dist/assets/{external-link-BKje3SiD.js → external-link-U86Acd1t.js} +1 -1
  29. package/ui-dist/assets/{hash-DfW4DT8O.js → hash-D-OVfV3Z.js} +1 -1
  30. package/ui-dist/assets/i18n-hM3v-3YG.js +1 -0
  31. package/ui-dist/assets/{index-BuTtTFjM.js → index-8XNPYwJu.js} +3 -3
  32. package/ui-dist/assets/index-CpxuJa9o.css +1 -0
  33. package/ui-dist/assets/{label-BzDWmdOe.js → label-CHJ1ATds.js} +1 -1
  34. package/ui-dist/assets/loader-circle-C8cpaL0w.js +1 -0
  35. package/ui-dist/assets/{logos-CTLlde_T.js → logos-U1_qDA3U.js} +1 -1
  36. package/ui-dist/assets/{page-layout-BagR3t59.js → page-layout-Z1klaUFW.js} +1 -1
  37. package/ui-dist/assets/plus-CrkO1kob.js +1 -0
  38. package/ui-dist/assets/{popover-5DWhNfd4.js → popover-xWbqMnIN.js} +1 -1
  39. package/ui-dist/assets/{react-C3yu5yge.js → react-3YE87-lE.js} +1 -1
  40. package/ui-dist/assets/{refresh-ccw-BAJf-h7w.js → refresh-ccw-JQh1lwq-.js} +1 -1
  41. package/ui-dist/assets/{save-aa6z4GJL.js → save-4VRlzkii.js} +1 -1
  42. package/ui-dist/assets/search-EX-Papzl.js +1 -0
  43. package/ui-dist/assets/{security-config-BrmOzvpp.js → security-config-CGazBahs.js} +1 -1
  44. package/ui-dist/assets/{select-BHJPiJWt.js → select-DF-AUoie.js} +1 -1
  45. package/ui-dist/assets/skeleton-B0mmt1vo.js +1 -0
  46. package/ui-dist/assets/{status-dot-DUwsTIdv.js → status-dot-Bq_8Ojvv.js} +1 -1
  47. package/ui-dist/assets/{switch-B6nCfcOB.js → switch-D7JF_RZ-.js} +1 -1
  48. package/ui-dist/assets/{tabs-custom-B57SMElx.js → tabs-custom-CLksZ2bO.js} +1 -1
  49. package/ui-dist/assets/{trash-2-CrjYH5ok.js → trash-2-VV8jvziy.js} +1 -1
  50. package/ui-dist/assets/{useConfirmDialog-RlLbo0NU.js → useConfirmDialog-D6HxybcM.js} +1 -1
  51. package/ui-dist/assets/{useMutation-oTTWXgLG.js → useMutation-DBTWPbTg.js} +1 -1
  52. package/ui-dist/assets/x-B4sxJkGY.js +1 -0
  53. package/ui-dist/index.html +18 -18
  54. package/ui-dist/assets/ChannelsList-BXuFNDBh.js +0 -8
  55. package/ui-dist/assets/ChatPage-CEuFBJgC.js +0 -43
  56. package/ui-dist/assets/DocBrowser-C8b2uPgL.js +0 -1
  57. package/ui-dist/assets/MarketplacePage-BGPF2sDu.js +0 -1
  58. package/ui-dist/assets/ModelConfig-CoNm556G.js +0 -1
  59. package/ui-dist/assets/RuntimeConfig-CEkrhzg7.js +0 -1
  60. package/ui-dist/assets/SearchConfig-BK0dn4Zp.js +0 -1
  61. package/ui-dist/assets/chat-session-display-BD_AN71I.js +0 -1
  62. package/ui-dist/assets/i18n-BK1w-oBy.js +0 -1
  63. package/ui-dist/assets/index-DaR9igPC.css +0 -1
  64. package/ui-dist/assets/loader-circle-DdZPxBUz.js +0 -1
  65. package/ui-dist/assets/plus-DP2PSCPO.js +0 -1
  66. package/ui-dist/assets/provider-models-DJ29qHuA.js +0 -1
  67. package/ui-dist/assets/search-pD6ZwQYF.js +0 -1
  68. package/ui-dist/assets/skeleton-D6kCk9Y6.js +0 -1
  69. package/ui-dist/assets/x-CTIQHUuD.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nextclaw",
3
- "version": "0.17.1",
3
+ "version": "0.17.3",
4
4
  "description": "Lightweight personal AI assistant with CLI, multi-provider routing, and channel integrations.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -40,16 +40,16 @@
40
40
  "chokidar": "^3.6.0",
41
41
  "commander": "^12.1.0",
42
42
  "yaml": "^2.8.1",
43
- "@nextclaw/core": "0.12.0",
43
+ "@nextclaw/ncp-mcp": "0.1.69",
44
+ "@nextclaw/ncp-toolkit": "0.5.2",
45
+ "@nextclaw/mcp": "0.1.67",
46
+ "@nextclaw/core": "0.12.2",
47
+ "@nextclaw/openclaw-compat": "1.0.2",
44
48
  "@nextclaw/ncp-agent-runtime": "0.3.7",
45
49
  "@nextclaw/ncp": "0.5.0",
46
- "@nextclaw/mcp": "0.1.65",
47
- "@nextclaw/ncp-mcp": "0.1.67",
48
- "@nextclaw/openclaw-compat": "1.0.0",
49
- "@nextclaw/ncp-toolkit": "0.5.0",
50
- "@nextclaw/runtime": "0.2.32",
51
- "@nextclaw/server": "0.12.0",
52
- "@nextclaw/remote": "0.1.77"
50
+ "@nextclaw/server": "0.12.2",
51
+ "@nextclaw/remote": "0.1.79",
52
+ "@nextclaw/runtime": "0.2.34"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@types/node": "^20.17.6",
@@ -57,7 +57,7 @@
57
57
  "tsx": "^4.19.2",
58
58
  "typescript": "^5.6.3",
59
59
  "vitest": "^4.1.2",
60
- "@nextclaw/ui": "0.12.0"
60
+ "@nextclaw/ui": "0.12.2"
61
61
  },
62
62
  "scripts": {
63
63
  "dev": "tsx watch --tsconfig tsconfig.json src/cli/index.ts",
@@ -211,7 +211,6 @@ Use one of these two entry points instead:
211
211
 
212
212
  - `bindings`: route inbound messages by `channel + accountId (+peer)` to a target `agentId`
213
213
  - `session.dmScope`: DM isolation strategy (`main` / `per-peer` / `per-channel-peer` / `per-account-channel-peer`)
214
- - `session.agentToAgent.maxPingPongTurns`: cap cross-agent ping-pong loops (`0` means block auto ping-pong)
215
214
 
216
215
  > ⚠️ **Strict enum guard (OpenClaw-aligned):** `session.dmScope` accepts **only** these 4 values: `main`, `per-peer`, `per-channel-peer`, `per-account-channel-peer`.
217
216
  > Any other value (for example `per-account-channel-peer-agent`) is invalid and must not be written.
@@ -233,8 +232,7 @@ Example:
233
232
  }
234
233
  ],
235
234
  "session": {
236
- "dmScope": "per-account-channel-peer",
237
- "agentToAgent": { "maxPingPongTurns": 0 }
235
+ "dmScope": "per-account-channel-peer"
238
236
  }
239
237
  }
240
238
  ```
@@ -245,7 +243,6 @@ CLI equivalents:
245
243
  nextclaw agents new engineer --json
246
244
  nextclaw config set bindings '[{"agentId":"engineer","match":{"channel":"discord","accountId":"zongzhihui"}}]' --json
247
245
  nextclaw config set session.dmScope '"per-account-channel-peer"' --json
248
- nextclaw config set session.agentToAgent.maxPingPongTurns 0 --json
249
246
  ```
250
247
 
251
248
  ### Multi-agent collaboration playbook (recommended)
@@ -256,7 +253,6 @@ Use this baseline for predictable team-style collaboration:
256
253
  2. Create specialist agents through the `Agents` page or `nextclaw agents new` (for example `engineer`, `ops`, `support`).
257
254
  3. Route stable traffic classes with `bindings` (channel/account/peer based).
258
255
  4. Use `session.dmScope="per-account-channel-peer"` for multi-account + multi-channel isolation.
259
- 5. Set `session.agentToAgent.maxPingPongTurns=0` first, then increase only when you explicitly want cross-agent relay.
260
256
 
261
257
  Suggested role split:
262
258
 
@@ -330,7 +326,6 @@ nextclaw config set channels.discord.groupAllowFrom '["dev-room"]' --json
330
326
  2. Add at least one binding and verify inbound messages hit the expected role.
331
327
  3. Verify DM isolation across user/channel/account boundaries under the selected `dmScope`.
332
328
  4. If Discord/Telegram group collaboration is enabled, verify mention gating (`requireMention` / `mentionPatterns`) behavior.
333
- 5. Verify auto ping-pong policy with `session.agentToAgent.maxPingPongTurns` (set `0` to block).
334
329
 
335
330
  Pass criteria: stable routing, no cross-session context leakage, predictable group triggering, explainable fallback behavior.
336
331
 
@@ -468,6 +463,7 @@ Skill loading contract:
468
463
  | `nextclaw init` | Initialize workspace and template files |
469
464
  | `nextclaw init --force` | Re-run init and overwrite templates |
470
465
  | `nextclaw agents list` | List built-in and created agents |
466
+ | `nextclaw agents runtimes` | List installed agent runtimes (`--json`, `--probe`) |
471
467
  | `nextclaw agents new <agent-id>` | Create a new agent with default home/template/avatar |
472
468
  | `nextclaw agents update <agent-id>` | Update an existing agent's display metadata |
473
469
  | `nextclaw agents remove <agent-id>` | Remove an extra agent (built-in `main` cannot be removed) |
@@ -504,26 +500,34 @@ Skill loading contract:
504
500
 
505
501
  Agent management notes:
506
502
 
503
+ - `nextclaw agents runtimes` accepts:
504
+ - `--json`
505
+ - `--probe` to actively check runtime readiness instead of only reporting lightweight observations
507
506
  - `nextclaw agents new <agent-id>` accepts:
508
507
  - `--name <display-name>`
509
508
  - `--description <description>`
510
509
  - `--avatar <http-url-or-local-file>`
511
510
  - `--home <path>`
511
+ - `--runtime <runtime-kind>`
512
512
  - `--json`
513
513
  - `nextclaw agents update <agent-id>` accepts:
514
514
  - `--name <display-name>`
515
515
  - `--description <description>`
516
516
  - `--avatar <http-url-or-local-file>`
517
+ - `--runtime <runtime-kind>`
517
518
  - `--json`
519
+ - `runtime` defaults to `native`.
520
+ - Use `nextclaw agents runtimes --json` before setting a non-default `runtime`; it returns the actual installed runtime kinds instead of requiring guesswork.
521
+ - The same runtime kinds are also what NCP `spawn` / `sessions_spawn` expect in their optional `runtime` field.
518
522
  - `nextclaw agents update` allows updating the built-in `main` agent.
519
523
  - For `nextclaw agents update`, passing an empty string to `--name`, `--description`, or `--avatar` clears the stored override for that field.
520
524
  - If `--avatar` is a local file path, NextClaw copies it into the Agent Home Directory and stores it as `home://avatar.<ext>`.
521
525
  - If `--avatar` is omitted, NextClaw generates a local default `avatar.svg`.
522
- - `nextclaw agents new/update/remove --json` returns machine-readable output plus `restartRequired: true`.
526
+ - `nextclaw agents new/update/remove --json` returns machine-readable output with the resulting Agent payload.
523
527
 
524
- ### Agent creation flow for AI self-management
528
+ ### Agent CRUD flow for AI self-management
525
529
 
526
- When NextClaw AI is asked to create a new Agent, use this exact flow instead of inventing config edits:
530
+ When NextClaw AI is asked to create, update, or remove an Agent, use this exact flow instead of inventing config edits:
527
531
 
528
532
  1. Inspect current agents when needed:
529
533
 
@@ -531,22 +535,24 @@ When NextClaw AI is asked to create a new Agent, use this exact flow instead of
531
535
  nextclaw agents list --json
532
536
  ```
533
537
 
534
- 2. Create the new Agent through the dedicated command:
538
+ 2. If you plan to set a non-default runtime, inspect installed runtime kinds first:
535
539
 
536
540
  ```bash
537
- nextclaw agents new <agent-id> --json [--name <display-name>] [--description <description>] [--avatar <url-or-local-file>] [--home <path>]
541
+ nextclaw agents runtimes --json
538
542
  ```
539
543
 
540
- 3. Treat the JSON output as the source of truth:
541
- - `agent`: created Agent profile
542
- - `restartRequired: true`: runtime changes still need a restart to apply
543
-
544
- 4. If the service is currently running, restart explicitly after creation:
544
+ 3. Execute the dedicated command instead of editing config directly:
545
545
 
546
546
  ```bash
547
- nextclaw restart
547
+ nextclaw agents new <agent-id> --json [--name <display-name>] [--description <description>] [--avatar <url-or-local-file>] [--home <path>] [--runtime <runtime-kind>]
548
+ nextclaw agents update <agent-id> --json [--name <display-name>] [--description <description>] [--avatar <url-or-local-file>] [--runtime <runtime-kind>]
549
+ nextclaw agents remove <agent-id> --json
548
550
  ```
549
551
 
552
+ 4. Treat the JSON output as the source of truth:
553
+ - `agent`: created or updated Agent profile
554
+ - `removed` + `agentId`: removal result
555
+
550
556
  5. Close the loop:
551
557
 
552
558
  ```bash
@@ -554,25 +560,31 @@ When NextClaw AI is asked to create a new Agent, use this exact flow instead of
554
560
  nextclaw status --json
555
561
  ```
556
562
 
563
+ 6. Do not invent a restart step for normal Agent CRUD. Running services hot-apply `agents.list` changes through config reload, and subsequent requests should observe the updated Agent state directly.
564
+
557
565
  Rules:
558
566
 
559
- - Do not try to create the built-in `main` agent.
560
- - Prefer `nextclaw agents update` over direct `config.json` edits when changing Agent name / description / avatar.
561
- - Prefer `nextclaw agents new` over direct `config.json` edits for normal Agent creation.
562
- - If the user asked AI to create the Agent, AI should run the command, not only describe it.
567
+ - Do not try to create or remove the built-in `main` agent. `nextclaw agents update main` is allowed.
568
+ - For normal Agent management, prefer `nextclaw agents list|new|update|remove --json` over direct `config.json` or `agents.list` edits.
569
+ - For runtime discovery, prefer `nextclaw agents runtimes --json` over guessing enum values from memory or stale examples.
570
+ - Direct `config.json` / `agents.list` edits are recovery-only: use them only for explicit operator-led disaster recovery, or when a documented CLI path still cannot express the requested change.
571
+ - Humans should use the `Agents` page or the CLI for Agent identities. `Routing & Runtime` is not the identity-management entry point.
572
+ - If the user asked AI to perform Agent CRUD, AI should run the command, not only describe it.
563
573
  - Avatar guidance for AI-created agents:
564
- - If the user did not explicitly provide an avatar, AI may prefer passing a remote avatar URL from a deterministic avatar service to improve the default UI experience.
565
- - Default suggestion: if third-party avatar URLs are acceptable and the user did not express a preference, prefer a deterministic service such as DiceBear.
566
- - When using DiceBear or a similar service, prefer a stable seed derived from `agent-id` (or display name) so repeated creation yields a predictable identity instead of a different avatar every time.
574
+ - When AI creates an Agent, prefer passing an explicit `--avatar` instead of relying on the generated fallback.
575
+ - Prefer non-text avatars for long-lived Agent identities; avoid letter-based or initials-based avatar styles as the default recommendation.
576
+ - DiceBear `initials` is a text-based avatar style and should not be the default recommendation for Agents.
577
+ - If you use DiceBear or a similar deterministic service, prefer a non-text style with a stable seed derived from `agent-id` (or display name) so repeated creation yields a predictable identity.
567
578
  - Concrete example:
568
579
 
569
580
  ```bash
570
- nextclaw agents new researcher --json --name "Researcher" --avatar "https://api.dicebear.com/9.x/initials/svg?seed=researcher"
581
+ nextclaw agents new researcher --json --name "Researcher" --avatar "https://api.dicebear.com/9.x/identicon/svg?seed=researcher"
571
582
  ```
572
583
 
573
584
  - If you want a different stable avatar, keep the same URL pattern but replace the seed with the final `agent-id` or display name.
574
- - Example providers may change over time; treat DiceBear as an explicit recommendation for now, but still as a replaceable suggestion rather than a built-in product dependency or a hardcoded runtime rule.
575
- - If the user prefers local-only assets, offline behavior, or does not want third-party avatar URLs, omit `--avatar` and let NextClaw generate the local fallback `avatar.svg`.
585
+ - Example providers may change over time; treat DiceBear as a replaceable suggestion rather than a built-in product dependency or a hardcoded runtime rule.
586
+ - If the user prefers local-only assets, offline behavior, or does not want third-party avatar URLs, prefer passing a local image file path with `--avatar`.
587
+ - Omit `--avatar` only as a last-resort fallback. The generated local `avatar.svg` is acceptable as a fallback, but it is not the preferred default for AI-created Agents.
576
588
 
577
589
  Gateway options (when running `nextclaw gateway` or `nextclaw start`):
578
590
 
@@ -925,14 +937,15 @@ After changing channel config, NextClaw hot-reloads channel runtime automaticall
925
937
 
926
938
  ## Tools
927
939
 
928
- ### Web search (Bocha default, Brave optional)
940
+ ### Web search (Bocha default, Tavily and Brave optional)
929
941
 
930
- Configure the active search provider under `search`. Bocha is the default and is recommended for mainland China users:
942
+ Configure the active search provider under `search`. Bocha is the default and is recommended for mainland China users. Tavily is a good fit for research-heavy tasks when you want configurable retrieval depth and optional synthesized answers:
931
943
 
932
944
  ```json
933
945
  {
934
946
  "search": {
935
- "provider": "bocha",
947
+ "provider": "tavily",
948
+ "enabledProviders": ["bocha", "tavily"],
936
949
  "defaults": {
937
950
  "maxResults": 10
938
951
  },
@@ -942,6 +955,11 @@ Configure the active search provider under `search`. Bocha is the default and is
942
955
  "summary": true,
943
956
  "freshness": "noLimit"
944
957
  },
958
+ "tavily": {
959
+ "apiKey": "YOUR_TAVILY_KEY",
960
+ "searchDepth": "advanced",
961
+ "includeAnswer": true
962
+ },
945
963
  "brave": {
946
964
  "apiKey": "YOUR_BRAVE_KEY"
947
965
  }
@@ -0,0 +1,8 @@
1
+ import{_ as e,h as t,i as n,m as r,n as i,o as a,p as o,u as s}from"./i18n-hM3v-3YG.js";import{n as c,o as l,r as u,u as d}from"./dist-RWNFhxvR.js";import{t as f}from"./useMutation-DBTWPbTg.js";import{O as p,a as m,i as h,n as g,r as _,t as v}from"./select-DF-AUoie.js";import{t as y}from"./createLucideIcon-C7MmdIX3.js";import{t as b}from"./book-open-DvWqOode.js";import{t as x}from"./external-link-U86Acd1t.js";import{n as S,t as C}from"./logos-U1_qDA3U.js";import{t as w}from"./hash-D-OVfV3Z.js";import{t as T}from"./loader-circle-C8cpaL0w.js";import{t as E}from"./search-EX-Papzl.js";import{t as D}from"./x-B4sxJkGY.js";import{E as ee,W as O,c as k,dt as A,g as te,l as j,lt as M,mt as N,u as ne}from"./index-8XNPYwJu.js";import{t as re}from"./LogoBadge-DDS1sU_U.js";import{t as P}from"./label-CHJ1ATds.js";import{n as F,t as I}from"./page-layout-Z1klaUFW.js";import{t as L}from"./tabs-custom-CLksZ2bO.js";import{t as R}from"./status-dot-Bq_8Ojvv.js";import{t as z}from"./config-hints-WtpHP_DW.js";import{i as B,n as ie,r as ae,t as oe}from"./config-layout-LQ10ozRC.js";import{t as se}from"./switch-D7JF_RZ-.js";var ce=y(`Mail`,[[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}]]),le=y(`MessageCircleMore`,[[`path`,{d:`M7.9 20A9 9 0 1 0 4 16.1L2 22Z`,key:`vv11sd`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}]]),V=y(`QrCode`,[[`rect`,{width:`5`,height:`5`,x:`3`,y:`3`,rx:`1`,key:`1tu5fj`}],[`rect`,{width:`5`,height:`5`,x:`16`,y:`3`,rx:`1`,key:`1v8r4q`}],[`rect`,{width:`5`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`1x03jg`}],[`path`,{d:`M21 16h-3a2 2 0 0 0-2 2v3`,key:`177gqh`}],[`path`,{d:`M21 21v.01`,key:`ents32`}],[`path`,{d:`M12 7v3a2 2 0 0 1-2 2H7`,key:`8crl2c`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M12 3h.01`,key:`n36tog`}],[`path`,{d:`M12 16v.01`,key:`133mhm`}],[`path`,{d:`M16 12h1`,key:`1slzba`}],[`path`,{d:`M21 12v.01`,key:`1lwtk9`}],[`path`,{d:`M12 21v-1`,key:`1880an`}]]),ue=y(`ToggleLeft`,[[`rect`,{width:`20`,height:`12`,x:`2`,y:`6`,rx:`6`,ry:`6`,key:`f2vt7d`}],[`circle`,{cx:`8`,cy:`12`,r:`2`,key:`1nvbw3`}]]),H=e(r(),1);function U(e){let t=a();return e.tutorialUrls?.[t]||e.tutorialUrls?.default||e.tutorialUrl}var W=o();function de({value:e,onChange:t,className:r,placeholder:i=``}){let[a,o]=(0,H.useState)(``),c=n=>{n.key===`Enter`&&a.trim()?(n.preventDefault(),t([...e,a.trim()]),o(``)):n.key===`Backspace`&&!a&&e.length>0&&t(e.slice(0,-1))},l=n=>{t(e.filter((e,t)=>t!==n))};return(0,W.jsxs)(`div`,{className:s(`flex flex-wrap gap-2 p-2 border rounded-md min-h-[42px]`,r),children:[e.map((e,t)=>(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-1 bg-primary text-primary-foreground rounded text-sm`,children:[e,(0,W.jsx)(`button`,{type:`button`,onClick:()=>l(t),className:`hover:text-red-300 transition-colors`,children:(0,W.jsx)(D,{className:`h-3 w-3`})})]},t)),(0,W.jsx)(`input`,{type:`text`,value:a,onChange:e=>o(e.target.value),onKeyDown:c,className:`flex-1 outline-none min-w-[100px] bg-transparent text-sm`,placeholder:i||n(`enterTag`)})]})}function fe(e){return e.includes(`token`)||e.includes(`secret`)||e.includes(`password`)?(0,W.jsx)(N,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`url`)||e.includes(`host`)?(0,W.jsx)(S,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`email`)||e.includes(`mail`)?(0,W.jsx)(ce,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`id`)||e.includes(`from`)?(0,W.jsx)(w,{className:`h-3.5 w-3.5 text-gray-500`}):e===`enabled`||e===`consentGranted`?(0,W.jsx)(ue,{className:`h-3.5 w-3.5 text-gray-500`}):(0,W.jsx)(M,{className:`h-3.5 w-3.5 text-gray-500`})}function G({channelName:e,fields:t,formData:r,jsonDrafts:i,setJsonDrafts:a,updateField:o,uiHints:s}){return(0,W.jsx)(W.Fragment,{children:t.map(t=>{let c=z(`channels.${e}.${t.name}`,s),l=c?.label??t.label,u=c?.placeholder;return(0,W.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,W.jsxs)(P,{htmlFor:t.name,className:`flex items-center gap-2 text-sm font-medium text-gray-900`,children:[fe(t.name),l]}),t.type===`boolean`&&(0,W.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl bg-gray-50 p-3`,children:[(0,W.jsx)(`span`,{className:`text-sm text-gray-500`,children:r[t.name]?n(`enabled`):n(`disabled`)}),(0,W.jsx)(se,{id:t.name,checked:r[t.name]||!1,onCheckedChange:e=>o(t.name,e),className:`data-[state=checked]:bg-emerald-500`})]}),(t.type===`text`||t.type===`email`)&&(0,W.jsx)(O,{id:t.name,type:t.type,value:r[t.name]||``,onChange:e=>o(t.name,e.target.value),placeholder:u,className:`rounded-xl`}),t.type===`password`&&(0,W.jsx)(O,{id:t.name,type:`password`,value:r[t.name]||``,onChange:e=>o(t.name,e.target.value),placeholder:u??n(`leaveBlankToKeepUnchanged`),className:`rounded-xl`}),t.type===`number`&&(0,W.jsx)(O,{id:t.name,type:`number`,value:r[t.name]||0,onChange:e=>o(t.name,parseInt(e.target.value,10)||0),placeholder:u,className:`rounded-xl`}),t.type===`tags`&&(0,W.jsx)(de,{value:r[t.name]||[],onChange:e=>o(t.name,e)}),t.type===`select`&&(0,W.jsxs)(v,{value:r[t.name]||``,onValueChange:e=>o(t.name,e),children:[(0,W.jsx)(h,{className:`rounded-xl`,children:(0,W.jsx)(m,{})}),(0,W.jsx)(g,{children:(t.options??[]).map(e=>(0,W.jsx)(_,{value:e.value,children:e.label},e.value))})]}),t.type===`json`&&(0,W.jsx)(`textarea`,{id:t.name,value:i[t.name]??`{}`,onChange:e=>a(n=>({...n,[t.name]:e.target.value})),className:`min-h-[120px] w-full resize-none rounded-lg border border-gray-200 bg-white px-3 py-2 text-xs font-mono`})]},t.name)})})}var K=[{value:`pairing`,label:`pairing`},{value:`allowlist`,label:`allowlist`},{value:`open`,label:`open`},{value:`disabled`,label:`disabled`}],q=[{value:`open`,label:`open`},{value:`allowlist`,label:`allowlist`},{value:`disabled`,label:`disabled`}],pe=[{value:`off`,label:`off`},{value:`partial`,label:`partial`},{value:`block`,label:`block`},{value:`progress`,label:`progress`}];function me(){return{telegram:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`token`,type:`password`,label:n(`botToken`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`proxy`,type:`text`,label:n(`proxy`)},{name:`accountId`,type:`text`,label:n(`accountId`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:K},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:q},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)}]},discord:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`token`,type:`password`,label:n(`botToken`)},{name:`allowBots`,type:`boolean`,label:n(`allowBotMessages`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`gatewayUrl`,type:`text`,label:n(`gatewayUrl`)},{name:`intents`,type:`number`,label:n(`intents`)},{name:`proxy`,type:`text`,label:n(`proxy`)},{name:`mediaMaxMb`,type:`number`,label:n(`attachmentMaxSizeMb`)},{name:`streaming`,type:`select`,label:n(`streamingMode`),options:pe},{name:`draftChunk`,type:`json`,label:n(`draftChunkingJson`)},{name:`textChunkLimit`,type:`number`,label:n(`textChunkLimit`)},{name:`accountId`,type:`text`,label:n(`accountId`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:K},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:q},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)}]},whatsapp:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`bridgeUrl`,type:`text`,label:n(`bridgeUrl`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},feishu:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`appId`,type:`text`,label:n(`appId`)},{name:`appSecret`,type:`password`,label:n(`appSecret`)},{name:`encryptKey`,type:`password`,label:n(`encryptKey`)},{name:`verificationToken`,type:`password`,label:n(`verificationToken`)},{name:`domain`,type:`text`,label:`Domain`},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`dmPolicy`,type:`select`,label:n(`dmPolicy`),options:K},{name:`groupPolicy`,type:`select`,label:n(`groupPolicy`),options:q},{name:`groupAllowFrom`,type:`tags`,label:n(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:n(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:n(`mentionPatterns`)},{name:`groups`,type:`json`,label:n(`groupRulesJson`)},{name:`accounts`,type:`json`,label:n(`accountsJson`)}]},dingtalk:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`clientId`,type:`text`,label:n(`clientId`)},{name:`clientSecret`,type:`password`,label:n(`clientSecret`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},wecom:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`corpId`,type:`text`,label:n(`corpId`)},{name:`agentId`,type:`text`,label:n(`agentId`)},{name:`secret`,type:`password`,label:n(`secret`)},{name:`token`,type:`password`,label:n(`token`)},{name:`callbackPort`,type:`number`,label:n(`callbackPort`)},{name:`callbackPath`,type:`text`,label:n(`callbackPath`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},weixin:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`),section:`primary`},{name:`defaultAccountId`,type:`text`,label:n(`defaultAccountId`)},{name:`baseUrl`,type:`text`,label:n(`baseUrl`)},{name:`pollTimeoutMs`,type:`number`,label:n(`pollTimeoutMs`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)},{name:`accounts`,type:`json`,label:n(`accountsJson`)}],layout:[{type:`fields`,section:`primary`},{type:`custom`,sectionId:`weixin-auth`},{type:`fields`,section:`advanced`,collapsible:{title:n(`weixinAuthAdvancedTitle`),description:n(`weixinAuthAdvancedDescription`)}}]},slack:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`mode`,type:`text`,label:n(`mode`)},{name:`webhookPath`,type:`text`,label:n(`webhookPath`)},{name:`allowBots`,type:`boolean`,label:n(`allowBotMessages`)},{name:`botToken`,type:`password`,label:n(`botToken`)},{name:`appToken`,type:`password`,label:n(`appToken`)}]},email:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`consentGranted`,type:`boolean`,label:n(`consentGranted`)},{name:`imapHost`,type:`text`,label:n(`imapHost`)},{name:`imapPort`,type:`number`,label:n(`imapPort`)},{name:`imapUsername`,type:`text`,label:n(`imapUsername`)},{name:`imapPassword`,type:`password`,label:n(`imapPassword`)},{name:`fromAddress`,type:`email`,label:n(`fromAddress`)}]},mochat:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`baseUrl`,type:`text`,label:n(`baseUrl`)},{name:`clawToken`,type:`password`,label:n(`clawToken`)},{name:`agentUserId`,type:`text`,label:n(`agentUserId`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]},qq:{fields:[{name:`enabled`,type:`boolean`,label:n(`enabled`)},{name:`appId`,type:`text`,label:n(`appId`)},{name:`secret`,type:`password`,label:n(`appSecret`)},{name:`markdownSupport`,type:`boolean`,label:n(`markdownSupport`)},{name:`allowFrom`,type:`tags`,label:n(`allowFrom`)}]}}}var he=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),J=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),Y=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),ge=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),_e=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),ve=t((e=>{var t=J().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),ye=t((e=>{var t=J().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),be=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),X=t((e=>{var t=Y(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),xe=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),Se=t((e=>{var t=xe();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),Ce=t(((e,t)=>{var n=Se();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),Z=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),we=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
2
+ ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^`+t+`$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),Q=t((e=>{var t=Z(),n=we();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),Te=t((e=>{var t=J(),n=X(),r=Y(),i=Q(),a=Z(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),Ee=t((e=>{var t=J(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),De=t(((e,t)=>{var n=Q();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),Oe=t(((e,t)=>{var n=Q(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),ke=t(((e,t)=>{var n=Q();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),Ae=t(((e,t)=>{var n=Q(),r=J();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
3
+ Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),je=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),Me=t((e=>{var t=Q(),n=De(),r=Oe(),i=ke(),a=Ae(),o=we(),s=J(),c=je();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
4
+ Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),Ne=t((e=>{var t=J(),n=Y(),r=ge(),i=_e(),a=ve(),o=ye(),s=be(),c=X(),l=Ce(),u=Te(),d=Ee(),f=Q(),p=Me();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function _(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function v(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function y(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function b(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return x(a,e,n)}function x(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function S(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
5
+ The chosen QR Code version cannot contain this amount of data.
6
+ Minimum version required to store current data is: `+c+`.
7
+ `);let l=b(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),v(d,r,0),n>=7&&_(d,n),y(d,l),isNaN(a)&&(a=s.getBestMask(d,v.bind(null,d,r))),s.applyMask(a,d),v(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),S(e,a,i,o)}})),Pe=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||={};let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[a[t*i+r]?1:0]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),Fe=t((e=>{var t=Pe();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o===void 0&&(!i||!i.getContext)&&(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i===void 0&&(!n||!n.getContext)&&(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),Ie=t((e=>{var t=Pe();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
8
+ `;return typeof a==`function`&&a(null,p),p}})),Le=t((e=>{var t=he(),n=Ne(),r=Fe(),i=Ie();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}))();async function Re(e,t={}){let n=await u.post(`/api/config/channels/${e}/auth/start`,t);if(!n.ok)throw Error(n.error.message);return n.data}async function ze(e,t){let n=await u.post(`/api/config/channels/${e}/auth/poll`,t);if(!n.ok)throw Error(n.error.message);return n.data}function Be(){return f({mutationFn:({channel:e,data:t})=>Re(e,t)})}function Ve(){return f({mutationFn:({channel:e,data:t})=>ze(e,t)})}function He(e){let t=e.accounts,n=new Set;if(typeof e.defaultAccountId==`string`&&e.defaultAccountId.trim()&&n.add(e.defaultAccountId.trim()),t&&typeof t==`object`&&!Array.isArray(t))for(let e of Object.keys(t)){let t=e.trim();t&&n.add(t)}return[...n]}function Ue(e,t){if(typeof e.baseUrl==`string`&&e.baseUrl.trim())return e.baseUrl.trim();if(typeof t.baseUrl==`string`&&t.baseUrl.trim())return t.baseUrl.trim()}function We({channelConfig:e,formData:t,channelEnabled:r,disabled:a=!1}){let o=d(),u=Be(),f=Ve(),[p,m]=(0,H.useState)(null),[h,g]=(0,H.useState)(null),[_,v]=(0,H.useState)(null),y=(0,H.useMemo)(()=>He(e),[e]),b=y[0],S=Ue(t,e),C=y.length>0;(0,H.useEffect)(()=>{C&&(m(null),g(e=>e?.status===`authorized`?e:{channel:`weixin`,status:`authorized`,message:n(`weixinAuthAuthorized`),accountId:b??null}))},[C,b]),(0,H.useEffect)(()=>{if(!p){v(null);return}let e=!1;return(0,Le.toDataURL)(p.qrCodeUrl,{errorCorrectionLevel:`M`,margin:1,width:480}).then(t=>{e||v(t)}).catch(()=>{e||v(null)}),()=>{e=!0}},[p]),(0,H.useEffect)(()=>{if(!p)return;let e=!1,t=null,r=async()=>{try{let i=await f.mutateAsync({channel:`weixin`,data:{sessionId:p.sessionId}});if(e)return;if(g(i),i.status===`authorized`){await o.invalidateQueries({queryKey:[`config`]}),await o.invalidateQueries({queryKey:[`config-meta`]}),c.success(i.message||n(`weixinAuthAuthorized`)),m(null);return}if(i.status===`expired`||i.status===`error`){c.error(i.message||n(`weixinAuthRetryRequired`)),m(null);return}t=setTimeout(r,i.nextPollMs??p.intervalMs)}catch(t){if(e)return;let r=t instanceof Error?t.message:String(t);c.error(`${n(`error`)}: ${r}`),m(null)}};return t=setTimeout(r,p.intervalMs),()=>{e=!0,t&&clearTimeout(t)}},[p,f,o]);let w=async()=>{try{let e=await u.mutateAsync({channel:`weixin`,data:{baseUrl:S,accountId:typeof t.defaultAccountId==`string`&&t.defaultAccountId.trim()?t.defaultAccountId.trim():void 0}});m(e),g({channel:`weixin`,status:`pending`,message:e.note,nextPollMs:e.intervalMs})}catch(e){let t=e instanceof Error?e.message:String(e);c.error(`${n(`error`)}: ${t}`)}},E=p?h?.status===`scanned`?n(`weixinAuthScanned`):n(`weixinAuthWaiting`):n(C?r?`weixinAuthAuthorized`:`weixinAuthConnectedDisabled`:`weixinAuthNotConnected`),D=u.isPending?n(`weixinAuthStarting`):n(p?`weixinAuthWaiting`:C?`weixinAuthReconnect`:`weixinAuthConnect`);return(0,W.jsx)(`section`,{className:`rounded-2xl border border-primary/20 bg-gradient-to-br from-primary-50/70 via-white to-emerald-50/60 p-5`,children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:[(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`inline-flex items-center gap-2 rounded-full bg-white/90 px-3 py-1 text-xs font-medium text-primary shadow-sm`,children:[(0,W.jsx)(V,{className:`h-3.5 w-3.5`}),n(`weixinAuthTitle`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h4`,{className:`text-base font-semibold text-gray-900`,children:n(`weixinAuthDescription`)}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-gray-600`,children:n(`weixinAuthHint`)})]}),(0,W.jsxs)(`div`,{className:s(`inline-flex w-fit items-center gap-2 rounded-full px-3 py-1 text-xs font-medium`,p?`bg-amber-50 text-amber-700`:C?`bg-emerald-50 text-emerald-700`:`bg-gray-100 text-gray-600`),children:[p?(0,W.jsx)(T,{className:`h-3.5 w-3.5 animate-spin`}):(0,W.jsx)(le,{className:`h-3.5 w-3.5`}),E]}),(0,W.jsxs)(`div`,{className:`space-y-1 text-sm text-gray-600`,children:[(0,W.jsx)(`p`,{children:n(r||!C?`weixinAuthCapabilityHint`:`weixinAuthDisabledHint`)}),b?(0,W.jsxs)(`p`,{children:[n(`weixinAuthPrimaryAccount`),`: `,(0,W.jsx)(`span`,{className:`font-mono text-xs text-gray-900`,children:b})]}):null,y.length>1?(0,W.jsxs)(`p`,{children:[n(`weixinAuthConnectedAccounts`),`: `,(0,W.jsx)(`span`,{className:`font-mono text-xs text-gray-900`,children:y.join(`, `)})]}):null,S?(0,W.jsxs)(`p`,{children:[n(`weixinAuthBaseUrl`),`: `,(0,W.jsx)(`span`,{className:`font-mono text-xs text-gray-900`,children:S})]}):null]}),(0,W.jsx)(l,{type:`button`,onClick:w,disabled:a||u.isPending||!!p,className:`rounded-xl`,children:D})]}),(0,W.jsx)(`div`,{className:`w-full max-w-sm rounded-2xl border border-dashed border-primary/25 bg-white/85 p-4 shadow-sm`,children:p?(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-gray-100 bg-white p-3`,children:_?(0,W.jsx)(`img`,{src:_,alt:n(`weixinAuthQrAlt`),className:`mx-auto aspect-square w-full max-w-[240px] object-contain`}):(0,W.jsx)(`div`,{className:`flex aspect-square w-full items-center justify-center rounded-xl bg-gray-50 text-gray-500`,children:(0,W.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-center`,children:[(0,W.jsx)(T,{className:`h-5 w-5 animate-spin`}),(0,W.jsx)(`p`,{className:`text-xs`,children:n(`weixinAuthStarting`)})]})})}),(0,W.jsxs)(`div`,{className:`space-y-1 text-xs text-gray-500`,children:[(0,W.jsx)(`p`,{children:h?.message||p.note||n(`weixinAuthScanPrompt`)}),(0,W.jsxs)(`p`,{children:[n(`weixinAuthExpiresAt`),`: `,i(p.expiresAt)]})]}),(0,W.jsxs)(`a`,{href:p.qrCodeUrl,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1.5 text-xs text-primary transition-colors hover:text-primary-hover`,children:[(0,W.jsx)(x,{className:`h-3.5 w-3.5`}),n(`weixinAuthOpenQr`)]})]}):(0,W.jsxs)(`div`,{className:`flex min-h-[280px] flex-col items-center justify-center rounded-2xl bg-gray-50/80 px-6 text-center`,children:[(0,W.jsx)(V,{className:`h-9 w-9 text-gray-300`}),(0,W.jsx)(`p`,{className:`mt-3 text-sm font-medium text-gray-700`,children:n(`weixinAuthReadyTitle`)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-gray-500`,children:n(`weixinAuthReadyDescription`)})]})})]})})}var Ge=[],Ke=[{type:`fields`,section:`all`}];function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qe(e,t){let n={...e};for(let[e,r]of Object.entries(t)){let t=n[e];if($(t)&&$(r)){n[e]=qe(t,r);continue}n[e]=r}return n}function Je(e,t){let n=e.split(`.`),r={},i=r;for(let e=0;e<n.length-1;e+=1){let t=n[e];i[t]={},i=i[t]}return i[n[n.length-1]]=t,r}function Ye(e,t){return t===`all`?e:t===`primary`?e.filter(e=>e.section===`primary`):e.filter(e=>e.section!==`primary`)}function Xe(e,t){let n={};return t.filter(e=>e.type===`json`).forEach(t=>{n[t.name]=JSON.stringify(e[t.name]??{},null,2)}),n}function Ze(e,t,n){return!e||!t?`empty:${e??``}`:JSON.stringify({channelName:e,channelConfig:t,jsonFields:n.filter(e=>e.type===`json`).map(e=>e.name)})}function Qe({channelName:e}){let{data:t}=k(),{data:r}=j(),{data:i}=ne(),a=ee(),o=te(),[u,d]=(0,H.useState)({}),[f,m]=(0,H.useState)({}),[h,g]=(0,H.useState)(null),_=(0,H.useRef)(null),v=e?t?.channels[e]:null,y=(0,H.useMemo)(()=>me(),[]),x=e?y[e]:void 0,S=x?.fields??Ge,w=x?.layout??Ke,T=i?.uiHints,E=e?`channels.${e}`:null,D=i?.actions?.filter(e=>e.scope===E)??[],O=e&&(z(`channels.${e}`,T)?.label??e),A=r?.channels.find(t=>t.name===e),M=A?U(A):void 0,N=Ze(e,v,S);(0,H.useEffect)(()=>{_.current!==N&&(_.current=N,v?(d({...v}),m(Xe(v,S))):(d({}),m({})))},[v,S,N]);let P=(e,t)=>{d(n=>({...n,[e]:t}))},F=t=>{if(t.preventDefault(),!e)return;let r={...u};for(let e of S){if(e.type!==`password`)continue;let t=r[e.name];(typeof t!=`string`||t.length===0)&&delete r[e.name]}for(let e of S){if(e.type!==`json`)continue;let t=f[e.name]??``;try{r[e.name]=t.trim()?JSON.parse(t):{}}catch{c.error(`${n(`invalidJson`)}: ${e.name}`);return}}a.mutate({channel:e,data:r})},I=t=>{if(!t||!e)return;let n=t.channels;if(!$(n))return;let r=n[e];$(r)&&(d(e=>qe(e,r)),m(e=>{let t=!1,n={...e};for(let e of S)e.type!==`json`||!Object.prototype.hasOwnProperty.call(r,e.name)||(n[e.name]=JSON.stringify(r[e.name]??{},null,2),t=!0);return t?n:e}))},L=async t=>{if(!(!e||!E)){g(t.id);try{let r={...u};t.saveBeforeRun&&(r={...r,...t.savePatch??{}},d(r),await a.mutateAsync({channel:e,data:r}));let i=await o.mutateAsync({actionId:t.id,data:{scope:E,draftConfig:Je(E,r)}});I(i.patch),i.ok?c.success(i.message||n(`success`)):c.error(i.message||n(`error`))}catch(e){let t=e instanceof Error?e.message:String(e);c.error(`${n(`error`)}: ${t}`)}finally{g(null)}}};if(!e||!A||!v)return(0,W.jsx)(`div`,{className:ie,children:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`text-base font-semibold text-gray-900`,children:n(`channelsSelectTitle`)}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-gray-500`,children:n(`channelsSelectDescription`)})]})});let B=typeof u.enabled==`boolean`?u.enabled:!!v.enabled;return(0,W.jsxs)(`div`,{className:oe,children:[(0,W.jsx)(`div`,{className:`border-b border-gray-100 px-6 py-5`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(re,{name:e,src:C(e),className:s(`h-9 w-9 rounded-lg border`,B?`border-primary/30 bg-white`:`border-gray-200/70 bg-white`),imgClassName:`h-5 w-5 object-contain`,fallback:(0,W.jsx)(`span`,{className:`text-sm font-semibold uppercase text-gray-500`,children:e[0]})}),(0,W.jsx)(`h3`,{className:`truncate text-lg font-semibold text-gray-900 capitalize`,children:O})]}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-gray-500`,children:n(`channelsFormDescription`)}),M&&(0,W.jsxs)(`a`,{href:M,className:`mt-2 inline-flex items-center gap-1.5 text-xs text-primary transition-colors hover:text-primary-hover`,children:[(0,W.jsx)(b,{className:`h-3.5 w-3.5`}),n(`channelsGuideTitle`)]})]}),(0,W.jsx)(R,{status:B?`active`:`inactive`,label:n(B?`statusActive`:`statusInactive`)})]})}),(0,W.jsxs)(`form`,{onSubmit:F,className:`flex min-h-0 flex-1 flex-col`,children:[(0,W.jsx)(`div`,{className:`min-h-0 flex-1 space-y-6 overflow-y-auto overscroll-contain px-6 py-5`,children:w.map((t,n)=>{if(t.type===`fields`){let r=Ye(S,t.section);return r.length===0?null:t.collapsible?(0,W.jsxs)(`details`,{className:`group rounded-2xl border border-gray-200/80 bg-white`,children:[(0,W.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-3 px-5 py-4 text-sm font-medium text-gray-900`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{children:t.collapsible.title}),t.collapsible.description?(0,W.jsx)(`p`,{className:`mt-1 text-xs font-normal text-gray-500`,children:t.collapsible.description}):null]}),(0,W.jsx)(p,{className:`h-4 w-4 text-gray-400 transition-transform group-open:rotate-180`})]}),(0,W.jsx)(`div`,{className:`space-y-6 border-t border-gray-100 px-5 py-5`,children:(0,W.jsx)(G,{channelName:e,fields:r,formData:u,jsonDrafts:f,setJsonDrafts:m,updateField:P,uiHints:T})})]},`${t.type}-${t.section}-${n}`):(0,W.jsx)(G,{channelName:e,fields:r,formData:u,jsonDrafts:f,setJsonDrafts:m,updateField:P,uiHints:T},`${t.type}-${t.section}-${n}`)}return t.sectionId===`weixin-auth`?(0,W.jsx)(We,{channelConfig:v,formData:u,channelEnabled:B,disabled:a.isPending||!!h},`${t.type}-${t.sectionId}-${n}`):null})}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-gray-100 px-6 py-4`,children:[(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:D.filter(e=>e.trigger===`manual`).map(e=>(0,W.jsx)(l,{type:`button`,onClick:()=>L(e),disabled:a.isPending||!!h,variant:`secondary`,children:h===e.id?n(`connecting`):e.title},e.id))}),(0,W.jsx)(l,{type:`submit`,disabled:a.isPending||!!h,children:a.isPending?n(`saving`):n(`save`)})]})]})]})}var $e={telegram:`channelDescTelegram`,slack:`channelDescSlack`,email:`channelDescEmail`,webhook:`channelDescWebhook`,discord:`channelDescDiscord`,feishu:`channelDescFeishu`,weixin:`channelDescWeixin`};function et(){let{data:e}=k(),{data:t}=j(),{data:r}=ne(),[i,a]=(0,H.useState)(`enabled`),[o,c]=(0,H.useState)(),[l,u]=(0,H.useState)(``),d=r?.uiHints,f=t?.channels,p=e?.channels,m=[{id:`enabled`,label:n(`channelsTabEnabled`),count:(f??[]).filter(e=>p?.[e.name]?.enabled).length},{id:`all`,label:n(`channelsTabAll`),count:(f??[]).length}],h=(0,H.useMemo)(()=>{let e=l.trim().toLowerCase();return(f??[]).filter(e=>{let t=p?.[e.name]?.enabled||!1;return i===`enabled`?t:!0}).filter(t=>e?(t.displayName||t.name).toLowerCase().includes(e)||t.name.toLowerCase().includes(e):!0)},[i,p,f,l]);return(0,H.useEffect)(()=>{if(h.length===0){c(void 0);return}h.some(e=>e.name===o)||c(h[0].name)},[h,o]),!e||!t?(0,W.jsx)(`div`,{className:`p-8 text-gray-400`,children:n(`channelsLoading`)}):(0,W.jsxs)(F,{className:`xl:flex xl:h-full xl:min-h-0 xl:flex-col xl:pb-0`,children:[(0,W.jsx)(I,{title:n(`channelsPageTitle`),description:n(`channelsPageDescription`)}),(0,W.jsxs)(`div`,{className:s(B,`xl:min-h-0 xl:flex-1`),children:[(0,W.jsxs)(`section`,{className:ae,children:[(0,W.jsx)(`div`,{className:`border-b border-gray-100 px-4 pt-4`,children:(0,W.jsx)(L,{tabs:m,activeTab:i,onChange:a,className:`mb-0`})}),(0,W.jsx)(`div`,{className:`border-b border-gray-100 px-4 py-3`,children:(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(E,{className:`pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400`}),(0,W.jsx)(O,{value:l,onChange:e=>u(e.target.value),placeholder:n(`channelsFilterPlaceholder`),className:`h-10 rounded-xl pl-9`})]})}),(0,W.jsxs)(`div`,{className:`min-h-0 flex-1 space-y-2 overflow-y-auto overscroll-contain p-3`,children:[h.map(t=>{let r=e.channels[t.name]?.enabled||!1,i=z(`channels.${t.name}`,d),a=U(t),l=i?.help||n($e[t.name]||`channelDescriptionDefault`);return(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(t.name),className:s(`w-full rounded-xl border p-2.5 text-left transition-all`,o===t.name?`border-primary/30 bg-primary-50/40 shadow-sm`:`border-gray-200/70 bg-white hover:border-gray-300 hover:bg-gray-50/70`),children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,W.jsx)(re,{name:t.name,src:C(t.name),className:s(`h-10 w-10 rounded-lg border`,r?`border-primary/30 bg-white`:`border-gray-200/70 bg-white`),imgClassName:`h-5 w-5 object-contain`,fallback:(0,W.jsx)(`span`,{className:`text-sm font-semibold uppercase text-gray-500`,children:t.name[0]})}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:`truncate text-sm font-semibold text-gray-900`,children:t.displayName||t.name}),(0,W.jsx)(`p`,{className:`line-clamp-1 text-[11px] text-gray-500`,children:l})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[a&&(0,W.jsx)(`a`,{href:a,onClick:e=>e.stopPropagation(),className:`inline-flex h-7 w-7 items-center justify-center rounded-md text-gray-300 transition-colors hover:bg-gray-100/70 hover:text-gray-500`,title:n(`channelsGuideTitle`),children:(0,W.jsx)(x,{className:`h-3.5 w-3.5`})}),(0,W.jsx)(R,{status:r?`active`:`inactive`,label:n(r?`statusActive`:`statusInactive`),className:`min-w-[56px] justify-center`})]})]})},t.name)}),h.length===0&&(0,W.jsxs)(`div`,{className:`flex h-full min-h-[220px] flex-col items-center justify-center rounded-xl border border-dashed border-gray-200 bg-gray-50/70 py-10 text-center`,children:[(0,W.jsx)(`div`,{className:`mb-3 flex h-10 w-10 items-center justify-center rounded-lg bg-white`,children:(0,W.jsx)(A,{className:`h-5 w-5 text-gray-300`})}),(0,W.jsx)(`p`,{className:`text-sm font-medium text-gray-700`,children:n(`channelsNoMatch`)})]})]})]}),(0,W.jsx)(Qe,{channelName:o})]})]})}export{et as ChannelsList};