@kw-yeh/vibeflow 4.11.21 → 4.11.23

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.
@@ -68,9 +68,31 @@ Add `scope` only when one area clearly owns the change.
68
68
  Issue link: if the argument or the branch name carries an issue reference (`#123`, `ABC-123`),
69
69
  put it in **Why** (`Closes #123` for a GitHub issue in this repo).
70
70
 
71
- ## 5. Create or update
72
-
73
- Write the body to a temp file, then:
71
+ ## 5. Screenshots and acceptance videos
72
+
73
+ - When `VIBEFLOW_ARTIFACTS_DIR` is set and nonempty, look there first for this change's screenshots
74
+ and acceptance videos, including subdirectories such as `visual-parity/run-*`. Select files that
75
+ actually show this branch's behavior; do not attach unrelated or stale evidence.
76
+ - Save new screenshots in a new subdirectory of `VIBEFLOW_ARTIFACTS_DIR` (for example
77
+ `pr/<unique-run>/`). Create it first, quote paths containing spaces, and preserve earlier evidence.
78
+ Keep final acceptance videos there too; recordings from visual-parity may remain in its run directory.
79
+ - Put temporary browser scripts, extra logs, PR body files and recording intermediates in
80
+ `VIBEFLOW_SCRATCH_DIR`. If it is unset or empty but the Artifact root exists, use its `scratch/`
81
+ subdirectory. If neither is available, use the agent's scratchpad or the system temp directory.
82
+ - When the Artifact variable is unset or empty (outside VibeFlow), use an existing evidence location
83
+ or the agent's scratchpad for new captures. Missing variables must not block the PR workflow;
84
+ an explicit user-specified path takes priority.
85
+ - **Upload screenshots and videos through the GitHub web UI only. Never commit them to the repo.**
86
+ Create or update the PR with `gh` as below, then use GitHub's attachment control in its description
87
+ or a comment. For an acceptance video, add a separate comment and upload the actual video there.
88
+ Wait for the upload to finish and confirm the resulting GitHub attachment link before submitting.
89
+ A local filesystem path is not an uploaded attachment. If no acceptance video exists, skip the
90
+ video comment. If the browser cannot upload or is not signed in, report that limitation and keep
91
+ the file in Artifacts; do not substitute a repository commit or claim the upload succeeded.
92
+
93
+ ## 6. Create or update
94
+
95
+ Write the body to a unique temp file in the scratch location above, then:
74
96
 
75
97
  ```bash
76
98
  gh pr create --draft --base <base> --title "<title>" --body-file <file>
@@ -17,6 +17,7 @@ description: 比對兩個已渲染網頁的樣式落差(新舊版對照 / 改
17
17
  2. **不要把報告全文讀進 context。** stdout 的摘要已含「最常出現的落差屬性」;需要細節時用 `grep` 撈特定屬性或 selector,不要 `Read` 整份。
18
18
  3. **不要逐項修。** 先看 stdout 的 top differing properties——落差通常是少數幾條系統性規則(一條 `margin-bottom`、一組 token)造成的,不是幾十個獨立問題。
19
19
  4. **改完重跑一次全量比對**,而不是只驗剛改的那一項。
20
+ 5. **先選輸出目錄。** 在 VibeFlow 中,驗收證據預設寫入 `VIBEFLOW_ARTIFACTS_DIR` 的子目錄,暫存工作檔寫入 `VIBEFLOW_SCRATCH_DIR`;不要留在 agent scratchpad,也不要 commit 截圖或影片。
20
21
 
21
22
  ## 前置
22
23
 
@@ -28,13 +29,43 @@ description: 比對兩個已渲染網頁的樣式落差(新舊版對照 / 改
28
29
  打到登入頁或拒絕頁時比對結果毫無意義——`matched` 異常地少就先檢查這個。
29
30
  - 新舊對照要同時起兩份 server(不同 port),各自當 `--ref` 與 `--local`。
30
31
 
32
+ ## 輸出目錄 — 每次驗收先執行
33
+
34
+ 以下為 Bash 範例,在同一個 shell 依序執行。路徑即使含空白也必須保留引號。
35
+ PowerShell 請依同一優先順序建立目錄、設定 `$env:PARITY_OUT`/`$env:PARITY_SCRATCH`,並在呼叫 Python 的 process 設定 `TMPDIR`;不要直接貼 Bash 語法。
36
+
37
+ ```bash
38
+ if [ -n "${VIBEFLOW_ARTIFACTS_DIR:-}" ]; then
39
+ mkdir -p "$VIBEFLOW_ARTIFACTS_DIR/visual-parity"
40
+ PARITY_OUT="$(mktemp -d "$VIBEFLOW_ARTIFACTS_DIR/visual-parity/run-XXXXXX")"
41
+ else
42
+ PARITY_OUT="$PWD"
43
+ fi
44
+
45
+ if [ -n "${VIBEFLOW_SCRATCH_DIR:-}" ]; then
46
+ mkdir -p "$VIBEFLOW_SCRATCH_DIR"
47
+ PARITY_SCRATCH="$(mktemp -d "$VIBEFLOW_SCRATCH_DIR/parity-XXXXXX")"
48
+ elif [ -n "${VIBEFLOW_ARTIFACTS_DIR:-}" ]; then
49
+ mkdir -p "$VIBEFLOW_ARTIFACTS_DIR/scratch"
50
+ PARITY_SCRATCH="$(mktemp -d "$VIBEFLOW_ARTIFACTS_DIR/scratch/parity-XXXXXX")"
51
+ else
52
+ PARITY_SCRATCH="$(mktemp -d)"
53
+ fi
54
+ export PARITY_OUT PARITY_SCRATCH
55
+ ```
56
+
57
+ - `PARITY_OUT`:截圖、像素 diff 圖(若另行產生)、最終影片、Markdown 報告及新建立的 `steps.json`。有 Artifact root 時每次初始化建立獨立子目錄,避免覆蓋之前的證據。
58
+ - `PARITY_SCRATCH`:額外 log、一次性的 Playwright 腳本、錄影與轉檔中間檔。下文的 `TMPDIR` 前綴只影響該次 Python process,讓錄影暫存目錄也使用此位置;若將 stdout/stderr 另存 log,寫在這裡。報告內仍保留 console/network 摘要。
59
+ - 兩個 VibeFlow 變數皆 unset 或空值時,報告、影片及 steps 沿用 cwd,暫存檔使用系統暫存目錄;只有 scratch 變數時也能獨立使用,不要求兩者同時存在。
60
+ - 使用者明確指定的輸出位置優先;既有 `--steps` 或 repo 內回歸測試不自動搬移。`parity.py` 本身不讀這兩個 VibeFlow 變數,直接使用舊命令的路徑語意不變。
61
+
31
62
  ## diff — 新舊頁面樣式落差
32
63
 
33
64
  ```bash
34
- python <skill-dir>/scripts/parity.py diff \
35
- --ref https://staging.example.com/faq/content?id=28473 \
36
- --local https://localhost:3000/faq/content?id=28473 \
37
- --out parity-diff.md
65
+ TMPDIR="$PARITY_SCRATCH" python "<skill-dir>/scripts/parity.py" diff \
66
+ --ref "https://staging.example.com/faq/content?id=28473" \
67
+ --local "https://localhost:3000/faq/content?id=28473" \
68
+ --out "$PARITY_OUT/parity-diff.md"
38
69
  ```
39
70
 
40
71
  元素配對:先套 `--map` 的手動對照,再以「標籤+文字」自動配對,最後以「純文字」補配(吸收 SPA→SSR 的標籤變化,例如 `<p>` 變 `<div>`)。
@@ -48,6 +79,7 @@ stdout 會回報四個數字:
48
79
 
49
80
  其他參數:`--width` / `--widths`、`--wait-selector`(等內容渲染完)、`--extra-wait`(動畫或延遲載入)。
50
81
  Exit code 1 表示有落差,0 表示完全一致。
82
+ 此模式比對 DOM/computed styles,不產生像素 diff 圖;需要像素級比對時另行執行,將兩張截圖及 diff 圖同樣存入 `PARITY_OUT`。
51
83
 
52
84
  ### --map:手動指定對照
53
85
 
@@ -66,30 +98,42 @@ DOM 結構差太多時(舊 iframe vs 新 SSR),用 JSON 補:
66
98
  ## responsive — 三種寬度 + 水平溢出
67
99
 
68
100
  ```bash
69
- python <skill-dir>/scripts/parity.py responsive \
70
- --ref <URL> --local <URL> --out parity-responsive.md
101
+ TMPDIR="$PARITY_SCRATCH" python "<skill-dir>/scripts/parity.py" responsive \
102
+ --ref "<ref-URL>" --local "<local-URL>" \
103
+ --out "$PARITY_OUT/parity-responsive.md"
71
104
  ```
72
105
 
73
106
  等同在 375 / 768 / 1440 各跑一次 diff,另外檢查 local 是否出現水平溢出(`scrollWidth > clientWidth`),這是 RWD 破版最常見的徵兆。
74
107
 
75
108
  ## flow — 互動驗收 + console/network 錯誤
76
109
 
77
- 用 JSON 描述步驟,不要每次現寫 Playwright:
110
+ 用 JSON 描述步驟,不要每次現寫 Playwright。以下範例以 Python 寫入實際的 screenshot 絕對路徑;請依受測頁面調整 URL、selector 與 assertion。
111
+ **JSON 不會展開 `$PARITY_OUT` 等 shell 變數**,不要將它們直接寫成 JSON path:
78
112
 
79
- ```json
80
- [
113
+ ```bash
114
+ python - <<'PY'
115
+ import json
116
+ import os
117
+ from pathlib import Path
118
+
119
+ out = Path(os.environ["PARITY_OUT"]).resolve()
120
+ steps = [
81
121
  {"action": "goto", "url": "https://localhost:3000/products"},
82
122
  {"action": "click", "selector": ".ba-free-download", "desc": "點 Free Download"},
83
123
  {"action": "wait", "selector": "[role=dialog]"},
84
124
  {"action": "expect_focused", "selector": "[role=dialog] input[type=email]", "desc": "focus 應落在 input 而非 close button"},
85
125
  {"action": "fill", "selector": "input[type=email]", "value": "a@b.com"},
86
126
  {"action": "click", "selector": "button[type=submit]"},
87
- {"action": "expect_text", "selector": "[role=dialog]", "value": "Check your email"}
127
+ {"action": "expect_text", "selector": "[role=dialog]", "value": "Check your email"},
128
+ {"action": "screenshot", "path": str(out / "parity-flow.png")}
88
129
  ]
130
+ (out / "steps.json").write_text(json.dumps(steps, ensure_ascii=False, indent=2), encoding="utf-8")
131
+ PY
89
132
  ```
90
133
 
91
134
  ```bash
92
- python <skill-dir>/scripts/parity.py flow --steps steps.json --out parity-flow.md
135
+ TMPDIR="$PARITY_SCRATCH" python "<skill-dir>/scripts/parity.py" flow \
136
+ --steps "$PARITY_OUT/steps.json" --out "$PARITY_OUT/parity-flow.md"
93
137
  ```
94
138
 
95
139
  可用 action:`goto` `click` `fill` `press` `wait` `expect_text` `expect_visible` `expect_focused` `screenshot`。
@@ -102,8 +146,9 @@ python <skill-dir>/scripts/parity.py flow --steps steps.json --out parity-flow.m
102
146
  截圖看不出 transition、loading、hover 這類會動的東西,用錄影:
103
147
 
104
148
  ```bash
105
- python <skill-dir>/scripts/parity.py flow \
106
- --steps steps.json --out parity-flow.md --video parity-flow.mp4
149
+ TMPDIR="$PARITY_SCRATCH" python "<skill-dir>/scripts/parity.py" flow \
150
+ --steps "$PARITY_OUT/steps.json" --out "$PARITY_OUT/parity-flow.md" \
151
+ --video "$PARITY_OUT/parity-flow.mp4"
107
152
  ```
108
153
 
109
154
  - 副檔名 `.mp4` 會在錄完後用 ffmpeg 轉成 H.264(QuickTime 直接開),中間的 webm 自動刪除。**ffmpeg 不存在時不會失敗**,保留 `.webm` 並在 stdout 提示。副檔名寫 `.webm` 則完全不轉檔。
@@ -112,8 +157,8 @@ python <skill-dir>/scripts/parity.py flow \
112
157
  - 影格率是 Playwright screencast 的 **25fps**,判斷「動畫有沒有做對」夠用;要判斷「掉不掉幀」不夠,那種要用 macOS `screencapture -v` 錄 60fps。
113
158
  - 影片路徑會同時寫進報告開頭與 stdout。
114
159
 
115
- 把 flow 的 JSON 存進專案(例如 `e2e/`),下次改版直接重跑,就是回歸測試。
160
+ 新建的驗收 JSON 預設留在 `PARITY_OUT`,下次可用其實際路徑重跑。只有使用者明確要求保留程式碼回歸測試時,才放入專案(例如 `e2e/`);截圖、影片與其他驗收證據仍留在 Artifact,不 commit。
116
161
 
117
162
  ## 維護
118
163
 
119
- 改過 `parity.py` 後跑 `python <skill-dir>/scripts/parity.py selftest`,會用內建 fixture 驗證配對與 diff 邏輯仍正確。
164
+ 改過 `parity.py` 後跑 `TMPDIR="$PARITY_SCRATCH" python "<skill-dir>/scripts/parity.py" selftest`,會用內建 fixture 驗證配對與 diff 邏輯仍正確。
package/dist/vibeflow.mjs CHANGED
@@ -7645,6 +7645,7 @@ import { timingSafeEqual } from "crypto";
7645
7645
  import { WebSocketServer } from "ws";
7646
7646
  var TOKEN_COOKIE = "vf_token";
7647
7647
  var WS_PATH = "/ws";
7648
+ var PUBLIC_FILES = /* @__PURE__ */ new Set(["/manifest.webmanifest", "/icon-192.png", "/icon-512.png", "/logo.svg"]);
7648
7649
  var MAX_PAYLOAD = 256 * 1024 * 1024;
7649
7650
  var CONTENT_TYPES = {
7650
7651
  ".html": "text/html; charset=utf-8",
@@ -7652,6 +7653,7 @@ var CONTENT_TYPES = {
7652
7653
  ".mjs": "text/javascript; charset=utf-8",
7653
7654
  ".css": "text/css; charset=utf-8",
7654
7655
  ".json": "application/json; charset=utf-8",
7656
+ ".webmanifest": "application/manifest+json; charset=utf-8",
7655
7657
  ".map": "application/json; charset=utf-8",
7656
7658
  ".svg": "image/svg+xml",
7657
7659
  ".png": "image/png",
@@ -7740,7 +7742,7 @@ async function startWebServer(options) {
7740
7742
  });
7741
7743
  return;
7742
7744
  }
7743
- if (!sameToken(parseCookies(req.headers.cookie)[TOKEN_COOKIE], token)) {
7745
+ if (!PUBLIC_FILES.has(url.pathname) && !sameToken(parseCookies(req.headers.cookie)[TOKEN_COOKIE], token)) {
7744
7746
  send(res, 401, "VibeFlow: open this page with the `vibeflow` command, which adds a one-time token.");
7745
7747
  return;
7746
7748
  }
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="icon" href="/logo.svg" type="image/svg+xml" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/f8f64877c884206d.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f8f64877c884206d.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-33344f7100190436.js" defer=""></script><script src="/_next/static/chunks/framework-b92a367cf1ad4bf7.js" defer=""></script><script src="/_next/static/chunks/main-ec7fd4c371d06729.js" defer=""></script><script src="/_next/static/chunks/pages/_app-2571a2564f593899.js" defer=""></script><script src="/_next/static/chunks/pages/_error-8f65b0f8749f42d2.js" defer=""></script><script src="/_next/static/m3seMgh7dEHDU9k_2URFv/_buildManifest.js" defer=""></script><script src="/_next/static/m3seMgh7dEHDU9k_2URFv/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"m3seMgh7dEHDU9k_2URFv","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="icon" href="/logo.svg" type="image/svg+xml" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><link rel="manifest" href="/manifest.webmanifest" data-next-head=""/><meta name="theme-color" content="#0d1117" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/f8f64877c884206d.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f8f64877c884206d.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-33344f7100190436.js" defer=""></script><script src="/_next/static/chunks/framework-b92a367cf1ad4bf7.js" defer=""></script><script src="/_next/static/chunks/main-ec7fd4c371d06729.js" defer=""></script><script src="/_next/static/chunks/pages/_app-401e9322101b6533.js" defer=""></script><script src="/_next/static/chunks/pages/_error-8f65b0f8749f42d2.js" defer=""></script><script src="/_next/static/k4vs9Y-8Wd6zK6Ztl4X27/_buildManifest.js" defer=""></script><script src="/_next/static/k4vs9Y-8Wd6zK6Ztl4X27/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"k4vs9Y-8Wd6zK6Ztl4X27","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
package/dist/web/404.html CHANGED
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="icon" href="/logo.svg" type="image/svg+xml" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/f8f64877c884206d.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f8f64877c884206d.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-33344f7100190436.js" defer=""></script><script src="/_next/static/chunks/framework-b92a367cf1ad4bf7.js" defer=""></script><script src="/_next/static/chunks/main-ec7fd4c371d06729.js" defer=""></script><script src="/_next/static/chunks/pages/_app-2571a2564f593899.js" defer=""></script><script src="/_next/static/chunks/pages/_error-8f65b0f8749f42d2.js" defer=""></script><script src="/_next/static/m3seMgh7dEHDU9k_2URFv/_buildManifest.js" defer=""></script><script src="/_next/static/m3seMgh7dEHDU9k_2URFv/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"m3seMgh7dEHDU9k_2URFv","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><link rel="icon" href="/favicon.ico" sizes="any" data-next-head=""/><link rel="icon" href="/logo.svg" type="image/svg+xml" data-next-head=""/><link rel="apple-touch-icon" href="/apple-touch-icon.png" data-next-head=""/><link rel="manifest" href="/manifest.webmanifest" data-next-head=""/><meta name="theme-color" content="#0d1117" data-next-head=""/><title data-next-head="">404: This page could not be found</title><link rel="preload" href="/_next/static/css/f8f64877c884206d.css" as="style"/><link rel="stylesheet" href="/_next/static/css/f8f64877c884206d.css" data-n-g=""/><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-33344f7100190436.js" defer=""></script><script src="/_next/static/chunks/framework-b92a367cf1ad4bf7.js" defer=""></script><script src="/_next/static/chunks/main-ec7fd4c371d06729.js" defer=""></script><script src="/_next/static/chunks/pages/_app-401e9322101b6533.js" defer=""></script><script src="/_next/static/chunks/pages/_error-8f65b0f8749f42d2.js" defer=""></script><script src="/_next/static/k4vs9Y-8Wd6zK6Ztl4X27/_buildManifest.js" defer=""></script><script src="/_next/static/k4vs9Y-8Wd6zK6Ztl4X27/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"k4vs9Y-8Wd6zK6Ztl4X27","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{4416:(e,t,r)=>{"use strict";r.d(t,{cn:()=>eg});var o=r(73367);let n=(e=new Map,t=null,r)=>({nextPart:e,validators:t,classGroupId:r}),a=[],s=(e,t,r)=>{if(0==e.length-t)return r.classGroupId;let o=e[t],n=r.nextPart.get(o);if(n){let r=s(e,t+1,n);if(r)return r}let a=r.validators;if(null===a)return;let i=0===t?e.join("-"):e.slice(t).join("-"),l=a.length;for(let e=0;e<l;e++){let t=a[e];if(t.validator(i))return t.classGroupId}},i=(e,t)=>{let r=n();for(let o in e)l(e[o],r,o,t);return r},l=(e,t,r,o)=>{let n=e.length;for(let a=0;a<n;a++)c(e[a],t,r,o)},c=(e,t,r,o)=>{"string"==typeof e?d(e,t,r):"function"==typeof e?u(e,t,r,o):m(e,t,r,o)},d=(e,t,r)=>{(""===e?t:p(t,e)).classGroupId=r},u=(e,t,r,o)=>{b(e)?l(e(o),t,r,o):(null===t.validators&&(t.validators=[]),t.validators.push({classGroupId:r,validator:e}))},m=(e,t,r,o)=>{let n=Object.entries(e),a=n.length;for(let e=0;e<a;e++){let[a,s]=n[e];l(s,p(t,a),r,o)}},p=(e,t)=>{let r=e,o=t.split("-"),a=o.length;for(let e=0;e<a;e++){let t=o[e],a=r.nextPart.get(t);a||(a=n(),r.nextPart.set(t,a)),r=a}return r},b=e=>"isThemeGetter"in e&&!0===e.isThemeGetter,g=[],f=(e,t,r,o,n)=>({modifiers:e,hasImportantModifier:t,baseClassName:r,maybePostfixModifierPosition:o,isExternal:n}),h=/\s+/,k=e=>{let t;if("string"==typeof e)return e;let r="";for(let o=0;o<e.length;o++)e[o]&&(t=k(e[o]))&&(r&&(r+=" "),r+=t);return r},v=[],w=e=>{let t=t=>t[e]||v;return t.isThemeGetter=!0,t},x=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,y=/^\((?:(\w[\w-]*):)?(.+)\)$/i,z=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,S=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,j=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,A=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,E=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,L=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,C=e=>z.test(e),T=e=>!!e&&!Number.isNaN(Number(e)),G=e=>!!e&&Number.isInteger(Number(e)),M=e=>e.endsWith("%")&&T(e.slice(0,-1)),N=e=>S.test(e),D=()=>!0,P=e=>j.test(e)&&!A.test(e),J=()=>!1,_=e=>E.test(e),I=e=>L.test(e),W=e=>!U(e)&&!Q(e),O=e=>e.startsWith("@container")&&("/"===e[10]&&void 0!==e[11]||"s"===e[11]&&void 0!==e[16]&&e.startsWith("-size/",10)||"n"===e[11]&&void 0!==e[18]&&e.startsWith("-normal/",10)),B=e=>en(e,el,J),U=e=>x.test(e),$=e=>en(e,ec,P),R=e=>en(e,ed,T),V=e=>en(e,em,D),F=e=>en(e,eu,J),K=e=>en(e,es,J),q=e=>en(e,ei,I),H=e=>en(e,ep,_),Q=e=>y.test(e),X=e=>ea(e,ec),Y=e=>ea(e,eu),Z=e=>ea(e,es),ee=e=>ea(e,el),et=e=>ea(e,ei),er=e=>ea(e,ep,!0),eo=e=>ea(e,em,!0),en=(e,t,r)=>{let o=x.exec(e);return!!o&&(o[1]?t(o[1]):r(o[2]))},ea=(e,t,r=!1)=>{let o=y.exec(e);return!!o&&(o[1]?t(o[1]):r)},es=e=>"position"===e||"percentage"===e,ei=e=>"image"===e||"url"===e,el=e=>"length"===e||"size"===e||"bg-size"===e,ec=e=>"length"===e,ed=e=>"number"===e,eu=e=>"family-name"===e,em=e=>"number"===e||"weight"===e,ep=e=>"shadow"===e,eb=((e,...t)=>{let r,o,n,l,c=e=>{let t=o(e);if(t)return t;let a=((e,t)=>{let{parseClassName:r,getClassGroupId:o,getConflictingClassGroupIds:n,sortModifiers:a,postfixLookupClassGroupIds:s}=t,i=[],l=e.trim().split(h),c="";for(let e=l.length-1;e>=0;e-=1){let t,d=l[e],{isExternal:u,modifiers:m,hasImportantModifier:p,baseClassName:b,maybePostfixModifierPosition:g}=r(d);if(u){c=d+(c.length>0?" "+c:c);continue}let f=!!g;if(f){let e=(t=o(b.substring(0,g)))&&s[t]?o(b):void 0;e&&e!==t&&(t=e,f=!1)}else t=o(b);if(!t){if(!f||!(t=o(b))){c=d+(c.length>0?" "+c:c);continue}f=!1}let h=0===m.length?"":1===m.length?m[0]:a(m).join(":"),k=p?h+"!":h,v=k+t;if(i.indexOf(v)>-1)continue;i.push(v);let w=n(t,f);for(let e=0;e<w.length;++e){let t=w[e];i.push(k+t)}c=d+(c.length>0?" "+c:c)}return c})(e,r);return n(e,a),a};return l=d=>{var u;let m;return o=(r={cache:(e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,r=Object.create(null),o=Object.create(null),n=(n,a)=>{r[n]=a,++t>e&&(t=0,o=r,r=Object.create(null))};return{get(e){let t=r[e];return void 0!==t?t:void 0!==(t=o[e])?(n(e,t),t):void 0},set(e,t){e in r?r[e]=t:n(e,t)}}})((u=t.reduce((e,t)=>t(e),e())).cacheSize),parseClassName:(e=>{let{prefix:t,experimentalParseClassName:r}=e,o=e=>{let t,r=[],o=0,n=0,a=0,s=e.length;for(let i=0;i<s;i++){let s=e[i];if(0===o&&0===n){if(":"===s){r.push(e.slice(a,i)),a=i+1;continue}if("/"===s){t=i;continue}}"["===s?o++:"]"===s?o--:"("===s?n++:")"===s&&n--}let i=0===r.length?e:e.slice(a),l=i,c=!1;return i.endsWith("!")?(l=i.slice(0,-1),c=!0):i.startsWith("!")&&(l=i.slice(1),c=!0),f(r,c,l,t&&t>a?t-a:void 0)};if(t){let e=t+":",r=o;o=t=>t.startsWith(e)?r(t.slice(e.length)):f(g,!1,t,void 0,!0)}if(r){let e=o;o=t=>r({className:t,parseClassName:e})}return o})(u),sortModifiers:(m=new Map,u.orderSensitiveModifiers.forEach((e,t)=>{m.set(e,1e6+t)}),e=>{let t=[],r=[];for(let o=0;o<e.length;o++){let n=e[o],a="["===n[0],s=m.has(n);a||s?(r.length>0&&(r.sort(),t.push(...r),r=[]),t.push(n)):r.push(n)}return r.length>0&&(r.sort(),t.push(...r)),t}),postfixLookupClassGroupIds:(e=>{let t=Object.create(null),r=e.postfixLookupClassGroups;if(r)for(let e=0;e<r.length;e++)t[r[e]]=!0;return t})(u),...(e=>{let t=(e=>{let{theme:t,classGroups:r}=e;return i(r,t)})(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:e=>{if(e.startsWith("[")&&e.endsWith("]")){var r;let t,o,n;return -1===(r=e).slice(1,-1).indexOf(":")?void 0:(o=(t=r.slice(1,-1)).indexOf(":"),(n=t.slice(0,o))?"arbitrary.."+n:void 0)}let o=e.split("-"),n=+(""===o[0]&&o.length>1);return s(o,n,t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=o[e],n=r[e];if(t){if(n){let e=Array(n.length+t.length);for(let t=0;t<n.length;t++)e[t]=n[t];for(let r=0;r<t.length;r++)e[n.length+r]=t[r];return e}return t}return n||a}return r[e]||a}}})(u)}).cache.get,n=r.cache.set,l=c,c(d)},(...e)=>l(((...e)=>{let t,r,o=0,n="";for(;o<e.length;)(t=e[o++])&&(r=k(t))&&(n&&(n+=" "),n+=r);return n})(...e))})(()=>{let e=w("color"),t=w("font"),r=w("text"),o=w("font-weight"),n=w("tracking"),a=w("leading"),s=w("breakpoint"),i=w("container"),l=w("spacing"),c=w("radius"),d=w("shadow"),u=w("inset-shadow"),m=w("text-shadow"),p=w("drop-shadow"),b=w("blur"),g=w("perspective"),f=w("aspect"),h=w("ease"),k=w("animate"),v=()=>["auto","avoid","all","avoid-page","page","left","right","column"],x=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],y=()=>[...x(),Q,U],z=()=>["auto","hidden","clip","visible","scroll"],S=()=>["auto","contain","none"],j=()=>[Q,U,l],A=()=>[C,"full","auto",...j()],E=()=>[G,"none","subgrid",Q,U],L=()=>["auto",{span:["full",G,Q,U]},G,Q,U],P=()=>[G,"auto",Q,U],J=()=>["auto","min","max","fr",Q,U],_=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],I=()=>["start","end","center","stretch","center-safe","end-safe"],en=()=>["auto",...j()],ea=()=>[C,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...j()],es=()=>[C,"screen","full","dvw","lvw","svw","min","max","fit",...j()],ei=()=>[C,"screen","full","lh","dvh","lvh","svh","min","max","fit",...j()],el=()=>[e,Q,U],ec=()=>[...x(),Z,K,{position:[Q,U]}],ed=()=>["no-repeat",{repeat:["","x","y","space","round"]}],eu=()=>["auto","cover","contain",ee,B,{size:[Q,U]}],em=()=>[M,X,$],ep=()=>["","none","full",c,Q,U],eb=()=>["",T,X,$],eg=()=>["solid","dashed","dotted","double"],ef=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],eh=()=>[T,M,Z,K],ek=()=>["","none",b,Q,U],ev=()=>["none",T,Q,U],ew=()=>["none",T,Q,U],ex=()=>[T,Q,U],ey=()=>[C,"full",...j()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[N],breakpoint:[N],color:[D],container:[N],"drop-shadow":[N],ease:["in","out","in-out"],font:[W],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[N],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[N],shadow:[N],spacing:["px",T],text:[N],"text-shadow":[N],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",C,U,Q,f]}],container:["container"],"container-type":[{"@container":["","normal","size",Q,U]}],"container-named":[O],columns:[{columns:[T,U,Q,i]}],"break-after":[{"break-after":v()}],"break-before":[{"break-before":v()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:y()}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:S()}],"overscroll-x":[{"overscroll-x":S()}],"overscroll-y":[{"overscroll-y":S()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:A()}],"inset-x":[{"inset-x":A()}],"inset-y":[{"inset-y":A()}],start:[{"inset-s":A(),start:A()}],end:[{"inset-e":A(),end:A()}],"inset-bs":[{"inset-bs":A()}],"inset-be":[{"inset-be":A()}],top:[{top:A()}],right:[{right:A()}],bottom:[{bottom:A()}],left:[{left:A()}],visibility:["visible","invisible","collapse"],z:[{z:[G,"auto",Q,U]}],basis:[{basis:[C,"full","auto",i,...j()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[T,C,"auto","initial","none",U]}],grow:[{grow:["",T,Q,U]}],shrink:[{shrink:["",T,Q,U]}],order:[{order:[G,"first","last","none",Q,U]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:L()}],"col-start":[{"col-start":P()}],"col-end":[{"col-end":P()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:L()}],"row-start":[{"row-start":P()}],"row-end":[{"row-end":P()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":J()}],"auto-rows":[{"auto-rows":J()}],gap:[{gap:j()}],"gap-x":[{"gap-x":j()}],"gap-y":[{"gap-y":j()}],"justify-content":[{justify:[..._(),"normal"]}],"justify-items":[{"justify-items":[...I(),"normal"]}],"justify-self":[{"justify-self":["auto",...I()]}],"align-content":[{content:["normal",..._()]}],"align-items":[{items:[...I(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...I(),{baseline:["","last"]}]}],"place-content":[{"place-content":_()}],"place-items":[{"place-items":[...I(),"baseline"]}],"place-self":[{"place-self":["auto",...I()]}],p:[{p:j()}],px:[{px:j()}],py:[{py:j()}],ps:[{ps:j()}],pe:[{pe:j()}],pbs:[{pbs:j()}],pbe:[{pbe:j()}],pt:[{pt:j()}],pr:[{pr:j()}],pb:[{pb:j()}],pl:[{pl:j()}],m:[{m:en()}],mx:[{mx:en()}],my:[{my:en()}],ms:[{ms:en()}],me:[{me:en()}],mbs:[{mbs:en()}],mbe:[{mbe:en()}],mt:[{mt:en()}],mr:[{mr:en()}],mb:[{mb:en()}],ml:[{ml:en()}],"space-x":[{"space-x":j()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":j()}],"space-y-reverse":["space-y-reverse"],size:[{size:ea()}],"inline-size":[{inline:["auto",...es()]}],"min-inline-size":[{"min-inline":["auto",...es()]}],"max-inline-size":[{"max-inline":["none",...es()]}],"block-size":[{block:["auto",...ei()]}],"min-block-size":[{"min-block":["auto",...ei()]}],"max-block-size":[{"max-block":["none",...ei()]}],w:[{w:[i,"screen",...ea()]}],"min-w":[{"min-w":[i,"screen","none",...ea()]}],"max-w":[{"max-w":[i,"screen","none","prose",{screen:[s]},...ea()]}],h:[{h:["screen","lh",...ea()]}],"min-h":[{"min-h":["screen","lh","none",...ea()]}],"max-h":[{"max-h":["screen","lh",...ea()]}],"font-size":[{text:["base",r,X,$]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,eo,V]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",M,U]}],"font-family":[{font:[Y,F,t]}],"font-features":[{"font-features":[U]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,Q,U]}],"line-clamp":[{"line-clamp":[T,"none",Q,R]}],leading:[{leading:[a,...j()]}],"list-image":[{"list-image":["none",Q,U]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Q,U]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:el()}],"text-color":[{text:el()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...eg(),"wavy"]}],"text-decoration-thickness":[{decoration:[T,"from-font","auto",Q,$]}],"text-decoration-color":[{decoration:el()}],"underline-offset":[{"underline-offset":[T,"auto",Q,U]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"tab-size":[{tab:[G,Q,U]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Q,U]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Q,U]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ec()}],"bg-repeat":[{bg:ed()}],"bg-size":[{bg:eu()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},G,Q,U],radial:["",Q,U],conic:[G,Q,U]},et,q]}],"bg-color":[{bg:el()}],"gradient-from-pos":[{from:em()}],"gradient-via-pos":[{via:em()}],"gradient-to-pos":[{to:em()}],"gradient-from":[{from:el()}],"gradient-via":[{via:el()}],"gradient-to":[{to:el()}],rounded:[{rounded:ep()}],"rounded-s":[{"rounded-s":ep()}],"rounded-e":[{"rounded-e":ep()}],"rounded-t":[{"rounded-t":ep()}],"rounded-r":[{"rounded-r":ep()}],"rounded-b":[{"rounded-b":ep()}],"rounded-l":[{"rounded-l":ep()}],"rounded-ss":[{"rounded-ss":ep()}],"rounded-se":[{"rounded-se":ep()}],"rounded-ee":[{"rounded-ee":ep()}],"rounded-es":[{"rounded-es":ep()}],"rounded-tl":[{"rounded-tl":ep()}],"rounded-tr":[{"rounded-tr":ep()}],"rounded-br":[{"rounded-br":ep()}],"rounded-bl":[{"rounded-bl":ep()}],"border-w":[{border:eb()}],"border-w-x":[{"border-x":eb()}],"border-w-y":[{"border-y":eb()}],"border-w-s":[{"border-s":eb()}],"border-w-e":[{"border-e":eb()}],"border-w-bs":[{"border-bs":eb()}],"border-w-be":[{"border-be":eb()}],"border-w-t":[{"border-t":eb()}],"border-w-r":[{"border-r":eb()}],"border-w-b":[{"border-b":eb()}],"border-w-l":[{"border-l":eb()}],"divide-x":[{"divide-x":eb()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":eb()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...eg(),"hidden","none"]}],"divide-style":[{divide:[...eg(),"hidden","none"]}],"border-color":[{border:el()}],"border-color-x":[{"border-x":el()}],"border-color-y":[{"border-y":el()}],"border-color-s":[{"border-s":el()}],"border-color-e":[{"border-e":el()}],"border-color-bs":[{"border-bs":el()}],"border-color-be":[{"border-be":el()}],"border-color-t":[{"border-t":el()}],"border-color-r":[{"border-r":el()}],"border-color-b":[{"border-b":el()}],"border-color-l":[{"border-l":el()}],"divide-color":[{divide:el()}],"outline-style":[{outline:[...eg(),"none","hidden"]}],"outline-offset":[{"outline-offset":[T,Q,U]}],"outline-w":[{outline:["",T,X,$]}],"outline-color":[{outline:el()}],shadow:[{shadow:["","none",d,er,H]}],"shadow-color":[{shadow:el()}],"inset-shadow":[{"inset-shadow":["none",u,er,H]}],"inset-shadow-color":[{"inset-shadow":el()}],"ring-w":[{ring:eb()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:el()}],"ring-offset-w":[{"ring-offset":[T,$]}],"ring-offset-color":[{"ring-offset":el()}],"inset-ring-w":[{"inset-ring":eb()}],"inset-ring-color":[{"inset-ring":el()}],"text-shadow":[{"text-shadow":["none",m,er,H]}],"text-shadow-color":[{"text-shadow":el()}],opacity:[{opacity:[T,Q,U]}],"mix-blend":[{"mix-blend":[...ef(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ef()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[T]}],"mask-image-linear-from-pos":[{"mask-linear-from":eh()}],"mask-image-linear-to-pos":[{"mask-linear-to":eh()}],"mask-image-linear-from-color":[{"mask-linear-from":el()}],"mask-image-linear-to-color":[{"mask-linear-to":el()}],"mask-image-t-from-pos":[{"mask-t-from":eh()}],"mask-image-t-to-pos":[{"mask-t-to":eh()}],"mask-image-t-from-color":[{"mask-t-from":el()}],"mask-image-t-to-color":[{"mask-t-to":el()}],"mask-image-r-from-pos":[{"mask-r-from":eh()}],"mask-image-r-to-pos":[{"mask-r-to":eh()}],"mask-image-r-from-color":[{"mask-r-from":el()}],"mask-image-r-to-color":[{"mask-r-to":el()}],"mask-image-b-from-pos":[{"mask-b-from":eh()}],"mask-image-b-to-pos":[{"mask-b-to":eh()}],"mask-image-b-from-color":[{"mask-b-from":el()}],"mask-image-b-to-color":[{"mask-b-to":el()}],"mask-image-l-from-pos":[{"mask-l-from":eh()}],"mask-image-l-to-pos":[{"mask-l-to":eh()}],"mask-image-l-from-color":[{"mask-l-from":el()}],"mask-image-l-to-color":[{"mask-l-to":el()}],"mask-image-x-from-pos":[{"mask-x-from":eh()}],"mask-image-x-to-pos":[{"mask-x-to":eh()}],"mask-image-x-from-color":[{"mask-x-from":el()}],"mask-image-x-to-color":[{"mask-x-to":el()}],"mask-image-y-from-pos":[{"mask-y-from":eh()}],"mask-image-y-to-pos":[{"mask-y-to":eh()}],"mask-image-y-from-color":[{"mask-y-from":el()}],"mask-image-y-to-color":[{"mask-y-to":el()}],"mask-image-radial":[{"mask-radial":[Q,U]}],"mask-image-radial-from-pos":[{"mask-radial-from":eh()}],"mask-image-radial-to-pos":[{"mask-radial-to":eh()}],"mask-image-radial-from-color":[{"mask-radial-from":el()}],"mask-image-radial-to-color":[{"mask-radial-to":el()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":x()}],"mask-image-conic-pos":[{"mask-conic":[T]}],"mask-image-conic-from-pos":[{"mask-conic-from":eh()}],"mask-image-conic-to-pos":[{"mask-conic-to":eh()}],"mask-image-conic-from-color":[{"mask-conic-from":el()}],"mask-image-conic-to-color":[{"mask-conic-to":el()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ec()}],"mask-repeat":[{mask:ed()}],"mask-size":[{mask:eu()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Q,U]}],filter:[{filter:["","none",Q,U]}],blur:[{blur:ek()}],brightness:[{brightness:[T,Q,U]}],contrast:[{contrast:[T,Q,U]}],"drop-shadow":[{"drop-shadow":["","none",p,er,H]}],"drop-shadow-color":[{"drop-shadow":el()}],grayscale:[{grayscale:["",T,Q,U]}],"hue-rotate":[{"hue-rotate":[T,Q,U]}],invert:[{invert:["",T,Q,U]}],saturate:[{saturate:[T,Q,U]}],sepia:[{sepia:["",T,Q,U]}],"backdrop-filter":[{"backdrop-filter":["","none",Q,U]}],"backdrop-blur":[{"backdrop-blur":ek()}],"backdrop-brightness":[{"backdrop-brightness":[T,Q,U]}],"backdrop-contrast":[{"backdrop-contrast":[T,Q,U]}],"backdrop-grayscale":[{"backdrop-grayscale":["",T,Q,U]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[T,Q,U]}],"backdrop-invert":[{"backdrop-invert":["",T,Q,U]}],"backdrop-opacity":[{"backdrop-opacity":[T,Q,U]}],"backdrop-saturate":[{"backdrop-saturate":[T,Q,U]}],"backdrop-sepia":[{"backdrop-sepia":["",T,Q,U]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":j()}],"border-spacing-x":[{"border-spacing-x":j()}],"border-spacing-y":[{"border-spacing-y":j()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Q,U]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[T,"initial",Q,U]}],ease:[{ease:["linear","initial",h,Q,U]}],delay:[{delay:[T,Q,U]}],animate:[{animate:["none",k,Q,U]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[g,Q,U]}],"perspective-origin":[{"perspective-origin":y()}],rotate:[{rotate:ev()}],"rotate-x":[{"rotate-x":ev()}],"rotate-y":[{"rotate-y":ev()}],"rotate-z":[{"rotate-z":ev()}],scale:[{scale:ew()}],"scale-x":[{"scale-x":ew()}],"scale-y":[{"scale-y":ew()}],"scale-z":[{"scale-z":ew()}],"scale-3d":["scale-3d"],skew:[{skew:ex()}],"skew-x":[{"skew-x":ex()}],"skew-y":[{"skew-y":ex()}],transform:[{transform:[Q,U,"","none","gpu","cpu"]}],"transform-origin":[{origin:y()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ey()}],"translate-x":[{"translate-x":ey()}],"translate-y":[{"translate-y":ey()}],"translate-z":[{"translate-z":ey()}],"translate-none":["translate-none"],zoom:[{zoom:[G,Q,U]}],accent:[{accent:el()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:el()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Q,U]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":el()}],"scrollbar-track-color":[{"scrollbar-track":el()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mbs":[{"scroll-mbs":j()}],"scroll-mbe":[{"scroll-mbe":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pbs":[{"scroll-pbs":j()}],"scroll-pbe":[{"scroll-pbe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Q,U]}],fill:[{fill:["none",...el()]}],"stroke-w":[{stroke:[T,X,$,R]}],stroke:[{stroke:["none",...el()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function eg(...e){return eb((0,o.$)(e))}},8521:(e,t,r)=>{"use strict";r.d(t,{J:()=>l,D:()=>i});var o=r(51204);let n=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function a(e){return e.startsWith("while")||e.startsWith("drag")&&"draggable"!==e||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||n.has(e)}let s=e=>!a(e);function i(e){"function"==typeof e&&(s=t=>t.startsWith("on")?!a(t):e(t))}try{i(require("@emotion/is-prop-valid").default)}catch{}function l(e,t,r){let n={};for(let i in e)("values"!==i||"object"!=typeof e.values)&&!(0,o.S)(e[i])&&(s(i)||!0===r&&a(i)||!t&&!a(i)||e.draggable&&i.startsWith("onDrag"))&&(n[i]=e[i]);return n}},10293:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>g});var o=r(26514),n=r(24322),a=r.n(n),s=r(75834),i=r(29912),l=r(73533),c=r(8521),d=r(53214);function u({children:e,isValidProp:t,...r}){t&&(0,c.D)(t);let n=(0,s.useContext)(l.Q);(r={...n,...r}).transition=(0,i.K)(r.transition,n.transition),r.isStatic=(0,d.M)(()=>r.isStatic);let a=(0,s.useMemo)(()=>r,[JSON.stringify(r.transition),r.transformPagePoint,r.reducedMotion,r.skipAnimations]);return(0,o.jsx)(l.Q.Provider,{value:a,children:e})}var m=r(67492);let p="vibeflow:connection";function b(){let[e,t]=(0,s.useState)(!0);return((0,s.useEffect)(()=>{let e=e=>t(e.detail.connected);return window.addEventListener(p,e),()=>window.removeEventListener(p,e)},[]),e)?null:(0,o.jsx)("div",{role:"status",className:"fixed inset-x-0 top-0 z-50 bg-destructive px-4 py-1.5 text-center text-sm text-destructive-foreground",children:"與 VibeFlow core 的連線中斷,正在重新連線…(agent 仍在背景執行)"})}r(59630),r(19733),r(55e3),function(){if(window.vibeflow)return;let e=`${"https:"===window.location.protocol?"wss":"ws"}://${window.location.host}/ws`,t=null,r=function(e){let t=null,r=1,o=!1,n=!1,a=250,s=[],i=new Map,l=new Map;function c(e,t){for(let r of Array.from(l.get(e)??[]))r(t)}function d(e){let r=JSON.stringify(e);t&&1===t.readyState?t.send(r):s.push(r)}return!function r(){if(n)return;let l=e.connect();t=l,l.onopen=()=>{for(a=250,e.onStatus?.(!0);t&&1===t.readyState&&s.length>0;)t.send(s.shift());o&&e.onReconnect?.(),o=!0},l.onmessage=e=>{let t;try{t=JSON.parse(String(e.data))}catch{return}if("string"==typeof t.event)return void c(t.event,t.payload);let r="number"==typeof t.id?i.get(t.id):void 0;r&&(i.delete(t.id),t.error?r.reject(Object.assign(Error(t.error.message),{code:t.error.code})):r.resolve(null===t.result?void 0:t.result))},l.onerror=()=>{},l.onclose=()=>{if(t===l){for(let[r,o]of(t=null,e.onStatus?.(!1),Array.from(i)))i.delete(r),o.reject(Error("與 VibeFlow core 的連線中斷"));n||(setTimeout(r,a),a=Math.min(2*a,5e3))}}}(),{kind:"ws",invoke(e,...t){let o=r++;return new Promise((r,n)=>{i.set(o,{resolve:r,reject:n}),d({id:o,method:e,params:t})})},send(e,...t){d({method:e,params:t})},on(e,t){let r=l.get(e);return r||l.set(e,r=new Set),r.add(t),()=>{r.delete(t)}},close(){n=!0,t?.close()},dispatch:c}}({connect:()=>new WebSocket(e),onReconnect:()=>{o.getVersion().then(e=>{t&&e!==t&&window.location.reload()}).catch(()=>{}),o.getState().then(e=>r.dispatch("state:changed",e)),o.getUpdateStatus().then(e=>r.dispatch("update:available",e)).catch(()=>{})},onStatus:e=>{window.dispatchEvent(new CustomEvent(p,{detail:{connected:e}}))}}),o={transport:r.kind,getState:()=>r.invoke("vibeflow:getState"),getVersion:()=>r.invoke("app:getVersion"),getUpdateStatus:()=>r.invoke("host:updateStatus"),checkForUpdate:()=>r.invoke("host:checkUpdate"),openUpdateTerminal:()=>r.invoke("host:openUpdateTerminal"),onUpdateAvailable:e=>r.on("update:available",t=>e(t)),onStateChanged:e=>r.on("state:changed",t=>e(t)),setBoard:e=>r.invoke("vibeflow:setBoard",e),setSettings:e=>r.invoke("vibeflow:setSettings",e),getJevKeyStatus:()=>r.invoke("settings:jevKeyStatus"),saveJevApiKey:e=>r.invoke("settings:saveJevApiKey",{apiKey:e}),removeJevApiKey:()=>r.invoke("settings:removeJevApiKey"),getGithubAuthStatus:()=>r.invoke("settings:githubAuthStatus"),startGithubAuthLogin:()=>r.invoke("settings:startGithubAuthLogin"),cancelGithubAuthLogin:()=>r.invoke("settings:cancelGithubAuthLogin"),logoutGithubAuth:()=>r.invoke("settings:logoutGithubAuth"),getGithubInbox:e=>r.invoke("github:inbox",e??{}),getJiraAuthStatus:()=>r.invoke("jira:authStatus"),startJiraAuthLogin:()=>r.invoke("settings:startJiraAuthLogin"),cancelJiraAuthLogin:()=>r.invoke("settings:cancelJiraAuthLogin"),inputJiraAuthLogin:e=>r.invoke("settings:inputJiraAuthLogin",e),logoutJiraAuth:()=>r.invoke("settings:logoutJiraAuth"),onJiraAuthEvent:e=>r.on("jira-auth:event",t=>e(t)),getJiraInbox:e=>r.invoke("jira:inbox",e??{}),getGithubTaskLinks:e=>r.invoke("github:taskLinks",e??{}),onGithubAuthEvent:e=>r.on("github-auth:event",t=>e(t)),getGitInfo:e=>r.invoke("git:getInfo",e),listRecentProjects:()=>r.invoke("projects:listRecent"),initRepository:e=>r.invoke("git:initRepository",e),detectAgents:()=>r.invoke("env:detectAgents"),listAgentModels:(e,t=!1)=>r.invoke("agents:listModels",{agentId:e,refresh:t}),createTask:e=>r.invoke("vibeflow:createTask",e),updateTask:e=>r.invoke("vibeflow:updateTask",e),resetTaskRun:e=>r.invoke("vibeflow:resetTaskRun",e),removeTask:e=>r.invoke("vibeflow:removeTask",e),getDiff:e=>r.invoke("git:getDiff",e),getDiffEntries:(e,t)=>r.invoke("git:getDiffEntries",e,t),getDiffFile:(e,t)=>r.invoke("git:getDiffFile",e,t),listArtifacts:e=>r.invoke("task:listArtifacts",e),readArtifact:(e,t)=>r.invoke("task:readArtifact",e,t),openArtifactsDir:e=>r.invoke("task:openArtifactsDir",e),getSpecs:e=>r.invoke("task:getSpecs",e),getBoardCliLaunchInfo:()=>r.invoke("board:getCliLaunchInfo"),listLibrary:()=>r.invoke("library:list"),importLibraryEntry:e=>r.invoke("library:import",e),createLibraryEntry:e=>r.invoke("library:create",e),readLibraryEntry:e=>r.invoke("library:read",e),updateLibraryEntry:e=>r.invoke("library:update",e),setLibraryEntryDescription:e=>r.invoke("library:setDescription",e),setLibraryEntryEnabled:e=>r.invoke("library:setEnabled",e),deleteLibraryEntry:e=>r.invoke("library:delete",e),restoreBuiltinSkill:e=>r.invoke("library:restoreBuiltin",e),listRemovedBuiltinSkills:()=>r.invoke("library:removedBuiltins"),approve:(e,t)=>r.invoke("git:approve",{taskId:e,message:t}),generateCommitMessage:e=>r.invoke("git:generateCommitMessage",e),getPrStatus:e=>r.invoke("git:getPrStatus",e),getGithubCompareUrl:e=>r.invoke("git:getGithubCompareUrl",e),openExternal:e=>r.invoke("shell:openExternal",e),pickFolder:e=>r.invoke("dialog:pickFolder",e),cleanupTask:e=>r.invoke("vibeflow:cleanupTask",e),onSubAgentsUpdate:e=>r.on("subagents:update",t=>e(t)),deleteTask:e=>r.invoke("vibeflow:deleteTask",e),getProgress:e=>r.invoke("progress:get",e),onProgressUpdate:e=>r.on("progress:update",t=>e(t)),onProgressNotify:e=>r.on("progress:notify",t=>e(t)),attachments:{write:e=>r.invoke("attachments:write",e)},chat:{load:e=>r.invoke("chat:load",e),send:e=>r.invoke("chat:send",e),cancel:e=>r.invoke("chat:cancel",e),compact:e=>r.invoke("chat:compact",e),onChunk:e=>r.on("chat:chunk",t=>e(t)),onPhase:e=>r.on("chat:phase",t=>e(t))},term:{start:e=>r.invoke("pty:start",e),startStandalone:e=>r.invoke("terminal:start",e),renameStandalone:(e,t)=>r.invoke("terminal:rename",{sessionKey:e,title:t}),peek:e=>r.invoke("pty:peek",e),list:()=>r.invoke("sessions:list"),input:(e,t)=>r.send("pty:input",{sessionKey:e,data:t}),resize:(e,t,o)=>r.send("pty:resize",{sessionKey:e,cols:t,rows:o}),kill:e=>r.send("pty:kill",e),isScrolledBack:e=>r.invoke("pty:scrolled",e),scrollToBottom:e=>r.invoke("pty:scroll-bottom",e),sessionExists:e=>r.invoke("claude:sessionExists",e),onData:e=>r.on("pty:data",t=>e(t)),onExit:e=>r.on("pty:exit",t=>e(t))}};o.getVersion().then(e=>{t=e}).catch(()=>{}),window.vibeflow=o}();let g=function({Component:e,pageProps:t}){return(0,s.useEffect)(()=>{let e=requestIdleCallback(m.x);return()=>cancelIdleCallback(e)},[]),(0,o.jsxs)(u,{reducedMotion:"user",children:[(0,o.jsxs)(a(),{children:[(0,o.jsx)("link",{rel:"icon",href:"/favicon.ico",sizes:"any"}),(0,o.jsx)("link",{rel:"icon",href:"/logo.svg",type:"image/svg+xml"}),(0,o.jsx)("link",{rel:"apple-touch-icon",href:"/apple-touch-icon.png"})]}),(0,o.jsx)(b,{}),(0,o.jsx)(e,{...t})]})}},19733:()=>{},20446:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return r(10293)}])},24322:(e,t,r)=>{e.exports=r(2324)},29912:(e,t,r)=>{"use strict";function o(e,t){if(e?.inherit&&t){let{inherit:r,...o}=e;return{...t,...o}}return e}r.d(t,{K:()=>o})},51204:(e,t,r)=>{"use strict";r.d(t,{S:()=>o});let o=e=>!!(e&&e.getVelocity)},53214:(e,t,r)=>{"use strict";r.d(t,{M:()=>n});var o=r(75834);function n(e){let t=(0,o.useRef)(null);return null===t.current&&(t.current=e()),t.current}},55e3:()=>{},59630:()=>{},67492:(e,t,r)=>{"use strict";r.d(t,{A:()=>d,x:()=>l});var o=r(26514),n=r(75834),a=r(4416);let s=null;function i(e,t,r){return e.getPropertyValue(t).trim()||r}function l(){c().then(e=>e.render("mermaid-warmup","flowchart TD\n A--\x3eB")).catch(()=>{})}function c(){return s??=Promise.all([r.e(4120),r.e(1687),r.e(3927)]).then(r.bind(r,28996)).then(({default:e})=>{let t=getComputedStyle(document.documentElement);return e.initialize({startOnLoad:!1,securityLevel:"strict",suppressErrorRendering:!0,htmlLabels:!1,theme:"dark",darkMode:!0,fontFamily:i(t,"--font-sans","Inter, system-ui, sans-serif"),themeVariables:{background:i(t,"--card","#212121"),primaryColor:i(t,"--secondary","#262626"),primaryTextColor:i(t,"--foreground","#ededed"),lineColor:i(t,"--muted-foreground","#a1a1a1"),edgeLabelBackground:i(t,"--card","#212121")},flowchart:{useMaxWidth:!0}}),e}).catch(e=>{throw s=null,e})}function d({code:e,compact:t}){let r=`mermaid-${(0,n.useId)().replace(/[^a-zA-Z0-9]/g,"")}`,[s,i]=(0,n.useState)(null),[l,u]=(0,n.useState)(null);(0,n.useEffect)(()=>{let t=!1;return i(null),u(null),c().then(t=>t.render(r,e)).then(e=>{t||i(e.svg)}).catch(e=>{t||u(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e,r]);let m=(0,o.jsx)("pre",{className:(0,a.cn)("max-w-full overflow-x-auto rounded-md bg-background/70 p-3",t?"text-xs leading-snug":"text-sm"),children:(0,o.jsx)("code",{children:e})});return l?(0,o.jsxs)("div",{className:"not-prose my-3 space-y-2",children:[(0,o.jsxs)("p",{className:"text-xs text-destructive",children:["圖表語法錯誤:",l]}),m]}):s?(0,o.jsx)("div",{className:"not-prose my-3 max-w-full overflow-x-auto rounded-md bg-card p-3 [&_svg]:max-w-full",dangerouslySetInnerHTML:{__html:s}}):(0,o.jsx)("div",{className:"not-prose my-3 rounded-md bg-background/70 p-3 text-xs text-muted-foreground",children:"繪製圖表中…"})}},73367:(e,t,r)=>{"use strict";function o(){for(var e,t,r=0,o="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=function e(t){var r,o,n="";if("string"==typeof t||"number"==typeof t)n+=t;else if("object"==typeof t)if(Array.isArray(t)){var a=t.length;for(r=0;r<a;r++)t[r]&&(o=e(t[r]))&&(n&&(n+=" "),n+=o)}else for(o in t)t[o]&&(n&&(n+=" "),n+=o);return n}(e))&&(o&&(o+=" "),o+=t);return o}r.d(t,{$:()=>o})},73533:(e,t,r)=>{"use strict";r.d(t,{Q:()=>o});let o=(0,r(75834).createContext)({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"})}},e=>{var t=t=>e(e.s=t);e.O(0,[6593,8792],()=>(t(20446),t(77269))),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{4416:(e,t,r)=>{"use strict";r.d(t,{cn:()=>eg});var o=r(73367);let n=(e=new Map,t=null,r)=>({nextPart:e,validators:t,classGroupId:r}),a=[],s=(e,t,r)=>{if(0==e.length-t)return r.classGroupId;let o=e[t],n=r.nextPart.get(o);if(n){let r=s(e,t+1,n);if(r)return r}let a=r.validators;if(null===a)return;let i=0===t?e.join("-"):e.slice(t).join("-"),l=a.length;for(let e=0;e<l;e++){let t=a[e];if(t.validator(i))return t.classGroupId}},i=(e,t)=>{let r=n();for(let o in e)l(e[o],r,o,t);return r},l=(e,t,r,o)=>{let n=e.length;for(let a=0;a<n;a++)c(e[a],t,r,o)},c=(e,t,r,o)=>{"string"==typeof e?d(e,t,r):"function"==typeof e?u(e,t,r,o):m(e,t,r,o)},d=(e,t,r)=>{(""===e?t:p(t,e)).classGroupId=r},u=(e,t,r,o)=>{b(e)?l(e(o),t,r,o):(null===t.validators&&(t.validators=[]),t.validators.push({classGroupId:r,validator:e}))},m=(e,t,r,o)=>{let n=Object.entries(e),a=n.length;for(let e=0;e<a;e++){let[a,s]=n[e];l(s,p(t,a),r,o)}},p=(e,t)=>{let r=e,o=t.split("-"),a=o.length;for(let e=0;e<a;e++){let t=o[e],a=r.nextPart.get(t);a||(a=n(),r.nextPart.set(t,a)),r=a}return r},b=e=>"isThemeGetter"in e&&!0===e.isThemeGetter,g=[],f=(e,t,r,o,n)=>({modifiers:e,hasImportantModifier:t,baseClassName:r,maybePostfixModifierPosition:o,isExternal:n}),h=/\s+/,k=e=>{let t;if("string"==typeof e)return e;let r="";for(let o=0;o<e.length;o++)e[o]&&(t=k(e[o]))&&(r&&(r+=" "),r+=t);return r},v=[],w=e=>{let t=t=>t[e]||v;return t.isThemeGetter=!0,t},x=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,y=/^\((?:(\w[\w-]*):)?(.+)\)$/i,z=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,S=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,j=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,A=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,E=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,L=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,C=e=>z.test(e),T=e=>!!e&&!Number.isNaN(Number(e)),G=e=>!!e&&Number.isInteger(Number(e)),M=e=>e.endsWith("%")&&T(e.slice(0,-1)),N=e=>S.test(e),D=()=>!0,P=e=>j.test(e)&&!A.test(e),J=()=>!1,_=e=>E.test(e),I=e=>L.test(e),W=e=>!U(e)&&!Q(e),O=e=>e.startsWith("@container")&&("/"===e[10]&&void 0!==e[11]||"s"===e[11]&&void 0!==e[16]&&e.startsWith("-size/",10)||"n"===e[11]&&void 0!==e[18]&&e.startsWith("-normal/",10)),B=e=>en(e,el,J),U=e=>x.test(e),$=e=>en(e,ec,P),R=e=>en(e,ed,T),V=e=>en(e,em,D),F=e=>en(e,eu,J),K=e=>en(e,es,J),q=e=>en(e,ei,I),H=e=>en(e,ep,_),Q=e=>y.test(e),X=e=>ea(e,ec),Y=e=>ea(e,eu),Z=e=>ea(e,es),ee=e=>ea(e,el),et=e=>ea(e,ei),er=e=>ea(e,ep,!0),eo=e=>ea(e,em,!0),en=(e,t,r)=>{let o=x.exec(e);return!!o&&(o[1]?t(o[1]):r(o[2]))},ea=(e,t,r=!1)=>{let o=y.exec(e);return!!o&&(o[1]?t(o[1]):r)},es=e=>"position"===e||"percentage"===e,ei=e=>"image"===e||"url"===e,el=e=>"length"===e||"size"===e||"bg-size"===e,ec=e=>"length"===e,ed=e=>"number"===e,eu=e=>"family-name"===e,em=e=>"number"===e||"weight"===e,ep=e=>"shadow"===e,eb=((e,...t)=>{let r,o,n,l,c=e=>{let t=o(e);if(t)return t;let a=((e,t)=>{let{parseClassName:r,getClassGroupId:o,getConflictingClassGroupIds:n,sortModifiers:a,postfixLookupClassGroupIds:s}=t,i=[],l=e.trim().split(h),c="";for(let e=l.length-1;e>=0;e-=1){let t,d=l[e],{isExternal:u,modifiers:m,hasImportantModifier:p,baseClassName:b,maybePostfixModifierPosition:g}=r(d);if(u){c=d+(c.length>0?" "+c:c);continue}let f=!!g;if(f){let e=(t=o(b.substring(0,g)))&&s[t]?o(b):void 0;e&&e!==t&&(t=e,f=!1)}else t=o(b);if(!t){if(!f||!(t=o(b))){c=d+(c.length>0?" "+c:c);continue}f=!1}let h=0===m.length?"":1===m.length?m[0]:a(m).join(":"),k=p?h+"!":h,v=k+t;if(i.indexOf(v)>-1)continue;i.push(v);let w=n(t,f);for(let e=0;e<w.length;++e){let t=w[e];i.push(k+t)}c=d+(c.length>0?" "+c:c)}return c})(e,r);return n(e,a),a};return l=d=>{var u;let m;return o=(r={cache:(e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let t=0,r=Object.create(null),o=Object.create(null),n=(n,a)=>{r[n]=a,++t>e&&(t=0,o=r,r=Object.create(null))};return{get(e){let t=r[e];return void 0!==t?t:void 0!==(t=o[e])?(n(e,t),t):void 0},set(e,t){e in r?r[e]=t:n(e,t)}}})((u=t.reduce((e,t)=>t(e),e())).cacheSize),parseClassName:(e=>{let{prefix:t,experimentalParseClassName:r}=e,o=e=>{let t,r=[],o=0,n=0,a=0,s=e.length;for(let i=0;i<s;i++){let s=e[i];if(0===o&&0===n){if(":"===s){r.push(e.slice(a,i)),a=i+1;continue}if("/"===s){t=i;continue}}"["===s?o++:"]"===s?o--:"("===s?n++:")"===s&&n--}let i=0===r.length?e:e.slice(a),l=i,c=!1;return i.endsWith("!")?(l=i.slice(0,-1),c=!0):i.startsWith("!")&&(l=i.slice(1),c=!0),f(r,c,l,t&&t>a?t-a:void 0)};if(t){let e=t+":",r=o;o=t=>t.startsWith(e)?r(t.slice(e.length)):f(g,!1,t,void 0,!0)}if(r){let e=o;o=t=>r({className:t,parseClassName:e})}return o})(u),sortModifiers:(m=new Map,u.orderSensitiveModifiers.forEach((e,t)=>{m.set(e,1e6+t)}),e=>{let t=[],r=[];for(let o=0;o<e.length;o++){let n=e[o],a="["===n[0],s=m.has(n);a||s?(r.length>0&&(r.sort(),t.push(...r),r=[]),t.push(n)):r.push(n)}return r.length>0&&(r.sort(),t.push(...r)),t}),postfixLookupClassGroupIds:(e=>{let t=Object.create(null),r=e.postfixLookupClassGroups;if(r)for(let e=0;e<r.length;e++)t[r[e]]=!0;return t})(u),...(e=>{let t=(e=>{let{theme:t,classGroups:r}=e;return i(r,t)})(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:e=>{if(e.startsWith("[")&&e.endsWith("]")){var r;let t,o,n;return -1===(r=e).slice(1,-1).indexOf(":")?void 0:(o=(t=r.slice(1,-1)).indexOf(":"),(n=t.slice(0,o))?"arbitrary.."+n:void 0)}let o=e.split("-"),n=+(""===o[0]&&o.length>1);return s(o,n,t)},getConflictingClassGroupIds:(e,t)=>{if(t){let t=o[e],n=r[e];if(t){if(n){let e=Array(n.length+t.length);for(let t=0;t<n.length;t++)e[t]=n[t];for(let r=0;r<t.length;r++)e[n.length+r]=t[r];return e}return t}return n||a}return r[e]||a}}})(u)}).cache.get,n=r.cache.set,l=c,c(d)},(...e)=>l(((...e)=>{let t,r,o=0,n="";for(;o<e.length;)(t=e[o++])&&(r=k(t))&&(n&&(n+=" "),n+=r);return n})(...e))})(()=>{let e=w("color"),t=w("font"),r=w("text"),o=w("font-weight"),n=w("tracking"),a=w("leading"),s=w("breakpoint"),i=w("container"),l=w("spacing"),c=w("radius"),d=w("shadow"),u=w("inset-shadow"),m=w("text-shadow"),p=w("drop-shadow"),b=w("blur"),g=w("perspective"),f=w("aspect"),h=w("ease"),k=w("animate"),v=()=>["auto","avoid","all","avoid-page","page","left","right","column"],x=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],y=()=>[...x(),Q,U],z=()=>["auto","hidden","clip","visible","scroll"],S=()=>["auto","contain","none"],j=()=>[Q,U,l],A=()=>[C,"full","auto",...j()],E=()=>[G,"none","subgrid",Q,U],L=()=>["auto",{span:["full",G,Q,U]},G,Q,U],P=()=>[G,"auto",Q,U],J=()=>["auto","min","max","fr",Q,U],_=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],I=()=>["start","end","center","stretch","center-safe","end-safe"],en=()=>["auto",...j()],ea=()=>[C,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...j()],es=()=>[C,"screen","full","dvw","lvw","svw","min","max","fit",...j()],ei=()=>[C,"screen","full","lh","dvh","lvh","svh","min","max","fit",...j()],el=()=>[e,Q,U],ec=()=>[...x(),Z,K,{position:[Q,U]}],ed=()=>["no-repeat",{repeat:["","x","y","space","round"]}],eu=()=>["auto","cover","contain",ee,B,{size:[Q,U]}],em=()=>[M,X,$],ep=()=>["","none","full",c,Q,U],eb=()=>["",T,X,$],eg=()=>["solid","dashed","dotted","double"],ef=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],eh=()=>[T,M,Z,K],ek=()=>["","none",b,Q,U],ev=()=>["none",T,Q,U],ew=()=>["none",T,Q,U],ex=()=>[T,Q,U],ey=()=>[C,"full",...j()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[N],breakpoint:[N],color:[D],container:[N],"drop-shadow":[N],ease:["in","out","in-out"],font:[W],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[N],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[N],shadow:[N],spacing:["px",T],text:[N],"text-shadow":[N],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",C,U,Q,f]}],container:["container"],"container-type":[{"@container":["","normal","size",Q,U]}],"container-named":[O],columns:[{columns:[T,U,Q,i]}],"break-after":[{"break-after":v()}],"break-before":[{"break-before":v()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:y()}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:S()}],"overscroll-x":[{"overscroll-x":S()}],"overscroll-y":[{"overscroll-y":S()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:A()}],"inset-x":[{"inset-x":A()}],"inset-y":[{"inset-y":A()}],start:[{"inset-s":A(),start:A()}],end:[{"inset-e":A(),end:A()}],"inset-bs":[{"inset-bs":A()}],"inset-be":[{"inset-be":A()}],top:[{top:A()}],right:[{right:A()}],bottom:[{bottom:A()}],left:[{left:A()}],visibility:["visible","invisible","collapse"],z:[{z:[G,"auto",Q,U]}],basis:[{basis:[C,"full","auto",i,...j()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[T,C,"auto","initial","none",U]}],grow:[{grow:["",T,Q,U]}],shrink:[{shrink:["",T,Q,U]}],order:[{order:[G,"first","last","none",Q,U]}],"grid-cols":[{"grid-cols":E()}],"col-start-end":[{col:L()}],"col-start":[{"col-start":P()}],"col-end":[{"col-end":P()}],"grid-rows":[{"grid-rows":E()}],"row-start-end":[{row:L()}],"row-start":[{"row-start":P()}],"row-end":[{"row-end":P()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":J()}],"auto-rows":[{"auto-rows":J()}],gap:[{gap:j()}],"gap-x":[{"gap-x":j()}],"gap-y":[{"gap-y":j()}],"justify-content":[{justify:[..._(),"normal"]}],"justify-items":[{"justify-items":[...I(),"normal"]}],"justify-self":[{"justify-self":["auto",...I()]}],"align-content":[{content:["normal",..._()]}],"align-items":[{items:[...I(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...I(),{baseline:["","last"]}]}],"place-content":[{"place-content":_()}],"place-items":[{"place-items":[...I(),"baseline"]}],"place-self":[{"place-self":["auto",...I()]}],p:[{p:j()}],px:[{px:j()}],py:[{py:j()}],ps:[{ps:j()}],pe:[{pe:j()}],pbs:[{pbs:j()}],pbe:[{pbe:j()}],pt:[{pt:j()}],pr:[{pr:j()}],pb:[{pb:j()}],pl:[{pl:j()}],m:[{m:en()}],mx:[{mx:en()}],my:[{my:en()}],ms:[{ms:en()}],me:[{me:en()}],mbs:[{mbs:en()}],mbe:[{mbe:en()}],mt:[{mt:en()}],mr:[{mr:en()}],mb:[{mb:en()}],ml:[{ml:en()}],"space-x":[{"space-x":j()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":j()}],"space-y-reverse":["space-y-reverse"],size:[{size:ea()}],"inline-size":[{inline:["auto",...es()]}],"min-inline-size":[{"min-inline":["auto",...es()]}],"max-inline-size":[{"max-inline":["none",...es()]}],"block-size":[{block:["auto",...ei()]}],"min-block-size":[{"min-block":["auto",...ei()]}],"max-block-size":[{"max-block":["none",...ei()]}],w:[{w:[i,"screen",...ea()]}],"min-w":[{"min-w":[i,"screen","none",...ea()]}],"max-w":[{"max-w":[i,"screen","none","prose",{screen:[s]},...ea()]}],h:[{h:["screen","lh",...ea()]}],"min-h":[{"min-h":["screen","lh","none",...ea()]}],"max-h":[{"max-h":["screen","lh",...ea()]}],"font-size":[{text:["base",r,X,$]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,eo,V]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",M,U]}],"font-family":[{font:[Y,F,t]}],"font-features":[{"font-features":[U]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,Q,U]}],"line-clamp":[{"line-clamp":[T,"none",Q,R]}],leading:[{leading:[a,...j()]}],"list-image":[{"list-image":["none",Q,U]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Q,U]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:el()}],"text-color":[{text:el()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...eg(),"wavy"]}],"text-decoration-thickness":[{decoration:[T,"from-font","auto",Q,$]}],"text-decoration-color":[{decoration:el()}],"underline-offset":[{"underline-offset":[T,"auto",Q,U]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"tab-size":[{tab:[G,Q,U]}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Q,U]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Q,U]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ec()}],"bg-repeat":[{bg:ed()}],"bg-size":[{bg:eu()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},G,Q,U],radial:["",Q,U],conic:[G,Q,U]},et,q]}],"bg-color":[{bg:el()}],"gradient-from-pos":[{from:em()}],"gradient-via-pos":[{via:em()}],"gradient-to-pos":[{to:em()}],"gradient-from":[{from:el()}],"gradient-via":[{via:el()}],"gradient-to":[{to:el()}],rounded:[{rounded:ep()}],"rounded-s":[{"rounded-s":ep()}],"rounded-e":[{"rounded-e":ep()}],"rounded-t":[{"rounded-t":ep()}],"rounded-r":[{"rounded-r":ep()}],"rounded-b":[{"rounded-b":ep()}],"rounded-l":[{"rounded-l":ep()}],"rounded-ss":[{"rounded-ss":ep()}],"rounded-se":[{"rounded-se":ep()}],"rounded-ee":[{"rounded-ee":ep()}],"rounded-es":[{"rounded-es":ep()}],"rounded-tl":[{"rounded-tl":ep()}],"rounded-tr":[{"rounded-tr":ep()}],"rounded-br":[{"rounded-br":ep()}],"rounded-bl":[{"rounded-bl":ep()}],"border-w":[{border:eb()}],"border-w-x":[{"border-x":eb()}],"border-w-y":[{"border-y":eb()}],"border-w-s":[{"border-s":eb()}],"border-w-e":[{"border-e":eb()}],"border-w-bs":[{"border-bs":eb()}],"border-w-be":[{"border-be":eb()}],"border-w-t":[{"border-t":eb()}],"border-w-r":[{"border-r":eb()}],"border-w-b":[{"border-b":eb()}],"border-w-l":[{"border-l":eb()}],"divide-x":[{"divide-x":eb()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":eb()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...eg(),"hidden","none"]}],"divide-style":[{divide:[...eg(),"hidden","none"]}],"border-color":[{border:el()}],"border-color-x":[{"border-x":el()}],"border-color-y":[{"border-y":el()}],"border-color-s":[{"border-s":el()}],"border-color-e":[{"border-e":el()}],"border-color-bs":[{"border-bs":el()}],"border-color-be":[{"border-be":el()}],"border-color-t":[{"border-t":el()}],"border-color-r":[{"border-r":el()}],"border-color-b":[{"border-b":el()}],"border-color-l":[{"border-l":el()}],"divide-color":[{divide:el()}],"outline-style":[{outline:[...eg(),"none","hidden"]}],"outline-offset":[{"outline-offset":[T,Q,U]}],"outline-w":[{outline:["",T,X,$]}],"outline-color":[{outline:el()}],shadow:[{shadow:["","none",d,er,H]}],"shadow-color":[{shadow:el()}],"inset-shadow":[{"inset-shadow":["none",u,er,H]}],"inset-shadow-color":[{"inset-shadow":el()}],"ring-w":[{ring:eb()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:el()}],"ring-offset-w":[{"ring-offset":[T,$]}],"ring-offset-color":[{"ring-offset":el()}],"inset-ring-w":[{"inset-ring":eb()}],"inset-ring-color":[{"inset-ring":el()}],"text-shadow":[{"text-shadow":["none",m,er,H]}],"text-shadow-color":[{"text-shadow":el()}],opacity:[{opacity:[T,Q,U]}],"mix-blend":[{"mix-blend":[...ef(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ef()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[T]}],"mask-image-linear-from-pos":[{"mask-linear-from":eh()}],"mask-image-linear-to-pos":[{"mask-linear-to":eh()}],"mask-image-linear-from-color":[{"mask-linear-from":el()}],"mask-image-linear-to-color":[{"mask-linear-to":el()}],"mask-image-t-from-pos":[{"mask-t-from":eh()}],"mask-image-t-to-pos":[{"mask-t-to":eh()}],"mask-image-t-from-color":[{"mask-t-from":el()}],"mask-image-t-to-color":[{"mask-t-to":el()}],"mask-image-r-from-pos":[{"mask-r-from":eh()}],"mask-image-r-to-pos":[{"mask-r-to":eh()}],"mask-image-r-from-color":[{"mask-r-from":el()}],"mask-image-r-to-color":[{"mask-r-to":el()}],"mask-image-b-from-pos":[{"mask-b-from":eh()}],"mask-image-b-to-pos":[{"mask-b-to":eh()}],"mask-image-b-from-color":[{"mask-b-from":el()}],"mask-image-b-to-color":[{"mask-b-to":el()}],"mask-image-l-from-pos":[{"mask-l-from":eh()}],"mask-image-l-to-pos":[{"mask-l-to":eh()}],"mask-image-l-from-color":[{"mask-l-from":el()}],"mask-image-l-to-color":[{"mask-l-to":el()}],"mask-image-x-from-pos":[{"mask-x-from":eh()}],"mask-image-x-to-pos":[{"mask-x-to":eh()}],"mask-image-x-from-color":[{"mask-x-from":el()}],"mask-image-x-to-color":[{"mask-x-to":el()}],"mask-image-y-from-pos":[{"mask-y-from":eh()}],"mask-image-y-to-pos":[{"mask-y-to":eh()}],"mask-image-y-from-color":[{"mask-y-from":el()}],"mask-image-y-to-color":[{"mask-y-to":el()}],"mask-image-radial":[{"mask-radial":[Q,U]}],"mask-image-radial-from-pos":[{"mask-radial-from":eh()}],"mask-image-radial-to-pos":[{"mask-radial-to":eh()}],"mask-image-radial-from-color":[{"mask-radial-from":el()}],"mask-image-radial-to-color":[{"mask-radial-to":el()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":x()}],"mask-image-conic-pos":[{"mask-conic":[T]}],"mask-image-conic-from-pos":[{"mask-conic-from":eh()}],"mask-image-conic-to-pos":[{"mask-conic-to":eh()}],"mask-image-conic-from-color":[{"mask-conic-from":el()}],"mask-image-conic-to-color":[{"mask-conic-to":el()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ec()}],"mask-repeat":[{mask:ed()}],"mask-size":[{mask:eu()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Q,U]}],filter:[{filter:["","none",Q,U]}],blur:[{blur:ek()}],brightness:[{brightness:[T,Q,U]}],contrast:[{contrast:[T,Q,U]}],"drop-shadow":[{"drop-shadow":["","none",p,er,H]}],"drop-shadow-color":[{"drop-shadow":el()}],grayscale:[{grayscale:["",T,Q,U]}],"hue-rotate":[{"hue-rotate":[T,Q,U]}],invert:[{invert:["",T,Q,U]}],saturate:[{saturate:[T,Q,U]}],sepia:[{sepia:["",T,Q,U]}],"backdrop-filter":[{"backdrop-filter":["","none",Q,U]}],"backdrop-blur":[{"backdrop-blur":ek()}],"backdrop-brightness":[{"backdrop-brightness":[T,Q,U]}],"backdrop-contrast":[{"backdrop-contrast":[T,Q,U]}],"backdrop-grayscale":[{"backdrop-grayscale":["",T,Q,U]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[T,Q,U]}],"backdrop-invert":[{"backdrop-invert":["",T,Q,U]}],"backdrop-opacity":[{"backdrop-opacity":[T,Q,U]}],"backdrop-saturate":[{"backdrop-saturate":[T,Q,U]}],"backdrop-sepia":[{"backdrop-sepia":["",T,Q,U]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":j()}],"border-spacing-x":[{"border-spacing-x":j()}],"border-spacing-y":[{"border-spacing-y":j()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Q,U]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[T,"initial",Q,U]}],ease:[{ease:["linear","initial",h,Q,U]}],delay:[{delay:[T,Q,U]}],animate:[{animate:["none",k,Q,U]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[g,Q,U]}],"perspective-origin":[{"perspective-origin":y()}],rotate:[{rotate:ev()}],"rotate-x":[{"rotate-x":ev()}],"rotate-y":[{"rotate-y":ev()}],"rotate-z":[{"rotate-z":ev()}],scale:[{scale:ew()}],"scale-x":[{"scale-x":ew()}],"scale-y":[{"scale-y":ew()}],"scale-z":[{"scale-z":ew()}],"scale-3d":["scale-3d"],skew:[{skew:ex()}],"skew-x":[{"skew-x":ex()}],"skew-y":[{"skew-y":ex()}],transform:[{transform:[Q,U,"","none","gpu","cpu"]}],"transform-origin":[{origin:y()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:ey()}],"translate-x":[{"translate-x":ey()}],"translate-y":[{"translate-y":ey()}],"translate-z":[{"translate-z":ey()}],"translate-none":["translate-none"],zoom:[{zoom:[G,Q,U]}],accent:[{accent:el()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:el()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Q,U]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scrollbar-thumb-color":[{"scrollbar-thumb":el()}],"scrollbar-track-color":[{"scrollbar-track":el()}],"scrollbar-gutter":[{"scrollbar-gutter":["auto","stable","both"]}],"scrollbar-w":[{scrollbar:["auto","thin","none"]}],"scroll-m":[{"scroll-m":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mbs":[{"scroll-mbs":j()}],"scroll-mbe":[{"scroll-mbe":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pbs":[{"scroll-pbs":j()}],"scroll-pbe":[{"scroll-pbe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Q,U]}],fill:[{fill:["none",...el()]}],"stroke-w":[{stroke:[T,X,$,R]}],stroke:[{stroke:["none",...el()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{"container-named":["container-type"],overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","inset-bs","inset-be","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pbs","pbe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mbs","mbe","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-bs","border-w-be","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-bs","border-color-be","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mbs","scroll-mbe","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pbs","scroll-pbe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},postfixLookupClassGroups:["container-type"],orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});function eg(...e){return eb((0,o.$)(e))}},8521:(e,t,r)=>{"use strict";r.d(t,{J:()=>l,D:()=>i});var o=r(51204);let n=new Set(["animate","exit","variants","initial","style","values","variants","transition","transformTemplate","custom","inherit","onBeforeLayoutMeasure","onAnimationStart","onAnimationComplete","onUpdate","onDragStart","onDrag","onDragEnd","onMeasureDragConstraints","onDirectionLock","onDragTransitionEnd","_dragX","_dragY","onHoverStart","onHoverEnd","onViewportEnter","onViewportLeave","globalTapTarget","propagate","ignoreStrict","viewport"]);function a(e){return e.startsWith("while")||e.startsWith("drag")&&"draggable"!==e||e.startsWith("layout")||e.startsWith("onTap")||e.startsWith("onPan")||e.startsWith("onLayout")||n.has(e)}let s=e=>!a(e);function i(e){"function"==typeof e&&(s=t=>t.startsWith("on")?!a(t):e(t))}try{i(require("@emotion/is-prop-valid").default)}catch{}function l(e,t,r){let n={};for(let i in e)("values"!==i||"object"!=typeof e.values)&&!(0,o.S)(e[i])&&(s(i)||!0===r&&a(i)||!t&&!a(i)||e.draggable&&i.startsWith("onDrag"))&&(n[i]=e[i]);return n}},10293:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>g});var o=r(26514),n=r(24322),a=r.n(n),s=r(75834),i=r(29912),l=r(73533),c=r(8521),d=r(53214);function u({children:e,isValidProp:t,...r}){t&&(0,c.D)(t);let n=(0,s.useContext)(l.Q);(r={...n,...r}).transition=(0,i.K)(r.transition,n.transition),r.isStatic=(0,d.M)(()=>r.isStatic);let a=(0,s.useMemo)(()=>r,[JSON.stringify(r.transition),r.transformPagePoint,r.reducedMotion,r.skipAnimations]);return(0,o.jsx)(l.Q.Provider,{value:a,children:e})}var m=r(67492);let p="vibeflow:connection";function b(){let[e,t]=(0,s.useState)(!0);return((0,s.useEffect)(()=>{let e=e=>t(e.detail.connected);return window.addEventListener(p,e),()=>window.removeEventListener(p,e)},[]),e)?null:(0,o.jsx)("div",{role:"status",className:"fixed inset-x-0 top-0 z-50 bg-destructive px-4 py-1.5 text-center text-sm text-destructive-foreground",children:"與 VibeFlow core 的連線中斷,正在重新連線…(agent 仍在背景執行)"})}r(59630),r(19733),r(55e3),function(){if(window.vibeflow)return;let e=`${"https:"===window.location.protocol?"wss":"ws"}://${window.location.host}/ws`,t=null,r=function(e){let t=null,r=1,o=!1,n=!1,a=250,s=[],i=new Map,l=new Map;function c(e,t){for(let r of Array.from(l.get(e)??[]))r(t)}function d(e){let r=JSON.stringify(e);t&&1===t.readyState?t.send(r):s.push(r)}return!function r(){if(n)return;let l=e.connect();t=l,l.onopen=()=>{for(a=250,e.onStatus?.(!0);t&&1===t.readyState&&s.length>0;)t.send(s.shift());o&&e.onReconnect?.(),o=!0},l.onmessage=e=>{let t;try{t=JSON.parse(String(e.data))}catch{return}if("string"==typeof t.event)return void c(t.event,t.payload);let r="number"==typeof t.id?i.get(t.id):void 0;r&&(i.delete(t.id),t.error?r.reject(Object.assign(Error(t.error.message),{code:t.error.code})):r.resolve(null===t.result?void 0:t.result))},l.onerror=()=>{},l.onclose=()=>{if(t===l){for(let[r,o]of(t=null,e.onStatus?.(!1),Array.from(i)))i.delete(r),o.reject(Error("與 VibeFlow core 的連線中斷"));n||(setTimeout(r,a),a=Math.min(2*a,5e3))}}}(),{kind:"ws",invoke(e,...t){let o=r++;return new Promise((r,n)=>{i.set(o,{resolve:r,reject:n}),d({id:o,method:e,params:t})})},send(e,...t){d({method:e,params:t})},on(e,t){let r=l.get(e);return r||l.set(e,r=new Set),r.add(t),()=>{r.delete(t)}},close(){n=!0,t?.close()},dispatch:c}}({connect:()=>new WebSocket(e),onReconnect:()=>{o.getVersion().then(e=>{t&&e!==t&&window.location.reload()}).catch(()=>{}),o.getState().then(e=>r.dispatch("state:changed",e)),o.getUpdateStatus().then(e=>r.dispatch("update:available",e)).catch(()=>{})},onStatus:e=>{window.dispatchEvent(new CustomEvent(p,{detail:{connected:e}}))}}),o={transport:r.kind,getState:()=>r.invoke("vibeflow:getState"),getVersion:()=>r.invoke("app:getVersion"),getUpdateStatus:()=>r.invoke("host:updateStatus"),checkForUpdate:()=>r.invoke("host:checkUpdate"),openUpdateTerminal:()=>r.invoke("host:openUpdateTerminal"),onUpdateAvailable:e=>r.on("update:available",t=>e(t)),onStateChanged:e=>r.on("state:changed",t=>e(t)),setBoard:e=>r.invoke("vibeflow:setBoard",e),setSettings:e=>r.invoke("vibeflow:setSettings",e),getJevKeyStatus:()=>r.invoke("settings:jevKeyStatus"),saveJevApiKey:e=>r.invoke("settings:saveJevApiKey",{apiKey:e}),removeJevApiKey:()=>r.invoke("settings:removeJevApiKey"),getGithubAuthStatus:()=>r.invoke("settings:githubAuthStatus"),startGithubAuthLogin:()=>r.invoke("settings:startGithubAuthLogin"),cancelGithubAuthLogin:()=>r.invoke("settings:cancelGithubAuthLogin"),logoutGithubAuth:()=>r.invoke("settings:logoutGithubAuth"),getGithubInbox:e=>r.invoke("github:inbox",e??{}),getJiraAuthStatus:()=>r.invoke("jira:authStatus"),startJiraAuthLogin:()=>r.invoke("settings:startJiraAuthLogin"),cancelJiraAuthLogin:()=>r.invoke("settings:cancelJiraAuthLogin"),inputJiraAuthLogin:e=>r.invoke("settings:inputJiraAuthLogin",e),logoutJiraAuth:()=>r.invoke("settings:logoutJiraAuth"),onJiraAuthEvent:e=>r.on("jira-auth:event",t=>e(t)),getJiraInbox:e=>r.invoke("jira:inbox",e??{}),getGithubTaskLinks:e=>r.invoke("github:taskLinks",e??{}),onGithubAuthEvent:e=>r.on("github-auth:event",t=>e(t)),getGitInfo:e=>r.invoke("git:getInfo",e),listRecentProjects:()=>r.invoke("projects:listRecent"),initRepository:e=>r.invoke("git:initRepository",e),detectAgents:()=>r.invoke("env:detectAgents"),listAgentModels:(e,t=!1)=>r.invoke("agents:listModels",{agentId:e,refresh:t}),createTask:e=>r.invoke("vibeflow:createTask",e),updateTask:e=>r.invoke("vibeflow:updateTask",e),resetTaskRun:e=>r.invoke("vibeflow:resetTaskRun",e),removeTask:e=>r.invoke("vibeflow:removeTask",e),getDiff:e=>r.invoke("git:getDiff",e),getDiffEntries:(e,t)=>r.invoke("git:getDiffEntries",e,t),getDiffFile:(e,t)=>r.invoke("git:getDiffFile",e,t),listArtifacts:e=>r.invoke("task:listArtifacts",e),readArtifact:(e,t)=>r.invoke("task:readArtifact",e,t),openArtifactsDir:e=>r.invoke("task:openArtifactsDir",e),getSpecs:e=>r.invoke("task:getSpecs",e),getBoardCliLaunchInfo:()=>r.invoke("board:getCliLaunchInfo"),listLibrary:()=>r.invoke("library:list"),importLibraryEntry:e=>r.invoke("library:import",e),createLibraryEntry:e=>r.invoke("library:create",e),readLibraryEntry:e=>r.invoke("library:read",e),updateLibraryEntry:e=>r.invoke("library:update",e),setLibraryEntryDescription:e=>r.invoke("library:setDescription",e),setLibraryEntryEnabled:e=>r.invoke("library:setEnabled",e),deleteLibraryEntry:e=>r.invoke("library:delete",e),restoreBuiltinSkill:e=>r.invoke("library:restoreBuiltin",e),listRemovedBuiltinSkills:()=>r.invoke("library:removedBuiltins"),approve:(e,t)=>r.invoke("git:approve",{taskId:e,message:t}),generateCommitMessage:e=>r.invoke("git:generateCommitMessage",e),getPrStatus:e=>r.invoke("git:getPrStatus",e),getGithubCompareUrl:e=>r.invoke("git:getGithubCompareUrl",e),openExternal:e=>r.invoke("shell:openExternal",e),pickFolder:e=>r.invoke("dialog:pickFolder",e),cleanupTask:e=>r.invoke("vibeflow:cleanupTask",e),onSubAgentsUpdate:e=>r.on("subagents:update",t=>e(t)),deleteTask:e=>r.invoke("vibeflow:deleteTask",e),getProgress:e=>r.invoke("progress:get",e),onProgressUpdate:e=>r.on("progress:update",t=>e(t)),onProgressNotify:e=>r.on("progress:notify",t=>e(t)),attachments:{write:e=>r.invoke("attachments:write",e)},chat:{load:e=>r.invoke("chat:load",e),send:e=>r.invoke("chat:send",e),cancel:e=>r.invoke("chat:cancel",e),compact:e=>r.invoke("chat:compact",e),onChunk:e=>r.on("chat:chunk",t=>e(t)),onPhase:e=>r.on("chat:phase",t=>e(t))},term:{start:e=>r.invoke("pty:start",e),startStandalone:e=>r.invoke("terminal:start",e),renameStandalone:(e,t)=>r.invoke("terminal:rename",{sessionKey:e,title:t}),peek:e=>r.invoke("pty:peek",e),list:()=>r.invoke("sessions:list"),input:(e,t)=>r.send("pty:input",{sessionKey:e,data:t}),resize:(e,t,o)=>r.send("pty:resize",{sessionKey:e,cols:t,rows:o}),kill:e=>r.send("pty:kill",e),isScrolledBack:e=>r.invoke("pty:scrolled",e),scrollToBottom:e=>r.invoke("pty:scroll-bottom",e),sessionExists:e=>r.invoke("claude:sessionExists",e),onData:e=>r.on("pty:data",t=>e(t)),onExit:e=>r.on("pty:exit",t=>e(t))}};o.getVersion().then(e=>{t=e}).catch(()=>{}),window.vibeflow=o}();let g=function({Component:e,pageProps:t}){return(0,s.useEffect)(()=>{let e=requestIdleCallback(m.x);return()=>cancelIdleCallback(e)},[]),(0,o.jsxs)(u,{reducedMotion:"user",children:[(0,o.jsxs)(a(),{children:[(0,o.jsx)("link",{rel:"icon",href:"/favicon.ico",sizes:"any"}),(0,o.jsx)("link",{rel:"icon",href:"/logo.svg",type:"image/svg+xml"}),(0,o.jsx)("link",{rel:"apple-touch-icon",href:"/apple-touch-icon.png"}),(0,o.jsx)("link",{rel:"manifest",href:"/manifest.webmanifest"}),(0,o.jsx)("meta",{name:"theme-color",content:"#0d1117"})]}),(0,o.jsx)(b,{}),(0,o.jsx)(e,{...t})]})}},19733:()=>{},20446:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return r(10293)}])},24322:(e,t,r)=>{e.exports=r(2324)},29912:(e,t,r)=>{"use strict";function o(e,t){if(e?.inherit&&t){let{inherit:r,...o}=e;return{...t,...o}}return e}r.d(t,{K:()=>o})},51204:(e,t,r)=>{"use strict";r.d(t,{S:()=>o});let o=e=>!!(e&&e.getVelocity)},53214:(e,t,r)=>{"use strict";r.d(t,{M:()=>n});var o=r(75834);function n(e){let t=(0,o.useRef)(null);return null===t.current&&(t.current=e()),t.current}},55e3:()=>{},59630:()=>{},67492:(e,t,r)=>{"use strict";r.d(t,{A:()=>d,x:()=>l});var o=r(26514),n=r(75834),a=r(4416);let s=null;function i(e,t,r){return e.getPropertyValue(t).trim()||r}function l(){c().then(e=>e.render("mermaid-warmup","flowchart TD\n A--\x3eB")).catch(()=>{})}function c(){return s??=Promise.all([r.e(4120),r.e(1687),r.e(3927)]).then(r.bind(r,28996)).then(({default:e})=>{let t=getComputedStyle(document.documentElement);return e.initialize({startOnLoad:!1,securityLevel:"strict",suppressErrorRendering:!0,htmlLabels:!1,theme:"dark",darkMode:!0,fontFamily:i(t,"--font-sans","Inter, system-ui, sans-serif"),themeVariables:{background:i(t,"--card","#212121"),primaryColor:i(t,"--secondary","#262626"),primaryTextColor:i(t,"--foreground","#ededed"),lineColor:i(t,"--muted-foreground","#a1a1a1"),edgeLabelBackground:i(t,"--card","#212121")},flowchart:{useMaxWidth:!0}}),e}).catch(e=>{throw s=null,e})}function d({code:e,compact:t}){let r=`mermaid-${(0,n.useId)().replace(/[^a-zA-Z0-9]/g,"")}`,[s,i]=(0,n.useState)(null),[l,u]=(0,n.useState)(null);(0,n.useEffect)(()=>{let t=!1;return i(null),u(null),c().then(t=>t.render(r,e)).then(e=>{t||i(e.svg)}).catch(e=>{t||u(e instanceof Error?e.message:String(e))}),()=>{t=!0}},[e,r]);let m=(0,o.jsx)("pre",{className:(0,a.cn)("max-w-full overflow-x-auto rounded-md bg-background/70 p-3",t?"text-xs leading-snug":"text-sm"),children:(0,o.jsx)("code",{children:e})});return l?(0,o.jsxs)("div",{className:"not-prose my-3 space-y-2",children:[(0,o.jsxs)("p",{className:"text-xs text-destructive",children:["圖表語法錯誤:",l]}),m]}):s?(0,o.jsx)("div",{className:"not-prose my-3 max-w-full overflow-x-auto rounded-md bg-card p-3 [&_svg]:max-w-full",dangerouslySetInnerHTML:{__html:s}}):(0,o.jsx)("div",{className:"not-prose my-3 rounded-md bg-background/70 p-3 text-xs text-muted-foreground",children:"繪製圖表中…"})}},73367:(e,t,r)=>{"use strict";function o(){for(var e,t,r=0,o="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=function e(t){var r,o,n="";if("string"==typeof t||"number"==typeof t)n+=t;else if("object"==typeof t)if(Array.isArray(t)){var a=t.length;for(r=0;r<a;r++)t[r]&&(o=e(t[r]))&&(n&&(n+=" "),n+=o)}else for(o in t)t[o]&&(n&&(n+=" "),n+=o);return n}(e))&&(o&&(o+=" "),o+=t);return o}r.d(t,{$:()=>o})},73533:(e,t,r)=>{"use strict";r.d(t,{Q:()=>o});let o=(0,r(75834).createContext)({transformPagePoint:e=>e,isStatic:!1,reducedMotion:"never"})}},e=>{var t=t=>e(e.s=t);e.O(0,[6593,8792],()=>(t(20446),t(77269))),_N_E=e.O()}]);