nextclaw 0.34.0 → 0.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/app/index.js +187 -108
- package/dist/cli/app/index.js.map +1 -1
- package/package.json +14 -14
- package/resources/USAGE.md +63 -1
- package/ui-dist/assets/api-CVjdSvJk.js +13 -0
- package/ui-dist/assets/{appearance-settings-page-Bpd2RhK5.js → appearance-settings-page-BOorfaUx.js} +1 -1
- package/ui-dist/assets/{channels-list-page-CTblam4c.js → channels-list-page-DuZJvYB6.js} +1 -1
- package/ui-dist/assets/{chat-page-Bg3_X8G9.js → chat-page-8PTMgI0t.js} +1 -1
- package/ui-dist/assets/{config-split-page-ps1Aod3g.js → config-split-page-UuhsVcQD.js} +1 -1
- package/ui-dist/assets/{confirm-dialog-DJSUNG33.js → confirm-dialog-Bnosa8UF.js} +1 -1
- package/ui-dist/assets/{desktop-update-config-D9AyIhJZ.js → desktop-update-config-CM4lsX4R.js} +1 -1
- package/ui-dist/assets/{dist-DkR7_Dpl.js → dist-D17RZAsz.js} +1 -1
- package/ui-dist/assets/{dist-BkTYNzm_.js → dist-_zZ8P38T.js} +1 -1
- package/ui-dist/assets/{doc-browser-Q67TOGVS.js → doc-browser-CiLvybSC.js} +1 -1
- package/ui-dist/assets/{doc-browser-context-BQim8SqD.js → doc-browser-context-CerkiK_N.js} +1 -1
- package/ui-dist/assets/doc-browser-z7vdH3Ez.js +1 -0
- package/ui-dist/assets/{form-actions-B2-bpFie.js → form-actions-Cmv23dN4.js} +1 -1
- package/ui-dist/assets/index-CWdgBpSc.css +1 -0
- package/ui-dist/assets/index-DlL8uKXu.js +109 -0
- package/ui-dist/assets/loader-circle-vUsFtTfb.js +1 -0
- package/ui-dist/assets/mcp-marketplace-page-BV8WB3_L.js +1 -0
- package/ui-dist/assets/{mcp-marketplace-page-w8panjZG.js → mcp-marketplace-page-DN_fqcLd.js} +1 -1
- package/ui-dist/assets/{model-config-page-B8Aubkwx.js → model-config-page-BxaeCMbJ.js} +1 -1
- package/ui-dist/assets/{navigation-link-mpHFXwRr.js → navigation-link-k9rsmtC4.js} +1 -1
- package/ui-dist/assets/plus-Dc760kHj.js +1 -0
- package/ui-dist/assets/{provider-scoped-model-input-BRnIH-5O.js → provider-scoped-model-input-DLSAB6a5.js} +1 -1
- package/ui-dist/assets/{providers-config-page-0r9AZNNZ.js → providers-config-page-DM5N0aeS.js} +1 -1
- package/ui-dist/assets/{react-BlXwvOLo.js → react-BgRLh3ee.js} +1 -1
- package/ui-dist/assets/{refresh-cw-JFuyDj_P.js → refresh-cw-axvJLmRG.js} +1 -1
- package/ui-dist/assets/remote-Cj1GBMaN.js +1 -0
- package/ui-dist/assets/rotate-cw-CFByP2O8.js +1 -0
- package/ui-dist/assets/{runtime-config-page-BgeYpvMK.js → runtime-config-page-WNzZyjMW.js} +1 -1
- package/ui-dist/assets/{save-BL8P8CLX.js → save-DbR4SGk8.js} +1 -1
- package/ui-dist/assets/{search-bZL75Pgc.js → search-M9lrb8id.js} +1 -1
- package/ui-dist/assets/{search-config-page-CzNzLyd0.js → search-config-page-DmsID8FQ.js} +1 -1
- package/ui-dist/assets/{secrets-config-page-C4k3ik0v.js → secrets-config-page-C10OwI0b.js} +1 -1
- package/ui-dist/assets/security-config-CvU5JxDT.js +1 -0
- package/ui-dist/assets/{select-rUZ8nIZu.js → select-D_YBzMdv.js} +1 -1
- package/ui-dist/assets/{settings-2-BI4SCkxQ.js → settings-2-zy40UwTo.js} +1 -1
- package/ui-dist/assets/skeleton-BmAtzjDM.js +1 -0
- package/ui-dist/assets/{tag-chip-BdI_yIOA.js → tag-chip-D7QRdcph.js} +1 -1
- package/ui-dist/assets/x-D9Y9hf_r.js +1 -0
- package/ui-dist/index.html +19 -19
- package/ui-dist/assets/api-a_GaOFc7.js +0 -13
- package/ui-dist/assets/doc-browser-DahzJEWj.js +0 -1
- package/ui-dist/assets/index-DSLK7zgR.css +0 -1
- package/ui-dist/assets/index-VQAVqwG8.js +0 -109
- package/ui-dist/assets/loader-circle-DyXZU92l.js +0 -1
- package/ui-dist/assets/mcp-marketplace-page-B0dBE5CV.js +0 -1
- package/ui-dist/assets/plus-Dhb4KuMH.js +0 -1
- package/ui-dist/assets/remote-DQzE55WW.js +0 -1
- package/ui-dist/assets/rotate-cw-DjbbiIW_.js +0 -1
- package/ui-dist/assets/security-config-DmJw9QZA.js +0 -1
- package/ui-dist/assets/skeleton-CVmEPG43.js +0 -1
- package/ui-dist/assets/x-BcEayhV6.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nextclaw",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"description": "Powerful AI assistant for coordinating agents, skills, CLI tools, automations, and messaging apps.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -41,21 +41,21 @@
|
|
|
41
41
|
"commander": "^12.1.0",
|
|
42
42
|
"jszip": "^3.10.1",
|
|
43
43
|
"yaml": "^2.8.1",
|
|
44
|
-
"@nextclaw/app-runtime": "0.
|
|
45
|
-
"@nextclaw/core": "0.
|
|
46
|
-
"@nextclaw/kernel": "0.6.28",
|
|
47
|
-
"@nextclaw/mcp": "0.3.26",
|
|
44
|
+
"@nextclaw/app-runtime": "0.12.0",
|
|
45
|
+
"@nextclaw/core": "0.17.0",
|
|
48
46
|
"@nextclaw/ncp": "0.7.17",
|
|
49
|
-
"@nextclaw/
|
|
50
|
-
"@nextclaw/ncp-
|
|
47
|
+
"@nextclaw/kernel": "0.8.0",
|
|
48
|
+
"@nextclaw/ncp-mcp": "0.2.27",
|
|
49
|
+
"@nextclaw/nextclaw-ncp-runtime-stdio-client": "0.3.27",
|
|
51
50
|
"@nextclaw/ncp-toolkit": "0.6.19",
|
|
52
|
-
"@nextclaw/nextclaw-ncp-runtime-stdio-client": "0.3.26",
|
|
53
|
-
"@nextclaw/remote": "0.3.28",
|
|
54
|
-
"@nextclaw/runtime": "0.4.25",
|
|
55
|
-
"@nextclaw/nextclaw-hermes-acp-bridge": "0.3.17",
|
|
56
51
|
"@nextclaw/nextclaw-ncp-runtime-http-client": "0.3.17",
|
|
57
|
-
"@nextclaw/
|
|
58
|
-
"@nextclaw/
|
|
52
|
+
"@nextclaw/nextclaw-hermes-acp-bridge": "0.3.17",
|
|
53
|
+
"@nextclaw/ncp-agent-runtime": "0.4.17",
|
|
54
|
+
"@nextclaw/mcp": "0.3.27",
|
|
55
|
+
"@nextclaw/remote": "0.3.30",
|
|
56
|
+
"@nextclaw/service": "0.3.32",
|
|
57
|
+
"@nextclaw/runtime": "0.4.26",
|
|
58
|
+
"@nextclaw/server": "0.16.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/node": "^20.17.6",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"tsx": "^4.19.2",
|
|
64
64
|
"typescript": "^5.6.3",
|
|
65
65
|
"vitest": "^4.1.2",
|
|
66
|
-
"@nextclaw/ui": "0.
|
|
66
|
+
"@nextclaw/ui": "0.17.0"
|
|
67
67
|
},
|
|
68
68
|
"scripts": {
|
|
69
69
|
"dev": "tsx watch --tsconfig ../../scripts/dev/dev-runtime.tsconfig.json src/cli/app/index.ts",
|
package/resources/USAGE.md
CHANGED
|
@@ -8,7 +8,7 @@ This guide covers installation, configuration, channels, tools, automation, and
|
|
|
8
8
|
|
|
9
9
|
## AI Self-Management Contract
|
|
10
10
|
|
|
11
|
-
When NextClaw AI needs to operate the product itself (version/status/doctor/service/channels/config/agents/cron/remote/update), follow these rules:
|
|
11
|
+
When NextClaw AI needs to operate the product itself (version/status/doctor/service/channels/config/agents/apps/cron/remote/update), follow these rules:
|
|
12
12
|
|
|
13
13
|
1. **Read the built-in self-management guide first**. The packaged runtime copy lives at `packages/nextclaw/resources/USAGE.md`, and this repo page is kept aligned with it.
|
|
14
14
|
2. **Use the exact command for the intent**: use `nextclaw --version` for version lookup; do not infer version from `status`.
|
|
@@ -19,6 +19,7 @@ When NextClaw AI needs to operate the product itself (version/status/doctor/serv
|
|
|
19
19
|
7. **Never invent commands**; use documented commands or `nextclaw --help` / `nextclaw <subcommand> --help`.
|
|
20
20
|
8. **Desktop-installed AI uses the same command names**. When NextClaw Desktop launches the runtime, it exposes a managed `nextclaw` command surface to AI command tools, so self-management commands keep using `nextclaw ...` without requiring a global NPM install.
|
|
21
21
|
9. **Restart live Service App runtimes before live retest**: after modifying a running Service App, use `nextclaw app restart <app-id> --json` before validating through the product UI or panel-to-service action calls.
|
|
22
|
+
10. **Manage App data through the product contract**: list data with `nextclaw app data list --json`; delete only a `retained` entry with the returned data id and an exact `--confirm <app-id>`. Never replace this flow with a recursive filesystem deletion.
|
|
22
23
|
|
|
23
24
|
---
|
|
24
25
|
|
|
@@ -34,6 +35,7 @@ When NextClaw AI needs to operate the product itself (version/status/doctor/serv
|
|
|
34
35
|
- [Session management (UI)](#session-management-ui)
|
|
35
36
|
- [Workspace](#workspace)
|
|
36
37
|
- [Publishing Mini Apps](#publishing-mini-apps)
|
|
38
|
+
- [App data and uninstall](#app-data-and-uninstall)
|
|
37
39
|
- [Commands](#commands)
|
|
38
40
|
- [Channels](#channels)
|
|
39
41
|
- [Tools](#tools)
|
|
@@ -558,6 +560,63 @@ Personal submissions return `publishStatus: pending` and appear in the App Marke
|
|
|
558
560
|
|
|
559
561
|
Use `https://platform.nextclaw.io/apps` to review submission status. The built-in `nextclaw-app-publisher` skill lets NextClaw AI assemble a package from existing Panel/Service directories, run the checks, guide login, and submit it with the same native commands.
|
|
560
562
|
|
|
563
|
+
## App data and uninstall
|
|
564
|
+
|
|
565
|
+
NextClaw separates installable code from mutable App data. Updating an App replaces versioned code without replacing its data. Uninstalling an App or removing a workspace Service App keeps its managed data by default, so reinstalling the same App can continue from the previous state. Choose **Delete app and data** only when the stored data is no longer needed.
|
|
566
|
+
|
|
567
|
+
The Apps page shows the exact managed instance path and its usage in six categories: data, config, state, cache, temporary files, and logs. After an App is uninstalled, its entry remains available in **Retained App data**, where it can be reviewed and deleted independently.
|
|
568
|
+
|
|
569
|
+
Default package App storage uses `NEXTCLAW_APP_HOME`, or `~/.nextclaw/apps` when the environment variable is unset:
|
|
570
|
+
|
|
571
|
+
```text
|
|
572
|
+
~/.nextclaw/apps/
|
|
573
|
+
packages/<app-id>/<version>/
|
|
574
|
+
instances/<app-id>/default/
|
|
575
|
+
metadata.json
|
|
576
|
+
data/
|
|
577
|
+
config/
|
|
578
|
+
state/
|
|
579
|
+
cache/
|
|
580
|
+
tmp/
|
|
581
|
+
logs/
|
|
582
|
+
```
|
|
583
|
+
|
|
584
|
+
A workspace Service App uses the same instance layout under the current workspace:
|
|
585
|
+
|
|
586
|
+
```text
|
|
587
|
+
<workspace>/.nextclaw/app-instances/<app-id>/default/
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
The managed instance is the deletion boundary. Files and directories that the user separately exposes through document permissions are external resources; uninstalling an App or deleting its retained data never deletes those external resources.
|
|
591
|
+
|
|
592
|
+
To inspect the same inventory from the CLI, first make sure the NextClaw host is running, then request machine-readable output:
|
|
593
|
+
|
|
594
|
+
```bash
|
|
595
|
+
nextclaw status --json
|
|
596
|
+
nextclaw app data list --json
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
The list contains both `active` and `retained` entries. Active data must be handled through the corresponding App uninstall or Service App removal flow. Only a retained entry can be deleted independently. Use the opaque data id returned by the latest list response and confirm the exact App id:
|
|
600
|
+
|
|
601
|
+
```bash
|
|
602
|
+
nextclaw app data delete <data-id> --confirm <app-id> --json
|
|
603
|
+
nextclaw app data list --json
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
The second list verifies that the retained entry is gone. Do not build a data id manually and do not remove managed directories with `rm -rf`.
|
|
607
|
+
|
|
608
|
+
For the low-level NApp runtime, uninstall keeps data unless `--purge-data` is present:
|
|
609
|
+
|
|
610
|
+
```bash
|
|
611
|
+
napp uninstall <app-id>
|
|
612
|
+
napp uninstall <app-id> --purge-data
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
Service App development gets a separate, deterministic development instance. Resetting it is destructive and therefore requires both the reset flag and an exact manifest id confirmation:
|
|
616
|
+
|
|
617
|
+
```bash
|
|
618
|
+
nextclaw app dev <service-app-dir> --reset-data --confirm <app-id> --json
|
|
619
|
+
```
|
|
561
620
|
|
|
562
621
|
---
|
|
563
622
|
|
|
@@ -570,7 +629,10 @@ Use `https://platform.nextclaw.io/apps` to review submission status. The built-i
|
|
|
570
629
|
| `nextclaw stop` | Stop the background service |
|
|
571
630
|
| `nextclaw app check <app-dir>` | Check a Panel App or Service App directory |
|
|
572
631
|
| `nextclaw app dev <service-app-dir>` | Start a Service App in an isolated runtime and inspect its actions |
|
|
632
|
+
| `nextclaw app dev <service-app-dir> --reset-data --confirm <app-id>` | Reset that Service App's isolated development instance before starting |
|
|
573
633
|
| `nextclaw app call <service-app-dir> <action-name>` | Call a Service App action in an isolated runtime |
|
|
634
|
+
| `nextclaw app data list` | List active and retained App data through the running host |
|
|
635
|
+
| `nextclaw app data delete <data-id> --confirm <app-id>` | Permanently delete one retained App data instance |
|
|
574
636
|
| `nextclaw app validate-publish <mini-app-dir>` | Validate a schema v2 Mini App package before Marketplace submission |
|
|
575
637
|
| `nextclaw app publish <mini-app-dir>` | Submit a validated Mini App to the App Marketplace for review |
|
|
576
638
|
| `nextclaw app restart <app-id>` | Restart a live Service App runtime in the running UI before live retest |
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import{i as e}from"./chunk-DseTPa7n.js";import{B as t,F as n,I as r,R as i,V as a,i as o,o as s,t as c,z as l}from"./react-BgRLh3ee.js";var u=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},d={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},f=new class{#e=d;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function p(e){setTimeout(e,0)}var m=typeof window>`u`||`Deno`in globalThis;function h(){}function g(e,t){return typeof e==`function`?e(t):e}function _(e){return typeof e==`number`&&e>=0&&e!==1/0}function v(e,t){return Math.max(e+(t||0)-Date.now(),0)}function y(e,t){return typeof e==`function`?e(t):e}function b(e,t){return typeof e==`function`?e(t):e}function ee(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==S(o,t.options))return!1}else if(!w(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function x(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(C(t.options.mutationKey)!==C(a))return!1}else if(!w(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function S(e,t){return(t?.queryKeyHashFn||C)(e)}function C(e){return JSON.stringify(e,(e,t)=>ne(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function w(e,t){return e===t?!0:typeof e==typeof t&&e&&t&&typeof e==`object`&&typeof t==`object`?Object.keys(t).every(n=>w(e[n],t[n])):!1}var te=Object.prototype.hasOwnProperty;function T(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=D(e)&&D(t);if(!r&&!(ne(e)&&ne(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:te.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=T(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function E(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function D(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function ne(e){if(!re(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!re(n)||!n.hasOwnProperty(`isPrototypeOf`)||Object.getPrototypeOf(e)!==Object.prototype)}function re(e){return Object.prototype.toString.call(e)===`[object Object]`}function O(e){return new Promise(t=>{f.setTimeout(t,e)})}function k(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:T(e,t)}function ie(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function A(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var j=Symbol();function ae(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===j?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function oe(e,t){return typeof e==`function`?e(...t):!!e}function se(e,t,n){let r=!1,i;return Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var ce=new class extends u{#e;#t;#n;constructor(){super(),this.#n=e=>{if(!m&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}};function le(){let e,t,n=new Promise((n,r)=>{e=n,t=r});n.status=`pending`,n.catch(()=>{});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.resolve=t=>{r({status:`fulfilled`,value:t}),e(t)},n.reject=e=>{r({status:`rejected`,reason:e}),t(e)},n}var ue=p;function de(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=ue,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var M=de(),N=new class extends u{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(!m&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function fe(e){return Math.min(1e3*2**e,3e4)}function pe(e){return(e??`online`)===`online`?N.isOnline():!0}var P=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function me(e){let t=!1,n=0,r,i=le(),a=()=>i.status!==`pending`,o=t=>{if(!a()){let n=new P(t);f(n),e.onCancel?.(n)}},s=()=>{t=!0},c=()=>{t=!1},l=()=>ce.isFocused()&&(e.networkMode===`always`||N.isOnline())&&e.canRun(),u=()=>pe(e.networkMode)&&e.canRun(),d=e=>{a()||(r?.(),i.resolve(e))},f=e=>{a()||(r?.(),i.reject(e))},p=()=>new Promise(t=>{r=e=>{(a()||l())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,a()||e.onContinue?.()}),h=()=>{if(a())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(d).catch(r=>{if(a())return;let i=e.retry??(m?0:3),o=e.retryDelay??fe,s=typeof o==`function`?o(n,r):o,c=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);if(t||!c){f(r);return}n++,e.onFail?.(n,r),O(s).then(()=>l()?void 0:p()).then(()=>{t?f(r):h()})})};return{promise:i,status:()=>i.status,cancel:o,continue:()=>(r?.(),i),cancelRetry:s,continueRetry:c,canStart:u,start:()=>(u()?h():p().then(h),i)}}var he=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),_(this.gcTime)&&(this.#e=f.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(m?1/0:300*1e3))}clearGcTimeout(){this.#e&&=(f.clearTimeout(this.#e),void 0)}},F=class extends he{#e;#t;#n;#r;#i;#a;#o;constructor(e){super(),this.#o=!1,this.#a=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#r=e.client,this.#n=this.#r.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=_e(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#i?.promise}setOptions(e){if(this.options={...this.#a,...e},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=_e(this.options);e.data!==void 0&&(this.setState(ge(e.data,e.dataUpdatedAt)),this.#e=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#n.remove(this)}setData(e,t){let n=k(this.state.data,e,this.options);return this.#s({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#s({type:`setState`,state:e,setStateOptions:t})}cancel(e){let t=this.#i?.promise;return this.#i?.cancel(e),t?t.then(h).catch(h):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#e)}isActive(){return this.observers.some(e=>b(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===j||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>y(e.options.staleTime,this)===`static`):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!v(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#i?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#i?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#i&&(this.#o?this.#i.cancel({revert:!0}):this.#i.cancelRetry()),this.scheduleGc()),this.#n.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.#s({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#i?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#i)return this.#i.continueRetry(),this.#i.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(this.#o=!0,n.signal)})},i=()=>{let e=ae(this.options,t),n=(()=>{let e={client:this.#r,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#o=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#r,state:this.state,fetchFn:i};return r(e),e})();this.options.behavior?.onFetch(a,this),this.#t=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#s({type:`fetch`,meta:a.fetchOptions?.meta}),this.#i=me({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof P&&e.revert&&this.setState({...this.#t,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#s({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#s({type:`pause`})},onContinue:()=>{this.#s({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#i.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#n.config.onSuccess?.(e,this),this.#n.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof P){if(e.silent)return this.#i.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#s({type:`error`,error:e}),this.#n.config.onError?.(e,this),this.#n.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#s(e){this.state=(t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...I(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...ge(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#t=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}})(this.state),M.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#n.notify({query:this,type:`updated`,action:e})})}};function I(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:pe(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function ge(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function _e(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var L=class extends u{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=le(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),ye(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return be(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return be(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof b(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!E(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&R(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||b(this.options.enabled,this.#t)!==b(t.enabled,this.#t)||y(this.options.staleTime,this.#t)!==y(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||b(this.options.enabled,this.#t)!==b(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return z(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(h)),t}#g(){this.#b();let e=y(this.options.staleTime,this.#t);if(m||this.#r.isStale||!_(e))return;let t=v(this.#r.dataUpdatedAt,e)+1;this.#d=f.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(m||b(this.options.enabled,this.#t)===!1||!_(this.#p)||this.#p===0)&&(this.#f=f.setInterval(()=>{(this.options.refetchIntervalInBackground||ce.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d&&=(f.clearTimeout(this.#d),void 0)}#x(){this.#f&&=(f.clearInterval(this.#f),void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&ye(e,t),o=i&&R(e,n,t,r);(a||o)&&(l={...l,...I(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let h=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,h=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(m=`success`,d=k(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!h)if(i&&d===a?.data&&t.select===this.#c)d=this.#l;else try{this.#c=t.select,d=t.select(d),d=k(i?.data,d,t),this.#l=d,this.#s=null}catch(e){this.#s=e}this.#s&&(f=this.#s,d=this.#l,p=Date.now(),m=`error`);let g=l.fetchStatus===`fetching`,_=m===`pending`,v=m===`error`,y=_&&g,ee=d!==void 0,x={status:m,fetchStatus:l.fetchStatus,isPending:_,isSuccess:m===`success`,isError:v,isInitialLoading:y,isLoading:y,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:l.dataUpdateCount>0||l.errorUpdateCount>0,isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:g,isRefetching:g&&!_,isLoadingError:v&&!ee,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:v&&ee,isStale:xe(e,t),refetch:this.refetch,promise:this.#o,isEnabled:b(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=x.data!==void 0,r=x.status===`error`&&!t,i=e=>{r?e.reject(x.error):t&&e.resolve(x.data)},a=()=>{i(this.#o=x.promise=le())},o=this.#o;switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||x.data!==o.value)&&a();break;case`rejected`:(!r||x.error!==o.reason)&&a();break}}return x}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!E(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){M.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function ve(e,t){return b(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&t.retryOnMount===!1)}function ye(e,t){return ve(e,t)||e.state.data!==void 0&&be(e,t,t.refetchOnMount)}function be(e,t,n){if(b(t.enabled,e)!==!1&&y(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&xe(e,t)}return!1}function R(e,t,n,r){return(e!==t||b(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&xe(e,n)}function xe(e,t){return b(t.enabled,e)!==!1&&e.isStaleByTime(y(t.staleTime,e))}function z(e,t){return!E(e.getCurrentResult(),t)}function Se(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{se(e,()=>t.signal,()=>n=!0)},u=ae(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject();if(r==null&&e.pages.length)return Promise.resolve(e);let a=await u((()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})()),{maxPages:o}=t.options,s=i?A:ie;return{pages:s(e.pages,a,o),pageParams:s(e.pageParams,r,o)}};if(i&&a.length){let e=i===`backward`,t=e?we:Ce,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:Ce(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(c<t)}return s};t.options.persister?t.fetchFn=()=>t.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=l}}}function Ce(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function we(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}function Te(e,t){return t?Ce(e,t)!=null:!1}function Ee(e,t){return!t||!e.getPreviousPageParam?!1:we(e,t)!=null}var De=class extends he{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||B(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=me({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let r=this.state.status===`pending`,i=!this.#r.canStart();try{if(r)t();else{this.#i({type:`pending`,variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:i})}let a=await this.#r.start();return await this.#n.config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await this.#n.config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),this.#i({type:`success`,data:a}),a}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#n.runNext(this)}}#i(e){this.state=(t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}})(this.state),M.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function B(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var Oe=class extends u{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){let r=new De({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=ke(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=ke(e);if(typeof t==`string`){let n=this.#t.get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=ke(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}else return!0}runNext(e){let t=ke(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){M.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>x(t,e))}findAll(e={}){return this.getAll().filter(t=>x(e,t))}notify(e){M.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return M.batch(()=>Promise.all(e.map(e=>e.continue().catch(h))))}};function ke(e){return e.options.scope?.id}var Ae=class extends u{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),E(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&C(t.mutationKey)!==C(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??B();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){M.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},je=class extends u{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){let r=t.queryKey,i=t.queryHash??S(r,t),a=this.get(i);return a||(a=new F({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){M.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>ee(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>ee(e,t)):t}notify(e){M.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){M.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){M.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},Me=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new je,this.#t=e.mutationCache||new Oe,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=ce.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=N.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(y(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=g(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return M.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;M.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return M.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t},r=M.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(h).catch(h)}invalidateQueries(e,t={}){return M.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=M.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(h)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(h)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(y(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(h).catch(h)}fetchInfiniteQuery(e){return e.behavior=Se(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(h).catch(h)}ensureInfiniteQueryData(e){return e.behavior=Se(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return N.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(C(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{w(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(C(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{w(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=S(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===j&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},V=e(a(),1),H=l(),Ne=V.createContext(void 0),U=e=>{let t=V.useContext(Ne);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},Pe=({client:e,children:t})=>(V.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,H.jsx)(Ne.Provider,{value:e,children:t})),Fe=V.createContext(!1),Ie=()=>V.useContext(Fe);Fe.Provider;function Le(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var Re=V.createContext(Le()),ze=()=>V.useContext(Re),Be=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?oe(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(t.isReset()||(e.retryOnMount=!1))},Ve=e=>{V.useEffect(()=>{e.clearReset()},[e])},He=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||oe(n,[e.error,r])),Ue=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},We=(e,t)=>e.isLoading&&e.isFetching&&!t,Ge=(e,t)=>e?.suspense&&t.isPending,Ke=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function qe(e,t,n){let r=Ie(),i=ze(),a=U(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash);o._optimisticResults=r?`isRestoring`:`optimistic`,Ue(o),Be(o,i,s),Ve(i);let c=!a.getQueryCache().get(o.queryHash),[l]=V.useState(()=>new t(a,o)),u=l.getOptimisticResult(o),d=!r&&e.subscribed!==!1;if(V.useSyncExternalStore(V.useCallback(e=>{let t=d?l.subscribe(M.batchCalls(e)):h;return l.updateResult(),t},[l,d]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),V.useEffect(()=>{l.setOptions(o)},[o,l]),Ge(o,u))throw Ke(o,l,i);if(He({result:u,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw u.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,u),o.experimental_prefetchInRender&&!m&&We(u,r)&&(c?Ke(o,l,i):s?.promise)?.catch(h).finally(()=>{l.updateResult()}),o.notifyOnChangeProps?u:l.trackResult(u)}function Je(e,t){return qe(e,L,t)}function Ye(e,t){let n=U(t),[r]=V.useState(()=>new Ae(n,e));V.useEffect(()=>{r.setOptions(e)},[r,e]);let i=V.useSyncExternalStore(V.useCallback(e=>r.subscribe(M.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=V.useCallback((e,t)=>{r.mutate(e,t).catch(h)},[r]);if(i.error&&oe(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}var Xe=e(t(),1),Ze=e=>{switch(e){case`success`:return et;case`info`:return nt;case`warning`:return tt;case`error`:return rt;default:return null}},Qe=Array(12).fill(0),$e=({visible:e,className:t})=>V.createElement(`div`,{className:[`sonner-loading-wrapper`,t].filter(Boolean).join(` `),"data-visible":e},V.createElement(`div`,{className:`sonner-spinner`},Qe.map((e,t)=>V.createElement(`div`,{className:`sonner-loading-bar`,key:`spinner-bar-${t}`})))),et=V.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},V.createElement(`path`,{fillRule:`evenodd`,d:`M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z`,clipRule:`evenodd`})),tt=V.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,fill:`currentColor`,height:`20`,width:`20`},V.createElement(`path`,{fillRule:`evenodd`,d:`M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z`,clipRule:`evenodd`})),nt=V.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},V.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z`,clipRule:`evenodd`})),rt=V.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 20 20`,fill:`currentColor`,height:`20`,width:`20`},V.createElement(`path`,{fillRule:`evenodd`,d:`M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z`,clipRule:`evenodd`})),it=V.createElement(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`},V.createElement(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),V.createElement(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})),at=()=>{let[e,t]=V.useState(document.hidden);return V.useEffect(()=>{let e=()=>{t(document.hidden)};return document.addEventListener(`visibilitychange`,e),()=>window.removeEventListener(`visibilitychange`,e)},[]),e},ot=1,W=new class{constructor(){this.subscribe=e=>(this.subscribers.push(e),()=>{let t=this.subscribers.indexOf(e);this.subscribers.splice(t,1)}),this.publish=e=>{this.subscribers.forEach(t=>t(e))},this.addToast=e=>{this.publish(e),this.toasts=[...this.toasts,e]},this.create=e=>{let{message:t,...n}=e,r=typeof e?.id==`number`||e.id?.length>0?e.id:ot++,i=this.toasts.find(e=>e.id===r),a=e.dismissible===void 0?!0:e.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),i?this.toasts=this.toasts.map(n=>n.id===r?(this.publish({...n,...e,id:r,title:t}),{...n,...e,id:r,dismissible:a,title:t}):n):this.addToast({title:t,...n,dismissible:a,id:r}),r},this.dismiss=e=>(this.dismissedToasts.add(e),e||this.toasts.forEach(e=>{this.subscribers.forEach(t=>t({id:e.id,dismiss:!0}))}),this.subscribers.forEach(t=>t({id:e,dismiss:!0})),e),this.message=(e,t)=>this.create({...t,message:e}),this.error=(e,t)=>this.create({...t,message:e,type:`error`}),this.success=(e,t)=>this.create({...t,type:`success`,message:e}),this.info=(e,t)=>this.create({...t,type:`info`,message:e}),this.warning=(e,t)=>this.create({...t,type:`warning`,message:e}),this.loading=(e,t)=>this.create({...t,type:`loading`,message:e}),this.promise=(e,t)=>{if(!t)return;let n;t.loading!==void 0&&(n=this.create({...t,promise:e,type:`loading`,message:t.loading,description:typeof t.description==`function`?void 0:t.description}));let r=e instanceof Promise?e:e(),i=n!==void 0,a,o=r.then(async e=>{if(a=[`resolve`,e],V.isValidElement(e))i=!1,this.create({id:n,type:`default`,message:e});else if(ct(e)&&!e.ok){i=!1;let r=typeof t.error==`function`?await t.error(`HTTP error! status: ${e.status}`):t.error,a=typeof t.description==`function`?await t.description(`HTTP error! status: ${e.status}`):t.description;this.create({id:n,type:`error`,message:r,description:a})}else if(t.success!==void 0){i=!1;let r=typeof t.success==`function`?await t.success(e):t.success,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`success`,message:r,description:a})}}).catch(async e=>{if(a=[`reject`,e],t.error!==void 0){i=!1;let r=typeof t.error==`function`?await t.error(e):t.error,a=typeof t.description==`function`?await t.description(e):t.description;this.create({id:n,type:`error`,message:r,description:a})}}).finally(()=>{var e;i&&(this.dismiss(n),n=void 0),(e=t.finally)==null||e.call(t)}),s=()=>new Promise((e,t)=>o.then(()=>a[0]===`reject`?t(a[1]):e(a[1])).catch(t));return typeof n!=`string`&&typeof n!=`number`?{unwrap:s}:Object.assign(n,{unwrap:s})},this.custom=(e,t)=>{let n=t?.id||ot++;return this.create({jsx:e(n),id:n,...t}),n},this.getActiveToasts=()=>this.toasts.filter(e=>!this.dismissedToasts.has(e.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}},st=(e,t)=>{let n=t?.id||ot++;return W.addToast({title:e,...t,id:n}),n},ct=e=>e&&typeof e==`object`&&`ok`in e&&typeof e.ok==`boolean`&&`status`in e&&typeof e.status==`number`,G=Object.assign(st,{success:W.success,info:W.info,warning:W.warning,error:W.error,custom:W.custom,message:W.message,promise:W.promise,dismiss:W.dismiss,loading:W.loading},{getHistory:()=>W.toasts,getToasts:()=>W.getActiveToasts()});function lt(e,{insertAt:t}={}){if(!e||typeof document>`u`)return;let n=document.head||document.getElementsByTagName(`head`)[0],r=document.createElement(`style`);r.type=`text/css`,t===`top`&&n.firstChild?n.insertBefore(r,n.firstChild):n.appendChild(r),r.styleSheet?r.styleSheet.cssText=e:r.appendChild(document.createTextNode(e))}lt(`:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999;transition:transform .4s ease}:where([data-sonner-toaster][data-lifted="true"]){transform:translateY(-10px)}@media (hover: none) and (pointer: coarse){:where([data-sonner-toaster][data-lifted="true"]){transform:none}}:where([data-sonner-toaster][data-x-position="right"]){right:var(--offset-right)}:where([data-sonner-toaster][data-x-position="left"]){left:var(--offset-left)}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:var(--offset-top)}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:var(--offset-bottom)}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast] [data-close-button]{background:var(--gray1)}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:-50%;right:-50%;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y, 0px)) translate(var(--swipe-amount-x, 0px));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{0%{transform:var(--y) translate(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translate(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{0%{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-bg-hover: hsl(0, 0%, 12%);--normal-border: hsl(0, 0%, 20%);--normal-border-hover: hsl(0, 0%, 25%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
|
|
2
|
+
`);function ut(e){return e.label!==void 0}var dt=3,ft=`32px`,pt=`16px`,mt=4e3,ht=356,gt=14,_t=20,vt=200;function K(...e){return e.filter(Boolean).join(` `)}function yt(e){let[t,n]=e.split(`-`),r=[];return t&&r.push(t),n&&r.push(n),r}var bt=e=>{let{invert:t,toast:n,unstyled:r,interacting:i,setHeights:a,visibleToasts:o,heights:s,index:c,toasts:l,expanded:u,removeToast:d,defaultRichColors:f,closeButton:p,style:m,cancelButtonStyle:h,actionButtonStyle:g,className:_=``,descriptionClassName:v=``,duration:y,position:b,gap:ee,loadingIcon:x,expandByDefault:S,classNames:C,icons:w,closeButtonAriaLabel:te=`Close toast`,pauseWhenPageIsHidden:T}=e,[E,D]=V.useState(null),[ne,re]=V.useState(null),[O,k]=V.useState(!1),[ie,A]=V.useState(!1),[j,ae]=V.useState(!1),[oe,se]=V.useState(!1),[ce,le]=V.useState(!1),[ue,de]=V.useState(0),[M,N]=V.useState(0),fe=V.useRef(n.duration||y||mt),pe=V.useRef(null),P=V.useRef(null),me=c===0,he=c+1<=o,F=n.type,I=n.dismissible!==!1,ge=n.className||``,_e=n.descriptionClassName||``,L=V.useMemo(()=>s.findIndex(e=>e.toastId===n.id)||0,[s,n.id]),ve=V.useMemo(()=>n.closeButton??p,[n.closeButton,p]),ye=V.useMemo(()=>n.duration||y||mt,[n.duration,y]),be=V.useRef(0),R=V.useRef(0),xe=V.useRef(0),z=V.useRef(null),[Se,Ce]=b.split(`-`),we=V.useMemo(()=>s.reduce((e,t,n)=>n>=L?e:e+t.height,0),[s,L]),Te=at(),Ee=n.invert||t,De=F===`loading`;R.current=V.useMemo(()=>L*ee+we,[L,we]),V.useEffect(()=>{fe.current=ye},[ye]),V.useEffect(()=>{k(!0)},[]),V.useEffect(()=>{let e=P.current;if(e){let t=e.getBoundingClientRect().height;return N(t),a(e=>[{toastId:n.id,height:t,position:n.position},...e]),()=>a(e=>e.filter(e=>e.toastId!==n.id))}},[a,n.id]),V.useLayoutEffect(()=>{if(!O)return;let e=P.current,t=e.style.height;e.style.height=`auto`;let r=e.getBoundingClientRect().height;e.style.height=t,N(r),a(e=>e.find(e=>e.toastId===n.id)?e.map(e=>e.toastId===n.id?{...e,height:r}:e):[{toastId:n.id,height:r,position:n.position},...e])},[O,n.title,n.description,a,n.id]);let B=V.useCallback(()=>{A(!0),de(R.current),a(e=>e.filter(e=>e.toastId!==n.id)),setTimeout(()=>{d(n)},vt)},[n,d,a,R]);V.useEffect(()=>{if(n.promise&&F===`loading`||n.duration===1/0||n.type===`loading`)return;let e;return u||i||T&&Te?(()=>{if(xe.current<be.current){let e=new Date().getTime()-be.current;fe.current-=e}xe.current=new Date().getTime()})():fe.current!==1/0&&(be.current=new Date().getTime(),e=setTimeout(()=>{var e;(e=n.onAutoClose)==null||e.call(n,n),B()},fe.current)),()=>clearTimeout(e)},[u,i,n,F,T,Te,B]),V.useEffect(()=>{n.delete&&B()},[B,n.delete]);function Oe(){return w!=null&&w.loading?V.createElement(`div`,{className:K(C?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":F===`loading`},w.loading):x?V.createElement(`div`,{className:K(C?.loader,n?.classNames?.loader,`sonner-loader`),"data-visible":F===`loading`},x):V.createElement($e,{className:K(C?.loader,n?.classNames?.loader),visible:F===`loading`})}return V.createElement(`li`,{tabIndex:0,ref:P,className:K(_,ge,C?.toast,n?.classNames?.toast,C?.default,C?.[F],n?.classNames?.[F]),"data-sonner-toast":``,"data-rich-colors":n.richColors??f,"data-styled":!(n.jsx||n.unstyled||r),"data-mounted":O,"data-promise":!!n.promise,"data-swiped":ce,"data-removed":ie,"data-visible":he,"data-y-position":Se,"data-x-position":Ce,"data-index":c,"data-front":me,"data-swiping":j,"data-dismissible":I,"data-type":F,"data-invert":Ee,"data-swipe-out":oe,"data-swipe-direction":ne,"data-expanded":!!(u||S&&O),style:{"--index":c,"--toasts-before":c,"--z-index":l.length-c,"--offset":`${ie?ue:R.current}px`,"--initial-height":S?`auto`:`${M}px`,...m,...n.style},onDragEnd:()=>{ae(!1),D(null),z.current=null},onPointerDown:e=>{De||!I||(pe.current=new Date,de(R.current),e.target.setPointerCapture(e.pointerId),e.target.tagName!==`BUTTON`&&(ae(!0),z.current={x:e.clientX,y:e.clientY}))},onPointerUp:()=>{var e;if(oe||!I)return;z.current=null;let t=Number(P.current?.style.getPropertyValue(`--swipe-amount-x`).replace(`px`,``)||0),r=Number(P.current?.style.getPropertyValue(`--swipe-amount-y`).replace(`px`,``)||0),i=new Date().getTime()-pe.current?.getTime(),a=E===`x`?t:r,o=Math.abs(a)/i;if(Math.abs(a)>=_t||o>.11){de(R.current),(e=n.onDismiss)==null||e.call(n,n),re(E===`x`?t>0?`right`:`left`:r>0?`down`:`up`),B(),se(!0),le(!1);return}ae(!1),D(null)},onPointerMove:t=>{var n,r;if(!z.current||!I||window.getSelection()?.toString().length>0)return;let i=t.clientY-z.current.y,a=t.clientX-z.current.x,o=e.swipeDirections??yt(b);!E&&(Math.abs(a)>1||Math.abs(i)>1)&&D(Math.abs(a)>Math.abs(i)?`x`:`y`);let s={x:0,y:0};E===`y`?(o.includes(`top`)||o.includes(`bottom`))&&(o.includes(`top`)&&i<0||o.includes(`bottom`)&&i>0)&&(s.y=i):E===`x`&&(o.includes(`left`)||o.includes(`right`))&&(o.includes(`left`)&&a<0||o.includes(`right`)&&a>0)&&(s.x=a),(Math.abs(s.x)>0||Math.abs(s.y)>0)&&le(!0),(n=P.current)==null||n.style.setProperty(`--swipe-amount-x`,`${s.x}px`),(r=P.current)==null||r.style.setProperty(`--swipe-amount-y`,`${s.y}px`)}},ve&&!n.jsx?V.createElement(`button`,{"aria-label":te,"data-disabled":De,"data-close-button":!0,onClick:De||!I?()=>{}:()=>{var e;B(),(e=n.onDismiss)==null||e.call(n,n)},className:K(C?.closeButton,n?.classNames?.closeButton)},w?.close??it):null,n.jsx||(0,V.isValidElement)(n.title)?n.jsx?n.jsx:typeof n.title==`function`?n.title():n.title:V.createElement(V.Fragment,null,F||n.icon||n.promise?V.createElement(`div`,{"data-icon":``,className:K(C?.icon,n?.classNames?.icon)},n.promise||n.type===`loading`&&!n.icon?n.icon||Oe():null,n.type===`loading`?null:n.icon||w?.[F]||Ze(F)):null,V.createElement(`div`,{"data-content":``,className:K(C?.content,n?.classNames?.content)},V.createElement(`div`,{"data-title":``,className:K(C?.title,n?.classNames?.title)},typeof n.title==`function`?n.title():n.title),n.description?V.createElement(`div`,{"data-description":``,className:K(v,_e,C?.description,n?.classNames?.description)},typeof n.description==`function`?n.description():n.description):null),(0,V.isValidElement)(n.cancel)?n.cancel:n.cancel&&ut(n.cancel)?V.createElement(`button`,{"data-button":!0,"data-cancel":!0,style:n.cancelButtonStyle||h,onClick:e=>{var t,r;ut(n.cancel)&&I&&((r=(t=n.cancel).onClick)==null||r.call(t,e),B())},className:K(C?.cancelButton,n?.classNames?.cancelButton)},n.cancel.label):null,(0,V.isValidElement)(n.action)?n.action:n.action&&ut(n.action)?V.createElement(`button`,{"data-button":!0,"data-action":!0,style:n.actionButtonStyle||g,onClick:e=>{var t,r;ut(n.action)&&((r=(t=n.action).onClick)==null||r.call(t,e),!e.defaultPrevented&&B())},className:K(C?.actionButton,n?.classNames?.actionButton)},n.action.label):null))};function xt(){if(typeof window>`u`||typeof document>`u`)return`ltr`;let e=document.documentElement.getAttribute(`dir`);return e===`auto`||!e?window.getComputedStyle(document.documentElement).direction:e}function St(e,t){let n={};return[e,t].forEach((e,t)=>{let r=t===1,i=r?`--mobile-offset`:`--offset`,a=r?pt:ft;function o(e){[`top`,`right`,`bottom`,`left`].forEach(t=>{n[`${i}-${t}`]=typeof e==`number`?`${e}px`:e})}typeof e==`number`||typeof e==`string`?o(e):typeof e==`object`?[`top`,`right`,`bottom`,`left`].forEach(t=>{e[t]===void 0?n[`${i}-${t}`]=a:n[`${i}-${t}`]=typeof e[t]==`number`?`${e[t]}px`:e[t]}):o(a)}),n}var Ct=(0,V.forwardRef)(function(e,t){let{invert:n,position:r=`bottom-right`,hotkey:i=[`altKey`,`KeyT`],expand:a,closeButton:o,className:s,offset:c,mobileOffset:l,theme:u=`light`,richColors:d,duration:f,style:p,visibleToasts:m=dt,toastOptions:h,dir:g=xt(),gap:_=gt,loadingIcon:v,icons:y,containerAriaLabel:b=`Notifications`,pauseWhenPageIsHidden:ee}=e,[x,S]=V.useState([]),C=V.useMemo(()=>Array.from(new Set([r].concat(x.filter(e=>e.position).map(e=>e.position)))),[x,r]),[w,te]=V.useState([]),[T,E]=V.useState(!1),[D,ne]=V.useState(!1),[re,O]=V.useState(u===`system`?typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`:u),k=V.useRef(null),ie=i.join(`+`).replace(/Key/g,``).replace(/Digit/g,``),A=V.useRef(null),j=V.useRef(!1),ae=V.useCallback(e=>{S(t=>{var n;return(n=t.find(t=>t.id===e.id))!=null&&n.delete||W.dismiss(e.id),t.filter(({id:t})=>t!==e.id)})},[]);return V.useEffect(()=>W.subscribe(e=>{if(e.dismiss){S(t=>t.map(t=>t.id===e.id?{...t,delete:!0}:t));return}setTimeout(()=>{Xe.flushSync(()=>{S(t=>{let n=t.findIndex(t=>t.id===e.id);return n===-1?[e,...t]:[...t.slice(0,n),{...t[n],...e},...t.slice(n+1)]})})})}),[]),V.useEffect(()=>{if(u!==`system`){O(u);return}if(u===`system`&&(window.matchMedia&&window.matchMedia(`(prefers-color-scheme: dark)`).matches?O(`dark`):O(`light`)),typeof window>`u`)return;let e=window.matchMedia(`(prefers-color-scheme: dark)`);try{e.addEventListener(`change`,({matches:e})=>{O(e?`dark`:`light`)})}catch{e.addListener(({matches:e})=>{try{O(e?`dark`:`light`)}catch(e){console.error(e)}})}},[u]),V.useEffect(()=>{x.length<=1&&E(!1)},[x]),V.useEffect(()=>{let e=e=>{var t,n;i.every(t=>e[t]||e.code===t)&&(E(!0),(t=k.current)==null||t.focus()),e.code===`Escape`&&(document.activeElement===k.current||(n=k.current)!=null&&n.contains(document.activeElement))&&E(!1)};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[i]),V.useEffect(()=>{if(k.current)return()=>{A.current&&(A.current.focus({preventScroll:!0}),A.current=null,j.current=!1)}},[k.current]),V.createElement(`section`,{ref:t,"aria-label":`${b} ${ie}`,tabIndex:-1,"aria-live":`polite`,"aria-relevant":`additions text`,"aria-atomic":`false`,suppressHydrationWarning:!0},C.map((t,r)=>{let[i,u]=t.split(`-`);return x.length?V.createElement(`ol`,{key:t,dir:g===`auto`?xt():g,tabIndex:-1,ref:k,className:s,"data-sonner-toaster":!0,"data-theme":re,"data-y-position":i,"data-lifted":T&&x.length>1&&!a,"data-x-position":u,style:{"--front-toast-height":`${w[0]?.height||0}px`,"--width":`${ht}px`,"--gap":`${_}px`,...p,...St(c,l)},onBlur:e=>{j.current&&!e.currentTarget.contains(e.relatedTarget)&&(j.current=!1,A.current&&=(A.current.focus({preventScroll:!0}),null))},onFocus:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||j.current||(j.current=!0,A.current=e.relatedTarget)},onMouseEnter:()=>E(!0),onMouseMove:()=>E(!0),onMouseLeave:()=>{D||E(!1)},onDragEnd:()=>E(!1),onPointerDown:e=>{e.target instanceof HTMLElement&&e.target.dataset.dismissible===`false`||ne(!0)},onPointerUp:()=>ne(!1)},x.filter(e=>!e.position&&r===0||e.position===t).map((r,i)=>V.createElement(bt,{key:r.id,icons:y,index:i,toast:r,defaultRichColors:d,duration:h?.duration??f,className:h?.className,descriptionClassName:h?.descriptionClassName,invert:n,visibleToasts:m,closeButton:h?.closeButton??o,interacting:D,position:t,style:h?.style,unstyled:h?.unstyled,classNames:h?.classNames,cancelButtonStyle:h?.cancelButtonStyle,actionButtonStyle:h?.actionButtonStyle,removeToast:ae,toasts:x.filter(e=>e.position==r.position),heights:w.filter(e=>e.position==r.position),setHeights:te,expandByDefault:a,gap:_,loadingIcon:v,expanded:T,pauseWhenPageIsHidden:ee,swipeDirections:e.swipeDirections}))):null}))}),wt=new Me({defaultOptions:{queries:{retry:1,refetchOnWindowFocus:!0}}}),Tt=e=>typeof e==`boolean`?`${e}`:e===0?`0`:e,Et=i,Dt=(e,t)=>n=>{if(t?.variants==null)return Et(e,n?.class,n?.className);let{variants:r,defaultVariants:i}=t,a=Object.keys(r).map(e=>{let t=n?.[e],a=i?.[e];if(t===null)return null;let o=Tt(t)||Tt(a);return r[e][o]}),o=n&&Object.entries(n).reduce((e,t)=>{let[n,r]=t;return r===void 0||(e[n]=r),e},{});return Et(e,a,t?.compoundVariants?.reduce((e,t)=>{let{class:n,className:r,...a}=t;return Object.entries(a).every(e=>{let[t,n]=e;return Array.isArray(n)?n.includes({...i,...o}[t]):{...i,...o}[t]===n})?[...e,n,r]:e},[]),n?.class,n?.className)},Ot=Dt(`inline-flex items-center justify-center whitespace-nowrap rounded-full text-sm font-medium ring-offset-background transition-colors duration-fast focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:pointer-events-none disabled:opacity-50`,{variants:{variant:{default:`bg-primary text-primary-foreground hover:bg-primary-600 active:bg-primary-700 shadow-sm`,destructive:`bg-destructive text-destructive-foreground hover:bg-destructive/90`,outline:`border border-border bg-card text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground`,secondary:`bg-muted text-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground`,ghost:`text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`,primary:`bg-primary text-primary-foreground hover:bg-primary-600 active:bg-primary-700 shadow-sm`,subtle:`bg-muted text-muted-foreground hover:bg-[var(--interaction-hover)] hover:text-accent-foreground`,"primary-outline":`border border-primary/30 text-primary hover:bg-primary hover:text-primary-foreground`},size:{default:`h-9 px-4 py-2`,sm:`h-8 px-3 text-xs`,lg:`h-11 px-5 text-[14px]`,xl:`h-12 px-6 text-[15px]`,icon:`h-9 w-9`}},defaultVariants:{variant:`default`,size:`default`}}),kt=V.forwardRef(({className:e,variant:t,size:n,...i},a)=>(0,H.jsx)(`button`,{className:r(Ot({variant:t,size:n,className:e})),ref:a,...i}));kt.displayName=`Button`;var q=V.forwardRef(({className:e,type:t,...n},i)=>(0,H.jsx)(`input`,{type:t,className:r(`flex h-9 w-full rounded-xl border border-border/75 bg-card px-3.5 py-2 text-sm text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground/55 placeholder:font-normal transition-colors focus:outline-none focus:ring-0 disabled:cursor-not-allowed disabled:opacity-50`,e),ref:i,...n}));q.displayName=`Input`;var J=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`label`,{ref:n,className:r(`text-sm font-medium leading-none text-foreground peer-disabled:cursor-not-allowed peer-disabled:opacity-70`,e),...t}));J.displayName=`Label`;function At({children:e,fullHeight:t=!1,className:n}){return(0,H.jsx)(`div`,{className:r(`animate-fade-in`,t?`h-[calc(100vh-80px)] w-full flex flex-col`:`pb-16`,n),children:e})}function jt({title:e,description:t,actions:n,headingLevel:i=2,className:a}){let o=i===1?`h1`:`h2`;return(0,H.jsxs)(`header`,{className:r(`flex shrink-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between`,a),children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(o,{className:`text-xl font-semibold tracking-tight text-foreground`,children:e}),t&&(0,H.jsx)(`p`,{className:`mt-1 max-w-2xl text-sm leading-6 text-muted-foreground`,children:t})]}),n&&(0,H.jsx)(`div`,{className:`flex items-center gap-2 shrink-0`,children:n})]})}function Mt({actions:e,children:t,className:n,description:i,layout:a=`standard`,title:o}){return(0,H.jsxs)(At,{className:r(`w-full space-y-6`,a===`split`&&`pb-0 md:flex md:h-full md:min-h-0 md:flex-col`,n),children:[(0,H.jsx)(jt,{title:o,description:i,actions:e}),t]})}var Nt=Dt(`grid min-h-16 grid-cols-1 gap-3 px-4 py-3.5 sm:grid-cols-[minmax(0,1fr)_auto] sm:items-center sm:gap-6`,{variants:{tone:{default:``,muted:`bg-muted/55`},layout:{responsive:``,stacked:`sm:grid-cols-1 sm:items-start sm:gap-3`}},defaultVariants:{tone:`default`,layout:`responsive`}}),Pt=V.forwardRef(({actions:e,children:t,className:n,description:i,title:a,...o},s)=>(0,H.jsxs)(`section`,{ref:s,className:r(`space-y-2.5`,n),...o,children:[a||i||e?(0,H.jsxs)(`div`,{className:`flex items-end justify-between gap-4 px-1`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[a?(0,H.jsx)(`h3`,{className:`text-sm font-semibold text-foreground`,children:a}):null,i?(0,H.jsx)(`p`,{className:`mt-0.5 text-xs leading-5 text-muted-foreground`,children:i}):null]}),e?(0,H.jsx)(`div`,{className:`shrink-0`,children:e}):null]}):null,t]}));Pt.displayName=`SettingsSection`;var Ft=V.forwardRef(({className:e,...t},n)=>(0,H.jsx)(`div`,{ref:n,className:r(`divide-y divide-border/55 overflow-hidden rounded-2xl bg-muted/45 text-foreground`,e),...t}));Ft.displayName=`SettingsGroup`;var It=V.forwardRef(({className:e,layout:t,tone:n,title:i,description:a,control:o,children:s,...c},l)=>(0,H.jsxs)(`div`,{ref:l,className:r(Nt({layout:t,tone:n}),e),...c,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-sm font-medium text-foreground`,children:i}),a?(0,H.jsx)(`p`,{className:`mt-0.5 text-xs leading-5 text-muted-foreground`,children:a}):null,s?(0,H.jsx)(`div`,{className:`mt-3`,children:s}):null]}),o?(0,H.jsx)(`div`,{className:`min-w-0 sm:shrink-0`,children:o}):null]}));It.displayName=`SettingRow`;function Lt(e){let t=e.trim().replace(/\/+$/,``);if(!t)throw Error(`NextClaw client baseUrl is required.`);return t}function Rt(e,t){return`${Lt(e)}${t.startsWith(`/`)?t:`/${t}`}`}function zt(e,t){if(!t)return e;let n=typeof t==`string`?t:t.toString();return n?`${e}${e.includes(`?`)?`&`:`?`}${n}`:e}function Bt(e,t){let n=new URL(Rt(e,t));return n.protocol===`https:`?n.protocol=`wss:`:n.protocol===`http:`&&(n.protocol=`ws:`),n.toString()}function Vt(e){let t=e??globalThis.fetch;if(typeof t!=`function`)throw Error(`NextClaw fetch transport is not available in this environment.`);return((e,n)=>t.call(globalThis,e,n))}function Ht(e){let t=e.split(/\r?\n/),n=`message`,r=[];for(let e of t){if(e.startsWith(`event:`)){n=e.slice(6).trim();continue}e.startsWith(`data:`)&&r.push(e.slice(5).trimStart())}return r.length===0?null:{event:n,data:r.join(`
|
|
3
|
+
`)}}function Ut(e){try{let t=JSON.parse(e);return t&&typeof t==`object`&&`type`in t?t:null}catch{return null}}var Wt=class{baseUrl;defaultHeaders;fetchImpl;transport;constructor(e,t){this.requestService=e;let{baseUrl:n,fetchImpl:r,headers:i,token:a,transport:o}=t;this.baseUrl=n,this.fetchImpl=Vt(r),this.transport=o,this.defaultHeaders={Accept:`application/json`,...i??{},...a?{Authorization:`Bearer ${a}`}:{}}}send=async e=>await this.requestService.post(`/api/agent-runs/send`,e);editMessage=async e=>await this.requestService.post(`/api/agent-runs/edit-message`,e);continue=async e=>await this.requestService.post(`/api/agent-runs/continue`,e);abort=async e=>await this.requestService.post(`/api/agent-runs/abort`,e);stream=(e,t,n={})=>{if(this.transport)throw Error(`Agent run streaming requires the HTTP fetch transport.`);let r=new AbortController,i=()=>r.abort(n.signal?.reason);return n.signal?.addEventListener(`abort`,i,{once:!0}),this.consumeStream(e,t,r.signal,n.onError).finally(()=>{n.signal?.removeEventListener(`abort`,i)}),{close:()=>{r.abort(),n.signal?.removeEventListener(`abort`,i)}}};consumeStream=async(e,t,n,r)=>{try{let r=new URL(Rt(this.baseUrl,`/api/agent-runs/stream`));r.searchParams.set(`sessionId`,e.sessionId);let i=await this.fetchImpl(r.toString(),{method:`GET`,headers:{...this.defaultHeaders,Accept:`text/event-stream`},signal:n});if(!i.ok)throw Error(`Agent run stream failed with HTTP ${i.status}.`);if(!i.body)throw Error(`Agent run stream response has no body.`);await this.readEventStream(i.body,t,n)}catch(e){if(n.aborted)return;r?.(e)}};readEventStream=async(e,t,n)=>{let r=e.getReader(),i=new TextDecoder,a=``;try{for(;!n.aborted;){let{done:e,value:n}=await r.read();if(e)break;a+=i.decode(n,{stream:!0}),a=this.drainFrames(a,t)}a+=i.decode(),this.drainFrames(`${a}\n\n`,t)}finally{r.releaseLock()}};drainFrames=(e,t)=>{let n=e.replaceAll(`\r
|
|
4
|
+
`,`
|
|
5
|
+
`).split(`
|
|
6
|
+
|
|
7
|
+
`),r=n.pop()??``;for(let e of n){let n=Ht(e);if(n?.event!==`ncp-event`)continue;let r=Ut(n.data);r&&t(r)}return r}},Gt=class{constructor(e,t){this.requestService=e,this.baseUrl=t}list=async()=>(await this.requestService.get(`/api/agents`)).agents;create=async e=>await this.requestService.post(`/api/agents`,e);update=async(e,t)=>await this.requestService.put(`/api/agents/${encodeURIComponent(e)}`,t);delete=async e=>await this.requestService.delete(`/api/agents/${encodeURIComponent(e)}`);resolveAvatarUrl=e=>Rt(this.baseUrl,`/api/agents/${encodeURIComponent(e)}/avatar`)},Kt=class{constructor(e){this.requestService=e}fetchMeta=async()=>await this.requestService.get(`/api/app/meta`);fetchBootstrapStatus=async(e={})=>await this.requestService.get(`/api/runtime/bootstrap-status`,e)},qt=class{constructor(e){this.requestService=e}list=async()=>await this.requestService.get(`/api/app-packages`);get=async e=>await this.requestService.get(`/api/app-packages/${encodeURIComponent(e)}`);listOperations=async()=>await this.requestService.get(`/api/app-package-operations`);startInstall=async e=>await this.requestService.post(`/api/app-package-operations/install`,e);startUpdate=async(e,t={})=>await this.requestService.post(`/api/app-package-operations/${encodeURIComponent(e)}/update`,t);startRollback=async(e,t)=>await this.requestService.post(`/api/app-package-operations/${encodeURIComponent(e)}/rollback`,{version:t});startUninstall=async(e,t=!1)=>await this.requestService.post(`/api/app-package-operations/${encodeURIComponent(e)}/uninstall`,{purgeData:t});install=async e=>await this.requestService.post(`/api/app-packages/install`,e);enable=async e=>await this.requestService.post(`/api/app-packages/${encodeURIComponent(e)}/enable`);disable=async e=>await this.requestService.post(`/api/app-packages/${encodeURIComponent(e)}/disable`);update=async(e,t={})=>await this.requestService.post(`/api/app-packages/${encodeURIComponent(e)}/update`,t);rollback=async(e,t)=>await this.requestService.post(`/api/app-packages/${encodeURIComponent(e)}/rollback`,{version:t});uninstall=async(e,t=!1)=>await this.requestService.request(`/api/app-packages/${encodeURIComponent(e)}`,{method:`DELETE`,body:{purgeData:t}})},Jt=class{constructor(e){this.requestService=e}list=async()=>await this.requestService.get(`/api/app-data`);deleteRetained=async(e,t)=>await this.requestService.request(`/api/app-data/${encodeURIComponent(e)}`,{method:`DELETE`,body:{confirmAppId:t}})},Yt=class{constructor(e){this.requestService=e}fetchStatus=async(e={})=>await this.requestService.get(`/api/auth/status`,{...e.timeoutMs===void 0?{}:{timeoutMs:e.timeoutMs}});setup=async e=>await this.requestService.post(`/api/auth/setup`,e);login=async e=>await this.requestService.post(`/api/auth/login`,e);logout=async()=>await this.requestService.post(`/api/auth/logout`,{});updatePassword=async e=>await this.requestService.put(`/api/auth/password`,e);updateEnabled=async e=>await this.requestService.put(`/api/auth/enabled`,e)},Xt=class{constructor(e){this.requestService=e}start=async(e,t={})=>await this.requestService.post(`/api/config/channels/${encodeURIComponent(e)}/auth/start`,t);poll=async(e,t)=>await this.requestService.post(`/api/config/channels/${encodeURIComponent(e)}/auth/poll`,t);connect=async(e,t)=>await this.requestService.post(`/api/config/channels/${encodeURIComponent(e)}/auth/connect`,t)},Zt=class{constructor(e){this.requestService=e}fetch=async()=>await this.requestService.get(`/api/config`);fetchMeta=async()=>await this.requestService.get(`/api/config/meta`);fetchSchema=async()=>await this.requestService.get(`/api/config/schema`);updateModel=async e=>await this.requestService.put(`/api/config/model`,e);updateSearch=async e=>await this.requestService.put(`/api/config/search`,e);updateChannel=async(e,t)=>await this.requestService.put(`/api/config/channels/${encodeURIComponent(e)}`,t);updateRuntime=async e=>await this.requestService.put(`/api/config/runtime`,e);updateSecrets=async e=>await this.requestService.put(`/api/config/secrets`,e);executeAction=async(e,t={})=>await this.requestService.post(`/api/config/actions/${encodeURIComponent(e)}/execute`,t);fetchChatSessionTypes=async()=>await this.requestService.get(`/api/ncp/session-types`);fetchCronJobs=async(e={})=>await this.requestService.get(`/api/cron`,{query:{all:e.all?`1`:void 0,limit:e.limit,offset:e.offset,query:e.query,status:e.status}});deleteCronJob=async e=>await this.requestService.delete(`/api/cron/${encodeURIComponent(e)}`);setCronJobEnabled=async(e,t)=>await this.requestService.put(`/api/cron/${encodeURIComponent(e)}/enable`,t);runCronJob=async(e,t={})=>await this.requestService.post(`/api/cron/${encodeURIComponent(e)}/run`,t)},Qt=class{constructor(e){this.requestService=e}fetchItems=async e=>await this.requestService.get(`${$t(e.type)}/items`,{query:en(e)});fetchItem=async(e,t)=>await this.requestService.get(`${$t(t)}/items/${encodeURIComponent(e)}`);fetchSkillContent=async e=>await this.requestService.get(`/api/marketplace/skills/items/${encodeURIComponent(e)}/content`);fetchRecommendations=async(e,t={})=>await this.requestService.get(`${$t(e)}/recommendations`,{query:{...t.scene?.trim()?{scene:t.scene.trim()}:{},...typeof t.limit==`number`&&Number.isFinite(t.limit)?{limit:Math.max(1,Math.trunc(t.limit))}:{}}});fetchSkillScenes=async()=>await this.requestService.get(`/api/marketplace/skills/scenes`);install=async e=>await this.requestService.post(`${$t(tn(e.type))}/install`,e);fetchInstalled=async e=>await this.requestService.get(`${$t(e)}/installed`);manage=async e=>await this.requestService.post(`${$t(tn(e.type))}/manage`,e)};function $t(e){return e===`skill`?`/api/marketplace/skills`:`/api/marketplace/mcp`}function en(e){let{page:t,pageSize:n,q:r,scene:i,sort:a,tag:o}=e,s={};return r?.trim()&&(s.q=r.trim()),o?.trim()&&(s.tag=o.trim()),i?.trim()&&(s.scene=i.trim()),a&&(s.sort=a),typeof t==`number`&&Number.isFinite(t)&&(s.page=Math.max(1,Math.trunc(t))),typeof n==`number`&&Number.isFinite(n)&&(s.pageSize=Math.max(1,Math.trunc(n))),Object.keys(s).length>0?s:void 0}function tn(e){if(!e)throw Error(`Marketplace request type is required.`);return e}var nn=class{constructor(e){this.requestService=e}list=async()=>await this.requestService.get(`/api/inbox/deliveries`);get=async e=>await this.requestService.get(this.deliveryPath(e));updateState=async(e,t)=>await this.requestService.request(this.deliveryPath(e),{method:`PATCH`,body:{action:t}});delete=async e=>(await this.requestService.delete(this.deliveryPath(e))).deleted;deliveryPath=e=>`/api/inbox/deliveries/${encodeURIComponent(e)}`},rn=class{constructor(e){this.requestService=e}fetchItems=async(e={})=>await this.requestService.get(`/api/marketplace/mcp/items`,{query:an(e)});fetchInstalled=async()=>await this.requestService.get(`/api/marketplace/mcp/installed`);fetchItem=async e=>await this.requestService.get(`/api/marketplace/mcp/items/${encodeURIComponent(e)}`);fetchContent=async e=>await this.requestService.get(`/api/marketplace/mcp/items/${encodeURIComponent(e)}/content`);fetchRecommendations=async(e={})=>await this.requestService.get(`/api/marketplace/mcp/recommendations`,{query:{...e.scene?.trim()?{scene:e.scene.trim()}:{},...typeof e.limit==`number`&&Number.isFinite(e.limit)?{limit:Math.max(1,Math.trunc(e.limit))}:{}}});install=async e=>await this.requestService.post(`/api/marketplace/mcp/install`,e);manage=async e=>await this.requestService.post(`/api/marketplace/mcp/manage`,e);doctor=async e=>await this.requestService.post(`/api/marketplace/mcp/doctor`,{name:e})};function an(e){let{page:t,pageSize:n,q:r,sort:i,tag:a}=e,o={};return r?.trim()&&(o.q=r.trim()),a?.trim()&&(o.tag=a.trim()),i&&(o.sort=i),typeof t==`number`&&Number.isFinite(t)&&(o.page=Math.max(1,Math.trunc(t))),typeof n==`number`&&Number.isFinite(n)&&(o.pageSize=Math.max(1,Math.trunc(n))),Object.keys(o).length>0?o:void 0}var on=`x-nextclaw-panel-bridge-session`;function sn(e){return e?{[on]:e}:void 0}var cn=class{constructor(e){this.requestService=e}listPanelApps=async()=>await this.requestService.get(`/api/panel-apps`);updatePanelAppPreferences=async(e,t)=>await this.requestService.request(`/api/panel-apps/${encodeURIComponent(e)}/preferences`,{method:`PATCH`,body:t});recordPanelAppOpened=async e=>await this.requestService.post(`/api/panel-apps/${encodeURIComponent(e)}/open`);deletePanelApp=async e=>await this.requestService.delete(`/api/panel-apps/${encodeURIComponent(e)}`);createBridgeSession=async e=>await this.requestService.post(`/api/panel-app-bridge-sessions`,e);deleteBridgeSession=async e=>await this.requestService.delete(`/api/panel-app-bridge-sessions/${encodeURIComponent(e)}`);grantClient=async e=>await this.requestService.post(`/api/panel-app-client-grants/${encodeURIComponent(e)}`,{});revokeClient=async e=>await this.requestService.delete(`/api/panel-app-client-grants/${encodeURIComponent(e)}`);sendAgentMessage=async(e,t={})=>await this.requestService.post(`/api/panel-app-agent/send`,e,{headers:sn(t.bridgeSessionToken)});generateAgentObject=async(e,t={})=>await this.requestService.post(`/api/panel-app-agent/generate-object`,e,{headers:sn(t.bridgeSessionToken)});grantAgentCapability=async(e,t={})=>await this.requestService.post(`/api/panel-app-agent-capabilities/${encodeURIComponent(e)}/grant`,{},{headers:sn(t.bridgeSessionToken)})},ln=class{constructor(e){this.requestService=e}list=async()=>await this.requestService.get(`/api/providers`);listTemplates=async()=>await this.requestService.get(`/api/provider-templates`);listModelCatalog=async()=>await this.requestService.get(`/api/provider-model-catalog`);update=async(e,t)=>await this.requestService.put(`/api/providers/${encodeURIComponent(e)}`,t);create=async(e={})=>await this.requestService.post(`/api/providers`,e);delete=async e=>await this.requestService.delete(`/api/providers/${encodeURIComponent(e)}`);testConnection=async(e,t)=>await this.requestService.post(`/api/providers/${encodeURIComponent(e)}/test`,t);discoverModels=async(e,t)=>await this.requestService.post(`/api/providers/${encodeURIComponent(e)}/models/discover`,t);startAuth=async(e,t={})=>await this.requestService.post(`/api/providers/${encodeURIComponent(e)}/auth/start`,t);pollAuth=async(e,t)=>await this.requestService.post(`/api/providers/${encodeURIComponent(e)}/auth/poll`,t);importAuthFromCli=async e=>await this.requestService.post(`/api/providers/${encodeURIComponent(e)}/auth/import-cli`,{})},un=class{constructor(e){this.requestService=e}list=async()=>await this.requestService.get(`/api/projects`);create=async e=>await this.requestService.post(`/api/projects`,e);addExisting=async e=>await this.requestService.post(`/api/projects/existing`,e)},dn=class{baseUrl;transport;webSocketFactory;constructor(e){this.options=e,this.baseUrl=e.baseUrl,this.transport=e.transport,this.webSocketFactory=e.webSocketFactory}subscribe=(e,t={})=>{if(this.transport?.subscribe){let t=this.transport.subscribe(e);return{close:()=>{t()}}}let n=null,r=null,i=!1,a=Math.max(200,t.reconnectDelayMs??1e3),o=()=>{r!==null&&(clearTimeout(r),r=null)},s=t=>{e(t)},c=()=>{try{n=this.createSocket(Bt(this.baseUrl,`/ws`))}catch(e){t.onError?.(e),i||(r=setTimeout(c,a));return}n.onopen=()=>{s({type:`connection.open`})},n.onmessage=e=>{let t=this.parseEvent(e.data);t&&s(t)},n.onerror=e=>{t.onError?.(e),s({type:`connection.error`,payload:{message:`WebSocket error`}})},n.onclose=()=>{s({type:`connection.close`}),n=null,i||(o(),r=setTimeout(c,a))}};return c(),{close:()=>{i=!0,o(),n?.close(),n=null}}};createSocket=e=>{if(this.webSocketFactory)return this.webSocketFactory(e);if(typeof globalThis.WebSocket!=`function`)throw Error(`WebSocket is unavailable. Provide webSocketFactory when creating the client.`);return new globalThis.WebSocket(e)};parseEvent=e=>{if(typeof e!=`string`)return null;try{let t=JSON.parse(e);return t&&typeof t==`object`&&`type`in t?t:null}catch{return null}}},fn=class{constructor(e){this.requestService=e}fetchStatus=async()=>await this.requestService.get(`/api/remote/status`);fetchDoctor=async()=>await this.requestService.get(`/api/remote/doctor`);login=async e=>await this.requestService.post(`/api/remote/login`,e);startBrowserAuth=async(e={})=>await this.requestService.post(`/api/remote/auth/start`,e);pollBrowserAuth=async e=>await this.requestService.post(`/api/remote/auth/poll`,e);logout=async()=>await this.requestService.post(`/api/remote/logout`,{});updateAccountProfile=async e=>await this.requestService.put(`/api/remote/account/profile`,e);updateSettings=async e=>await this.requestService.put(`/api/remote/settings`,e);controlService=async e=>await this.requestService.post(`/api/remote/service/${e}`,{})},Y=class extends Error{status;code;details;constructor(e){let{code:t,details:n,message:r,status:i}=e;super(r),this.name=`NextClawClientError`,this.status=i,this.code=t,this.details=n}};function pn(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function mn(e,t){return pn(e)?e[t]:void 0}var hn=class{baseUrl;fetchImpl;requestTimeoutMs;defaultHeaders;transport;constructor(e){this.options=e;let{baseUrl:t,fetchImpl:n,headers:r,requestTimeoutMs:i,token:a}=e;this.baseUrl=t,this.fetchImpl=Vt(n),this.requestTimeoutMs=Math.max(1e3,i??15e3),this.transport=e.transport,this.defaultHeaders={Accept:`application/json`,...r??{},...a?{Authorization:`Bearer ${a}`}:{}}}request=async(e,t={})=>{let{body:n,headers:r,method:i,query:a,signal:o,timeoutMs:s}=t;if(this.transport)return await this.requestWithTransport(e,t);let c=new AbortController,l=Math.max(1e3,s??this.requestTimeoutMs),u=this.bindAbortSignal(c,o),d=setTimeout(()=>c.abort(),l),f={...this.defaultHeaders,...r??{}},p=this.normalizeRequestBody(n,f);try{let t=await this.fetchImpl(Rt(this.baseUrl,zt(e,this.serializeQuery(a))),{method:i??`GET`,headers:f,body:p,signal:c.signal}),n=await t.json();if(!t.ok){let e=this.extractApiError(n);throw new Y({message:e.message,status:t.status,code:e.code,details:e.details})}if(!this.isApiResponse(n))throw new Y({message:`Unexpected NextClaw API response shape.`,status:t.status});if(!n.ok)throw new Y({message:n.error.message,status:t.status,code:n.error.code,details:n.error.details});return n.data}catch(e){throw e instanceof Y?e:e instanceof Error&&e.name===`AbortError`?new Y({message:`NextClaw API request timed out after ${l}ms.`}):new Y({message:e instanceof Error?e.message:`NextClaw API request failed.`})}finally{o?.removeEventListener(`abort`,u),clearTimeout(d)}};bindAbortSignal=(e,t)=>{let n=()=>e.abort(t?.reason);return t?t.aborted?(e.abort(t.reason),n):(t.addEventListener(`abort`,n,{once:!0}),n):n};requestWithTransport=async(e,t)=>{let{body:n,headers:r,method:i,query:a,signal:o,timeoutMs:s}=t,{transport:c}=this;if(!c)throw new Y({message:`NextClaw transport is not configured.`});try{return await c.request({method:i??`GET`,path:e,...n===void 0?{}:{body:n},...a?{query:a}:{},...r?{headers:r}:{},...o?{signal:o}:{},...s===void 0?{}:{timeoutMs:s}})}catch(e){if(e instanceof Y)throw e;let t=mn(e,`code`),n=mn(e,`details`),r=mn(e,`status`);throw new Y({message:e instanceof Error?e.message:`NextClaw API request failed.`,code:typeof t==`string`?t:void 0,details:pn(n)?n:void 0,status:typeof r==`number`?r:void 0})}};get=async(e,t={})=>await this.request(e,{...t,method:`GET`});post=async(e,t,n={})=>await this.request(e,{...n,method:`POST`,...t===void 0?{}:{body:t}});put=async(e,t,n={})=>await this.request(e,{...n,method:`PUT`,...t===void 0?{}:{body:t}});delete=async(e,t={})=>await this.request(e,{...t,method:`DELETE`});upload=async(e,t,n={})=>{let{headers:r,signal:i,timeoutMs:a}=n;if(this.transport?.upload)return await this.transport.upload({path:e,formData:t,...r?{headers:r}:{},...i?{signal:i}:{},...a===void 0?{}:{timeoutMs:a}});let o=new AbortController,s=Math.max(1e3,a??this.requestTimeoutMs),c=()=>o.abort(i?.reason);i&&(i.aborted?o.abort(i.reason):i.addEventListener(`abort`,c,{once:!0}));let l=setTimeout(()=>o.abort(),s);try{let n=await this.fetchImpl(Rt(this.baseUrl,e),{method:`POST`,headers:{Accept:`application/json`,...gn(this.options.token)??{},...this.options.headers??{},...r??{}},body:t,signal:o.signal}),i=await n.json();if(!n.ok){let e=this.extractApiError(i);throw new Y({message:e.message,status:n.status,code:e.code,details:e.details})}if(!this.isApiResponse(i)||!i.ok)throw new Y({message:`Unexpected NextClaw upload response shape.`,status:n.status});return i.data}catch(e){throw e instanceof Y?e:e instanceof Error&&e.name===`AbortError`?new Y({message:`NextClaw API upload timed out after ${s}ms.`}):new Y({message:e instanceof Error?e.message:`NextClaw API upload failed.`})}finally{i?.removeEventListener(`abort`,c),clearTimeout(l)}};isApiResponse=e=>typeof e==`object`&&!!e&&`ok`in e;extractApiError=e=>{if(this.isApiResponse(e)&&!e.ok)return e.error;if(typeof e==`object`&&e&&`message`in e){let t=e;return{code:typeof t.code==`string`?t.code:`HTTP_ERROR`,message:typeof t.message==`string`?t.message:`NextClaw API request failed.`,details:t.details!==null&&typeof t.details==`object`?t.details:void 0}}return{code:`HTTP_ERROR`,message:`NextClaw API request failed.`}};normalizeRequestBody=(e,t)=>{if(e!==void 0)return e instanceof FormData||e instanceof URLSearchParams||e instanceof Blob||e instanceof ArrayBuffer?e:typeof e==`string`?(!(`Content-Type`in t)&&!(`content-type`in t)&&(t[`Content-Type`]=`application/json`),e):(!(`Content-Type`in t)&&!(`content-type`in t)&&(t[`Content-Type`]=`application/json`),JSON.stringify(e))};serializeQuery=e=>{if(!e)return;if(e instanceof URLSearchParams)return e;let t=new URLSearchParams;for(let[n,r]of Object.entries(e)){let e=Array.isArray(r)?r:[r];for(let r of e)r!=null&&t.append(n,String(r))}return t}};function gn(e){return e?{Authorization:`Bearer ${e}`}:null}var _n=class{constructor(e){this.requestService=e}fetch=async()=>await this.requestService.get(`/api/runtime/control`);startService=async()=>await this.requestService.post(`/api/runtime/control/start-service`,{});restartService=async()=>await this.requestService.post(`/api/runtime/control/restart-service`,{});stopService=async()=>await this.requestService.post(`/api/runtime/control/stop-service`,{})},vn=class{constructor(e){this.requestService=e}fetch=async()=>await this.requestService.get(`/api/runtime/update`);check=async()=>await this.requestService.post(`/api/runtime/update/check`,{});download=async()=>await this.requestService.post(`/api/runtime/update/download`,{});apply=async()=>await this.requestService.post(`/api/runtime/update/apply`,{});updateChannel=async e=>await this.requestService.put(`/api/runtime/update/channel`,{channel:e})},yn=class{constructor(e){this.requestService=e}browse=async e=>{let{basePath:t,includeFiles:n,path:r}=e??{},i=typeof r==`string`?r.trim():``,a=typeof t==`string`?t.trim():``;return await this.requestService.get(`/api/server-paths/browse`,{query:{...i?{path:i}:{},...a?{basePath:a}:{},...n?{includeFiles:`1`}:{}}})};watch=async e=>await this.requestService.post(`/api/server-paths/watch`,e);unwatch=async e=>{await this.requestService.delete(`/api/server-paths/watch`,{query:{subscriptionId:e.trim()}})};createDirectory=async e=>await this.requestService.post(`/api/server-paths/directory`,e);createFile=async e=>await this.requestService.post(`/api/server-paths/file`,e);renameEntry=async e=>await this.requestService.request(`/api/server-paths/entry`,{method:`PATCH`,body:e});deleteEntry=async e=>await this.requestService.delete(`/api/server-paths/entry`,{query:{basePath:e.basePath.trim(),path:e.path.trim()}});uploadFiles=async e=>{let{basePath:t,files:n,overwrite:r,targetPath:i}=e,a=new FormData;return a.append(`basePath`,t.trim()),a.append(`targetPath`,i.trim()),a.append(`overwrite`,r?`true`:`false`),n.forEach(e=>a.append(`files`,e)),await this.requestService.upload(`/api/server-paths/files`,a,{timeoutMs:12e4})};read=async e=>{let{basePath:t,line:n,path:r}=e,i=r.trim(),a=typeof t==`string`?t.trim():``,o=Number.isSafeInteger(n)&&(n??0)>0?n:null;return await this.requestService.get(`/api/server-paths/read`,{query:{path:i,...a?{basePath:a}:{},...o?{line:String(o)}:{}}})};search=async e=>{let{basePath:t,limit:n,query:r}=e,i=t.trim(),a=r?.trim()??``,o=Number.isSafeInteger(n)&&(n??0)>0?n:null;return await this.requestService.get(`/api/server-paths/search`,{query:{basePath:i,...a?{query:a}:{},...o?{limit:String(o)}:{}}})}},bn=`x-nextclaw-panel-bridge-session`;function xn(e){return e?{[bn]:e}:void 0}var Sn=class{constructor(e){this.requestService=e}listServiceApps=async()=>await this.requestService.get(`/api/service-apps`);getServiceApp=async e=>await this.requestService.get(`/api/service-apps/${encodeURIComponent(e)}`);restartServiceApp=async e=>await this.requestService.post(`/api/service-apps/${encodeURIComponent(e)}/restart`);deleteServiceApp=async(e,t=!1)=>await this.requestService.request(`/api/service-apps/${encodeURIComponent(e)}`,{method:`DELETE`,body:{purgeData:t}});listServiceActions=async(e={})=>{let t=e.appId?`?${new URLSearchParams({appId:e.appId}).toString()}`:``;return await this.requestService.get(`/api/service-actions${t}`,{headers:xn(e.bridgeSessionToken)})};discoverServiceAppActions=async e=>await this.requestService.post(`/api/service-apps/${encodeURIComponent(e)}/actions/discover`,{});invokeServiceAction=async(e,t,n={})=>await this.requestService.post(`/api/service-actions/${encodeURIComponent(e)}/invoke`,{input:t??{}},{headers:xn(n.bridgeSessionToken)});grantServiceAction=async(e,t={})=>await this.requestService.post(`/api/service-actions/${encodeURIComponent(e)}/grant`,{},{headers:xn(t.bridgeSessionToken)});grantServiceActions=async(e,t={})=>await this.requestService.post(`/api/service-action-grants`,{actionIds:e},{headers:xn(t.bridgeSessionToken)});listServiceActionGrants=async()=>await this.requestService.get(`/api/service-action-grants`);revokeServiceAction=async(e,t={})=>await this.requestService.delete(`/api/service-actions/${encodeURIComponent(e)}/grant`,{headers:xn(t.bridgeSessionToken)});revokeServiceActionGrant=async e=>{let t=new URLSearchParams({surface:e.caller.surface,appId:e.caller.appId});return await this.requestService.delete(`/api/service-action-grants/${encodeURIComponent(e.actionId)}?${t.toString()}`)}},Cn=class{constructor(e,t){this.requestService=e,this.eventBus=t}list=async e=>{let{limit:t,peerId:n}=e??{},r=new URLSearchParams;typeof t==`number`&&Number.isFinite(t)&&r.set(`limit`,String(Math.max(1,Math.trunc(t))));let i=n?.trim();return i&&r.set(`peerId`,i),await this.requestService.get(`/api/ncp/sessions`,{...r.size>0?{query:r}:{}})};get=async e=>await this.requestService.get(`/api/ncp/sessions/${encodeURIComponent(e)}`);listMessages=async(e,t={})=>{let n=typeof t==`number`?{limit:t}:t,r=new URLSearchParams;return typeof n.limit==`number`&&Number.isFinite(n.limit)&&r.set(`limit`,String(Math.max(1,Math.trunc(n.limit)))),n.cursor?.trim()&&r.set(`cursor`,n.cursor.trim()),await this.requestService.get(`/api/ncp/sessions/${encodeURIComponent(e)}/messages`,{...r.size>0?{query:r}:{},...n.signal?{signal:n.signal}:{}})};listSkills=async(e,t)=>await this.requestService.get(`/api/ncp/sessions/${encodeURIComponent(e)}/skills`,{query:t?.projectRoot?.trim()?{projectRoot:t.projectRoot.trim()}:void 0});listQueuedInputs=async e=>await this.requestService.get(`/api/ncp/sessions/${encodeURIComponent(e)}/queued-inputs`);deleteQueuedInput=async(e,t)=>await this.requestService.delete(`/api/ncp/sessions/${encodeURIComponent(e)}/queued-inputs/${encodeURIComponent(t)}`);update=async(e,t)=>await this.requestService.put(`/api/ncp/sessions/${encodeURIComponent(e)}`,t);compactContext=async e=>await this.requestService.post(`/api/ncp/sessions/${encodeURIComponent(e)}/context/compact`);delete=async e=>await this.requestService.delete(`/api/ncp/sessions/${encodeURIComponent(e)}`);uploadAssets=async e=>{let t=new FormData;for(let n of e)t.append(`files`,n);return await this.requestService.upload(`/api/ncp/assets`,t)};subscribe=(e,t={})=>({close:this.eventBus.subscribeAll(t=>{e(t)})})},wn=class{constructor(e){this.requestService=e}list=async(e={})=>await this.requestService.get(`/api/system-object-references`,{query:e});resolve=async e=>await this.requestService.post(`/api/system-object-references/resolve`,{uri:e})},Tn=class{baseUrl;agentRuns;app;appPackages;appData;agents;auth;channelAuth;config;eventBus;marketplace;inboxDeliveries;mcpMarketplace;panelApps;providers;projects;realtime;remote;runtimeControl;runtimeUpdate;serverPaths;serviceApps;sessions;systemObjectReferences;constructor(e){this.baseUrl=Lt(e.baseUrl);let t={...e,baseUrl:this.baseUrl},r=new hn(t);this.realtime=new dn(t);let i=null;this.eventBus=new n({onFirstSubscriber:()=>{i??=this.realtime.subscribe(e=>{this.eventBus.emitEnvelope({type:e.type,payload:`payload`in e?e.payload:void 0,emittedAt:`emittedAt`in e?e.emittedAt:new Date().toISOString(),source:`source`in e?e.source:`realtime`})})},onNoSubscribers:()=>{i?.close(),i=null}}),this.agentRuns=new Wt(r,t),this.app=new Kt(r),this.appPackages=new qt(r),this.appData=new Jt(r),this.agents=new Gt(r,this.baseUrl),this.auth=new Yt(r),this.channelAuth=new Xt(r),this.config=new Zt(r),this.marketplace=new Qt(r),this.inboxDeliveries=new nn(r),this.mcpMarketplace=new rn(r),this.panelApps=new cn(r),this.providers=new ln(r),this.projects=new un(r),this.remote=new fn(r),this.runtimeControl=new _n(r),this.runtimeUpdate=new vn(r),this.serverPaths=new yn(r),this.serviceApps=new Sn(r),this.sessions=new Cn(r,this.eventBus),this.systemObjectReferences=new wn(r)}},En=`http://127.0.0.1:55667`,Dn=(()=>{let e=(void 0)?.trim();return e?e.replace(/\/$/,``):typeof window<`u`&&window.location?.origin?window.location.origin:En})(),On={"Use this page to manage the local NextClaw service. Closing the browser does not stop the service.":`runtimeControlManagedLocalMessage`,"This page is served by the running local service. Closing the browser does not stop it.":`runtimeControlManagedLocalHint`,"This page is served by the running local service.":`runtimeControlManagedLocalHintShort`,"This page is already hosted by the running local service.":`runtimeControlStartUnavailableHosted`,"App restart is only available in the desktop shell.":`runtimeControlRestartAppDesktopOnly`,"The local service is not running.":`runtimeControlServiceNotRunning`,"The local service is already stopped.":`runtimeControlServiceAlreadyStopped`,"Managed service started.":`runtimeControlManagedServiceStarted`,"Managed service start scheduled.":`runtimeControlManagedServiceStartScheduled`,"Restart scheduled. This page may disconnect for a few seconds.":`runtimeControlRestartScheduled`,"Stop scheduled. This page will disconnect shortly.":`runtimeControlStopScheduled`,"runtime healthy":`runtimeControlHealthy`};function kn(e){return e.activeSystemAction?`service-transitioning`:e.lifecyclePhase}function An(e){return e===`ready`?`connected`:e===`startup-failed`||e===`stalled`?`disconnected`:`connecting`}function jn(e){let t=kn(e);return{...e,phase:t,connectionStatus:An(t)}}function Mn(e){return e===`start-service`?`starting-service`:e===`stop-service`?`stopping-service`:e===`restart-service`?`restarting-service`:`restarting-app`}function Nn(e){return e===`start-service`?`starting`:e===`stop-service`?`stopping`:e===`restart-service`?`restarting`:null}function X(e){if(!e)return null;let t=On[e.trim()];return t?o(t):e}function Pn(e){let{action:t,message:n}=e;return{action:t,lifecycle:Mn(t),serviceState:Nn(t),message:n}}function Fn(e){if(e.runtimeControlError)return{tone:`inactive`,title:o(`runtimeControlLoadFailed`),description:e.runtimeControlError,reasonLines:[],actionLabel:null,isBusy:!1};if(!e.runtimeControlView)return{tone:`inactive`,title:o(`runtimeStatusLoadingTitle`),description:o(`runtimeStatusLoadingDescription`),reasonLines:[],actionLabel:null,isBusy:!!e.activeSystemAction};if(e.activeSystemAction)return{tone:`attention`,title:o(`runtimeControlTitle`),description:X(e.activeSystemAction.message)||X(e.runtimeControlView.message)||o(`runtimeControlDescription`),reasonLines:[],actionLabel:null,isBusy:!0};let t=e.runtimeControlView;return t.pendingRestart?{tone:`attention`,title:o(`runtimeStatusPendingRestartTitle`),description:o(`runtimeStatusPendingRestartDescription`),reasonLines:t.pendingRestart.changedPaths.length>0?t.pendingRestart.changedPaths.map(e=>o(`runtimeStatusPendingRestartReasonItem`).replace(`{path}`,e)):[t.pendingRestart.message],actionLabel:t.canRestartService.available?o(`runtimeStatusRestartAction`):null,isBusy:!1}:{tone:t.lifecycle===`healthy`?`healthy`:`inactive`,title:o(`runtimeStatusHealthyTitle`),description:o(`runtimeStatusHealthyDescription`),reasonLines:[],actionLabel:null,isBusy:!1}}function In(e){let t=e.activeSystemAction,n=e.runtimeControlView;return{controlView:n,visibleLifecycle:t?.lifecycle??n?.lifecycle??`healthy`,visibleServiceState:t?.serviceState??n?.serviceState??`unknown`,visibleMessage:X(t?.message)||X(e.lastSystemActionError)||X(n?.message)||o(`runtimeControlDescription`),busyAction:t?.action??null,busy:!!t,pendingRestart:n?.pendingRestart??null,errorMessage:X(e.lastSystemActionError)||X(e.runtimeControlError)||null}}var Ln={lifecyclePhase:`cold-starting`,hasReachedReady:!1,lastReadyAt:null,recoveryStartedAt:null,bootstrapStatus:null,lastError:null,lastTransportError:null,runtimeControlView:null,runtimeControlError:null,activeSystemAction:null,lastSystemActionError:null},Rn=c(e=>({state:Ln,patchState:t=>e(e=>({state:{...e.state,...t}}))}));function zn(e){if(e.length===0)throw Error(`AdaptiveCadence requires at least one stage.`);for(let t of e)if(t.delaysMs.length===0)throw Error(`AdaptiveCadence stage requires at least one delay.`)}var Bn=class{constructor(e){this.options=e,this.attempt=0,this.startedAt=null,this.lastFailureAt=null,this.lastSuccessAt=null,this.manualTriggerPending=!1,this.completed=!1,this.recordFailure=()=>{let e=this.clock();this.completed=!1,this.manualTriggerPending=!1,this.startedAt=this.startedAt??e,this.lastFailureAt=e,this.attempt+=1},this.recordSuccess=()=>{this.lastSuccessAt=this.clock(),this.attempt=0,this.startedAt=null,this.lastFailureAt=null,this.manualTriggerPending=!1,this.completed=!0},this.reset=()=>{this.attempt=0,this.startedAt=null,this.lastFailureAt=null,this.lastSuccessAt=null,this.manualTriggerPending=!1,this.completed=!1},this.requestManualTrigger=()=>{this.completed=!1,this.manualTriggerPending=!0},this.hasManualTrigger=()=>this.manualTriggerPending,this.getNextDelay=(e={})=>{if(this.manualTriggerPending)return e.consumeManualTrigger&&(this.manualTriggerPending=!1),this.options.manualTriggerDelayMs;if(this.completed)return this.options.successDelayMs;if(this.startedAt===null)return this.options.idleDelayMs;let t=this.resolveStage(this.clock()-this.startedAt);return t.delaysMs[Math.min(this.attempt-1,t.delaysMs.length-1)]},this.getSnapshot=()=>({attempt:this.attempt,startedAt:this.startedAt,lastFailureAt:this.lastFailureAt,lastSuccessAt:this.lastSuccessAt,manualTriggerPending:this.manualTriggerPending,completed:this.completed}),this.resolveStage=e=>this.options.stages.find(t=>t.untilElapsedMs===void 0||e<t.untilElapsedMs)??this.options.stages[this.options.stages.length-1],zn(e.stages),this.clock=e.clock??(()=>Date.now())}},Vn=3e4,Hn={idleDelayMs:1e3,manualTriggerDelayMs:0,successDelayMs:!1,stages:[{untilElapsedMs:3e4,delaysMs:[500,1e3,2e3,4e3,5e3]},{untilElapsedMs:5*6e4,delaysMs:[1e4,15e3,3e4]},{delaysMs:[6e4]}]};function Un(e){return e instanceof Error?e.message:String(e??``)}function Wn(e){return e&&(e.ncpAgent.error?.trim()||e.lastError?.trim())||null}function Gn(e){return o(e===`start-service`?`runtimeControlStartingServiceHelp`:e===`restart-service`?`runtimeControlRestartingServiceHelp`:e===`stop-service`?`runtimeControlStoppingServiceHelp`:`runtimeControlRestartingAppHelp`)}var Z=new class{constructor(){this.recoveryTimeoutId=null,this.runtimeBootstrapProbeCadence=new Bn(Hn),this.getRuntimeBootstrapPollInterval=e=>{let{lifecyclePhase:t,activeSystemAction:n}=this.getState(),r=t===`recovering`||t===`stalled`||n?.lifecycle===`recovering`;return this.runtimeBootstrapProbeCadence.hasManualTrigger()?this.runtimeBootstrapProbeCadence.getNextDelay({consumeManualTrigger:!0}):!r&&e?.ncpAgent.state===`ready`?!1:this.runtimeBootstrapProbeCadence.getNextDelay({consumeManualTrigger:!0})},this.getRuntimeControl=async()=>this.decorateForCurrentEnvironment(await Ha()),this.reportBootstrapStatus=e=>{let t=this.getState(),n=Wn(e);if(e.ncpAgent.state===`ready`){this.transitionToReady(e);return}if(!t.hasReachedReady){if(e.ncpAgent.state===`error`||e.phase===`error`){this.transitionToStartupFailed(n,e);return}this.transitionToColdStarting(e);return}this.transitionToRecovering(n,e)},this.reportBootstrapQueryError=e=>{let t=Un(e).trim();if(t&&!this.reportTransportFailure(t)){if(this.getState().hasReachedReady){this.transitionToRecovering(t);return}this.transitionToStartupFailed(t)}},this.reportTransportFailure=e=>{let t=Un(e).trim();return ii(t)?this.getState().hasReachedReady?(this.transitionToRecovering(t),!0):(this.runtimeBootstrapProbeCadence.recordFailure(),this.patchState({lastTransportError:t}),!0):!1},this.handleConnectionInterrupted=e=>{let t=this.getState(),n=e?.trim()||null;if(!t.hasReachedReady){this.runtimeBootstrapProbeCadence.recordFailure(),n&&this.patchState({lastTransportError:n});return}this.transitionToRecovering(n)},this.handleConnectionRestored=()=>{let e=this.getState();e.bootstrapStatus?.ncpAgent.state===`ready`&&this.transitionToReady(e.bootstrapStatus)},this.reportRuntimeControlView=e=>{this.patchState({runtimeControlView:e,runtimeControlError:null})},this.reportRuntimeControlError=e=>{let t=Un(e).trim();t&&this.patchState({runtimeControlError:t})},this.runRuntimeControlAction=async e=>{this.patchState({activeSystemAction:Pn({action:e,message:Gn(e)}),lastSystemActionError:null});try{let t=await this.executeRuntimeControlAction(e);if(e===`restart-app`)return t;if(e===`stop-service`)return await this.refreshRuntimeControlView(),this.clearActiveSystemAction(),t;this.patchState({activeSystemAction:{action:e,lifecycle:`recovering`,serviceState:null,message:o(`runtimeControlRecoveringHelp`)}}),this.runtimeBootstrapProbeCadence.requestManualTrigger();let n=await this.waitForRecovery();return this.syncRuntimeControlQueryCache(n),this.reportRuntimeControlView(n),this.clearActiveSystemAction(),t}catch(t){let n=t instanceof Error?t.message:o(`runtimeControlActionFailed`);throw this.patchState({activeSystemAction:{action:e,lifecycle:`failed`,serviceState:e===`stop-service`?`running`:e===`restart-app`?null:`unknown`,message:n},lastSystemActionError:n}),t}},this.getStatusView=()=>jn(this.getState()),this.requestRuntimeBootstrapProbeNow=()=>{this.runtimeBootstrapProbeCadence.requestManualTrigger(),wt.refetchQueries({queryKey:[`runtime-bootstrap-status`]})},this.resetForTests=()=>{this.clearRecoveryTimeout(),this.runtimeBootstrapProbeCadence.reset(),Rn.setState({state:Ln})},this.getState=()=>Rn.getState().state,this.patchState=e=>{Rn.getState().patchState(e)},this.transitionToColdStarting=e=>{this.runtimeBootstrapProbeCadence.recordFailure(),this.clearRecoveryTimeout(),this.patchState({lifecyclePhase:`cold-starting`,recoveryStartedAt:null,bootstrapStatus:e,lastError:null})},this.transitionToStartupFailed=(e,t)=>{this.runtimeBootstrapProbeCadence.recordFailure(),this.clearRecoveryTimeout(),this.patchState({lifecyclePhase:`startup-failed`,recoveryStartedAt:null,bootstrapStatus:t??this.getState().bootstrapStatus,lastError:e})},this.transitionToRecovering=(e,t)=>{this.runtimeBootstrapProbeCadence.recordFailure();let n=this.getState();if(!n.hasReachedReady){this.patchState({lastTransportError:e?.trim()||n.lastTransportError});return}n.lifecyclePhase!==`recovering`&&n.lifecyclePhase!==`stalled`&&(this.clearRecoveryTimeout(),this.recoveryTimeoutId=window.setTimeout(()=>{this.recoveryTimeoutId=null,this.getState().lifecyclePhase===`recovering`&&this.patchState({lifecyclePhase:`stalled`})},Vn)),this.patchState({lifecyclePhase:n.lifecyclePhase===`stalled`?`stalled`:`recovering`,recoveryStartedAt:n.recoveryStartedAt??Date.now(),bootstrapStatus:t??n.bootstrapStatus,lastError:e?.trim()||n.lastError,lastTransportError:e?.trim()||n.lastTransportError})},this.transitionToReady=e=>{this.runtimeBootstrapProbeCadence.recordSuccess();let t=this.getState(),n=t.lifecyclePhase===`recovering`||t.lifecyclePhase===`stalled`;this.clearRecoveryTimeout(),this.patchState({lifecyclePhase:`ready`,hasReachedReady:!0,lastReadyAt:Date.now(),recoveryStartedAt:null,bootstrapStatus:e,lastError:null,lastTransportError:null}),n&&wt.refetchQueries({type:`active`})},this.executeRuntimeControlAction=async e=>{let t=this.getDesktopBridge();if(e===`restart-service`&&t&&typeof t.restartService==`function`){let e=await t.restartService();return{accepted:e.accepted,action:`restart-service`,lifecycle:e.lifecycle,message:e.message}}if(e===`start-service`)return await Ua();if(e===`stop-service`)return await Ga();if(e===`restart-app`){if(!t||typeof t.restartApp!=`function`)throw Error(o(`runtimeRestartAppUnavailable`));let e=await t.restartApp();return{accepted:e.accepted,action:`restart-app`,lifecycle:e.lifecycle,message:e.message}}return await Wa()},this.waitForRecovery=async()=>{let e=Date.now()+25e3,t=null;for(;Date.now()<e;)try{return await this.getRuntimeControl()}catch(e){t=e,await new Promise(e=>{window.setTimeout(e,1500)})}throw t instanceof Error?t:Error(o(`runtimeRecoveryTimedOut`))},this.refreshRuntimeControlView=async()=>{try{let e=await this.getRuntimeControl();this.syncRuntimeControlQueryCache(e),this.reportRuntimeControlView(e)}catch(e){this.reportRuntimeControlError(e)}},this.syncRuntimeControlQueryCache=e=>{wt.setQueryData([`runtime-control`],e)},this.clearActiveSystemAction=()=>{this.patchState({activeSystemAction:null,lastSystemActionError:null})},this.clearRecoveryTimeout=()=>{this.recoveryTimeoutId!==null&&(window.clearTimeout(this.recoveryTimeoutId),this.recoveryTimeoutId=null)},this.decorateForCurrentEnvironment=e=>{let t=this.getDesktopBridge();return!t||typeof t.restartApp!=`function`?e:{...e,environment:`desktop-embedded`,serviceState:`running`,canStartService:{available:!1,requiresConfirmation:!1,impact:`none`},canStopService:{available:!1,requiresConfirmation:!0,impact:`brief-ui-disconnect`},canRestartApp:{available:!0,requiresConfirmation:!0,impact:`full-app-relaunch`},ownerLabel:o(`runtimeControlEnvironmentDesktop`),managementHint:o(`runtimeControlDesktopServiceHint`)}},this.getDesktopBridge=()=>typeof window>`u`?null:window.nextclawDesktop??null}};function Kn(){let e=Je({queryKey:[`runtime-bootstrap-status`],queryFn:()=>wi({timeoutMs:5e3}),refetchInterval:e=>Z.getRuntimeBootstrapPollInterval(e.state.data),retry:!1}),t=Je({queryKey:[`runtime-control`],queryFn:async()=>await Z.getRuntimeControl(),staleTime:5e3});(0,V.useEffect)(()=>{e.data&&Z.reportBootstrapStatus(e.data)},[e.data]),(0,V.useEffect)(()=>{e.error&&Z.reportBootstrapQueryError(e.error)},[e.error]),(0,V.useEffect)(()=>{t.data&&Z.reportRuntimeControlView(t.data)},[t.data]),(0,V.useEffect)(()=>{t.error&&Z.reportRuntimeControlError(t.error)},[t.error])}function qn(){return jn(Rn(e=>e.state))}function Jn(){return Fn(Rn(e=>e.state))}function Yn(){return In(Rn(e=>e.state))}var Q=c(()=>({supported:!1,initialized:!1,busyAction:null,snapshot:null})),Xn=class{constructor(e){this.desktopApi=e,this.kind=`desktop-bridge`,this.subscribe=e=>this.desktopApi.onUpdateStateChanged(e),this.getState=async()=>await this.desktopApi.getUpdateState(),this.checkForUpdates=async()=>await this.desktopApi.checkForUpdates(),this.downloadUpdate=async()=>await this.desktopApi.downloadUpdate(),this.applyDownloadedUpdate=async()=>await this.desktopApi.applyDownloadedUpdate(),this.updateChannel=async e=>await this.desktopApi.updateChannel(e)}},Zn=class{constructor(){this.kind=`runtime-host`,this.getState=async()=>await Ka(),this.checkForUpdates=async()=>await qa(),this.downloadUpdate=async()=>await Ja(),this.applyDownloadedUpdate=async()=>await Ya(),this.updateChannel=async e=>await Xa(e)}},Qn=new class{constructor(){this.unsubscribe=null,this.subscriptionCount=0,this.source=null,this.start=async()=>{this.subscriptionCount+=1;let e=this.resolveSource();if(this.source=e,!e){Q.setState({supported:!1,initialized:!0,snapshot:null});return}e.kind===`desktop-bridge`&&!this.unsubscribe&&(this.unsubscribe=e.subscribe(e=>{Q.setState({supported:!0,initialized:!0,snapshot:e})})),Q.setState({supported:!0,initialized:!1});try{let t=await e.getState();Q.setState({supported:!0,initialized:!0,snapshot:t})}catch(t){if(e.kind===`runtime-host`&&this.isUnsupportedError(t)){Q.setState({supported:!1,initialized:!0,snapshot:null});return}Q.setState({supported:!0,initialized:!0}),G.error(`${o(`runtimeUpdatesLoadFailed`)}: ${this.getErrorMessage(t)}`)}},this.stop=()=>{this.subscriptionCount=Math.max(0,this.subscriptionCount-1),!(this.subscriptionCount>0)&&(this.unsubscribe?.(),this.unsubscribe=null,this.source=null)},this.reportSnapshot=e=>{this.source?.kind!==`desktop-bridge`&&Q.setState({supported:!0,initialized:!0,snapshot:e})},this.refreshAfterRealtimeReconnect=async()=>{this.source?.kind===`runtime-host`&&await this.refreshSnapshot()},this.checkForUpdates=async()=>{let e;try{e=await this.runSnapshotCommand(`checking`,o(`runtimeUpdatesCheckFailed`),async e=>await e.checkForUpdates())}catch{return}if(e.status===`up-to-date`){G.success(o(`runtimeUpdatesAlreadyLatest`));return}if(e.status===`update-available`){G.success(o(`runtimeUpdatesAvailable`).replace(`{version}`,e.availableVersion??o(`runtimeUpdatesUnknownVersion`)));return}e.status===`downloaded`&&G.success(o(`runtimeUpdatesReadyToApply`))},this.downloadUpdate=async()=>{try{await this.runSnapshotCommand(`downloading`,o(`runtimeUpdatesDownloadFailed`),async e=>await e.downloadUpdate())}catch{return}},this.applyDownloadedUpdate=async()=>{try{await this.runSnapshotCommand(`applying`,o(`runtimeUpdatesApplyFailed`),async e=>await e.applyDownloadedUpdate())}catch{return}},this.updateNow=async()=>{let e=Q.getState().snapshot;if(!(e?.status!==`update-available`&&e?.status!==`downloaded`))try{await this.runSnapshotCommand(`updating`,o(`runtimeUpdatesUpdateFailed`),async t=>{let n=e.status===`downloaded`?e:await t.downloadUpdate();return Q.setState({snapshot:n}),n.status===`downloaded`?await t.applyDownloadedUpdate():n})}catch{return}},this.updateChannel=async e=>{if(Q.getState().snapshot?.channel===e)return;let t;try{t=await this.runSnapshotCommand(`switching-channel`,o(`runtimeUpdatesChannelChangeFailed`),async t=>await t.updateChannel(e))}catch{return}if(t.status===`update-available`&&t.availableVersion){G.success(o(`runtimeUpdatesChannelChangedWithUpdate`).replace(`{channel}`,this.getChannelLabel(e)).replace(`{version}`,t.availableVersion));return}G.success(o(`runtimeUpdatesChannelChanged`).replace(`{channel}`,this.getChannelLabel(e)))},this.refreshSnapshot=async()=>{if(!(!this.source||this.source.kind!==`runtime-host`))try{let e=await this.source.getState();Q.setState({supported:!0,initialized:!0,snapshot:e})}catch{}},this.runSnapshotCommand=async(e,t,n)=>{let r=this.source??this.resolveSource();if(!r)throw Error(o(`runtimeUpdatesUnavailableDescription`));this.source=r,Q.setState({busyAction:e});try{let e=await n(r);return Q.setState({snapshot:e}),e}catch(e){throw G.error(`${t}: ${this.getErrorMessage(e)}`),e}finally{Q.setState({busyAction:null})}},this.resolveSource=()=>{let e=this.getDesktopApi();return e?new Xn(e):new Zn},this.getDesktopApi=()=>typeof window>`u`?null:window.nextclawDesktop??null,this.isUnsupportedError=e=>{let t=this.getErrorMessage(e).toLowerCase();return t.includes(`404`)||t.includes(`not found`)||t.includes(`endpoint not found`)},this.getErrorMessage=e=>e instanceof Error?e.message:o(`error`),this.getChannelLabel=e=>o(e===`beta`?`desktopUpdatesChannelBeta`:`desktopUpdatesChannelStable`)}},$n=`https://docs.nextclaw.io/`;function er(e,t){let n=t===`zh-CN`?`en-US`:`zh-CN`;return e?.[t]?.trim()||e?.[n]?.trim()||null}function tr(e){let t=e.releaseNotesUrl?.trim(),n=(e.availableVersion??e.downloadedVersion)?.trim();return t?nr(n,t):null}function nr(e,t=$n){let n=e?.trim();if(!n||!/^[0-9A-Za-z.-]+$/.test(n))return null;try{return new URL(`/release-notes/nextclaw-v${n}.json`,t).toString()}catch{return null}}function rr(e,t){return er(e?.links?.html,t)}function ir(e){let t=e.releaseNotesUrl?.trim(),n=(e.downloadedVersion??e.availableVersion)?.trim();return!t||!n?null:{url:t,versionLabel:`v${n}`}}function ar(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function or(e){return ar(e)?typeof e[`zh-CN`]==`string`||typeof e[`en-US`]==`string`:!1}function sr(e){return!ar(e)||!or(e.title)?!1:e.body===void 0||or(e.body)}function cr(e){return ar(e)&&typeof e.kind==`string`&&Array.isArray(e.items)&&e.items.every(sr)&&(e.title===void 0||or(e.title))}function lr(e){return ar(e)&&(e.html===void 0||or(e.html))}function ur(e){return ar(e)&&Array.isArray(e.sections)&&e.sections.every(cr)&&(e.title===void 0||or(e.title))&&(e.summary===void 0||or(e.summary))&&(e.links===void 0||lr(e.links))}async function dr(e){let t=await fetch(e,{cache:`no-store`,headers:{accept:`application/json`}});if(!t.ok)throw Error(`Release notes request failed with HTTP ${t.status}.`);let n=await t.json();if(!ur(n))throw Error(`Release notes payload has an unsupported shape.`);return n}function fr(){return s()===`zh`?`zh-CN`:`en-US`}function pr(e){let t=nr(e),n=fr(),r=rr(Je({queryKey:[`current-release-notes`,t],queryFn:async()=>await dr(t??``),enabled:!!t,retry:!1,staleTime:300*1e3}).data,n),i=e?.trim();return r&&i?{url:r,versionLabel:`v${i}`}:null}var mr=V.forwardRef(({className:e,checked:t=!1,onCheckedChange:n,thumbClassName:i,...a},o)=>(0,H.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,"data-state":t?`checked`:`unchecked`,ref:o,className:r(`switch-track peer inline-flex h-[22px] w-10 shrink-0 cursor-pointer items-center rounded-full border-2 transition-colors duration-fast focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border disabled:cursor-not-allowed disabled:opacity-50`,t?`border-primary/70 bg-primary`:`border-border/60 bg-muted hover:bg-[var(--interaction-hover)]`,e),onClick:()=>n?.(!t),...a,children:(0,H.jsx)(`span`,{"data-state":t?`checked`:`unchecked`,className:r(`switch-thumb pointer-events-none block h-5 w-5 rounded-full bg-card shadow-md ring-1 ring-border/50 transition-transform duration-fast`,t?`translate-x-5`:`translate-x-0`,i)})}));mr.displayName=`Switch`;var hr={maxRetries:8,startupTimeoutMs:2e3,settledTimeoutMs:5e3,retryBaseDelayMs:500,retryMaxDelayMs:3e3};function gr(e){return e instanceof Error?ii(e.message):!1}function _r(e,t){return e>=hr.maxRetries?!1:gr(t)}function vr(e){return Math.min(hr.retryMaxDelayMs,hr.retryBaseDelayMs*2**Math.max(0,e-1))}function yr(){let[e,t]=(0,V.useState)(!1),n=Je({queryKey:[`auth-status`],queryFn:()=>_i({timeoutMs:e?hr.settledTimeoutMs:hr.startupTimeoutMs}),staleTime:5e3,retry:_r,retryDelay:vr});return(0,V.useEffect)(()=>{n.isSuccess&&!e&&t(!0)},[e,n.isSuccess]),n}function br(e){return Promise.all([e.invalidateQueries({queryKey:[`auth-status`]}),e.invalidateQueries({queryKey:[`app-meta`]}),e.invalidateQueries({queryKey:[`config`]}),e.invalidateQueries({queryKey:[`config-meta`]}),e.invalidateQueries({queryKey:[`config-schema`]}),e.invalidateQueries({queryKey:[`sessions`]}),e.invalidateQueries({queryKey:[`session-history`]}),e.invalidateQueries({queryKey:[`chat-runs`]}),e.invalidateQueries({queryKey:[`cron-jobs`]})])}function xr(){let e=U();return Ye({mutationFn:vi,onSuccess:async()=>{await br(e),G.success(o(`authSetupSuccess`))},onError:e=>{G.error(`${o(`authActionFailed`)}: ${e.message}`)}})}function Sr(){let e=U();return Ye({mutationFn:yi,onSuccess:async()=>{await br(e),G.success(o(`authLoginSuccess`))},onError:e=>{G.error(`${o(`authActionFailed`)}: ${e.message}`)}})}function Cr(){let e=U();return Ye({mutationFn:bi,onSuccess:async()=>{await br(e),G.success(o(`authLogoutSuccess`))},onError:e=>{G.error(`${o(`authActionFailed`)}: ${e.message}`)}})}function wr(){let e=U();return Ye({mutationFn:xi,onSuccess:async()=>{await br(e),G.success(o(`authPasswordUpdated`))},onError:e=>{G.error(`${o(`authActionFailed`)}: ${e.message}`)}})}function Tr(){let e=U();return Ye({mutationFn:Si,onSuccess:async(t,n)=>{await br(e),G.success(n.enabled?o(`authEnabledSuccess`):o(`authDisabledSuccess`))},onError:e=>{G.error(`${o(`authActionFailed`)}: ${e.message}`)}})}var Er=8;function Dr(e){return e.trim().length>=Er}function Or(e,t){return e===t?!0:(G.error(o(`authPasswordMismatch`)),!1)}function kr({children:e,contentClassName:t=`space-y-6`}){return(0,H.jsx)(Ft,{children:(0,H.jsx)(`div`,{className:`${t} p-4`,children:e})})}function Ar({canSubmitSetup:e,isPending:t,onSubmit:n,setSetupConfirmPassword:r,setSetupPassword:i,setSetupUsername:a,setupConfirmPassword:s,setupPassword:c,setupUsername:l}){return(0,H.jsxs)(kr,{contentClassName:`space-y-5`,children:[(0,H.jsxs)(`div`,{className:`rounded-xl bg-background/65 p-4`,children:[(0,H.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:o(`authSetupTitle`)}),(0,H.jsx)(`p`,{className:`mt-1 text-sm text-muted-foreground`,children:o(`authSetupDescription`)})]}),(0,H.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(J,{htmlFor:`auth-setup-username`,children:o(`authUsername`)}),(0,H.jsx)(q,{id:`auth-setup-username`,value:l,onChange:e=>a(e.target.value),placeholder:o(`authUsernamePlaceholder`)})]}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(J,{htmlFor:`auth-setup-password`,children:o(`authPassword`)}),(0,H.jsx)(q,{id:`auth-setup-password`,type:`password`,value:c,onChange:e=>i(e.target.value),placeholder:o(`authPasswordPlaceholder`)})]})]}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(J,{htmlFor:`auth-setup-confirm`,children:o(`authConfirmPassword`)}),(0,H.jsx)(q,{id:`auth-setup-confirm`,type:`password`,value:s,onChange:e=>r(e.target.value),placeholder:o(`authConfirmPasswordPlaceholder`)}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(`authPasswordMinLengthHint`)})]}),(0,H.jsx)(kt,{type:`button`,disabled:!e,onClick:()=>void n(),children:o(t?`authSettingUp`:`authSetupAction`)})]})}function jr({authenticated:e,canUpdatePassword:t,enabled:n,isLoggingOut:r,isUpdatingEnabled:i,isUpdatingPassword:a,nextConfirmPassword:s,nextPassword:c,onEnabledChange:l,onLogout:u,onPasswordUpdate:d,setNextConfirmPassword:f,setNextPassword:p,username:m}){return(0,H.jsxs)(kr,{children:[(0,H.jsxs)(`div`,{className:`rounded-xl bg-background/65 p-4`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-4 md:flex-row md:items-start md:justify-between`,children:[(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:o(`authStatusLabel`)}),(0,H.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:o(`authStatusConfiguredUser`).replace(`{username}`,m??``)}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(`authUsernameFixedHelp`)})]}),(0,H.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-muted px-3 py-1 text-xs font-medium text-foreground`,children:o(n?`enabled`:`disabled`)})]}),(0,H.jsxs)(`div`,{className:`mt-4 flex flex-col gap-4 border-t border-border/55 pt-4 md:flex-row md:items-center md:justify-between`,children:[(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:o(`authEnableLabel`)}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(n?`authEnableOnHelp`:`authEnableOffHelp`)})]}),(0,H.jsx)(mr,{checked:n,disabled:i,onCheckedChange:e=>{l(e)}})]})]}),(0,H.jsxs)(`div`,{className:`space-y-4 rounded-xl bg-background/65 p-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-1`,children:[(0,H.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:o(`authPasswordSectionTitle`)}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(`authPasswordSectionDescription`)})]}),(0,H.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(J,{htmlFor:`auth-password-next`,children:o(`authPassword`)}),(0,H.jsx)(q,{id:`auth-password-next`,type:`password`,value:c,onChange:e=>p(e.target.value),placeholder:o(`authPasswordPlaceholder`)})]}),(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(J,{htmlFor:`auth-password-confirm`,children:o(`authConfirmPassword`)}),(0,H.jsx)(q,{id:`auth-password-confirm`,type:`password`,value:s,onChange:e=>f(e.target.value),placeholder:o(`authConfirmPasswordPlaceholder`)})]})]}),(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,H.jsx)(kt,{type:`button`,disabled:!t,onClick:()=>void d(),children:o(a?`authPasswordUpdating`:`authPasswordAction`)}),n&&e?(0,H.jsx)(kt,{type:`button`,variant:`outline`,disabled:r,onClick:()=>void u(),children:o(r?`authLoggingOut`:`authLogoutAction`)}):null]}),(0,H.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:o(`authSessionMemoryNotice`)})]})]})}function Mr(){let e=yr(),t=xr(),n=Tr(),r=wr(),i=Cr(),[a,s]=(0,V.useState)(``),[c,l]=(0,V.useState)(``),[u,d]=(0,V.useState)(``),[f,p]=(0,V.useState)(``),[m,h]=(0,V.useState)(``),g=e.data,_=a.trim().length>0&&Dr(c)&&c===u&&!t.isPending,v=Dr(f)&&f===m&&!r.isPending;return e.isLoading&&!g?(0,H.jsx)(kr,{contentClassName:`text-sm text-gray-500`,children:o(`loading`)}):e.isError||!g?(0,H.jsxs)(kr,{contentClassName:`space-y-4`,children:[(0,H.jsx)(`p`,{className:`text-sm text-gray-500`,children:o(`authStatusLoadFailed`)}),(0,H.jsx)(kt,{variant:`outline`,onClick:()=>void e.refetch(),children:o(`authRetryStatus`)})]}):g.configured?(0,H.jsx)(jr,{authenticated:g.authenticated,enabled:g.enabled,username:g.username,nextPassword:f,setNextPassword:p,nextConfirmPassword:m,setNextConfirmPassword:h,canUpdatePassword:v,isUpdatingEnabled:n.isPending,isUpdatingPassword:r.isPending,isLoggingOut:i.isPending,onEnabledChange:async e=>{try{await n.mutateAsync({enabled:e})}catch{}},onPasswordUpdate:async()=>{if(Or(f,m))try{await r.mutateAsync({password:f}),p(``),h(``)}catch{}},onLogout:async()=>{try{await i.mutateAsync()}catch{}}}):(0,H.jsx)(Ar,{setupUsername:a,setSetupUsername:s,setupPassword:c,setSetupPassword:l,setupConfirmPassword:u,setSetupConfirmPassword:d,canSubmitSetup:_,isPending:t.isPending,onSubmit:async()=>{if(Or(c,u))try{await t.mutateAsync({username:a.trim(),password:c}),l(``),d(``)}catch{}}})}function Nr(){return(0,H.jsx)(Mt,{title:o(`authSecurityTitle`),description:o(`authSecurityDescription`),children:(0,H.jsx)(Mr,{})})}function Pr(e){return e.replace(/\s+/g,` `).trim().slice(0,200)}function Fr(e,t){if(t===404&&e.startsWith(`/api/providers/`)&&e.endsWith(`/test`))return`Provider test endpoint is missing. This usually means nextclaw runtime version is outdated.`;if(t===401||t===403)return`Authentication failed. Check apiKey and custom headers.`;if(t===429)return`Rate limited by upstream provider. Retry later or switch model/provider.`;if(t>=500)return`Upstream service error. Retry later and inspect server logs if it persists.`}function Ir(e){if(e instanceof Error){let t=e.name?.trim()||`Error`,n=e.message?.trim()||`Unknown error`;return{summary:`${t}: ${n}`,details:{errorName:t,errorMessage:n,...e.stack?.trim()?{errorStack:e.stack.trim()}:{}}}}return{summary:String(e??`Unknown error`),details:{errorName:`NonError`,errorMessage:String(e??`Unknown error`)}}}async function Lr(e,t,n={}){let r=`${e}${t}`,i=(n.method||`GET`).toUpperCase(),a;try{let e=new Headers(n.headers);!(n.body instanceof FormData)&&!e.has(`Content-Type`)&&e.set(`Content-Type`,`application/json`),a=await fetch(r,{credentials:`include`,headers:e,...n})}catch(e){let n=Ir(e);return Z.reportTransportFailure(n.summary),{ok:!1,error:{code:`NETWORK_ERROR`,message:`Fetch failed on ${i} ${t} | ${n.summary}`,details:{method:i,endpoint:t,url:r,...n.details}}}}let o=await a.text(),s=null;if(o)try{s=JSON.parse(o)}catch{}if(!s){let e=o?Pr(o):``,n=Fr(t,a.status),s=[`Non-JSON response (${a.status} ${a.statusText}) on ${i} ${t}`];return e&&s.push(`body=${e}`),n&&s.push(`hint=${n}`),{ok:!1,error:{code:`INVALID_RESPONSE`,message:s.join(` | `),details:{status:a.status,statusText:a.statusText,method:i,endpoint:t,url:r,bodySnippet:e||void 0,hint:n}}}}return a.ok,s}function Rr(e){let t=e.split(`
|
|
8
|
+
`),n=``,r=[];for(let e of t){let t=e.trimEnd();if(!(!t||t.startsWith(`:`))){if(t.startsWith(`event:`)){n=t.slice(6).trim();continue}t.startsWith(`data:`)&&r.push(t.slice(5).trimStart())}}if(!n)return null;let i,a=r.join(`
|
|
9
|
+
`);if(a)try{i=JSON.parse(a)}catch{i=a}return{name:n,payload:i}}function zr(e,t,n){let r=Rr(e);r&&(r.name===`final`&&n(r.payload),t(r))}function Br(e,t,n){let r=e,i=r.indexOf(`
|
|
10
|
+
|
|
11
|
+
`);for(;i!==-1;)zr(r.slice(0,i),t,n),r=r.slice(i+2),i=r.indexOf(`
|
|
12
|
+
|
|
13
|
+
`);return r}async function Vr(e,t){let n=e.body?.getReader();if(!n)throw Error(`SSE response body unavailable`);let r=new TextDecoder,i=``,a;try{for(;;){let{value:e,done:o}=await n.read();if(o)break;i+=r.decode(e,{stream:!0}),i=Br(i,t,e=>{a=e})}i.trim()&&zr(i,t,e=>{a=e})}finally{n.releaseLock()}return a}function Hr(e,t){let n=e.replace(/\/$/,``);try{let e=new URL(n,window.location.origin);return`${e.protocol===`https:`?`wss:`:e.protocol===`http:`?`ws:`:e.protocol}//${e.host}${t}`}catch{return n.startsWith(`wss://`)||n.startsWith(`ws://`)?`${n}${t}`:n.startsWith(`https://`)?`${n.replace(/^https:/,`wss:`)}${t}`:n.startsWith(`http://`)?`${n.replace(/^http:/,`ws:`)}${t}`:`${n}${t}`}}function Ur(e,t){if(!e.ok){let n=Error(e.error?.message||t);return n.code=e.error?.code,n.details=e.error?.details,n}return Error(t)}function Wr(e){if(e instanceof Error){let t=e.name?.trim(),n=e.message?.trim();return t&&n?`${t}: ${n}`:n||t||`Unknown error`}return String(e??`Unknown error`)}function Gr(e,t){let n=Error(e);return t!==void 0&&(n.cause=t),n}var Kr=class{constructor(e){this.wsUrl=e,this.socket=null,this.reconnectTimer=null,this.manualClose=!1,this.subscribers=new Set,this.subscribe=e=>(this.subscribers.add(e),this.subscribers.size===1?this.connect():this.socket?.readyState===WebSocket.OPEN&&e({type:`connection.open`,payload:{}}),()=>{this.subscribers.delete(e),this.subscribers.size===0&&this.disconnect()}),this.emit=e=>{for(let t of this.subscribers)t(e)},this.connect=()=>{if(this.socket&&(this.socket.readyState===WebSocket.CONNECTING||this.socket.readyState===WebSocket.OPEN))return;this.manualClose=!1;let e=new WebSocket(this.wsUrl);this.socket=e,e.onopen=()=>{this.emit({type:`connection.open`,payload:{}})},e.onmessage=e=>{try{let t=JSON.parse(String(e.data??``));this.emit(t)}catch(e){console.error(`Failed to parse websocket message:`,e)}},e.onerror=()=>{this.emit({type:`connection.error`,payload:{message:`websocket error`}})},e.onclose=()=>{this.emit({type:`connection.close`,payload:{}}),this.socket=null,!this.manualClose&&this.subscribers.size>0&&this.scheduleReconnect()}},this.scheduleReconnect=()=>{this.reconnectTimer===null&&(this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.connect()},3e3))},this.disconnect=()=>{this.manualClose=!0,this.reconnectTimer!==null&&(window.clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.socket?.close(),this.socket=null}}},qr=class{constructor(e={}){this.options=e,this.request=async e=>{let t=Number.isFinite(e.timeoutMs)&&(e.timeoutMs??0)>0?Math.trunc(e.timeoutMs):null,n=t?new AbortController:null,r=t?window.setTimeout(()=>n?.abort(`Request timed out after ${t}ms: ${e.method} ${e.path}`),t):null,i=Jr(e.body);try{let t=await Lr(this.apiBase,e.path,{method:e.method,...i===void 0?{}:{body:i},...e.headers?{headers:e.headers}:{},signal:n?.signal??e.signal});if(!t.ok)throw Ur(t,`Request failed for ${e.method} ${e.path}`);return t.data}catch(t){if(n?.signal.aborted){let{reason:t}=n.signal;throw Error(typeof t==`string`&&t.trim()?t:`Request timed out: ${e.method} ${e.path}`)}throw t instanceof Error?t:Gr(`Request failed for ${e.method} ${e.path} | ${Wr(t)}`,t)}finally{r!==null&&window.clearTimeout(r)}},this.openStream=e=>{let t=new AbortController,n=()=>t.abort();return e.signal&&(e.signal.aborted?n():e.signal.addEventListener(`abort`,n,{once:!0})),{finished:(async()=>{let r;try{r=await fetch(`${this.apiBase}${e.path}`,{method:e.method,credentials:`include`,headers:{"Content-Type":`application/json`,Accept:`text/event-stream`},...e.body===void 0?{}:{body:JSON.stringify(e.body)},signal:t.signal})}catch(t){throw Z.reportTransportFailure(Wr(t)),Gr(`Stream request failed for ${e.method} ${e.path} | ${Wr(t)}`,t)}if(!r.ok){let t=(await r.text()).trim();throw Error(t?`Stream request failed for ${e.method} ${e.path} | HTTP ${r.status} | ${t}`:`Stream request failed for ${e.method} ${e.path} | HTTP ${r.status}`)}try{return await Vr(r,e.onEvent)}finally{e.signal?.removeEventListener(`abort`,n)}})(),cancel:()=>t.abort()}},this.subscribe=e=>this.realtimeGateway.subscribe(e),this.apiBase=e.apiBase??((void 0)?.trim().replace(/\/$/,``)||(typeof window<`u`?window.location.origin:`http://127.0.0.1:55667`)),this.realtimeGateway=new Kr(Hr(this.apiBase,e.wsPath??`/ws`))}};function Jr(e){if(e!==void 0)return e instanceof FormData||e instanceof URLSearchParams||e instanceof Blob||e instanceof ArrayBuffer||typeof e==`string`?e:JSON.stringify(e)}function Yr(e,t,n){if(typeof e==`object`&&e&&`ok`in e){let r=e;if(r.ok===!1&&r.error?.message){let e=Error(r.error.message);return e.code=r.error.code,e.details=r.error.details,e.status=t,e}if(r.ok===!0)return Error(n)}return typeof e==`string`&&e.trim()?Error(e.trim()):Error(`${n} (${t})`)}function Xr(e){if(typeof e==`object`&&e&&`ok`in e){let t=e;if(t.ok===!1){let e=Error(t.error?.message??`Remote request failed.`);throw e.code=t.error?.code,e.details=t.error?.details,e}if(t.ok===!0)return t.data}return e}function Zr(e){return`${e}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`}var Qr=15e3,$r=class{constructor(e,t=(void 0)?.trim().replace(/\/$/,``)||(typeof window<`u`?window.location.origin:`http://127.0.0.1:55667`)){this.runtime=e,this.apiBase=t,this.socket=null,this.connectPromise=null,this.connectTimeoutId=null,this.reconnectTimer=null,this.manualClose=!1,this.subscribers=new Set,this.pendingRequests=new Map,this.pendingStreams=new Map,this.request=async e=>{await this.ensureSocket();let t=Zr(`req`),n=Number.isFinite(e.timeoutMs)&&(e.timeoutMs??0)>0?Math.trunc(e.timeoutMs):Qr;return await new Promise((r,i)=>{let a=window.setTimeout(()=>{this.pendingRequests.delete(t),i(Error(`Timed out waiting for remote request response after ${n}ms: ${e.method} ${e.path}`))},n);this.pendingRequests.set(t,{resolve:e=>r(e),reject:i,timeoutId:a}),this.send({type:`request`,id:t,target:{method:e.method,path:e.path,...e.headers?{headers:e.headers}:{},...e.body===void 0?{}:{body:e.body}}})})},this.openStream=e=>{let t=Zr(`stream`),n=!1,r=e=>{n||(n=!0,a(e))},i,a,o=new Promise((e,t)=>{i=e,a=t}),s=()=>{this.pendingStreams.delete(t),!n&&(n=!0,this.send({type:`stream.cancel`,streamId:t}),a(Error(`stream cancelled`)))};this.pendingStreams.set(t,{onEvent:e.onEvent,finalResult:void 0,resolve:e=>{n||(n=!0,i(e))},reject:e=>{n||(n=!0,a(e))}});let c=()=>s();return e.signal&&(e.signal.aborted?s():e.signal.addEventListener(`abort`,c,{once:!0})),this.ensureSocket().then(()=>{n||this.send({type:`stream.open`,streamId:t,target:{method:e.method,path:e.path,...e.body===void 0?{}:{body:e.body}}})}).catch(e=>{this.pendingStreams.delete(t),r(e instanceof Error?e:Error(String(e)))}),{finished:o.finally(()=>{e.signal?.removeEventListener(`abort`,c),this.pendingStreams.delete(t)}),cancel:s}},this.subscribe=e=>(this.subscribers.add(e),this.ensureSocket().catch(t=>{e({type:`connection.error`,payload:{message:t instanceof Error?t.message:String(t)}})}),()=>{this.subscribers.delete(e)}),this.emit=e=>{for(let t of this.subscribers)t(e)},this.send=e=>{if(!this.socket||this.socket.readyState!==WebSocket.OPEN)throw Error(`Remote transport websocket is not connected.`);this.socket.send(JSON.stringify(e))},this.ensureSocket=async()=>{if(this.socket?.readyState===WebSocket.OPEN&&this.connectPromise===null)return;if(this.connectPromise)return await this.connectPromise;let e=Hr(this.apiBase,this.runtime.wsPath);this.manualClose=!1,this.connectPromise=new Promise((t,n)=>{let r=new WebSocket(e);this.socket=r;let i=!1,a=()=>{this.connectTimeoutId!==null&&(window.clearTimeout(this.connectTimeoutId),this.connectTimeoutId=null)};this.connectTimeoutId=window.setTimeout(()=>{this.connectTimeoutId=null,n(Error(`Timed out waiting for remote transport websocket.`)),r.close()},8e3),r.onopen=()=>{i=!0,a(),this.connectPromise=null,t(),this.emit({type:`connection.open`,payload:{}})},r.onmessage=e=>{try{let t=JSON.parse(String(e.data??``));if(t.type===`connection.ready`)return;this.handleFrame(t)}catch(e){console.error(`Failed to parse remote websocket frame:`,e)}},r.onerror=()=>{this.emit({type:`connection.error`,payload:{message:`remote websocket error`}})},r.onclose=()=>{a();let e=this.connectPromise!==null;this.socket=null,this.connectPromise=null,this.failPendingWork(Error(`Remote transport connection closed.`)),this.emit({type:`connection.close`,payload:{}}),e&&!i&&n(Error(`Remote transport connection closed before ready.`)),!this.manualClose&&this.subscribers.size>0&&this.scheduleReconnect()}});let{connectPromise:t}=this;return await t},this.scheduleReconnect=()=>{this.reconnectTimer===null&&(this.reconnectTimer=window.setTimeout(()=>{this.reconnectTimer=null,this.ensureSocket().catch(()=>void 0)},3e3))},this.failPendingWork=e=>{for(let t of this.pendingRequests.values())window.clearTimeout(t.timeoutId),t.reject(e);this.pendingRequests.clear();for(let t of this.pendingStreams.values())t.reject(e);this.pendingStreams.clear()},this.handleFrame=e=>{if(e.type===`response`||e.type===`request.error`){this.handleRequestFrame(e);return}if(e.type===`stream.event`||e.type===`stream.end`||e.type===`stream.error`){this.handleStreamFrame(e);return}if(e.type===`event`){this.emit(e.event);return}e.type===`connection.error`&&this.emit({type:`connection.error`,payload:{message:e.message}})},this.handleRequestFrame=e=>{let t=this.pendingRequests.get(e.id);if(t){if(this.pendingRequests.delete(e.id),window.clearTimeout(t.timeoutId),e.type===`request.error`){t.reject(Error(e.message));return}if(e.status>=400){t.reject(Yr(e.body,e.status,`Remote request failed.`));return}try{t.resolve(Xr(e.body))}catch(e){t.reject(e instanceof Error?e:Error(String(e)))}}},this.handleStreamFrame=e=>{let t=this.pendingStreams.get(e.streamId);if(t){if(e.type===`stream.event`){try{e.event===`final`&&(t.finalResult=e.payload),t.onEvent({name:e.event,payload:e.payload})}catch(n){this.pendingStreams.delete(e.streamId),t.reject(n instanceof Error?n:Error(String(n)))}return}if(this.pendingStreams.delete(e.streamId),e.type===`stream.end`){t.resolve(t.finalResult);return}t.reject(Error(e.message))}}}},ei=`/_remote/runtime`,ti={mode:`remote`,protocolVersion:1,wsPath:`/_remote/ws`};async function ni(e){let t=`${e.replace(/\/$/,``)}${ei}`,n;try{n=await fetch(t,{method:`GET`,credentials:`include`,cache:`no-store`})}catch{return new qr({apiBase:e})}if(n.status===404)return new qr({apiBase:e});if(!(n.headers.get(`content-type`)?.toLowerCase()??``).includes(`application/json`))return n.status>=400?new $r(ti,e):new qr({apiBase:e});let r=null;try{r=await n.json()}catch{return n.status>=400?new $r(ti,e):new qr({apiBase:e})}return n.ok&&r.ok&&r.data?.mode===`remote`?new $r(r.data,e):n.status>=400?new $r(ti,e):new qr({apiBase:e})}var ri=new class{constructor(e=(void 0)?.trim().replace(/\/$/,``)||(typeof window<`u`?window.location.origin:`http://127.0.0.1:55667`)){this.apiBase=e,this.transportPromise=null,this.getTransport=async()=>(this.transportPromise||=ni(this.apiBase),await this.transportPromise),this.request=async e=>await(await this.getTransport()).request(e),this.openStream=e=>{let t=null,n,r,i=new Promise((e,t)=>{n=e,r=t});return this.getTransport().then(i=>{t=i.openStream(e),t.finished.then(n).catch(e=>{r(e instanceof Error?e:Error(String(e)))})}).catch(e=>{r(e instanceof Error?e:Error(String(e)))}),{finished:i,cancel:()=>t?.cancel()}},this.subscribe=e=>{let t=()=>{},n=!0;return this.getTransport().then(r=>{n&&(t=r.subscribe(e))}).catch(t=>{e({type:`connection.error`,payload:{message:t instanceof Error?t.message:String(t)}})}),()=>{n=!1,t()}}}};function ii(e){let t=e.trim().toLowerCase();return t?[`failed to fetch`,`networkerror`,`network request failed`,`load failed`,`request timed out`,`timed out waiting for remote request response`,`remote transport connection closed`,`websocket error`,`fetch failed on `,`stream request failed for `,`ncp fetch failed for `].some(e=>t.includes(e)):!1}var $=new Tn({baseUrl:Dn,transport:{request:async({body:e,headers:t,method:n,path:r,query:i,signal:a,timeoutMs:o})=>await ri.request({method:n,path:li(r,ci(i)),...e===void 0?{}:{body:e},...t?{headers:t}:{},...a?{signal:a}:{},...o===void 0?{}:{timeoutMs:o}}),upload:async({formData:e,headers:t,path:n,signal:r})=>{let i=await fetch(`${Dn}${n}`,{method:`POST`,body:e,credentials:`include`,...t?{headers:t}:{},...r?{signal:r}:{}}),a=await i.json();if(!i.ok||!a.ok)throw new Y({message:ui(a,`Upload failed for ${n}`),status:i.status,code:a.ok?void 0:a.error.code,details:a.ok?void 0:a.error.details});return a.data},subscribe:e=>ri.subscribe(e)}});async function ai(e,t={}){let n=(t.method||`GET`).toUpperCase();try{return{ok:!0,data:await ri.request({method:n,path:e,...t.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs},...t.body===void 0?{}:{body:si(t.body)}})}}catch(t){return{ok:!1,error:{code:`REQUEST_FAILED`,message:t instanceof Error?t.message:String(t),details:{method:n,endpoint:e}}}}}var oi={get:(e,t={})=>ai(e,{...t,method:`GET`}),put:(e,t)=>ai(e,{method:`PUT`,body:JSON.stringify(t)}),post:(e,t)=>ai(e,{method:`POST`,body:JSON.stringify(t)}),delete:e=>ai(e,{method:`DELETE`})};function si(e){if(e!=null){if(typeof e==`string`)try{return JSON.parse(e)}catch{return e}return e}}function ci(e){if(!e)return;if(e instanceof URLSearchParams)return e;let t=new URLSearchParams;for(let[n,r]of Object.entries(e)){let e=Array.isArray(r)?r:[r];for(let r of e)r!=null&&t.append(n,String(r))}return t}function li(e,t){let n=t?.toString();return n?`${e}${e.includes(`?`)?`&`:`?`}${n}`:e}function ui(e,t){return e.ok?t:e.error.message}async function di(){return{agents:await $.agents.list()}}async function fi(e,t){return await $.agents.update(e,t)}async function pi(e){return await $.agents.delete(e)}async function mi(e,t={}){return await $.channelAuth.start(e,t)}async function hi(e,t){return await $.channelAuth.poll(e,t)}async function gi(e,t){return await $.channelAuth.connect(e,t)}async function _i(e={}){return await $.auth.fetchStatus({timeoutMs:e.timeoutMs??5e3})}async function vi(e){return await $.auth.setup(e)}async function yi(e){return await $.auth.login(e)}async function bi(){return await $.auth.logout()}async function xi(e){return await $.auth.updatePassword(e)}async function Si(e){return await $.auth.updateEnabled(e)}async function Ci(){return await $.app.fetchMeta()}async function wi(e={}){return await $.app.fetchBootstrapStatus(e)}async function Ti(){return await $.config.fetch()}async function Ei(){return await $.config.fetchMeta()}async function Di(){return await $.providers.list()}async function Oi(){return await $.providers.listTemplates()}async function ki(){return await $.providers.listModelCatalog()}async function Ai(){return await $.config.fetchSchema()}async function ji(e){return await $.config.updateModel(e)}async function Mi(e){return await $.config.updateSearch(e)}async function Ni(e,t){return await $.providers.update(e,t)}async function Pi(e={}){return await $.providers.create(e)}async function Fi(e){return await $.providers.delete(e)}async function Ii(e,t){return await $.providers.testConnection(e,t)}async function Li(e,t){return await $.providers.discoverModels(e,t)}async function Ri(e,t={}){return await $.providers.startAuth(e,t)}async function zi(e,t){return await $.providers.pollAuth(e,t)}async function Bi(e){return await $.providers.importAuthFromCli(e)}async function Vi(e,t){return await $.config.updateChannel(e,t)}async function Hi(e){return await $.config.updateRuntime(e)}async function Ui(e){return await $.config.updateSecrets(e)}async function Wi(e,t){return await $.config.executeAction(e,t)}async function Gi(){return await $.config.fetchChatSessionTypes()}async function Ki(e){return await $.config.fetchCronJobs(e)}async function qi(e){return await $.config.deleteCronJob(e)}async function Ji(e,t){return await $.config.setCronJobEnabled(e,t)}async function Yi(e,t){return await $.config.runCronJob(e,t)}async function Xi(e){return await $.marketplace.fetchItems(e)}async function Zi(e){return await $.marketplace.fetchSkillContent(e)}async function Qi(){return await $.marketplace.fetchSkillScenes()}async function $i(e){return await $.marketplace.install(e)}async function ea(e){return await $.marketplace.fetchInstalled(e)}async function ta(e){return await $.marketplace.manage(e)}async function na(e){return await $.mcpMarketplace.fetchItems(e)}async function ra(){return await $.mcpMarketplace.fetchInstalled()}async function ia(e){return await $.mcpMarketplace.fetchContent(e)}async function aa(e){return await $.mcpMarketplace.install({type:`mcp`,...e})}async function oa(e){return await $.mcpMarketplace.manage({type:`mcp`,...e})}async function sa(e){return await $.mcpMarketplace.doctor(e)}async function ca(e){return(await $.sessions.uploadAssets(e)).assets.map(e=>({id:e.id,name:e.name,mimeType:e.mimeType,sizeBytes:e.sizeBytes,assetUri:e.assetUri,url:e.url}))}async function la(e){return await $.sessions.list(e)}async function ua(e,t={}){return await $.sessions.listMessages(e,t)}async function da(e,t){return await $.sessions.listSkills(e,t)}async function fa(e,t){return await $.sessions.update(e,t)}async function pa(e){return await $.sessions.compactContext(e)}async function ma(e){return await $.sessions.delete(e)}async function ha(){return await $.projects.list()}async function ga(e){return await $.projects.create(e)}async function _a(e){return await $.projects.addExisting(e)}function va(e){return encodeURIComponent(e)}async function ya(e){let t=await oi.get(`/api/preferences/${va(e)}`);if(!t.ok)throw Error(t.error.message);return t.data}async function ba(e,t){let n=await oi.put(`/api/preferences/${va(e)}`,{value:t});if(!n.ok)throw Error(n.error.message);return n.data}var xa={chat:{modelFavorites:`chat.modelFavorites`,newSessionType:`chat.newSession.sessionType`}};function Sa(e){return e.lastMessageAt??e.createdAt??e.updatedAt}function Ca(e){return e.metadata?.last_activity_preview?.state===`running`}function wa(e){return[...e].sort((e,t)=>Sa(t).localeCompare(Sa(e)))}function Ta(e,t){let n=t.updatedAt.localeCompare(e.updatedAt);return n===0?e.status===t.status||t.status===`idle`:n>0}function Ea(e,t){if(e[0]!==`ncp-sessions`)return!1;let n=typeof e[2]==`string`?e[2].trim():``;return!n||t.peerId===n}function Da(e,t){if(!e)return e;let n=e.sessions.findIndex(e=>e.sessionId===t.sessionId),r=wa(n>=0?e.sessions.map((e,r)=>r===n&&Ta(e,t)?{...t,status:t.status===`idle`&&Ca(t)?e.status:t.status}:e):[...e.sessions,t]);return{...e,sessions:r,total:r.length}}function Oa(e,t){if(!e)return e;let n=t.trim();if(!n)return e;let r=e.sessions.filter(e=>e.sessionId!==n);return r.length===e.sessions.length?e:{...e,sessions:r,total:r.length}}function ka(e,t){e?.setQueriesData({predicate:e=>Ea(e.queryKey,t)},e=>Da(e,t))}function Aa(e,t){if(!e)return e;let n=t.sessionKey.trim();if(!n)return e;let r=!1,i=e.sessions.map(e=>e.sessionId!==n||e.status===t.status?e:(r=!0,{...e,status:t.status}));return r?{...e,sessions:i}:e}function ja(e,t){e?.setQueriesData({queryKey:[`ncp-sessions`]},e=>Aa(e,t))}function Ma(e,t){e?.setQueriesData({queryKey:[`ncp-sessions`]},e=>Oa(e,t))}function Na(e,t){if(t.type===`session.run-status`){ja(e,t.payload);return}if(t.type===`session.summary.upsert`){ka(e,t.payload.summary);return}Ma(e,t.payload.sessionKey)}async function Pa(){return await $.remote.fetchStatus()}async function Fa(){return await $.remote.fetchDoctor()}async function Ia(e){return await $.remote.startBrowserAuth(e)}async function La(e){return await $.remote.pollBrowserAuth(e)}async function Ra(){return await $.remote.logout()}async function za(e){return await $.remote.updateAccountProfile(e)}async function Ba(e){return await $.remote.updateSettings(e)}async function Va(e){return await $.remote.controlService(e)}async function Ha(){return await $.runtimeControl.fetch()}async function Ua(){return await $.runtimeControl.startService()}async function Wa(){return await $.runtimeControl.restartService()}async function Ga(){return await $.runtimeControl.stopService()}async function Ka(){return await $.runtimeUpdate.fetch()}async function qa(){return await $.runtimeUpdate.check()}async function Ja(){return await $.runtimeUpdate.download()}async function Ya(){return await $.runtimeUpdate.apply()}async function Xa(e){return await $.runtimeUpdate.updateChannel(e)}var Za=`/api/server-paths/content`;async function Qa(e){return await $.serverPaths.browse(e)}async function $a(e){return await $.serverPaths.watch(e)}async function eo(e){await $.serverPaths.unwatch(e)}async function to(e){return await $.serverPaths.createDirectory(e)}async function no(e){return await $.serverPaths.createFile(e)}async function ro(e){return await $.serverPaths.renameEntry(e)}async function io(e){return await $.serverPaths.deleteEntry(e)}async function ao(e){return await $.serverPaths.uploadFiles(e)}async function oo(e){return await $.serverPaths.read(e)}async function so(e){return await $.serverPaths.search(e)}function co(e,t){let n=e.trim(),r=n.startsWith(`/`)||/^[a-z]:[\\/]/i.test(n),i=t?.trim()??``;if(!r&&!i)return null;let a=new URLSearchParams({path:n});return i&&a.set(`basePath`,i),`${Dn}${Za}?${a.toString()}`}export{Ci as $,At as $t,ma as A,yr as At,aa as B,Yn as Bt,xa as C,Se as Cn,pi as Ct,ga as D,T as Dn,ii as Dt,_a as E,h as En,$ as Et,ca as F,er as Ft,Qi as G,X as Gt,ea as H,qn as Ht,sa as I,tr as It,Pi as J,It as Jt,$i as K,Dn as Kt,ia as L,ir as Lt,da as M,mr as Mt,la as N,pr as Nt,ha as O,E as On,Nr as Ot,fa as P,dr as Pt,Wi as Q,jt as Qt,ra as R,Qn as Rt,ka as S,Ee as Sn,mi as St,ba as T,M as Tn,fi as Tt,Xi as U,Kn as Ut,oa as V,Jn as Vt,Zi as W,Z as Wt,Fi as X,Pt as Xt,qi as Y,Ft as Yt,Li as Z,Mt as Zt,Ia as _,ze as _n,Hi as _t,Qa as a,wt as an,ki as at,Na as b,U as bn,gi as bt,ro as c,Ye as cn,Bi as ct,$a as d,Ue as dn,Ji as dt,J as en,Ti as et,Va as f,Ke as fn,Ri as ft,La as g,Ve as gn,Ni as gt,Ra as h,He as hn,ji as ht,io as i,Dt as in,Gi as it,ua as j,Sr as jt,pa as k,u as kn,gr as kt,eo as l,Je as ln,zi as lt,Pa as m,Be as mn,Vi as mt,to as n,kt as nn,Ai as nt,oo as o,Ct as on,Oi as ot,Fa as p,Ge as pn,Ii as pt,ta as q,Y as qt,no as r,Ot as rn,Ki as rt,so as s,G as sn,Di as st,co as t,q as tn,Ei as tt,ao as u,qe as un,Yi as ut,za as v,Ie as vn,Mi as vt,ya as w,L as wn,di as wt,Ma as x,Te as xn,hi as xt,Ba as y,Pe as yn,Ui as yt,na as z,Q as zt};
|
package/ui-dist/assets/{appearance-settings-page-Bpd2RhK5.js → appearance-settings-page-BOorfaUx.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"./chunk-DseTPa7n.js";import{I as t,V as n,a as r,i,z as a}from"./react-
|
|
1
|
+
import{i as e}from"./chunk-DseTPa7n.js";import{I as t,V as n,a as r,i,z as a}from"./react-BgRLh3ee.js";import{Jt as o,Mt as s,Xt as c,Yt as l,Zt as u}from"./api-CVjdSvJk.js";import{m as d}from"./mcp-marketplace-page-DN_fqcLd.js";import{a as f,i as p,n as m,r as h,t as g,w as _}from"./select-D_YBzMdv.js";import{K as v,d as y,n as b,p as x}from"./index-DlL8uKXu.js";var S=e(n(),1);function C(){let{language:e,setLanguage:t}=d();return{currentLanguage:e,currentLanguageLabel:r.find(t=>t.value===e)?.label??e,languageOptions:r,selectLanguage:(0,S.useCallback)(n=>{e!==n&&(t(n),window.location.reload())},[e,t])}}var w=a(),T=[{value:`card`,labelKey:`chatMessageLayoutCard`,descriptionKey:`chatMessageLayoutCardDescription`},{value:`flat`,labelKey:`chatMessageLayoutFlat`,descriptionKey:`chatMessageLayoutFlatDescription`}];function E(){let{theme:e,setTheme:n}=y(),{currentLanguage:r,languageOptions:a,selectLanguage:d}=C(),S=v(e=>e.layout),E=v(e=>e.setLayout),D=b(e=>e.isVisible),O=b(e=>e.setVisible);return(0,w.jsx)(u,{title:i(`appearance`),children:(0,w.jsx)(c,{children:(0,w.jsxs)(l,{children:[(0,w.jsx)(o,{title:i(`theme`),control:(0,w.jsxs)(g,{value:e,onValueChange:e=>n(e),children:[(0,w.jsx)(p,{"aria-label":i(`theme`),className:`w-36 sm:w-44`,children:(0,w.jsx)(f,{})}),(0,w.jsx)(m,{children:x.map(e=>(0,w.jsx)(h,{value:e.value,children:i(e.labelKey)},e.value))})]})}),(0,w.jsx)(o,{title:i(`language`),control:(0,w.jsxs)(g,{value:r,onValueChange:e=>d(e),children:[(0,w.jsx)(p,{"aria-label":i(`language`),className:`w-36 sm:w-44`,children:(0,w.jsx)(f,{})}),(0,w.jsx)(m,{children:a.map(e=>(0,w.jsx)(h,{value:e.value,children:e.label},e.value))})]})}),(0,w.jsx)(o,{title:i(`chatMessageLayoutTitle`),description:i(`chatMessageLayoutDescription`),layout:`stacked`,children:(0,w.jsx)(`div`,{role:`radiogroup`,"aria-label":i(`chatMessageLayoutTitle`),className:`grid gap-1 rounded-xl bg-background/65 p-1 sm:grid-cols-2`,children:T.map(e=>{let n=e.value===S;return(0,w.jsxs)(`button`,{type:`button`,role:`radio`,"aria-checked":n,onClick:()=>E(e.value),className:t(`flex min-w-0 items-start gap-3 rounded-lg px-3 py-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,n?`bg-card text-foreground shadow-sm`:`text-muted-foreground hover:bg-card/60 hover:text-foreground`),children:[(0,w.jsx)(`span`,{className:t(`mt-0.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full ring-1`,n?`bg-primary text-primary-foreground ring-primary`:`bg-background ring-border`),children:n?(0,w.jsx)(_,{className:`h-2.5 w-2.5`,strokeWidth:3}):null}),(0,w.jsxs)(`span`,{className:`min-w-0`,children:[(0,w.jsx)(`span`,{className:`block text-sm font-medium`,children:i(e.labelKey)}),(0,w.jsx)(`span`,{className:`mt-1 block text-xs leading-5 text-muted-foreground`,children:i(e.descriptionKey)})]})]},e.value)})})}),(0,w.jsx)(o,{title:i(`sideDockVisibilityTitle`),description:i(`sideDockVisibilityDescription`),control:(0,w.jsx)(s,{id:`appearance-side-dock-visible`,"aria-label":i(`sideDockVisibilityTitle`),checked:D,onCheckedChange:O})})]})})})}export{E as AppearanceSettingsPage};
|