tower-studio 0.1.14 → 0.1.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/cache/.previewinfo +1 -1
- package/.next/cache/.rscinfo +1 -1
- package/.next/cache/.tsbuildinfo +1 -1
- package/.next/diagnostics/route-bundle-stats.json +95 -95
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/_not-found/page/server-reference-manifest.json +23 -23
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +14 -14
- package/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
- package/.next/server/app/_not-found.segments/_head.segment.rsc +4 -4
- package/.next/server/app/_not-found.segments/_index.segment.rsc +9 -9
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/internal/assistant/route.js +1 -1
- package/.next/server/app/api/internal/assistant/route.js.nft.json +1 -1
- package/.next/server/app/api/internal/terminal/[taskId]/start/route.js +2 -2
- package/.next/server/app/api/internal/terminal/[taskId]/start/route.js.nft.json +1 -1
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +14 -14
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/.next/server/app/index.segments/_head.segment.rsc +4 -4
- package/.next/server/app/index.segments/_index.segment.rsc +9 -9
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/missions/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/missions/page/server-reference-manifest.json +49 -49
- package/.next/server/app/missions/page.js +1 -1
- package/.next/server/app/missions/page.js.nft.json +1 -1
- package/.next/server/app/missions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/onboarding/page/server-reference-manifest.json +23 -23
- package/.next/server/app/onboarding/page.js.nft.json +1 -1
- package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/.next/server/app/onboarding.html +1 -1
- package/.next/server/app/onboarding.rsc +16 -16
- package/.next/server/app/onboarding.segments/_full.segment.rsc +16 -16
- package/.next/server/app/onboarding.segments/_head.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/_index.segment.rsc +9 -9
- package/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/onboarding.segments/onboarding.segment.rsc +3 -3
- package/.next/server/app/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/page/server-reference-manifest.json +23 -23
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/settings/page/server-reference-manifest.json +56 -80
- package/.next/server/app/settings/page.js +1 -1
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +16 -16
- package/.next/server/app/settings.segments/_full.segment.rsc +16 -16
- package/.next/server/app/settings.segments/_head.segment.rsc +4 -4
- package/.next/server/app/settings.segments/_index.segment.rsc +9 -9
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +4 -4
- package/.next/server/app/settings.segments/settings.segment.rsc +3 -3
- package/.next/server/app/workspaces/[workspaceId]/archive/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/archive/page/server-reference-manifest.json +77 -77
- package/.next/server/app/workspaces/[workspaceId]/archive/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/archive/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page/server-reference-manifest.json +62 -62
- package/.next/server/app/workspaces/[workspaceId]/assets/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/assets/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page/server-reference-manifest.json +53 -53
- package/.next/server/app/workspaces/[workspaceId]/notes/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/notes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page/server-reference-manifest.json +51 -51
- package/.next/server/app/workspaces/[workspaceId]/page.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page/server-reference-manifest.json +23 -23
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/projects/[projectId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page/server-reference-manifest.json +52 -52
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js +2 -2
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/[workspaceId]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/workspaces/page/react-loadable-manifest.json +1 -1
- package/.next/server/app/workspaces/page/server-reference-manifest.json +43 -43
- package/.next/server/app/workspaces/page.js.nft.json +1 -1
- package/.next/server/app/workspaces/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/0uz~_next_dist_esm_build_templates_app-route_05yec2y.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__00~8_qz._.js +4 -0
- package/.next/server/chunks/[root-of-the-server]__05mc_xk._.js +1 -1
- package/.next/server/chunks/[root-of-the-server]__0p5iuez._.js +2 -2
- package/.next/server/chunks/[root-of-the-server]__0rb-ear._.js +4 -0
- package/.next/server/chunks/project_f_tower_0n1s3ym._.js +1 -1
- package/.next/server/chunks/project_f_tower_src_11e.cv5._.js +1 -1
- package/.next/server/chunks/ssr/04uy_src_app_workspaces_[workspaceId]_tasks_[taskId]_task-page-client_tsx_01.s1p0._.js +1 -1
- package/.next/server/chunks/ssr/0y0r_f_tower_src_app_workspaces_[workspaceId]_assets_assets-page-client_tsx_0n4g3bn._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__00.lowc._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__007tg36._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__025.0xa._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__04u4kb4._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__05a17ca._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__06qzctf._.js +1 -1
- package/.next/server/chunks/ssr/{[root-of-the-server]__0wkjslq._.js → [root-of-the-server]__08-2pn1._.js} +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0_47k-j._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0aidehy._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0bqzhpe._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ex911v._.js +30 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0ffdrwp._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0h38s6n._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0h8nl.m._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0i4rk9v._.js +3 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0r6gkos._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0u26l~e._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0uca1bc._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0w7gbe7._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0xe-o3g._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0zaw-fl._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__13eo85g._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__13x5mmo._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_0.txwd8._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_047pa2s._.js +3 -0
- package/.next/server/chunks/ssr/project_f_tower_0f0-wva._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_0hgtev9._.js +1 -1
- package/.next/server/chunks/ssr/{project_f_tower_0pf464l._.js → project_f_tower_0i96rjz._.js} +2 -2
- package/.next/server/chunks/ssr/project_f_tower_0ivvjwd._.js +1 -1
- package/.next/server/chunks/ssr/{project_f_tower_0ntkd-l._.js → project_f_tower_0jhlcus._.js} +2 -2
- package/.next/server/chunks/ssr/project_f_tower_0jy~1uf._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_0l6ssf8._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_0o5.y1e._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_0ps2~v1._.js +3 -0
- package/.next/server/chunks/ssr/project_f_tower_0ssr2sl._.js +3 -0
- package/.next/server/chunks/ssr/{project_f_tower_08mqp19._.js → project_f_tower_0tlnklr._.js} +2 -2
- package/.next/server/chunks/ssr/project_f_tower_0w01kgd._.js +3 -0
- package/.next/server/chunks/ssr/project_f_tower_0ym-aea._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_12oax__._.js +3 -0
- package/.next/server/chunks/ssr/project_f_tower_src_10.nkh7._.js +3 -0
- package/.next/server/chunks/ssr/project_f_tower_src_actions_agent-actions_ts_0.s4~m-._.js +2 -2
- package/.next/server/chunks/ssr/project_f_tower_src_actions_file-actions_ts_02i742t._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_src_app_missions_missions-client_tsx_0ums4qx._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_src_app_onboarding_page_tsx_0_9_yoq._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_src_app_settings_page_tsx_0oo06~d._.js +1 -1
- package/.next/server/chunks/ssr/project_f_tower_src_app_workspaces_[workspaceId]_board-page-client_tsx_0jmj1xz._.js +1 -1
- package/.next/server/chunks/ssr/{project_f_tower_0u6dr5n._.js → project_f_tower_src_components_ui_input_tsx_02yu4ri._.js} +2 -2
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +217 -241
- package/.next/static/chunks/{0z2rpkmoqlr-v.js → 06~5p79536pfs.js} +1 -1
- package/.next/static/chunks/{17ckwfwqtxcv7.js → 076vhlm6g1m9n.js} +1 -1
- package/.next/static/chunks/{1660q32oalq26.js → 08x0olwzpsczv.js} +2 -2
- package/.next/static/chunks/0amzt~927k5f5.js +1 -0
- package/.next/static/chunks/{0z-6e_hc3z22b.js → 0gwxdr2ihtu8z.js} +1 -1
- package/.next/static/chunks/{0x-v4tzitjxub.js → 0jef3e_wsh4mf.js} +1 -1
- package/.next/static/chunks/{08gl4lr7zkm6b.js → 0jfknbbi-cjcl.js} +1 -1
- package/.next/static/chunks/{11gkyogd_hqv~.js → 0l5tqul.pwfze.js} +1 -1
- package/.next/static/chunks/0pez9k2q~8lom.js +1 -0
- package/.next/static/chunks/0s4zpgzk~au6x.css +1 -0
- package/.next/static/chunks/{0qnz9q6uieuv8.js → 0sszltblb5pss.js} +1 -1
- package/.next/static/chunks/0uxf3e~tjkjuz.js +1 -0
- package/.next/static/chunks/1034h4copyi13.js +1 -0
- package/.next/static/chunks/11j_4bpiqb5on.js +1 -0
- package/.next/static/chunks/{12btaaeo1ik-t.js → 12q1f_9u6eduf.js} +1 -1
- package/.next/static/chunks/{14zxctn8~z26r.js → 14xrab1qyw2yw.js} +1 -1
- package/.next/static/chunks/{0qnvx~5op5b9e.js → 181v0f2l.x5_p.js} +1 -1
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/package.json +2 -4
- package/scripts/init-db.ts +0 -17
- package/.next/server/chunks/[root-of-the-server]__02~bq0q._.js +0 -4
- package/.next/server/chunks/[root-of-the-server]__0~33o~m._.js +0 -4
- package/.next/server/chunks/ssr/[root-of-the-server]__0.4j53v._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__09bcer6._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0fwuc5u._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0gpx.d~._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0nmyvwk._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__11j4k9o._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__13cjs8r._.js +0 -3
- package/.next/server/chunks/ssr/project_f_tower_01tnhbx._.js +0 -3
- package/.next/server/chunks/ssr/project_f_tower_04g3~44._.js +0 -30
- package/.next/server/chunks/ssr/project_f_tower_0760i8j._.js +0 -3
- package/.next/server/chunks/ssr/project_f_tower_0ddfsyt._.js +0 -3
- package/.next/server/chunks/ssr/project_f_tower_0sy7ynr._.js +0 -3
- package/.next/server/chunks/ssr/project_f_tower_src_0bqbs-1._.js +0 -3
- package/.next/static/chunks/04pjsuj.mivbh.css +0 -1
- package/.next/static/chunks/0brwcgj_cjdcc.js +0 -1
- package/.next/static/chunks/0q40u78uovc7y.js +0 -1
- package/.next/static/chunks/0w90t_ngr5_pj.js +0 -1
- package/.next/static/chunks/11y3rfp3d4n.0.js +0 -1
- package/.next/static/chunks/12.91avyb6b7-.js +0 -1
- /package/.next/static/{VzTy7iJ2D58ZvnVnTJZJi → UuR3rJNr0J0cwFZgsovkL}/_buildManifest.js +0 -0
- /package/.next/static/{VzTy7iJ2D58ZvnVnTJZJi → UuR3rJNr0J0cwFZgsovkL}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{VzTy7iJ2D58ZvnVnTJZJi → UuR3rJNr0J0cwFZgsovkL}/_ssgManifest.js +0 -0
package/.next/server/chunks/ssr/{project_f_tower_0ntkd-l._.js → project_f_tower_0jhlcus._.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
module.exports=[150155,a=>{"use strict";var b=a.i(175391);let c={};a.s(["useRefWithInit",0,function(a,d){let e=b.useRef(c);return e.current===c&&(e.current=a(d)),e}])},527993,a=>{"use strict";var b=a.i(175391);let c="u">typeof document?b.useLayoutEffect:()=>{};a.s(["useIsoLayoutEffect",0,c])},545264,a=>{"use strict";let b=function(a,...b){let c=new URL("https://base-ui.com/production-error");return c.searchParams.set("code",a.toString()),b.forEach(a=>c.searchParams.append("args[]",a)),`Base UI error #${a}; visit ${c} for the full message.`};a.s(["default",0,b])},962256,a=>{"use strict";let b;function c(a){return f(a)?(a.nodeName||"").toLowerCase():"#document"}function d(a){var b;return(null==a||null==(b=a.ownerDocument)?void 0:b.defaultView)||window}function e(a){var b;return null==(b=(f(a)?a.ownerDocument:a.document)||window.document)?void 0:b.documentElement}function f(a){return!1}function g(a){return!1}function h(a){return!1}function i(a){return!1}function j(a){let{overflow:b,overflowX:c,overflowY:d,display:e}=r(a);return/auto|scroll|overlay|hidden|clip/.test(b+d+c)&&"inline"!==e&&"contents"!==e}function k(a){try{if(a.matches(":popover-open"))return!0}catch(a){}try{return a.matches(":modal")}catch(a){return!1}}let l=/transform|translate|scale|rotate|perspective|filter/,m=/paint|layout|strict|content/,n=a=>!!a&&"none"!==a;function o(a){let b=g(a)?r(a):a;return n(b.transform)||n(b.translate)||n(b.scale)||n(b.rotate)||n(b.perspective)||!p()&&(n(b.backdropFilter)||n(b.filter))||l.test(b.willChange||"")||m.test(b.contain||"")}function p(){return null==b&&(b="u">typeof CSS&&CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")),b}function q(a){return/^(html|body|#document)$/.test(c(a))}function r(a){return d(a).getComputedStyle(a)}function s(a){if("html"===c(a))return a;let b=a.assignedSlot||a.parentNode||i(a)&&a.host||e(a);return i(b)?b.host:b}function t(a){return a.parent&&Object.getPrototypeOf(a.parent)?a.frameElement:null}a.s(["getComputedStyle",0,r,"getContainingBlock",0,function(a){let b=s(a);for(;h(b)&&!q(b);){if(o(b))return b;if(k(b))break;b=s(b)}return null},"getDocumentElement",0,e,"getFrameElement",0,t,"getNodeName",0,c,"getNodeScroll",0,function(a){return g(a)?{scrollLeft:a.scrollLeft,scrollTop:a.scrollTop}:{scrollLeft:a.scrollX,scrollTop:a.scrollY}},"getOverflowAncestors",0,function a(b,c,e){var f;void 0===c&&(c=[]),void 0===e&&(e=!0);let g=function a(b){let c=s(b);return q(c)?b.ownerDocument?b.ownerDocument.body:b.body:h(c)&&j(c)?c:a(c)}(b),i=g===(null==(f=b.ownerDocument)?void 0:f.body),k=d(g);if(!i)return c.concat(g,a(g,[],e));{let b=t(k);return c.concat(k,k.visualViewport||[],j(g)?g:[],b&&e?a(b):[])}},"getParentNode",0,s,"getWindow",0,d,"isContainingBlock",0,o,"isElement",0,g,"isHTMLElement",0,h,"isLastTraversableNode",0,q,"isNode",0,f,"isOverflowElement",0,j,"isShadowRoot",0,i,"isTableElement",0,function(a){return/^(table|td|th)$/.test(c(a))},"isTopLayer",0,k,"isWebKit",0,p])},825863,a=>{"use strict";var b=a.i(175391),c=a.i(150155);let d=b[`useInsertionEffect${Math.random().toFixed(1)}`.slice(0,-3)],e=d&&d!==b.useLayoutEffect?d:a=>a();function f(){let a={next:void 0,callback:g,trampoline:(...b)=>a.callback?.(...b),effect:()=>{a.callback=a.next}};return a}function g(){}a.s(["useStableCallback",0,function(a){let b=(0,c.useRefWithInit)(f).current;return b.next=a,e(b.effect),b.trampoline}])},501048,a=>{"use strict";let b="u">typeof navigator,c=function(){if(!b)return{platform:"",maxTouchPoints:-1};let a=navigator.userAgentData;return a?.platform?{platform:a.platform,maxTouchPoints:navigator.maxTouchPoints}:{platform:navigator.platform??"",maxTouchPoints:navigator.maxTouchPoints??-1}}(),d=function(){if(!b)return"";let a=navigator.userAgentData;return a?.platform?a.platform:navigator.platform??""}(),e=function(){if(!b)return"";let a=navigator.userAgentData;return a&&Array.isArray(a.brands)?a.brands.map(({brand:a,version:b})=>`${a}/${b}`).join(" "):navigator.userAgent}(),f="u">typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter:none"),g="MacIntel"===c.platform&&c.maxTouchPoints>1||/iP(hone|ad|od)|iOS/.test(c.platform);b&&/firefox/i.test(e);let h=b&&/apple/i.test(navigator.vendor);b&&/Edg/i.test(e);let i=b&&/android/i.test(d)||/android/i.test(e),j=b&&d.toLowerCase().startsWith("mac")&&!navigator.maxTouchPoints,k=e.includes("jsdom/");a.s(["isAndroid",0,i,"isIOS",0,g,"isJSDOM",0,k,"isMac",0,j,"isSafari",0,h,"isWebKit",0,f])},394395,988820,a=>{"use strict";var b=a.i(962256),c=a.i(501048);let d="data-base-ui-focusable",e="input:not([type='hidden']):not([disabled]),[contenteditable]:not([contenteditable='false']),textarea:not([disabled])";function f(a,c){if(!a||!c)return!1;let d=c.getRootNode?.();if(a.contains(c))return!0;if(d&&(0,b.isShadowRoot)(d)){let b=c;for(;b;){if(a===b)return!0;b=b.parentNode||b.host}}return!1}function g(a){return(0,b.isHTMLElement)(a)&&a.matches(e)}a.s(["ACTIVE_KEY",0,"active","ARROW_DOWN",0,"ArrowDown","ARROW_LEFT",0,"ArrowLeft","ARROW_RIGHT",0,"ArrowRight","ARROW_UP",0,"ArrowUp","FOCUSABLE_ATTRIBUTE",0,d,"SELECTED_KEY",0,"selected","TYPEABLE_SELECTOR",0,e],988820),a.s(["activeElement",0,function(a){let b=a.activeElement;for(;b?.shadowRoot?.activeElement!=null;)b=b.shadowRoot.activeElement;return b},"contains",0,f,"getFloatingFocusElement",0,function(a){return a?a.hasAttribute(d)?a:a.querySelector(`[${d}]`)||a:null},"getTarget",0,function(a){return"composedPath"in a?a.composedPath()[0]:a.target},"isEventTargetWithin",0,function(a,b){return null!=b&&("composedPath"in a?a.composedPath().includes(b):null!=a.target&&b.contains(a.target))},"isRootElement",0,function(a){return a.matches("html,body")},"isTargetInsideEnabledTrigger",0,function(a,c){if(!(0,b.isElement)(a))return!1;if(c.hasElement(a))return!a.hasAttribute("data-trigger-disabled");for(let[,b]of c.entries())if(f(b,a))return!b.hasAttribute("data-trigger-disabled");return!1},"isTypeableCombobox",0,function(a){return!!a&&"combobox"===a.getAttribute("role")&&g(a)},"isTypeableElement",0,g,"matchesFocusVisible",0,function(a){if(!a||c.isJSDOM)return!0;try{return a.matches(":focus-visible")}catch(a){return!0}}],394395)},934625,a=>{"use strict";var b=a.i(175391);let c=[];a.s(["useOnMount",0,function(a){b.useEffect(a,c)}])},313668,a=>{"use strict";var b=a.i(150155),c=a.i(934625);class d{static create(){return new d}currentId=0;start(a,b){this.clear(),this.currentId=setTimeout(()=>{this.currentId=0,b()},a)}isStarted(){return 0!==this.currentId}clear=()=>{0!==this.currentId&&(clearTimeout(this.currentId),this.currentId=0)};disposeEffect=()=>this.clear}a.s(["Timeout",0,d,"useTimeout",0,function(){let a=(0,b.useRefWithInit)(d.create).current;return(0,c.useOnMount)(a.disposeEffect),a}])},848275,a=>{"use strict";a.s(["ownerDocument",0,function(a){return a?.ownerDocument||document}])},56725,a=>{"use strict";var b=a.i(175391);let c={...b},d=0,e=c.useId;a.s(["useId",0,function(a,c){if(void 0!==e){let b=e();return a??(c?`${c}-${b}`:b)}return function(a,c="mui"){let[e,f]=b.useState(a),g=a||e;return b.useEffect(()=>{null==e&&(d+=1,f(`${c}-${d}`))},[e,c]),g}(a,c)}],56725)},302398,a=>{"use strict";let b=Object.freeze([]),c=Object.freeze({});a.s(["EMPTY_ARRAY",0,b,"EMPTY_OBJECT",0,c,"NOOP",0,function(){}])},703599,a=>{"use strict";var b=a.i(302398);a.s(["createChangeEventDetails",0,function(a,c,d,e){let f=!1,g=!1,h=e??b.EMPTY_OBJECT;return{reason:a,event:c??new Event("base-ui"),cancel(){f=!0},allowPropagation(){g=!0},get isCanceled(){return f},get isPropagationAllowed(){return g},trigger:d,...h}}])},107432,a=>{"use strict";a.s(["cancelOpen",0,"cancel-open","chipRemovePress",0,"chip-remove-press","clearPress",0,"clear-press","closePress",0,"close-press","closeWatcher",0,"close-watcher","decrementPress",0,"decrement-press","disabled",0,"disabled","drag",0,"drag","escapeKey",0,"escape-key","focusOut",0,"focus-out","imperativeAction",0,"imperative-action","incrementPress",0,"increment-press","inputBlur",0,"input-blur","inputChange",0,"input-change","inputClear",0,"input-clear","inputPaste",0,"input-paste","inputPress",0,"input-press","itemPress",0,"item-press","keyboard",0,"keyboard","linkPress",0,"link-press","listNavigation",0,"list-navigation","none",0,"none","outsidePress",0,"outside-press","pointer",0,"pointer","scrub",0,"scrub","siblingOpen",0,"sibling-open","swipe",0,"swipe","trackPress",0,"track-press","triggerFocus",0,"trigger-focus","triggerHover",0,"trigger-hover","triggerPress",0,"trigger-press","wheel",0,"wheel","windowResize",0,"window-resize"],928468);var b=a.i(928468);a.s(["REASONS",0,b],107432)},231845,a=>{"use strict";var b=a.i(150155),c=a.i(934625);let d=new class{callbacks=[];callbacksCount=0;nextId=1;startId=1;isScheduled=!1;tick=a=>{this.isScheduled=!1;let b=this.callbacks,c=this.callbacksCount;if(this.callbacks=[],this.callbacksCount=0,this.startId=this.nextId,c>0)for(let c=0;c<b.length;c+=1)b[c]?.(a)};request(a){let b=this.nextId;return this.nextId+=1,this.callbacks.push(a),this.callbacksCount+=1,this.isScheduled||(requestAnimationFrame(this.tick),this.isScheduled=!0),b}cancel(a){let b=a-this.startId;b<0||b>=this.callbacks.length||(this.callbacks[b]=null,this.callbacksCount-=1)}};class e{static create(){return new e}static request(a){return d.request(a)}static cancel(a){return d.cancel(a)}currentId=null;request(a){this.cancel(),this.currentId=d.request(()=>{this.currentId=null,a()})}cancel=()=>{null!==this.currentId&&(d.cancel(this.currentId),this.currentId=null)};disposeEffect=()=>this.cancel}a.s(["AnimationFrame",0,e,"useAnimationFrame",0,function(){let a=(0,b.useRefWithInit)(e.create).current;return(0,c.useOnMount)(a.disposeEffect),a}])},6644,a=>{"use strict";var b=a.i(175391),c=a.i(527993),d=a.i(231845);a.s(["useTransitionStatus",0,function(a,e=!1,f=!1){let[g,h]=b.useState(a&&e?"idle":void 0),[i,j]=b.useState(a);return a&&!i&&(j(!0),h("starting")),a||!i||"ending"===g||f||h("ending"),a||i||"ending"!==g||h(void 0),(0,c.useIsoLayoutEffect)(()=>{if(!a&&i&&"ending"!==g&&f){let a=d.AnimationFrame.request(()=>{h("ending")});return()=>{d.AnimationFrame.cancel(a)}}},[a,i,g,f]),(0,c.useIsoLayoutEffect)(()=>{if(!a||e)return;let b=d.AnimationFrame.request(()=>{h(void 0)});return()=>{d.AnimationFrame.cancel(b)}},[e,a]),(0,c.useIsoLayoutEffect)(()=>{if(!a||!e)return;a&&i&&"idle"!==g&&h("starting");let b=d.AnimationFrame.request(()=>{h("idle")});return()=>{d.AnimationFrame.cancel(b)}},[e,a,i,h,g]),b.useMemo(()=>({mounted:i,setMounted:j,transitionStatus:g}),[i,g])}])},430309,a=>{"use strict";a.s(["resolveRef",0,function(a){return null==a?a:"current"in a?a.current:a}])},163323,a=>{"use strict";var b;let c=((b={}).startingStyle="data-starting-style",b.endingStyle="data-ending-style",b),d={[c.startingStyle]:""},e={[c.endingStyle]:""};a.s(["TransitionStatusDataAttributes",0,c,"transitionStatusMapping",0,{transitionStatus:a=>"starting"===a?d:"ending"===a?e:null}])},759002,798789,a=>{"use strict";var b=a.i(175391),c=a.i(825863),d=a.i(425422),e=a.i(231845),f=a.i(430309),g=a.i(163323);function h(a,b=!1,i=!0){let j=(0,e.useAnimationFrame)();return(0,c.useStableCallback)((c,e=null)=>{function h(){d.flushSync(c)}j.cancel();let k=(0,f.resolveRef)(a);if(null!=k)if("function"!=typeof k.getAnimations||globalThis.BASE_UI_ANIMATIONS_DISABLED)c();else{function l(){Promise.all(k.getAnimations().map(a=>a.finished)).then(()=>{e?.aborted||h()}).catch(()=>{let a=k.getAnimations();if(i){if(e?.aborted)return;h()}else a.length>0&&a.some(a=>a.pending||"finished"!==a.playState)&&l()})}if(b)return void function(){let a=g.TransitionStatusDataAttributes.startingStyle;if(!k.hasAttribute(a))return j.request(l);let b=new MutationObserver(()=>{k.hasAttribute(a)||(b.disconnect(),l())});b.observe(k,{attributes:!0,attributeFilter:[a]}),e?.addEventListener("abort",()=>b.disconnect(),{once:!0})}();j.request(l)}})}a.s(["useAnimationsFinished",0,h],798789),a.s(["useOpenChangeComplete",0,function(a){let{enabled:d=!0,open:e,ref:f,onComplete:g}=a,i=(0,c.useStableCallback)(g),j=h(f,e,!1);b.useEffect(()=>{if(!d)return;let a=new AbortController;return j(i,a.signal),()=>{a.abort()}},[d,e,i,j])}],759002)},883494,a=>{"use strict";let b=parseInt(a.i(175391).version,10);a.s(["isReactVersionAtLeast",0,function(a){return b>=a}])},971441,a=>{"use strict";var b=a.i(150155);function c(){return{callback:null,cleanup:null,refs:[]}}function d(a,b){if(a.refs=b,b.every(a=>null==a)){a.callback=null;return}a.callback=c=>{if(a.cleanup&&(a.cleanup(),a.cleanup=null),null!=c){let d=Array(b.length).fill(null);for(let a=0;a<b.length;a+=1){let e=b[a];if(null!=e)switch(typeof e){case"function":{let b=e(c);"function"==typeof b&&(d[a]=b);break}case"object":e.current=c}}a.cleanup=()=>{for(let a=0;a<b.length;a+=1){let c=b[a];if(null!=c)switch(typeof c){case"function":{let b=d[a];"function"==typeof b?b():c(null);break}case"object":c.current=null}}}}}}a.s(["useMergedRefs",0,function(a,e,f,g){var h,i,j,k,l;let m=(0,b.useRefWithInit)(c).current;return h=m,i=a,j=e,k=f,l=g,(h.refs[0]!==i||h.refs[1]!==j||h.refs[2]!==k||h.refs[3]!==l)&&d(m,[a,e,f,g]),m.callback},"useMergedRefsN",0,function(a){var e,f;let g=(0,b.useRefWithInit)(c).current;return e=g,f=a,(e.refs.length!==f.length||e.refs.some((a,b)=>a!==f[b]))&&d(g,a),g.callback}])},946870,a=>{"use strict";var b=a.i(175391),c=a.i(883494);a.s(["getReactElementRef",0,function(a){if(!b.isValidElement(a))return null;let d=a.props;return((0,c.isReactVersionAtLeast)(19)?d?.ref:a.ref)??null}])},459399,a=>{"use strict";a.s(["mergeObjects",0,function(a,b){return a&&!b?a:!a&&b?b:a||b?{...a,...b}:void 0}])},230446,669889,76395,313739,a=>{"use strict";a.s(["warn",0,function(){}],230446),a.s(["getStateAttributesProps",0,function(a,b){let c={};for(let d in a){let e=a[d];if(b?.hasOwnProperty(d)){let a=b[d](e);null!=a&&Object.assign(c,a);continue}!0===e?c[`data-${d.toLowerCase()}`]="":e&&(c[`data-${d.toLowerCase()}`]=e.toString())}return c}],669889),a.s(["resolveClassName",0,function(a,b){return"function"==typeof a?a(b):a}],76395),a.s(["resolveStyle",0,function(a,b){return"function"==typeof a?a(b):a}],313739)},293785,a=>{"use strict";var b=a.i(459399);let c={};function d(a,c){return e(c)?c(a):function(a,c){if(!c)return a;for(let d in c){let e=c[d];switch(d){case"style":a[d]=(0,b.mergeObjects)(a.style,e);break;case"className":a[d]=h(a.className,e);break;default:!function(a,b){let c=a.charCodeAt(0),d=a.charCodeAt(1),e=a.charCodeAt(2);return 111===c&&110===d&&e>=65&&e<=90&&("function"==typeof b||void 0===b)}(d,e)?a[d]=e:a[d]=function(a,b){return b?a?c=>{var d;if(null!=(d=c)&&"object"==typeof d&&"nativeEvent"in d){g(c);let d=b(c);return c.baseUIHandlerPrevented||a?.(c),d}let e=b(c);return a?.(c),e}:b:a}(a[d],e)}}return a}(a,c)}function e(a){return"function"==typeof a}function f(a,b){return e(a)?a(b):a??c}function g(a){return a.preventBaseUIHandler=()=>{a.baseUIHandlerPrevented=!0},a}function h(a,b){return b?a?b+" "+a:b:a}a.s(["makeEventPreventable",0,g,"mergeClassNames",0,h,"mergeProps",0,function(a,b,e,g,h){let i={...f(a,c)};return b&&(i=d(i,b)),e&&(i=d(i,e)),g&&(i=d(i,g)),h&&(i=d(i,h)),i},"mergePropsN",0,function(a){if(0===a.length)return c;if(1===a.length)return f(a[0],c);let b={...f(a[0],c)};for(let c=1;c<a.length;c+=1)b=d(b,a[c]);return b}])},256116,a=>{"use strict";var b=a.i(545264),c=a.i(175391),d=a.i(971441),e=a.i(946870),f=a.i(459399);a.i(230446);var g=a.i(669889),h=a.i(76395),i=a.i(313739),j=a.i(293785),k=a.i(302398);let l=Symbol.for("react.lazy");a.s(["useRenderElement",0,function(a,m,n={}){let o=m.render,p=function(a,b={}){let{className:c,style:l,render:m}=a,{state:n=k.EMPTY_OBJECT,ref:o,props:p,stateAttributesMapping:q,enabled:r=!0}=b,s=r?(0,h.resolveClassName)(c,n):void 0,t=r?(0,i.resolveStyle)(l,n):void 0,u=r?(0,g.getStateAttributesProps)(n,q):k.EMPTY_OBJECT,v=r?(0,f.mergeObjects)(u,Array.isArray(p)?(0,j.mergePropsN)(p):p)??k.EMPTY_OBJECT:k.EMPTY_OBJECT;return("u">typeof document&&(r?Array.isArray(o)?v.ref=(0,d.useMergedRefsN)([v.ref,(0,e.getReactElementRef)(m),...o]):v.ref=(0,d.useMergedRefs)(v.ref,(0,e.getReactElementRef)(m),o):(0,d.useMergedRefs)(null,null)),r)?(void 0!==s&&(v.className=(0,j.mergeClassNames)(v.className,s)),void 0!==t&&(v.style=(0,f.mergeObjects)(v.style,t)),v):k.EMPTY_OBJECT}(m,n);return!1===n.enabled?null:function(a,d,e,f){if(d){if("function"==typeof d)return d(e,f);let a=(0,j.mergeProps)(e,d.props);a.ref=e.ref;let b=d;return b?.$$typeof===l&&(b=c.Children.toArray(d)[0]),c.cloneElement(b,a)}if(a&&"string"==typeof a){var g,h;return g=a,h=e,"button"===g?(0,c.createElement)("button",{type:"button",...h,key:h.key}):"img"===g?(0,c.createElement)("img",{alt:"",...h,key:h.key}):c.createElement(g,h)}throw Error((0,b.default)(8))}(a,o,p,n.state??k.EMPTY_OBJECT)}])},128429,a=>{"use strict";var b=a.i(56725);a.s(["useBaseUiId",0,function(a){return(0,b.useId)(a,"base-ui")}])},44585,739220,a=>{"use strict";function b(){for(var a,b,c=0,d="",e=arguments.length;c<e;c++)(a=arguments[c])&&(b=function a(b){var c,d,e="";if("string"==typeof b||"number"==typeof b)e+=b;else if("object"==typeof b)if(Array.isArray(b)){var f=b.length;for(c=0;c<f;c++)b[c]&&(d=a(b[c]))&&(e&&(e+=" "),e+=d)}else for(d in b)b[d]&&(e&&(e+=" "),e+=d);return e}(a))&&(d&&(d+=" "),d+=b);return d}a.s(["clsx",0,b],739220);let c=(a=new Map,b=null,c)=>({nextPart:a,validators:b,classGroupId:c}),d=[],e=(a,b,c)=>{if(0==a.length-b)return c.classGroupId;let d=a[b],f=c.nextPart.get(d);if(f){let c=e(a,b+1,f);if(c)return c}let g=c.validators;if(null===g)return;let h=0===b?a.join("-"):a.slice(b).join("-"),i=g.length;for(let a=0;a<i;a++){let b=g[a];if(b.validator(h))return b.classGroupId}},f=(a,b)=>{let d=c();for(let c in a)g(a[c],d,c,b);return d},g=(a,b,c,d)=>{let e=a.length;for(let f=0;f<e;f++)h(a[f],b,c,d)},h=(a,b,c,d)=>{"string"==typeof a?i(a,b,c):"function"==typeof a?j(a,b,c,d):k(a,b,c,d)},i=(a,b,c)=>{(""===a?b:l(b,a)).classGroupId=c},j=(a,b,c,d)=>{m(a)?g(a(d),b,c,d):(null===b.validators&&(b.validators=[]),b.validators.push({classGroupId:c,validator:a}))},k=(a,b,c,d)=>{let e=Object.entries(a),f=e.length;for(let a=0;a<f;a++){let[f,h]=e[a];g(h,l(b,f),c,d)}},l=(a,b)=>{let d=a,e=b.split("-"),f=e.length;for(let a=0;a<f;a++){let b=e[a],f=d.nextPart.get(b);f||(f=c(),d.nextPart.set(b,f)),d=f}return d},m=a=>"isThemeGetter"in a&&!0===a.isThemeGetter,n=[],o=(a,b,c,d,e)=>({modifiers:a,hasImportantModifier:b,baseClassName:c,maybePostfixModifierPosition:d,isExternal:e}),p=/\s+/,q=a=>{let b;if("string"==typeof a)return a;let c="";for(let d=0;d<a.length;d++)a[d]&&(b=q(a[d]))&&(c&&(c+=" "),c+=b);return c},r=[],s=a=>{let b=b=>b[a]||r;return b.isThemeGetter=!0,b},t=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,u=/^\((?:(\w[\w-]*):)?(.+)\)$/i,v=/^\d+(?:\.\d+)?\/\d+(?:\.\d+)?$/,w=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,x=/\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$/,y=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,z=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,A=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,B=a=>v.test(a),C=a=>!!a&&!Number.isNaN(Number(a)),D=a=>!!a&&Number.isInteger(Number(a)),E=a=>a.endsWith("%")&&C(a.slice(0,-1)),F=a=>w.test(a),G=()=>!0,H=a=>x.test(a)&&!y.test(a),I=()=>!1,J=a=>z.test(a),K=a=>A.test(a),L=a=>!N(a)&&!V(a),M=a=>ab(a,af,I),N=a=>t.test(a),O=a=>ab(a,ag,H),P=a=>ab(a,ah,C),Q=a=>ab(a,aj,G),R=a=>ab(a,ai,I),S=a=>ab(a,ad,I),T=a=>ab(a,ae,K),U=a=>ab(a,ak,J),V=a=>u.test(a),W=a=>ac(a,ag),X=a=>ac(a,ai),Y=a=>ac(a,ad),Z=a=>ac(a,af),$=a=>ac(a,ae),_=a=>ac(a,ak,!0),aa=a=>ac(a,aj,!0),ab=(a,b,c)=>{let d=t.exec(a);return!!d&&(d[1]?b(d[1]):c(d[2]))},ac=(a,b,c=!1)=>{let d=u.exec(a);return!!d&&(d[1]?b(d[1]):c)},ad=a=>"position"===a||"percentage"===a,ae=a=>"image"===a||"url"===a,af=a=>"length"===a||"size"===a||"bg-size"===a,ag=a=>"length"===a,ah=a=>"number"===a,ai=a=>"family-name"===a,aj=a=>"number"===a||"weight"===a,ak=a=>"shadow"===a,al=((a,...b)=>{let c,g,h,i,j=a=>{let b=g(a);if(b)return b;let d=((a,b)=>{let{parseClassName:c,getClassGroupId:d,getConflictingClassGroupIds:e,sortModifiers:f}=b,g=[],h=a.trim().split(p),i="";for(let a=h.length-1;a>=0;a-=1){let b=h[a],{isExternal:j,modifiers:k,hasImportantModifier:l,baseClassName:m,maybePostfixModifierPosition:n}=c(b);if(j){i=b+(i.length>0?" "+i:i);continue}let o=!!n,p=d(o?m.substring(0,n):m);if(!p){if(!o||!(p=d(m))){i=b+(i.length>0?" "+i:i);continue}o=!1}let q=0===k.length?"":1===k.length?k[0]:f(k).join(":"),r=l?q+"!":q,s=r+p;if(g.indexOf(s)>-1)continue;g.push(s);let t=e(p,o);for(let a=0;a<t.length;++a){let b=t[a];g.push(r+b)}i=b+(i.length>0?" "+i:i)}return i})(a,c);return h(a,d),d};return i=k=>{var l;let m;return g=(c={cache:(a=>{if(a<1)return{get:()=>void 0,set:()=>{}};let b=0,c=Object.create(null),d=Object.create(null),e=(e,f)=>{c[e]=f,++b>a&&(b=0,d=c,c=Object.create(null))};return{get(a){let b=c[a];return void 0!==b?b:void 0!==(b=d[a])?(e(a,b),b):void 0},set(a,b){a in c?c[a]=b:e(a,b)}}})((l=b.reduce((a,b)=>b(a),a())).cacheSize),parseClassName:(a=>{let{prefix:b,experimentalParseClassName:c}=a,d=a=>{let b,c=[],d=0,e=0,f=0,g=a.length;for(let h=0;h<g;h++){let g=a[h];if(0===d&&0===e){if(":"===g){c.push(a.slice(f,h)),f=h+1;continue}if("/"===g){b=h;continue}}"["===g?d++:"]"===g?d--:"("===g?e++:")"===g&&e--}let h=0===c.length?a:a.slice(f),i=h,j=!1;return h.endsWith("!")?(i=h.slice(0,-1),j=!0):h.startsWith("!")&&(i=h.slice(1),j=!0),o(c,j,i,b&&b>f?b-f:void 0)};if(b){let a=b+":",c=d;d=b=>b.startsWith(a)?c(b.slice(a.length)):o(n,!1,b,void 0,!0)}if(c){let a=d;d=b=>c({className:b,parseClassName:a})}return d})(l),sortModifiers:(m=new Map,l.orderSensitiveModifiers.forEach((a,b)=>{m.set(a,1e6+b)}),a=>{let b=[],c=[];for(let d=0;d<a.length;d++){let e=a[d],f="["===e[0],g=m.has(e);f||g?(c.length>0&&(c.sort(),b.push(...c),c=[]),b.push(e)):c.push(e)}return c.length>0&&(c.sort(),b.push(...c)),b}),...(a=>{let b=(a=>{let{theme:b,classGroups:c}=a;return f(c,b)})(a),{conflictingClassGroups:c,conflictingClassGroupModifiers:g}=a;return{getClassGroupId:a=>{if(a.startsWith("[")&&a.endsWith("]")){var c;let b,d,e;return -1===(c=a).slice(1,-1).indexOf(":")?void 0:(d=(b=c.slice(1,-1)).indexOf(":"),(e=b.slice(0,d))?"arbitrary.."+e:void 0)}let d=a.split("-"),f=+(""===d[0]&&d.length>1);return e(d,f,b)},getConflictingClassGroupIds:(a,b)=>{if(b){let b=g[a],e=c[a];if(b){if(e){let a=Array(e.length+b.length);for(let b=0;b<e.length;b++)a[b]=e[b];for(let c=0;c<b.length;c++)a[e.length+c]=b[c];return a}return b}return e||d}return c[a]||d}}})(l)}).cache.get,h=c.cache.set,i=j,j(k)},(...a)=>i(((...a)=>{let b,c,d=0,e="";for(;d<a.length;)(b=a[d++])&&(c=q(b))&&(e&&(e+=" "),e+=c);return e})(...a))})(()=>{let a=s("color"),b=s("font"),c=s("text"),d=s("font-weight"),e=s("tracking"),f=s("leading"),g=s("breakpoint"),h=s("container"),i=s("spacing"),j=s("radius"),k=s("shadow"),l=s("inset-shadow"),m=s("text-shadow"),n=s("drop-shadow"),o=s("blur"),p=s("perspective"),q=s("aspect"),r=s("ease"),t=s("animate"),u=()=>["auto","avoid","all","avoid-page","page","left","right","column"],v=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],w=()=>[...v(),V,N],x=()=>["auto","hidden","clip","visible","scroll"],y=()=>["auto","contain","none"],z=()=>[V,N,i],A=()=>[B,"full","auto",...z()],H=()=>[D,"none","subgrid",V,N],I=()=>["auto",{span:["full",D,V,N]},D,V,N],J=()=>[D,"auto",V,N],K=()=>["auto","min","max","fr",V,N],ab=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],ac=()=>["start","end","center","stretch","center-safe","end-safe"],ad=()=>["auto",...z()],ae=()=>[B,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...z()],af=()=>[B,"screen","full","dvw","lvw","svw","min","max","fit",...z()],ag=()=>[B,"screen","full","lh","dvh","lvh","svh","min","max","fit",...z()],ah=()=>[a,V,N],ai=()=>[...v(),Y,S,{position:[V,N]}],aj=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ak=()=>["auto","cover","contain",Z,M,{size:[V,N]}],al=()=>[E,W,O],am=()=>["","none","full",j,V,N],an=()=>["",C,W,O],ao=()=>["solid","dashed","dotted","double"],ap=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],aq=()=>[C,E,Y,S],ar=()=>["","none",o,V,N],as=()=>["none",C,V,N],at=()=>["none",C,V,N],au=()=>[C,V,N],av=()=>[B,"full",...z()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[F],breakpoint:[F],color:[G],container:[F],"drop-shadow":[F],ease:["in","out","in-out"],font:[L],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[F],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[F],shadow:[F],spacing:["px",C],text:[F],"text-shadow":[F],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",B,N,V,q]}],container:["container"],columns:[{columns:[C,N,V,h]}],"break-after":[{"break-after":u()}],"break-before":[{"break-before":u()}],"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:w()}],overflow:[{overflow:x()}],"overflow-x":[{"overflow-x":x()}],"overflow-y":[{"overflow-y":x()}],overscroll:[{overscroll:y()}],"overscroll-x":[{"overscroll-x":y()}],"overscroll-y":[{"overscroll-y":y()}],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:[D,"auto",V,N]}],basis:[{basis:[B,"full","auto",h,...z()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[C,B,"auto","initial","none",N]}],grow:[{grow:["",C,V,N]}],shrink:[{shrink:["",C,V,N]}],order:[{order:[D,"first","last","none",V,N]}],"grid-cols":[{"grid-cols":H()}],"col-start-end":[{col:I()}],"col-start":[{"col-start":J()}],"col-end":[{"col-end":J()}],"grid-rows":[{"grid-rows":H()}],"row-start-end":[{row:I()}],"row-start":[{"row-start":J()}],"row-end":[{"row-end":J()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":K()}],"auto-rows":[{"auto-rows":K()}],gap:[{gap:z()}],"gap-x":[{"gap-x":z()}],"gap-y":[{"gap-y":z()}],"justify-content":[{justify:[...ab(),"normal"]}],"justify-items":[{"justify-items":[...ac(),"normal"]}],"justify-self":[{"justify-self":["auto",...ac()]}],"align-content":[{content:["normal",...ab()]}],"align-items":[{items:[...ac(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...ac(),{baseline:["","last"]}]}],"place-content":[{"place-content":ab()}],"place-items":[{"place-items":[...ac(),"baseline"]}],"place-self":[{"place-self":["auto",...ac()]}],p:[{p:z()}],px:[{px:z()}],py:[{py:z()}],ps:[{ps:z()}],pe:[{pe:z()}],pbs:[{pbs:z()}],pbe:[{pbe:z()}],pt:[{pt:z()}],pr:[{pr:z()}],pb:[{pb:z()}],pl:[{pl:z()}],m:[{m:ad()}],mx:[{mx:ad()}],my:[{my:ad()}],ms:[{ms:ad()}],me:[{me:ad()}],mbs:[{mbs:ad()}],mbe:[{mbe:ad()}],mt:[{mt:ad()}],mr:[{mr:ad()}],mb:[{mb:ad()}],ml:[{ml:ad()}],"space-x":[{"space-x":z()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":z()}],"space-y-reverse":["space-y-reverse"],size:[{size:ae()}],"inline-size":[{inline:["auto",...af()]}],"min-inline-size":[{"min-inline":["auto",...af()]}],"max-inline-size":[{"max-inline":["none",...af()]}],"block-size":[{block:["auto",...ag()]}],"min-block-size":[{"min-block":["auto",...ag()]}],"max-block-size":[{"max-block":["none",...ag()]}],w:[{w:[h,"screen",...ae()]}],"min-w":[{"min-w":[h,"screen","none",...ae()]}],"max-w":[{"max-w":[h,"screen","none","prose",{screen:[g]},...ae()]}],h:[{h:["screen","lh",...ae()]}],"min-h":[{"min-h":["screen","lh","none",...ae()]}],"max-h":[{"max-h":["screen","lh",...ae()]}],"font-size":[{text:["base",c,W,O]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[d,aa,Q]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",E,N]}],"font-family":[{font:[X,R,b]}],"font-features":[{"font-features":[N]}],"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:[e,V,N]}],"line-clamp":[{"line-clamp":[C,"none",V,P]}],leading:[{leading:[f,...z()]}],"list-image":[{"list-image":["none",V,N]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",V,N]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:ah()}],"text-color":[{text:ah()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ao(),"wavy"]}],"text-decoration-thickness":[{decoration:[C,"from-font","auto",V,O]}],"text-decoration-color":[{decoration:ah()}],"underline-offset":[{"underline-offset":[C,"auto",V,N]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:z()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",V,N]}],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",V,N]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:ai()}],"bg-repeat":[{bg:aj()}],"bg-size":[{bg:ak()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},D,V,N],radial:["",V,N],conic:[D,V,N]},$,T]}],"bg-color":[{bg:ah()}],"gradient-from-pos":[{from:al()}],"gradient-via-pos":[{via:al()}],"gradient-to-pos":[{to:al()}],"gradient-from":[{from:ah()}],"gradient-via":[{via:ah()}],"gradient-to":[{to:ah()}],rounded:[{rounded:am()}],"rounded-s":[{"rounded-s":am()}],"rounded-e":[{"rounded-e":am()}],"rounded-t":[{"rounded-t":am()}],"rounded-r":[{"rounded-r":am()}],"rounded-b":[{"rounded-b":am()}],"rounded-l":[{"rounded-l":am()}],"rounded-ss":[{"rounded-ss":am()}],"rounded-se":[{"rounded-se":am()}],"rounded-ee":[{"rounded-ee":am()}],"rounded-es":[{"rounded-es":am()}],"rounded-tl":[{"rounded-tl":am()}],"rounded-tr":[{"rounded-tr":am()}],"rounded-br":[{"rounded-br":am()}],"rounded-bl":[{"rounded-bl":am()}],"border-w":[{border:an()}],"border-w-x":[{"border-x":an()}],"border-w-y":[{"border-y":an()}],"border-w-s":[{"border-s":an()}],"border-w-e":[{"border-e":an()}],"border-w-bs":[{"border-bs":an()}],"border-w-be":[{"border-be":an()}],"border-w-t":[{"border-t":an()}],"border-w-r":[{"border-r":an()}],"border-w-b":[{"border-b":an()}],"border-w-l":[{"border-l":an()}],"divide-x":[{"divide-x":an()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":an()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ao(),"hidden","none"]}],"divide-style":[{divide:[...ao(),"hidden","none"]}],"border-color":[{border:ah()}],"border-color-x":[{"border-x":ah()}],"border-color-y":[{"border-y":ah()}],"border-color-s":[{"border-s":ah()}],"border-color-e":[{"border-e":ah()}],"border-color-bs":[{"border-bs":ah()}],"border-color-be":[{"border-be":ah()}],"border-color-t":[{"border-t":ah()}],"border-color-r":[{"border-r":ah()}],"border-color-b":[{"border-b":ah()}],"border-color-l":[{"border-l":ah()}],"divide-color":[{divide:ah()}],"outline-style":[{outline:[...ao(),"none","hidden"]}],"outline-offset":[{"outline-offset":[C,V,N]}],"outline-w":[{outline:["",C,W,O]}],"outline-color":[{outline:ah()}],shadow:[{shadow:["","none",k,_,U]}],"shadow-color":[{shadow:ah()}],"inset-shadow":[{"inset-shadow":["none",l,_,U]}],"inset-shadow-color":[{"inset-shadow":ah()}],"ring-w":[{ring:an()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:ah()}],"ring-offset-w":[{"ring-offset":[C,O]}],"ring-offset-color":[{"ring-offset":ah()}],"inset-ring-w":[{"inset-ring":an()}],"inset-ring-color":[{"inset-ring":ah()}],"text-shadow":[{"text-shadow":["none",m,_,U]}],"text-shadow-color":[{"text-shadow":ah()}],opacity:[{opacity:[C,V,N]}],"mix-blend":[{"mix-blend":[...ap(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ap()}],"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":[C]}],"mask-image-linear-from-pos":[{"mask-linear-from":aq()}],"mask-image-linear-to-pos":[{"mask-linear-to":aq()}],"mask-image-linear-from-color":[{"mask-linear-from":ah()}],"mask-image-linear-to-color":[{"mask-linear-to":ah()}],"mask-image-t-from-pos":[{"mask-t-from":aq()}],"mask-image-t-to-pos":[{"mask-t-to":aq()}],"mask-image-t-from-color":[{"mask-t-from":ah()}],"mask-image-t-to-color":[{"mask-t-to":ah()}],"mask-image-r-from-pos":[{"mask-r-from":aq()}],"mask-image-r-to-pos":[{"mask-r-to":aq()}],"mask-image-r-from-color":[{"mask-r-from":ah()}],"mask-image-r-to-color":[{"mask-r-to":ah()}],"mask-image-b-from-pos":[{"mask-b-from":aq()}],"mask-image-b-to-pos":[{"mask-b-to":aq()}],"mask-image-b-from-color":[{"mask-b-from":ah()}],"mask-image-b-to-color":[{"mask-b-to":ah()}],"mask-image-l-from-pos":[{"mask-l-from":aq()}],"mask-image-l-to-pos":[{"mask-l-to":aq()}],"mask-image-l-from-color":[{"mask-l-from":ah()}],"mask-image-l-to-color":[{"mask-l-to":ah()}],"mask-image-x-from-pos":[{"mask-x-from":aq()}],"mask-image-x-to-pos":[{"mask-x-to":aq()}],"mask-image-x-from-color":[{"mask-x-from":ah()}],"mask-image-x-to-color":[{"mask-x-to":ah()}],"mask-image-y-from-pos":[{"mask-y-from":aq()}],"mask-image-y-to-pos":[{"mask-y-to":aq()}],"mask-image-y-from-color":[{"mask-y-from":ah()}],"mask-image-y-to-color":[{"mask-y-to":ah()}],"mask-image-radial":[{"mask-radial":[V,N]}],"mask-image-radial-from-pos":[{"mask-radial-from":aq()}],"mask-image-radial-to-pos":[{"mask-radial-to":aq()}],"mask-image-radial-from-color":[{"mask-radial-from":ah()}],"mask-image-radial-to-color":[{"mask-radial-to":ah()}],"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":v()}],"mask-image-conic-pos":[{"mask-conic":[C]}],"mask-image-conic-from-pos":[{"mask-conic-from":aq()}],"mask-image-conic-to-pos":[{"mask-conic-to":aq()}],"mask-image-conic-from-color":[{"mask-conic-from":ah()}],"mask-image-conic-to-color":[{"mask-conic-to":ah()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:ai()}],"mask-repeat":[{mask:aj()}],"mask-size":[{mask:ak()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",V,N]}],filter:[{filter:["","none",V,N]}],blur:[{blur:ar()}],brightness:[{brightness:[C,V,N]}],contrast:[{contrast:[C,V,N]}],"drop-shadow":[{"drop-shadow":["","none",n,_,U]}],"drop-shadow-color":[{"drop-shadow":ah()}],grayscale:[{grayscale:["",C,V,N]}],"hue-rotate":[{"hue-rotate":[C,V,N]}],invert:[{invert:["",C,V,N]}],saturate:[{saturate:[C,V,N]}],sepia:[{sepia:["",C,V,N]}],"backdrop-filter":[{"backdrop-filter":["","none",V,N]}],"backdrop-blur":[{"backdrop-blur":ar()}],"backdrop-brightness":[{"backdrop-brightness":[C,V,N]}],"backdrop-contrast":[{"backdrop-contrast":[C,V,N]}],"backdrop-grayscale":[{"backdrop-grayscale":["",C,V,N]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[C,V,N]}],"backdrop-invert":[{"backdrop-invert":["",C,V,N]}],"backdrop-opacity":[{"backdrop-opacity":[C,V,N]}],"backdrop-saturate":[{"backdrop-saturate":[C,V,N]}],"backdrop-sepia":[{"backdrop-sepia":["",C,V,N]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":z()}],"border-spacing-x":[{"border-spacing-x":z()}],"border-spacing-y":[{"border-spacing-y":z()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",V,N]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[C,"initial",V,N]}],ease:[{ease:["linear","initial",r,V,N]}],delay:[{delay:[C,V,N]}],animate:[{animate:["none",t,V,N]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[p,V,N]}],"perspective-origin":[{"perspective-origin":w()}],rotate:[{rotate:as()}],"rotate-x":[{"rotate-x":as()}],"rotate-y":[{"rotate-y":as()}],"rotate-z":[{"rotate-z":as()}],scale:[{scale:at()}],"scale-x":[{"scale-x":at()}],"scale-y":[{"scale-y":at()}],"scale-z":[{"scale-z":at()}],"scale-3d":["scale-3d"],skew:[{skew:au()}],"skew-x":[{"skew-x":au()}],"skew-y":[{"skew-y":au()}],transform:[{transform:[V,N,"","none","gpu","cpu"]}],"transform-origin":[{origin:w()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:av()}],"translate-x":[{"translate-x":av()}],"translate-y":[{"translate-y":av()}],"translate-z":[{"translate-z":av()}],"translate-none":["translate-none"],accent:[{accent:ah()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:ah()}],"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",V,N]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":z()}],"scroll-mx":[{"scroll-mx":z()}],"scroll-my":[{"scroll-my":z()}],"scroll-ms":[{"scroll-ms":z()}],"scroll-me":[{"scroll-me":z()}],"scroll-mbs":[{"scroll-mbs":z()}],"scroll-mbe":[{"scroll-mbe":z()}],"scroll-mt":[{"scroll-mt":z()}],"scroll-mr":[{"scroll-mr":z()}],"scroll-mb":[{"scroll-mb":z()}],"scroll-ml":[{"scroll-ml":z()}],"scroll-p":[{"scroll-p":z()}],"scroll-px":[{"scroll-px":z()}],"scroll-py":[{"scroll-py":z()}],"scroll-ps":[{"scroll-ps":z()}],"scroll-pe":[{"scroll-pe":z()}],"scroll-pbs":[{"scroll-pbs":z()}],"scroll-pbe":[{"scroll-pbe":z()}],"scroll-pt":[{"scroll-pt":z()}],"scroll-pr":[{"scroll-pr":z()}],"scroll-pb":[{"scroll-pb":z()}],"scroll-pl":[{"scroll-pl":z()}],"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",V,N]}],fill:[{fill:["none",...ah()]}],"stroke-w":[{stroke:[C,W,O,P]}],stroke:[{stroke:["none",...ah()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{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"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}});a.s(["cn",0,function(...a){return al(b(a))},"formatRelativeTime",0,function(a){let b=Date.now()-a.getTime(),c=Math.floor(b/6e4),d=Math.floor(b/36e5),e=Math.floor(b/864e5);return c<1?"刚刚":c<60?`${c}分钟前`:d<24?`${d}小时前`:e<30?`${e}天前`:a.toLocaleDateString("zh-CN")}],44585)},73388,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DEFAULT_SEGMENT_KEY:function(){return l},NOT_FOUND_SEGMENT_KEY:function(){return m},PAGE_SEGMENT_KEY:function(){return k},addSearchParamsIfPageSegment:function(){return i},computeSelectedLayoutSegment:function(){return j},getSegmentValue:function(){return f},getSelectedLayoutSegmentPath:function(){return function a(b,c,d=!0,e=[]){let g;if(d)g=b[1][c];else{let a=b[1];g=a.children??Object.values(a)[0]}if(!g)return e;let h=f(g[0]);return!h||h.startsWith(k)?e:(e.push(h),a(g,c,!1,e))}},isGroupSegment:function(){return g},isParallelRouteSegment:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});function f(a){return Array.isArray(a)?a[1]:a}function g(a){return"("===a[0]&&a.endsWith(")")}function h(a){return a.startsWith("@")&&"@children"!==a}function i(a,b){if(a.includes(k)){let a=JSON.stringify(b);return"{}"!==a?k+"?"+a:k}return a}function j(a,b){if(!a||0===a.length)return null;let c="children"===b?a[0]:a[a.length-1];return c===l?null:c}let k="__PAGE__",l="__DEFAULT__",m="/_not-found"},408504,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={UnrecognizedActionError:function(){return f},unstable_isUnrecognizedActionError:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});class f extends Error{constructor(...a){super(...a),this.name="UnrecognizedActionError"}}function g(a){return!!(a&&"object"==typeof a&&a instanceof f)}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},156677,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return e}});class d extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class e extends URLSearchParams{append(){throw new d}delete(){throw new d}set(){throw new d}sort(){throw new d}}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},220603,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"RedirectStatusCode",{enumerable:!0,get:function(){return e}});var d,e=((d={})[d.SeeOther=303]="SeeOther",d[d.TemporaryRedirect=307]="TemporaryRedirect",d[d.PermanentRedirect=308]="PermanentRedirect",d);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},799808,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={REDIRECT_ERROR_CODE:function(){return g},isRedirectError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(220603),g="NEXT_REDIRECT";function h(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let b=a.digest.split(";"),[c,d]=b,e=b.slice(2,-2).join(";"),h=Number(b.at(-2));return c===g&&("replace"===d||"push"===d)&&"string"==typeof e&&!isNaN(h)&&h in f.RedirectStatusCode}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},560583,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={getRedirectError:function(){return i},getRedirectStatusCodeFromError:function(){return n},getRedirectTypeFromError:function(){return m},getURLFromRedirectError:function(){return l},permanentRedirect:function(){return k},redirect:function(){return j}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(220603),g=a.r(799808),h=a.r(120635).actionAsyncStorage;function i(a,b,c=f.RedirectStatusCode.TemporaryRedirect){let d=Object.defineProperty(Error(g.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return d.digest=`${g.REDIRECT_ERROR_CODE};${b};${a};${c};`,d}function j(a,b){throw i(a,b??=h?.getStore()?.isAction?"push":"replace",f.RedirectStatusCode.TemporaryRedirect)}function k(a,b="replace"){throw i(a,b,f.RedirectStatusCode.PermanentRedirect)}function l(a){return(0,g.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function m(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function n(a){if(!(0,g.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},495476,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={HTTPAccessErrorStatus:function(){return f},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return h},getAccessFallbackErrorTypeByStatus:function(){return k},getAccessFallbackHTTPStatus:function(){return j},isHTTPAccessFallbackError:function(){return i}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},g=new Set(Object.values(f)),h="NEXT_HTTP_ERROR_FALLBACK";function i(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,c]=a.digest.split(";");return b===h&&g.has(Number(c))}function j(a){return Number(a.digest.split(";")[1])}function k(a){switch(a){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},213730,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"notFound",{enumerable:!0,get:function(){return f}});let d=a.r(495476),e=`${d.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function f(){let a=Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw a.digest=e,a}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},269038,(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"forbidden",{enumerable:!0,get:function(){return d}}),a.r(495476).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},369916,(a,b,c)=>{"use strict";function d(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unauthorized",{enumerable:!0,get:function(){return d}}),a.r(495476).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},432660,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"InvariantError",{enumerable:!0,get:function(){return d}});class d extends Error{constructor(a,b){super(`Invariant: ${a.endsWith(".")?a:a+"."} This is a bug in Next.js.`,b),this.name="InvariantError"}}},465952,(a,b,c)=>{"use strict";function d(){let a,b,c=new Promise((c,d)=>{a=c,b=d});return{resolve:a,reject:b,promise:c}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"createPromiseWithResolvers",{enumerable:!0,get:function(){return d}})},635356,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e={RenderStage:function(){return i},StagedRenderingController:function(){return j}};for(var f in e)Object.defineProperty(c,f,{enumerable:!0,get:e[f]});let g=a.r(432660),h=a.r(465952);var i=((d={})[d.Before=1]="Before",d[d.EarlyStatic=2]="EarlyStatic",d[d.Static=3]="Static",d[d.EarlyRuntime=4]="EarlyRuntime",d[d.Runtime=5]="Runtime",d[d.Dynamic=6]="Dynamic",d[d.Abandoned=7]="Abandoned",d);class j{constructor(a,b,c){this.abortSignal=a,this.abandonController=b,this.shouldTrackSyncIO=c,this.currentStage=1,this.syncInterruptReason=null,this.staticStageEndTime=1/0,this.runtimeStageEndTime=1/0,this.staticStageListeners=[],this.earlyRuntimeStageListeners=[],this.runtimeStageListeners=[],this.dynamicStageListeners=[],this.staticStagePromise=(0,h.createPromiseWithResolvers)(),this.earlyRuntimeStagePromise=(0,h.createPromiseWithResolvers)(),this.runtimeStagePromise=(0,h.createPromiseWithResolvers)(),this.dynamicStagePromise=(0,h.createPromiseWithResolvers)(),a&&a.addEventListener("abort",()=>{let{reason:b}=a;this.staticStagePromise.promise.catch(k),this.staticStagePromise.reject(b),this.earlyRuntimeStagePromise.promise.catch(k),this.earlyRuntimeStagePromise.reject(b),this.runtimeStagePromise.promise.catch(k),this.runtimeStagePromise.reject(b),this.dynamicStagePromise.promise.catch(k),this.dynamicStagePromise.reject(b)},{once:!0}),b&&b.signal.addEventListener("abort",()=>{this.abandonRender()},{once:!0})}onStage(a,b){if(this.currentStage>=a)b();else if(3===a)this.staticStageListeners.push(b);else if(4===a)this.earlyRuntimeStageListeners.push(b);else if(5===a)this.runtimeStageListeners.push(b);else if(6===a)this.dynamicStageListeners.push(b);else throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}shouldTrackSyncInterrupt(){if(!this.shouldTrackSyncIO)return!1;switch(this.currentStage){case 1:case 5:case 6:case 7:default:return!1;case 2:case 3:case 4:return!0}}syncInterruptCurrentStageWithReason(a){if(1!==this.currentStage&&7!==this.currentStage){if(this.abandonController)return void this.abandonController.abort();if(this.abortSignal){this.syncInterruptReason=a,this.currentStage=7;return}switch(this.currentStage){case 2:case 3:case 4:this.syncInterruptReason=a,this.advanceStage(6);return;case 5:return}}}getSyncInterruptReason(){return this.syncInterruptReason}getStaticStageEndTime(){return this.staticStageEndTime}getRuntimeStageEndTime(){return this.runtimeStageEndTime}abandonRender(){let{currentStage:a}=this;switch(a){case 2:this.resolveStaticStage();case 3:this.resolveEarlyRuntimeStage();case 4:this.resolveRuntimeStage();case 5:this.currentStage=7;return}}advanceStage(a){if(a<=this.currentStage)return;let b=this.currentStage;if(this.currentStage=a,b<3&&a>=3&&this.resolveStaticStage(),b<4&&a>=4&&this.resolveEarlyRuntimeStage(),b<5&&a>=5&&(this.staticStageEndTime=performance.now()+performance.timeOrigin,this.resolveRuntimeStage()),b<6&&a>=6){this.runtimeStageEndTime=performance.now()+performance.timeOrigin,this.resolveDynamicStage();return}}resolveStaticStage(){let a=this.staticStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.staticStagePromise.resolve()}resolveEarlyRuntimeStage(){let a=this.earlyRuntimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.earlyRuntimeStagePromise.resolve()}resolveRuntimeStage(){let a=this.runtimeStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.runtimeStagePromise.resolve()}resolveDynamicStage(){let a=this.dynamicStageListeners;for(let b=0;b<a.length;b++)a[b]();a.length=0,this.dynamicStagePromise.resolve()}getStagePromise(a){switch(a){case 3:return this.staticStagePromise.promise;case 4:return this.earlyRuntimeStagePromise.promise;case 5:return this.runtimeStagePromise.promise;case 6:return this.dynamicStagePromise.promise;default:throw Object.defineProperty(new g.InvariantError(`Invalid render stage: ${a}`),"__NEXT_ERROR_CODE",{value:"E881",enumerable:!1,configurable:!0})}}waitForStage(a){return this.getStagePromise(a)}delayUntilStage(a,b,c){var d,e,f;let g,h=(d=this.getStagePromise(a),e=b,f=c,g=new Promise((a,b)=>{d.then(a.bind(null,f),b)}),void 0!==e&&(g.displayName=e),g);return this.abortSignal&&h.catch(k),h}}function k(){}},418803,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={delayUntilRuntimeStage:function(){return o},getRuntimeStage:function(){return n},isHangingPromiseRejectionError:function(){return g},makeDevtoolsIOAwarePromise:function(){return m},makeHangingPromise:function(){return k}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(635356);function g(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===h}let h="HANGING_PROMISE_REJECTION";class i extends Error{constructor(a,b){super(`During prerendering, ${b} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${b} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${a}".`),this.route=a,this.expression=b,this.digest=h}}let j=new WeakMap;function k(a,b,c){if(a.aborted)return Promise.reject(new i(b,c));{let d=new Promise((d,e)=>{let f=e.bind(null,new i(b,c)),g=j.get(a);if(g)g.push(f);else{let b=[f];j.set(a,b),a.addEventListener("abort",()=>{for(let a=0;a<b.length;a++)b[a]()},{once:!0})}});return d.catch(l),d}}function l(){}function m(a,b,c){return b.stagedRendering?b.stagedRendering.delayUntilStage(c,void 0,a):new Promise(b=>{setTimeout(()=>{b(a)},0)})}function n(a){return a.currentStage===f.RenderStage.EarlyStatic||a.currentStage===f.RenderStage.EarlyRuntime?f.RenderStage.EarlyRuntime:f.RenderStage.Runtime}function o(a,b){let{stagedRendering:c}=a;return c?c.waitForStage(n(c)).then(()=>b):b}},737484,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isPostpone",{enumerable:!0,get:function(){return e}});let d=Symbol.for("react.postpone");function e(a){return"object"==typeof a&&null!==a&&a.$$typeof===d}},297781,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={BailoutToCSRError:function(){return g},isBailoutToCSRError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="BAILOUT_TO_CLIENT_SIDE_RENDERING";class g extends Error{constructor(a){super(`Bail out to client-side rendering: ${a}`),this.reason=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===f}},194899,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isNextRouterError",{enumerable:!0,get:function(){return f}});let d=a.r(495476),e=a.r(799808);function f(a){return(0,e.isRedirectError)(a)||(0,d.isHTTPAccessFallbackError)(a)}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},773034,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={DynamicServerError:function(){return g},isDynamicServerError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="DYNAMIC_SERVER_USAGE";class g extends Error{constructor(a){super(`Dynamic server usage: ${a}`),this.description=a,this.digest=f}}function h(a){return"object"==typeof a&&null!==a&&"digest"in a&&"string"==typeof a.digest&&a.digest===f}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},58143,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={StaticGenBailoutError:function(){return g},isStaticGenBailoutError:function(){return h}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="NEXT_STATIC_GEN_BAILOUT";class g extends Error{constructor(...a){super(...a),this.code=f}}function h(a){return"object"==typeof a&&null!==a&&"code"in a&&a.code===f}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},192878,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={METADATA_BOUNDARY_NAME:function(){return f},OUTLET_BOUNDARY_NAME:function(){return h},ROOT_LAYOUT_BOUNDARY_NAME:function(){return i},VIEWPORT_BOUNDARY_NAME:function(){return g}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f="__next_metadata_boundary__",g="__next_viewport_boundary__",h="__next_outlet_boundary__",i="__next_root_layout_boundary__"},226800,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={atLeastOneTask:function(){return h},scheduleImmediate:function(){return g},scheduleOnNextTick:function(){return f},waitAtLeastOneReactRenderTask:function(){return i}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a=>{Promise.resolve().then(()=>{process.nextTick(a)})},g=a=>{setImmediate(a)};function h(){return new Promise(a=>g(a))}function i(){return new Promise(a=>setImmediate(a))}},114937,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"INSTANT_VALIDATION_BOUNDARY_NAME",{enumerable:!0,get:function(){return d}});let d="__next_instant_validation_boundary__"},382114,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d,e,f,g={DynamicHoleKind:function(){return $},Postpone:function(){return D},PreludeState:function(){return af},abortAndThrowOnSynchronousRequestDataAccess:function(){return C},abortOnSynchronousPlatformIOAccess:function(){return B},accessedDynamicData:function(){return L},annotateDynamicAccess:function(){return Q},consumeDynamicAccess:function(){return M},createDynamicTrackingState:function(){return u},createDynamicValidationState:function(){return v},createHangingInputAbortSignal:function(){return P},createInstantValidationState:function(){return _},createRenderInBrowserAbortSignal:function(){return O},formatDynamicAPIAccesses:function(){return N},getFirstDynamicReason:function(){return w},getNavigationDisallowedDynamicReasons:function(){return aj},getStaticShellDisallowedDynamicReasons:function(){return ai},isDynamicPostpone:function(){return G},isPrerenderInterruptedError:function(){return K},logDisallowedDynamicError:function(){return ag},markCurrentScopeAsDynamic:function(){return x},postponeWithTracking:function(){return E},throwIfDisallowedDynamic:function(){return ah},throwToInterruptStaticGeneration:function(){return y},trackAllowedDynamicAccess:function(){return Z},trackDynamicDataInDynamicRender:function(){return z},trackDynamicHoleInNavigation:function(){return aa},trackDynamicHoleInRuntimeShell:function(){return ac},trackDynamicHoleInStaticShell:function(){return ad},trackThrownErrorInNavigation:function(){return ab},useDynamicRouteParams:function(){return R},useDynamicSearchParams:function(){return S}};for(var h in g)Object.defineProperty(c,h,{enumerable:!0,get:g[h]});let i=(d=a.r(175391))&&d.__esModule?d:{default:d},j=a.r(773034),k=a.r(58143),l=a.r(832319),m=a.r(556704),n=a.r(418803),o=a.r(192878),p=a.r(226800),q=a.r(297781),r=a.r(432660),s=a.r(114937),t="function"==typeof i.default.unstable_postpone;function u(a){return{isDebugDynamicAccesses:a,dynamicAccesses:[],syncDynamicErrorWithStack:null}}function v(){return{hasSuspenseAboveBody:!1,hasDynamicMetadata:!1,dynamicMetadata:null,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[]}}function w(a){var b;return null==(b=a.dynamicAccesses[0])?void 0:b.expression}function x(a,b,c){if(b)switch(b.type){case"cache":case"unstable-cache":case"private-cache":return}if(!a.forceDynamic&&!a.forceStatic){if(a.dynamicShouldError)throw Object.defineProperty(new k.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${c}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(b)switch(b.type){case"prerender-ppr":return E(a.route,c,b.dynamicTracking);case"prerender-legacy":b.revalidate=0;let d=Object.defineProperty(new j.DynamicServerError(`Route ${a.route} couldn't be rendered statically because it used ${c}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E550",enumerable:!1,configurable:!0});throw a.dynamicUsageDescription=c,a.dynamicUsageStack=d.stack,d}}}function y(a,b,c){let d=Object.defineProperty(new j.DynamicServerError(`Route ${b.route} couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,configurable:!0});throw c.revalidate=0,b.dynamicUsageDescription=a,b.dynamicUsageStack=d.stack,d}function z(a){switch(a.type){case"cache":case"unstable-cache":case"private-cache":return}}function A(a,b,c){let d=J(`Route ${a} needs to bail out of prerendering at this point because it used ${b}.`);c.controller.abort(d);let e=c.dynamicTracking;e&&e.dynamicAccesses.push({stack:e.isDebugDynamicAccesses?Error().stack:void 0,expression:b})}function B(a,b,c,d){let e=d.dynamicTracking;A(a,b,d),e&&null===e.syncDynamicErrorWithStack&&(e.syncDynamicErrorWithStack=c)}function C(a,b,c,d){if(!1===d.controller.signal.aborted){A(a,b,d);let e=d.dynamicTracking;e&&null===e.syncDynamicErrorWithStack&&(e.syncDynamicErrorWithStack=c)}throw J(`Route ${a} needs to bail out of prerendering at this point because it used ${b}.`)}function D({reason:a,route:b}){let c=l.workUnitAsyncStorage.getStore();E(b,a,c&&"prerender-ppr"===c.type?c.dynamicTracking:null)}function E(a,b,c){(function(){if(!t)throw Object.defineProperty(Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E224",enumerable:!1,configurable:!0})})(),c&&c.dynamicAccesses.push({stack:c.isDebugDynamicAccesses?Error().stack:void 0,expression:b}),i.default.unstable_postpone(F(a,b))}function F(a,b){return`Route ${a} needs to bail out of prerendering at this point because it used ${b}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`}function G(a){return"object"==typeof a&&null!==a&&"string"==typeof a.message&&H(a.message)}function H(a){return a.includes("needs to bail out of prerendering at this point because it used")&&a.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}if(!1===H(F("%%%","^^^")))throw Object.defineProperty(Error("Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E296",enumerable:!1,configurable:!0});let I="NEXT_PRERENDER_INTERRUPTED";function J(a){let b=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return b.digest=I,b}function K(a){return"object"==typeof a&&null!==a&&a.digest===I&&"name"in a&&"message"in a&&a instanceof Error}function L(a){return a.length>0}function M(a,b){return a.dynamicAccesses.push(...b.dynamicAccesses),a.dynamicAccesses}function N(a){return a.filter(a=>"string"==typeof a.stack&&a.stack.length>0).map(({expression:a,stack:b})=>(b=b.split("\n").slice(4).filter(a=>!(a.includes("node_modules/next/")||a.includes(" (<anonymous>)")||a.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${a}:
|
|
2
2
|
${b}`))}function O(){let a=new AbortController;return a.abort(Object.defineProperty(new q.BailoutToCSRError("Render in Browser"),"__NEXT_ERROR_CODE",{value:"E721",enumerable:!1,configurable:!0})),a.signal}function P(a){switch(a.type){case"prerender":case"prerender-runtime":let b=new AbortController;if(a.cacheSignal)a.cacheSignal.inputReady().then(()=>{b.abort()});else if("prerender-runtime"===a.type&&a.stagedRendering){let{stagedRendering:c}=a;c.waitForStage((0,n.getRuntimeStage)(c)).then(()=>(0,p.scheduleOnNextTick)(()=>b.abort()))}else(0,p.scheduleOnNextTick)(()=>b.abort());return b.signal;case"prerender-client":case"validation-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case"generate-static-params":return}}function Q(a,b){let c=b.dynamicTracking;c&&c.dynamicAccesses.push({stack:c.isDebugDynamicAccesses?Error().stack:void 0,expression:a})}function R(a){let b=m.workAsyncStorage.getStore(),c=l.workUnitAsyncStorage.getStore();if(b&&c)switch(c.type){case"prerender-client":case"prerender":{let d=c.fallbackRouteParams;d&&d.size>0&&i.default.use((0,n.makeHangingPromise)(c.renderSignal,b.route,a));break}case"prerender-ppr":{let d=c.fallbackRouteParams;if(d&&d.size>0)return E(b.route,a,c.dynamicTracking);break}case"validation-client":case"prerender-legacy":case"request":case"unstable-cache":break;case"prerender-runtime":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called during a runtime prerender. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E771",enumerable:!1,configurable:!0});case"cache":case"private-cache":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called inside a cache scope. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called in \`generateStaticParams\`. Next.js should be preventing ${a} from being included in server component files statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1130",enumerable:!1,configurable:!0})}}function S(a){let b=m.workAsyncStorage.getStore(),c=l.workUnitAsyncStorage.getStore();if(b)switch(!c&&(0,l.throwForMissingRequestStore)(a),c.type){case"validation-client":case"request":return;case"prerender-client":i.default.use((0,n.makeHangingPromise)(c.renderSignal,b.route,a));break;case"prerender-legacy":case"prerender-ppr":if(b.forceStatic)return;throw Object.defineProperty(new q.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called from a Server Component. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E795",enumerable:!1,configurable:!0});case"cache":case"unstable-cache":case"private-cache":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called inside a cache scope. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(new r.InvariantError(`\`${a}\` was called in \`generateStaticParams\`. Next.js should be preventing ${a} from being included in server component files statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1130",enumerable:!1,configurable:!0})}}let T=/\n\s+at Suspense \(<anonymous>\)/,U=RegExp(`\\n\\s+at Suspense \\(<anonymous>\\)(?:(?!\\n\\s+at (?:body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6) \\(<anonymous>\\))[\\s\\S])*?\\n\\s+at ${o.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`),V=RegExp(`\\n\\s+at ${o.METADATA_BOUNDARY_NAME}[\\n\\s]`),W=RegExp(`\\n\\s+at ${o.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`),X=RegExp(`\\n\\s+at ${o.OUTLET_BOUNDARY_NAME}[\\n\\s]`),Y=RegExp(`\\n\\s+at ${s.INSTANT_VALIDATION_BOUNDARY_NAME}[\\n\\s]`);function Z(a,b,c,d){if(!X.test(b)){if(V.test(b)){c.hasDynamicMetadata=!0;return}if(W.test(b)){c.hasDynamicViewport=!0;return}if(U.test(b)){c.hasAllowedDynamic=!0,c.hasSuspenseAboveBody=!0;return}else if(T.test(b)){c.hasAllowedDynamic=!0;return}else{if(d.syncDynamicErrorWithStack)return void c.dynamicErrors.push(d.syncDynamicErrorWithStack);let e=ae(Object.defineProperty(Error(`Route "${a.route}": Uncached data was accessed outside of <Suspense>. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`),"__NEXT_ERROR_CODE",{value:"E1079",enumerable:!1,configurable:!0}),b,null);return void c.dynamicErrors.push(e)}}}var $=((e={})[e.Runtime=1]="Runtime",e[e.Dynamic=2]="Dynamic",e);function _(a){return{hasDynamicMetadata:!1,hasAllowedClientDynamicAboveBoundary:!1,dynamicMetadata:null,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[],validationPreventingErrors:[],thrownErrorsOutsideBoundary:[],createInstantStack:a}}function aa(a,b,c,d,e,f){if(X.test(b))return;if(V.test(b)){let d=ae(Object.defineProperty(Error(`Route "${a.route}": ${1===e?"Runtime data such as `cookies()`, `headers()`, `params`, or `searchParams` was accessed inside `generateMetadata` or you have file-based metadata such as icons that depend on dynamic params segments.":"Uncached data or `connection()` was accessed inside `generateMetadata`."} Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),"__NEXT_ERROR_CODE",{value:"E1076",enumerable:!1,configurable:!0}),b,c.createInstantStack);c.dynamicMetadata=d;return}if(W.test(b)){let d=ae(Object.defineProperty(Error(`Route "${a.route}": ${1===e?"Runtime data such as `cookies()`, `headers()`, `params`, or `searchParams` was accessed inside `generateViewport`.":"Uncached data or `connection()` was accessed inside `generateViewport`."} This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),"__NEXT_ERROR_CODE",{value:"E1086",enumerable:!1,configurable:!0}),b,c.createInstantStack);c.dynamicErrors.push(d);return}let g=Y.exec(b);if(g){let a=T.exec(b);if(a&&a.index<g.index){c.hasAllowedDynamic=!0;return}}else if(f.expectedIds.size===f.renderedIds.size){c.hasAllowedClientDynamicAboveBoundary=!0,c.hasAllowedDynamic=!0;return}else{let d=ae(Object.defineProperty(Error(`Route "${a.route}": Could not validate \`unstable_instant\` because a Client Component in a parent segment prevented the page from rendering.`),"__NEXT_ERROR_CODE",{value:"E1082",enumerable:!1,configurable:!0}),b,c.createInstantStack);c.validationPreventingErrors.push(d);return}if(d.syncDynamicErrorWithStack){let a=d.syncDynamicErrorWithStack;null!==c.createInstantStack&&void 0===a.cause&&(a.cause=c.createInstantStack()),c.dynamicErrors.push(a);return}let h=ae(Object.defineProperty(Error(`Route "${a.route}": ${1===e?"Runtime data such as `cookies()`, `headers()`, `params`, or `searchParams` was accessed outside of `<Suspense>`.":"Uncached data or `connection()` was accessed outside of `<Suspense>`."} This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`),"__NEXT_ERROR_CODE",{value:"E1078",enumerable:!1,configurable:!0}),b,c.createInstantStack);c.dynamicErrors.push(h)}function ab(a,b,c,d){let e=Y.exec(d);if(e){let f=T.exec(d);if(f&&f.index<e.index)return;let g=ae(Object.defineProperty(Error(`Route "${a.route}": Could not validate \`unstable_instant\` because an error prevented the target segment from rendering.`,{cause:c}),"__NEXT_ERROR_CODE",{value:"E1112",enumerable:!1,configurable:!0}),d,null);b.validationPreventingErrors.push(g)}else{let a=ae(Object.defineProperty(Error("An error occurred while attempting to validate instant UI. This error may be preventing the validation from completing.",{cause:c}),"__NEXT_ERROR_CODE",{value:"E1118",enumerable:!1,configurable:!0}),d,null);b.thrownErrorsOutsideBoundary.push(a)}}function ac(a,b,c,d){if(X.test(b))return;if(V.test(b)){c.dynamicMetadata=ae(Object.defineProperty(Error(`Route "${a.route}": Uncached data or \`connection()\` was accessed inside \`generateMetadata\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),"__NEXT_ERROR_CODE",{value:"E1080",enumerable:!1,configurable:!0}),b,null);return}if(W.test(b)){let d=ae(Object.defineProperty(Error(`Route "${a.route}": Uncached data or \`connection()\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),"__NEXT_ERROR_CODE",{value:"E1077",enumerable:!1,configurable:!0}),b,null);c.dynamicErrors.push(d);return}if(U.test(b)){c.hasAllowedDynamic=!0,c.hasSuspenseAboveBody=!0;return}if(T.test(b)){c.hasAllowedDynamic=!0;return}else if(d.syncDynamicErrorWithStack)return void c.dynamicErrors.push(d.syncDynamicErrorWithStack);let e=ae(Object.defineProperty(Error(`Route "${a.route}": Uncached data or \`connection()\` was accessed outside of \`<Suspense>\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`),"__NEXT_ERROR_CODE",{value:"E1084",enumerable:!1,configurable:!0}),b,null);c.dynamicErrors.push(e)}function ad(a,b,c,d){if(!X.test(b)){if(V.test(b)){c.dynamicMetadata=ae(Object.defineProperty(Error(`Route "${a.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateMetadata\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),"__NEXT_ERROR_CODE",{value:"E1085",enumerable:!1,configurable:!0}),b,null);return}if(W.test(b)){let d=ae(Object.defineProperty(Error(`Route "${a.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed inside \`generateViewport\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),"__NEXT_ERROR_CODE",{value:"E1081",enumerable:!1,configurable:!0}),b,null);c.dynamicErrors.push(d);return}if(U.test(b)){c.hasAllowedDynamic=!0,c.hasSuspenseAboveBody=!0;return}else if(T.test(b)){c.hasAllowedDynamic=!0;return}else{if(d.syncDynamicErrorWithStack)return void c.dynamicErrors.push(d.syncDynamicErrorWithStack);let e=ae(Object.defineProperty(Error(`Route "${a.route}": Runtime data such as \`cookies()\`, \`headers()\`, \`params\`, or \`searchParams\` was accessed outside of \`<Suspense>\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`),"__NEXT_ERROR_CODE",{value:"E1083",enumerable:!1,configurable:!0}),b,null);return void c.dynamicErrors.push(e)}}}function ae(a,b,c){return null!==c&&(a.cause=c()),a.stack=a.name+": "+a.message+b,a}var af=((f={})[f.Full=0]="Full",f[f.Empty=1]="Empty",f[f.Errored=2]="Errored",f);function ag(a,b){console.error(b),console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:
|
|
3
3
|
- Start the app in development mode by running \`next dev\`, then open "${a.route}" in your browser to investigate the error.
|
|
4
|
-
- Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`)}function ah(a,b,c,d){if(d.syncDynamicErrorWithStack)throw ag(a,d.syncDynamicErrorWithStack),new k.StaticGenBailoutError;if(0!==b){if(c.hasSuspenseAboveBody)return;let d=c.dynamicErrors;if(d.length>0){for(let b=0;b<d.length;b++)ag(a,d[b]);throw new k.StaticGenBailoutError}if(c.hasDynamicViewport)throw console.error(`Route "${a.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),new k.StaticGenBailoutError;if(1===b)throw console.error(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new k.StaticGenBailoutError}else if(!1===c.hasAllowedDynamic&&c.hasDynamicMetadata)throw console.error(`Route "${a.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),new k.StaticGenBailoutError}function ai(a,b,c,d){if(d||c.hasSuspenseAboveBody)return[];if(0!==b){let d=c.dynamicErrors;if(d.length>0)return d;if(1===b)return[Object.defineProperty(new r.InvariantError(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E936",enumerable:!1,configurable:!0})]}else if(!1===c.hasAllowedDynamic&&0===c.dynamicErrors.length&&c.dynamicMetadata)return[c.dynamicMetadata];return[]}function aj(a,b,c,d,e){if(d){let{missingSampleErrors:a}=d;if(a.length>0)return a}let{validationPreventingErrors:f}=c;if(f.length>0)return f;if(e.renderedIds.size<e.expectedIds.size){let{thrownErrorsOutsideBoundary:b,createInstantStack:d}=c;if(0===b.length){let b=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering for an unknown reason.`,c=null!==d?d():Error();return c.name="Error",c.message=b,[c]}if(1===b.length){let c=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering, likely due to the following error.`,e=null!==d?d():Error();return e.name="Error",e.message=c,[e,b[0]]}{let c=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering, likely due to one of the following errors.`,e=null!==d?d():Error();return e.name="Error",e.message=c,[e,...b]}}if(0!==b){let d=c.dynamicErrors;if(d.length>0)return d;if(1===b)return c.hasAllowedClientDynamicAboveBoundary?[]:[Object.defineProperty(new r.InvariantError(`Route "${a.route}" failed to render during instant validation and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E1055",enumerable:!1,configurable:!0})]}else{let a=c.dynamicErrors;if(a.length>0)return a;if(!1===c.hasAllowedDynamic&&c.dynamicMetadata)return[c.dynamicMetadata]}return[]}},620638,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=a.r(418803),e=a.r(737484),f=a.r(297781),g=a.r(194899),h=a.r(382114),i=a.r(773034);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},557674,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=a.r(620638).unstable_rethrow;("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},400767,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return m},forbidden:function(){return i.forbidden},notFound:function(){return h.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return j.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return k.unstable_rethrow}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(156677),g=a.r(560583),h=a.r(213730),i=a.r(269038),j=a.r(369916),k=a.r(557674);function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let m={push:"push",replace:"replace"};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},695613,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return h.ReadonlyURLSearchParams},RedirectType:function(){return l.RedirectType},ServerInsertedHTMLContext:function(){return j.ServerInsertedHTMLContext},forbidden:function(){return l.forbidden},notFound:function(){return l.notFound},permanentRedirect:function(){return l.permanentRedirect},redirect:function(){return l.redirect},unauthorized:function(){return l.unauthorized},unstable_isUnrecognizedActionError:function(){return k.unstable_isUnrecognizedActionError},unstable_rethrow:function(){return l.unstable_rethrow},useParams:function(){return u},usePathname:function(){return s},useRouter:function(){return t},useSearchParams:function(){return r},useSelectedLayoutSegment:function(){return w},useSelectedLayoutSegments:function(){return v},useServerInsertedHTML:function(){return j.useServerInsertedHTML}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(115727)._(a.r(175391)),g=a.r(362556),h=a.r(923638),i=a.r(73388),j=a.r(635039),k=a.r(408504),l=a.r(400767),m=a.r(382114).useDynamicRouteParams,n=a.r(382114).useDynamicSearchParams,{instrumentParamsForClientValidation:o,instrumentSearchParamsForClientValidation:p,expectCompleteParamsInClientValidation:q}={};function r(){n?.("useSearchParams()");let a=(0,f.useContext)(h.SearchParamsContext);return(0,f.useMemo)(()=>a?new h.ReadonlyURLSearchParams(a):null,[a])}function s(){return m?.("usePathname()"),(0,f.useContext)(h.PathnameContext)}function t(){let a=(0,f.useContext)(g.AppRouterContext);if(null===a)throw Object.defineProperty(Error("invariant expected app router to be mounted"),"__NEXT_ERROR_CODE",{value:"E238",enumerable:!1,configurable:!0});return a}function u(){return m?.("useParams()"),(0,f.useContext)(h.PathParamsContext)}function v(a="children"){m?.("useSelectedLayoutSegments()");let b=(0,f.useContext)(g.LayoutRouterContext);return b?(0,i.getSelectedLayoutSegmentPath)(b.parentTree,a):null}function w(a="children"){m?.("useSelectedLayoutSegment()"),(0,f.useContext)(h.NavigationPromisesContext);let b=v(a);return(0,i.computeSelectedLayoutSegment)(b,a)}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},448287,(a,b,c)=>{b.exports=a.r(695613)},302856,a=>{"use strict";var b=a.i(175391);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.createContext)({}),g=(0,b.forwardRef)(({color:a,size:d,strokeWidth:g,absoluteStrokeWidth:h,className:i="",children:j,iconNode:k,...l},m)=>{let{size:n=24,strokeWidth:o=2,absoluteStrokeWidth:p=!1,color:q="currentColor",className:r=""}=(0,b.useContext)(f)??{},s=h??p?24*Number(g??o)/Number(d??n):g??o;return(0,b.createElement)("svg",{ref:m,...e,width:d??n??e.width,height:d??n??e.height,stroke:a??q,strokeWidth:s,className:c("lucide",r,i),...!j&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(l)&&{"aria-hidden":"true"},...l},[...k.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(j)?j:[j]])});a.s(["default",0,(a,e)=>{let f=(0,b.forwardRef)(({className:f,...h},i)=>(0,b.createElement)(g,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,f),...h}));return f.displayName=d(a),f}],302856)},910600,a=>{"use strict";var b=a.i(175391);a.s(["useControlled",0,function({controlled:a,default:c,name:d,state:e="value"}){let{current:f}=b.useRef(void 0!==a),[g,h]=b.useState(c),i=b.useCallback(a=>{f||h(a)},[]);return[f?a:g,i]}])},88326,447892,a=>{"use strict";var b=a.i(175391),c=a.i(962256),d=a.i(825863),e=a.i(527993),f=a.i(293785),g=a.i(545264);let h=b.createContext(void 0);function i(a=!1){let c=b.useContext(h);if(void 0===c&&!a)throw Error((0,g.default)(16));return c}function j(a){return(0,c.isHTMLElement)(a)&&"BUTTON"===a.tagName}a.s(["CompositeRootContext",0,h,"useCompositeRootContext",0,i],447892),a.s(["useButton",0,function(a={}){let{disabled:c=!1,focusableWhenDisabled:g,tabIndex:h=0,native:k=!0,composite:l}=a,m=b.useRef(null),n=i(!0),o=l??void 0!==n,{props:p}=function(a){let{focusableWhenDisabled:c,disabled:d,composite:e=!1,tabIndex:f=0,isNativeButton:g}=a,h=e&&!1!==c,i=e&&!1===c;return{props:b.useMemo(()=>{let a={onKeyDown(a){d&&c&&"Tab"!==a.key&&a.preventDefault()}};return e||(a.tabIndex=f,!g&&d&&(a.tabIndex=c?f:-1)),(g&&(c||h)||!g&&d)&&(a["aria-disabled"]=d),g&&(!c||i)&&(a.disabled=d),a},[e,d,c,h,i,g,f])}}({focusableWhenDisabled:g,disabled:c,composite:o,tabIndex:h,isNativeButton:k}),q=b.useCallback(()=>{let a=m.current;j(a)&&o&&c&&void 0===p.disabled&&a.disabled&&(a.disabled=!1)},[c,p.disabled,o]);return(0,e.useIsoLayoutEffect)(q,[q]),{getButtonProps:b.useCallback((a={})=>{let{onClick:b,onMouseDown:d,onKeyUp:e,onKeyDown:g,onPointerDown:h,...i}=a,l=k?"button":void 0;return(0,f.mergeProps)({type:l,onClick(a){c?a.preventDefault():b?.(a)},onMouseDown(a){c||d?.(a)},onKeyDown(a){var d;if(c||((0,f.makeEventPreventable)(a),g?.(a),a.baseUIHandlerPrevented))return;let e=a.target===a.currentTarget,h=a.currentTarget,i=j(h),l=!k&&(d=h,!!(d?.tagName==="A"&&d?.href)),m=e&&(k?i:!l),n="Enter"===a.key,p=" "===a.key,q=h.getAttribute("role"),r=q?.startsWith("menuitem")||"option"===q||"gridcell"===q;if(e&&o&&p){if(a.defaultPrevented&&r)return;a.preventDefault(),l||k&&i?(h.click(),a.preventBaseUIHandler()):m&&(b?.(a),a.preventBaseUIHandler());return}m&&(!k&&(p||n)&&a.preventDefault(),!k&&n&&b?.(a))},onKeyUp(a){c||(((0,f.makeEventPreventable)(a),e?.(a),a.target===a.currentTarget&&k&&o&&j(a.currentTarget)&&" "===a.key)?a.preventDefault():!a.baseUIHandlerPrevented&&(a.target!==a.currentTarget||k||o||" "!==a.key||b?.(a)))},onPointerDown(a){c?a.preventDefault():h?.(a)}},k?void 0:{role:"button"},p,i)},[c,p,o,k]),buttonRef:(0,d.useStableCallback)(a=>{m.current=a,q()})}}],88326)},669794,a=>{"use strict";let b=(0,a.i(302856).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["default",0,b])},969626,170469,a=>{"use strict";var b,c=a.i(545264),d=a.i(175391),e=a.i(302398);let f=((b={}).disabled="data-disabled",b.valid="data-valid",b.invalid="data-invalid",b.touched="data-touched",b.dirty="data-dirty",b.filled="data-filled",b.focused="data-focused",b),g={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},h={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},i={disabled:!1,...h};a.s(["DEFAULT_FIELD_ROOT_STATE",0,i,"DEFAULT_FIELD_STATE_ATTRIBUTES",0,h,"DEFAULT_VALIDITY_STATE",0,g,"fieldValidityMapping",0,{valid:a=>null===a?null:a?{[f.valid]:""}:{[f.invalid]:""}}],170469);let j=d.createContext({invalid:void 0,name:void 0,validityData:{state:g,errors:[],error:"",value:"",initialValue:null},setValidityData:e.NOOP,disabled:void 0,touched:h.touched,setTouched:e.NOOP,dirty:h.dirty,setDirty:e.NOOP,filled:h.filled,setFilled:e.NOOP,focused:h.focused,setFocused:e.NOOP,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:i,markedDirtyRef:{current:!1},validation:{getValidationProps:(a=e.EMPTY_OBJECT)=>a,getInputValidationProps:(a=e.EMPTY_OBJECT)=>a,inputRef:{current:null},commit:async()=>{}}});a.s(["FieldRootContext",0,j,"useFieldRootContext",0,function(a=!0){let b=d.useContext(j);if(b.setValidityData===e.NOOP&&!a)throw Error((0,c.default)(28));return b}],969626)},506489,a=>{"use strict";var b=a.i(175391),c=a.i(302398);let d=b.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:c.NOOP,validationMode:"onSubmit",submitAttemptedRef:{current:!1}});a.s(["useFormContext",0,function(){return b.useContext(d)}])},176174,a=>{"use strict";var b=a.i(175391),c=a.i(302398);let d=b.createContext({controlId:void 0,registerControlId:c.NOOP,labelId:void 0,setLabelId:c.NOOP,messageIds:[],setMessageIds:c.NOOP,getDescriptionProps:a=>a});a.s(["LabelableContext",0,d,"useLabelableContext",0,function(){return b.useContext(d)}])},553902,a=>{"use strict";a.s(["getCombinedFieldValidityData",0,function(a,b){return{...a,state:{...a.state,valid:!b&&a.state.valid}}}])},799823,a=>{"use strict";var b=a.i(962256),c=a.i(848275),d=a.i(825863),e=a.i(394395),f=a.i(527993),g=a.i(128429),h=a.i(176174);a.s(["useLabel",0,function(a={}){let i,{id:j,fallbackControlId:k,native:l=!1,setLabelId:m,focusControl:n}=a,{controlId:o,setLabelId:p}=(0,h.useLabelableContext)(),q=(0,d.useStableCallback)(a=>{p(a),m?.(a)}),r=(i=(0,g.useBaseUiId)(j),(0,f.useIsoLayoutEffect)(()=>(q(i),()=>{q(void 0)}),[i,q]),i),s=o??k;function t(a){let d=(0,e.getTarget)(a.nativeEvent);d?.closest("button,input,select,textarea")||(!a.defaultPrevented&&a.detail>1&&a.preventDefault(),l||function(a){if(n)return n(a,s);if(!s)return;let d=(0,c.ownerDocument)(a.currentTarget).getElementById(s);(0,b.isHTMLElement)(d)&&d.focus({focusVisible:!0})}(a))}return l?{id:r,htmlFor:s??void 0,onMouseDown:t}:{id:r,onClick:t,onPointerDown(a){a.preventDefault()}}}],799823)},648172,a=>{"use strict";var b=a.i(175391),c=a.i(527993),d=a.i(825863),e=a.i(150155),f=a.i(962256),g=a.i(302398),h=a.i(128429),i=a.i(176174);a.s(["useLabelableId",0,function(a={}){let{id:j,implicit:k=!1,controlRef:l}=a,{controlId:m,registerControlId:n}=(0,i.useLabelableContext)(),o=(0,h.useBaseUiId)(j),p=k?m:void 0,q=(0,e.useRefWithInit)(()=>Symbol("labelable-control")),r=b.useRef(!1),s=b.useRef(null!=j),t=(0,d.useStableCallback)(()=>{r.current&&n!==g.NOOP&&(r.current=!1,n(q.current,void 0))});return(0,c.useIsoLayoutEffect)(()=>{let a;if(n!==g.NOOP){if(k){let b=l?.current;a=(0,f.isElement)(b)&&null!=b.closest("label")?j??null:p??o}else if(null!=j)s.current=!0,a=j;else{if(!s.current)return void t();a=o}if(void 0===a)return void t();r.current=!0,n(q.current,a)}},[j,l,p,n,k,o,q,t]),b.useEffect(()=>t,[t]),m??o}])},98719,a=>{"use strict";var b=a.i(425422),c=a.i(527993),d=a.i(825863),e=a.i(553902),f=a.i(506489),g=a.i(969626);a.s(["useField",0,function(a){let{enabled:h=!0,value:i,id:j,name:k,controlRef:l,commit:m}=a,{formRef:n}=(0,f.useFormContext)(),{invalid:o,markedDirtyRef:p,validityData:q,setValidityData:r}=(0,g.useFieldRootContext)(),s=(0,d.useStableCallback)(a.getValue);(0,c.useIsoLayoutEffect)(()=>{if(!h)return;let a=i;void 0===a&&(a=s()),null===q.initialValue&&null!==a&&r(b=>({...b,initialValue:a}))},[h,r,i,q.initialValue,s]),(0,c.useIsoLayoutEffect)(()=>{h&&j&&n.current.fields.set(j,{getValue:s,name:k,controlRef:l,validityData:(0,e.getCombinedFieldValidityData)(q,o),validate(a=!0){let c=i;void 0===c&&(c=s()),p.current=!0,a?b.flushSync(()=>m(c)):m(c)}})},[m,l,h,n,s,j,o,p,k,q,i]),(0,c.useIsoLayoutEffect)(()=>{let a=n.current.fields;return()=>{j&&a.delete(j)}},[n,j])}])},584335,a=>{"use strict";var b=a.i(858360),c=a.i(175391);let d={zh:{"sidebar.workspace":"工作空间","sidebar.newWorkspace":"新建工作空间","sidebar.collapse":"折叠侧边栏","sidebar.expand":"展开侧边栏","sidebar.rename":"重命名","sidebar.delete":"删除","sidebar.archive":"归档","sidebar.manageLabels":"管理标签","sidebar.deleteConfirm":"确认删除工作空间「{name}」?所有项目和任务将被删除。","sidebar.lastWorkspaceError":"至少需要保留一个工作空间","sidebar.settings":"配置","workspace.create":"新建工作空间","workspace.edit":"编辑工作空间","workspace.name":"名称","workspace.namePlaceholder":"输入工作空间名称","workspace.icon":"图标","common.cancel":"取消","common.create":"创建","common.save":"保存","common.delete":"删除","common.add":"添加","common.edit":"编辑","common.search":"搜索","topbar.newProject":"新建项目","topbar.importProject":"导入项目","topbar.searchPlaceholder":"搜索任务、项目、仓库、笔记、资源...","project.name":"项目名称","project.alias":"项目别名","project.description":"项目描述","project.gitUrl":"Git 仓库地址","project.gitUrlHint":"可选,输入后自动推断本地路径","project.namePlaceholder":"输入项目名称","project.aliasPlaceholder":"可选,如:前端重构","project.descPlaceholder":"可选,项目简介","project.gitPlaceholder":"https://github.com/user/repo 或 git@github.com:user/repo.git","project.localPath":"本地路径","project.localPathPlaceholder":"/Users/you/projects/my-app","project.localPathHint":"项目在本地磁盘的文件夹路径,输入 Git 地址后自动填充","project.tildeWarning":"请输入绝对路径,不支持 ~ 别名","project.importHint":"选择本地已有项目文件夹","project.autoDetected":"已自动检测 Git 远程","project.edit":"编辑项目","git.clone":"克隆到本地","git.cloning":"正在克隆...","git.cloned":"已克隆","git.cloneSuccess":"仓库克隆成功","board.kanban":"任务看板","board.overview":"概览","board.running":"执行中","board.tip":"提示","board.newTask":"新建任务","board.allFilter":"全部","board.searchPlaceholder":"搜索任务...","board.inProgressFilter":"执行中","board.inReviewFilter":"待评审","board.contextMenu.changeStatus":"更改状态","board.contextMenu.launch":"启动任务","board.contextMenu.goToDetail":"查看详情","board.pin":"置顶","board.unpin":"取消置顶","board.viewAll":"查看全部","board.noTasks":"暂无任务","task.create":"新建任务","task.edit":"编辑任务","task.title":"任务标题","task.titlePlaceholder":"输入任务标题","task.description":"描述","task.descPlaceholder":"输入任务描述 (支持 Markdown)","task.priority":"优先级","task.labels":"标签","task.priorityLow":"低","task.priorityMedium":"中","task.priorityHigh":"高","task.priorityCritical":"紧急","task.baseBranch":"基础分支","task.branchLoading":"加载分支...","task.branchNone":"未找到分支","task.branchSearch":"搜索分支...","task.branchDirect":"不使用分支隔离(直接在主仓库工作)","task.worktreeLabel":"分支隔离","task.worktreeYes":"启用","task.worktreeNo":"不启用","task.subPath":"子路径","task.subPathPlaceholder":"例如: web、packages/api","task.subPathHint":"Mono-repo 子目录,任务将在此目录下执行","taskDetail.title":"任务对话","taskDetail.back":"返回任务列表","taskDetail.hasConversation":"已有会话","taskDetail.updatedAt":"更新于","taskDetail.directMode":"直接模式","taskDetail.send":"发送","taskDetail.sending":"处理中...","taskDetail.inputPlaceholder":"输入指令...","taskDetail.emptyState":"开始对话,让 AI 代理执行任务","taskDetail.emptyHint":"输入指令后按 Enter 发送","taskDetail.sendFailed":"发送失败,请重试","taskDetail.executionFailed":"执行失败","taskDetail.executionFailedRetry":"执行失败,请重试","taskDetail.panelDescription":"聚焦当前任务的执行对话","taskDetail.filesChanged":"个文件已更改","search.placeholder":"搜索任务、项目、仓库、笔记、资源...","search.task":"任务","search.project":"项目","search.repository":"仓库","search.all":"全部","search.note":"笔记","search.asset":"资源","search.noResults":"没有找到结果","search.typeToSearch":"输入关键词开始搜索","search.results":"搜索结果","sidebar.right.projectInfo":"项目信息","sidebar.right.repo":"仓库","sidebar.right.addRepo":"添加仓库","sidebar.right.noRepo":"暂无已关联仓库","sidebar.right.addRepoHint":"点击下方添加仓库","sidebar.right.browseRepo":"浏览磁盘上的仓库","sidebar.right.createRepo":"在磁盘上创建新仓库","sidebar.right.recent":"最近","sidebar.right.other":"其他","sidebar.right.browseWip":"浏览磁盘仓库功能开发中","sidebar.right.createWip":"创建仓库功能开发中","sidebar.right.linkWip":"关联仓库功能开发中","sidebar.right.normalType":"普通项目","sidebar.right.gitType":"Git 项目","sidebar.right.edit":"编辑项目","sidebar.right.name":"项目名称","sidebar.right.aliasLabel":"别名","sidebar.right.descLabel":"描述","sidebar.right.save":"保存","sidebar.right.cancel":"取消","sidebar.right.namePlaceholder":"输入项目名称","sidebar.right.aliasPlaceholder":"可选别名","sidebar.right.descPlaceholder":"项目描述","label.manage":"管理标签","label.name":"标签名称","label.color":"颜色","label.builtin":"内置","label.add":"添加标签","label.noLabels":"暂无标签","settings.title":"配置","settings.language":"语言","settings.languageDesc":"切换界面语言","settings.general":"通用","settings.generalDesc":"主题与语言偏好","settings.theme":"主题","settings.themeDesc":"选择界面主题","settings.themeLight":"浅色","settings.themeDark":"深色","settings.themeSystem":"跟随系统","settings.prompts":"提示词","settings.promptsDesc":"管理 AI 提示词模板","settings.prompts.title":"提示词管理","settings.prompts.newPrompt":"新建提示词","settings.prompts.editPrompt":"编辑提示词","settings.prompts.promptName":"名称","settings.prompts.promptNamePlaceholder":"输入提示词名称","settings.prompts.promptDescription":"描述","settings.prompts.promptDescriptionPlaceholder":"可选,简要描述用途","settings.prompts.promptContent":"内容","settings.prompts.promptContentPlaceholder":"输入提示词内容...","settings.prompts.deleteConfirmTitle":"确认删除","settings.prompts.deleteConfirmMessage":"删除后无法恢复。","settings.prompts.setDefault":"设为默认","settings.prompts.default":"默认","settings.prompts.empty":"暂无提示词","settings.prompts.emptyHint":"点击上方按钮创建第一个提示词","settings.prompts.save":"保存","settings.prompts.cancel":"取消","settings.prompts.delete":"删除","settings.aiTools.title":"AI 工具","settings.aiTools.cliVerification":"CLI 验证","settings.aiTools.cliVerificationDesc":"验证 AI 工具命令行是否已正确安装","settings.aiTools.testConnection":"测试连接","settings.aiTools.testing":"测试中...","settings.aiTools.testPassed":"检测通过","settings.aiTools.testFailed":"部分检测未通过","settings.config":"参数配置","settings.configDesc":"系统运行参数","settings.config.empty":"暂无可配置参数 — 后续版本将添加","settings.config.git.title":"Git 路径映射规则","settings.config.git.desc":"定义 Git URL 到本地路径的映射规则,创建项目时自动填充 localPath","settings.config.git.host":"主机","settings.config.git.hostPlaceholder":"github.com","settings.config.git.ownerMatch":"Owner 匹配","settings.config.git.ownerMatchPlaceholder":"* (匹配所有)","settings.config.git.localPathTemplate":"本地基础路径","settings.config.git.localPathTemplatePlaceholder":"/Users/you/project","settings.config.git.priority":"优先级","settings.config.git.priorityHint":"数值越小优先级越高","settings.config.git.addRule":"添加规则","settings.config.git.noRules":"暂无映射规则 — 点击「添加规则」创建","settings.config.git.deleteConfirm":"确定删除此规则?","settings.config.git.deleteConfirmMessage":"此操作不可撤销。","settings.config.git.save":"保存","settings.config.git.cancel":"取消","settings.config.git.edit":"编辑","settings.config.git.delete":"删除","settings.config.git.actions":"操作","settings.config.git.templateHint":"支持 {owner} 和 {repo} 变量","settings.config.git.validationRequired":"主机和本地路径模板不能为空","settings.config.system.title":"系统参数","settings.config.system.desc":"上传限制与并发控制","settings.config.system.maxUpload":"最大上传文件大小","settings.config.system.maxUploadHint":"单个文件允许的最大上传大小","settings.config.system.maxConcurrent":"最大并发执行数","settings.config.system.maxConcurrentHint":"同时运行的 AI 任务上限","settings.config.system.saved":"系统参数已保存","settings.config.gitParams.title":"Git 参数","settings.config.gitParams.desc":"Git 操作超时","settings.config.gitParams.timeout":"Git 操作超时","settings.config.gitParams.timeoutHint":"clone/status 等操作的超时时间","settings.config.gitParams.saved":"Git 参数已保存","settings.config.search.title":"搜索参数","settings.config.search.desc":"搜索结果数量、防抖延迟与摘要长度","settings.config.search.resultLimit":"搜索结果数量","settings.config.search.resultLimitHint":"每类搜索返回的最大结果数","settings.config.search.allModeCap":"全部模式单类上限","settings.config.search.allModeCapHint":"「全部」搜索时每个类别显示的最大结果数","settings.config.search.debounceMs":"搜索防抖延迟","settings.config.search.debounceMsHint":"输入停止后等待多久执行搜索","settings.config.search.snippetLength":"摘要长度","settings.config.search.snippetLengthHint":"搜索结果预览文本的最大字符数","settings.config.search.saved":"搜索参数已保存","workspace.selectHint":"选择一个工作空间","workspace.selectDesc":"从左侧选择一个工作空间开始","workspace.createError":"创建工作区失败,请重试","board.noProject":"该工作空间没有项目,请点击顶部「新建项目」创建","board.tipText":"复用现有拖拽、详情和任务创建链路","board.tipDesc":"先把工作台入口对齐原型,再逐步补 Settings、Skills、Plugins。","folder.selectFolder":"选择文件夹","folder.selectGitRepo":"选择 Git 仓库","folder.hint":"点击文件夹名称进行导航 · 使用操作按钮进行选择","folder.manualInput":"手动输入路径:","folder.goTo":"前往","folder.searchDir":"搜索当前目录:","folder.selectCurrent":"选择当前","folder.selectPath":"选择路径","folder.empty":"此目录下没有文件夹","folder.browse":"浏览","git.section":"Git","git.currentBranch":"当前分支","git.switchBranch":"切换分支","git.localBranches":"本地分支","git.remoteBranches":"远程分支","git.modified":"已修改","git.staged":"已暂存","git.untracked":"未跟踪","git.notInitialized":"该项目尚未初始化 Git 仓库","git.initRepo":"初始化 Git 仓库","git.initSuccess":"Git 仓库初始化成功","git.initFailed":"初始化失败","git.switchSuccess":"已切换到分支","git.switchFailed":"切换分支失败","git.noLocalPath":"请先设置项目本地路径","git.loading":"加载中...","git.createBranch":"创建分支","git.branchName":"分支名称","git.branchNamePlaceholder":"feature/my-feature","git.baseBranch":"基于分支","git.branchDesc":"分支描述","git.branchDescPlaceholder":"可选,描述这个分支的用途","git.createSuccess":"分支创建成功","git.createFailed":"创建分支失败","git.fetchSuccess":"远程分支已更新","git.fetchFailed":"拉取远程分支失败","git.changes":"变更","git.stagedChanges":"已暂存","git.unstagedChanges":"未暂存","git.stageAll":"全部暂存","git.unstageAll":"全部取消","git.commit":"提交","git.commitSuccess":"提交成功","git.commitMsgPlaceholder":"提交信息 (⌘+Enter 提交)","git.pull":"拉取","git.pullSuccess":"拉取成功","git.push":"推送","git.pushSuccess":"推送成功","git.commitLog":"提交历史","git.stash":"暂存区","git.stashMsgPlaceholder":"暂存描述(可选)","git.stashSaved":"已暂存变更","git.stashApply":"恢复","git.stashApplied":"已恢复暂存","git.stashDrop":"删除","git.stashDropped":"已删除暂存","git.noChanges":"工作区干净,没有变更","git.sync":"同步","git.pullFrom":"拉取自","git.pushTo":"推送到","git.fetchAll":"获取所有远程","git.stashSave":"暂存变更","git.stashPopLatest":"恢复最近暂存","git.discardAll":"放弃所有更改","git.discardSuccess":"已放弃所有更改","git.tabLabel":"Git","git.openStudio":"打开工作台","git.openStudioFailed":"打开工作台失败","archive.title":"归档任务","archive.backToBoard":"返回看板","archive.noTasks":"暂无归档任务","archive.noTasksDesc":"已完成或已取消超过今日的任务将出现在此处","archive.completedAt":"完成于","archive.cancelledAt":"取消于","archive.createdAt":"创建于","archive.lastExecution":"最近执行","archive.status.done":"已完成","archive.status.cancelled":"已取消","archive.tasksCount":"条归档","sidebar.notes":"笔记","sidebar.assets":"资源","notes.title":"笔记","notes.newNote":"新建笔记","notes.allCategories":"全部分类","notes.category.account":"账号","notes.category.env":"环境","notes.category.requirements":"需求","notes.category.memo":"备忘","notes.edit":"编辑","notes.delete":"删除","notes.save":"保存","notes.cancel":"取消","notes.titlePlaceholder":"笔记标题","notes.contentPlaceholder":"笔记内容(支持 Markdown)","notes.categoryLabel":"分类","notes.empty":"暂无笔记","notes.emptyHint":"点击「新建笔记」创建第一条笔记","notes.deleteConfirm":"确认删除笔记「{title}」?","notes.noProject":"当前工作空间没有项目","notes.noProjectHint":"请先创建一个项目","notes.backToBoard":"返回看板","notes.loading":"加载中...","notes.workspace":"工作区","notes.project":"项目","assets.title":"资源","assets.upload":"上传文件","assets.empty":"暂无资源","assets.emptyHint":"上传文件作为项目资源","assets.filename":"文件名","assets.size":"大小","assets.uploadedAt":"上传时间","assets.preview":"预览","assets.download":"下载","assets.delete":"删除","assets.deleteConfirm":"确认删除资源「{filename}」?","assets.noProject":"当前工作空间没有项目","assets.noProjectHint":"请先创建一个项目","assets.uploading":"上传中...","assets.backToBoard":"返回看板","assets.loading":"加载中...","assets.uploadTitle":"上传资源","assets.workspace":"工作区","assets.project":"项目","assets.file":"文件","assets.selectFile":"点击选择文件...","assets.description":"描述","assets.descriptionPlaceholder":"输入资源描述(可搜索)","assets.revealInFinder":"在文件夹中显示","assets.previewNotSupported":"不支持预览此文件类型","assets.loadingPreview":"加载中...","assets.previewError":"加载预览失败","assets.fileTooLarge":"文件过大,无法预览(超过 1MB)","taskPage.title":"任务详情","taskPage.back":"返回","taskPage.backToBoard":"返回看板","taskPage.conversation":"对话","taskPage.changes":"变更","taskPage.notes":"备注","taskPage.addNote":"添加备注","taskPage.noteTitle":"标题","taskPage.noteContent":"内容","taskPage.uploadFile":"上传附件","taskPage.attachments":"附件","taskPage.noNotes":"暂无备注","taskPage.noAttachments":"暂无附件","taskPage.deleteNote":"删除","taskPage.deleteAttachment":"删除","taskPage.noteSaved":"备注已保存","taskPage.viewDetails":"查看详情","taskPage.noChanges":"暂无变更","taskPage.branchDeleted":"任务分支已删除,无法查看变更","taskPage.startExecution":"启动执行以查看变更","taskPage.loadingDiff":"加载变更中...","taskPage.noDiff":"暂无变更(需要项目配置本地路径和基础分支)","taskPage.tabFiles":"文件","taskPage.tabPreview":"预览","taskPage.tabSearch":"搜索","taskPage.tabFileTree":"文件树","taskPage.completeTask":"完成任务","taskPage.uncommittedChanges":"工作区有 {count} 个未提交的文件,请先点击 Commit 按钮提交后再完成任务","taskPage.noChangesToComplete":"没有任何改动,无法完成任务","taskPage.taskCompleted":"任务已完成","taskPage.loadDiffFailed":"加载变更失败","taskPage.fileTree.newFile":"新建文件","taskPage.fileTree.newFolder":"新建文件夹","taskPage.fileTree.rename":"重命名","taskPage.fileTree.delete":"删除","taskPage.fileTree.revealInFinder":"在文件夹中显示","taskPage.fileTree.emptyHeading":"文件树暂不可用","taskPage.fileTree.emptyBody":"启动任务执行后将在此显示 worktree 目录结构","taskPage.fileTree.emptyDir":"目录为空","taskPage.fileTree.loadError":"无法加载文件列表,请重试","taskPage.fileTree.renamePlaceholder":"输入新名称","taskPage.fileTree.newFilePlaceholder":"文件名","taskPage.fileTree.newFolderPlaceholder":"文件夹名","taskPage.fileTree.deleteConfirmHeading":"确认删除","taskPage.fileTree.deleteConfirmBody":"删除「{name}」?此操作不可撤销。","taskPage.fileTree.deleteConfirmBodyFolder":"「{name}」及其所有内容将被删除。","taskPage.fileTree.deleteConfirmAction":"删除","taskPage.fileTree.searchPlaceholder":"搜索文件…","taskPage.fileTree.searchNoResults":"无匹配文件","editor.selectFile":"选择文件以打开","editor.selectFileHint":"在左侧文件树中点击任意文件","editor.saveSuccess":"保存成功","editor.saveError":"保存失败,请重试","editor.closeTab":"关闭标签页","editor.noWorktree":"暂无工作区,请先执行任务","diff.filesChanged":"{count} 个文件更改","diff.additions":"+{count}","diff.deletions":"-{count}","diff.binary":"二进制文件","diff.truncated":"差异过大已截断","diff.conflictWarning":"合并被阻止:检测到冲突","diff.conflictFiles":"{count} 个冲突文件","diff.commitChanges":"提交更改","diff.commitMessagePlaceholder":"第一行为标题,空行后为详细描述\n\n例如:\nfeat: 添加用户认证\n\n实现 JWT token 验证和刷新机制","diff.commit":"提交","diff.noChanges":"未检测到更改","diff.commitSuccess":"已提交 ({hash})","merge.button":"合并","merge.confirmTitle":"确认 Squash 合并","merge.targetBranch":"目标分支","merge.changedFiles":"变更文件数","merge.commitsToSquash":"待压缩提交数","merge.commitMessage":"提交信息","merge.confirm":"确认合并","merge.cancel":"取消","merge.merging":"合并中...","merge.success":"合并成功","merge.conflictError":"无法合并:检测到冲突","merge.failed":"合并失败","project.type.label":"项目类型","project.type.frontend":"前端","project.type.backend":"后端","project.previewCommand":"预览启动命令","project.previewCommandPlaceholder":"例:pnpm dev","project.previewCommandDesc":"启动本地开发服务器的命令","preview.run":"运行","preview.stop":"停止","preview.openTerminal":"在终端中打开","preview.refresh":"刷新预览","preview.addressPlaceholder":"输入本地 URL,按 Enter 加载","preview.noWorktree":"预览面板不可用","preview.noWorktreeDesc":"启动任务执行后可在此预览前端页面","preview.statusStopped":"已停止","preview.statusStarting":"启动中...","preview.statusRunning":"运行中","preview.statusError":"启动失败","preview.errorDesc":"启动预览服务器时出错,请检查启动命令","preview.terminalError":"无法打开终端,请检查设置中的终端配置","preview.port":"端口","settings.shell.label":"默认 Shell","settings.shell.desc":"用于 PTY 终端和 AI CLI 测试的 Shell,使用系统已安装的 Shell 及其配置(别名、插件等)","settings.shell.winHint":"Claude Code 在 Windows 上需要 Git Bash 环境,建议选择 Git Bash","settings.terminal.label":"终端应用","settings.terminal.desc":'用于"在终端中打开"的 GUI 终端应用',"settings.terminal.placeholder":"Terminal","settings.terminal.idleTimeout":"空闲超时(秒)","settings.terminal.idleTimeoutDesc":"终端无输出多久后触发空闲检测(最低 180 秒)","settings.cliProfile.title":"CLI 配置","settings.cliProfile.desc":"配置 AI 命令行工具的执行参数","settings.cliProfile.navDesc":"CLI 执行参数配置","settings.cliProfile.command":"命令","settings.cliProfile.commandHint":"CLI 可执行文件名称或路径","settings.cliProfile.commandPlaceholder":"claude","settings.cliProfile.baseArgs":"基础参数","settings.cliProfile.baseArgsHint":"每次执行时附加的命令行参数,一行一个","settings.cliProfile.baseArgsPlaceholder":"--dangerously-skip-permissions","settings.cliProfile.envVars":"环境变量","settings.cliProfile.envVarsHint":"注入到 CLI 进程的环境变量,格式:KEY=VALUE,一行一个","settings.cliProfile.envVarsPlaceholder":"MY_VAR=value","settings.cliProfile.saved":"CLI 配置已保存","settings.cliProfile.saveError":"保存失败","settings.cliProfile.invalidJson":"参数格式无效","settings.cliProfile.noProfile":"未找到默认 CLI 配置,请运行 seed","terminal.connecting":"正在连接...","terminal.connected":"已连接","terminal.disconnected":"已断开","terminal.reconnecting":"正在重连...","terminal.noWorktree":"无工作区","terminal.noWorktreeDesc":"请先运行任务以启动终端","terminal.execute":"执行","terminal.executing":"执行中...","terminal.noPrompt":"请输入执行提示词","terminal.stopExecution":"停止执行","terminal.stopHint":"停止前建议在终端中让 AI 生成 commit","terminal.promptPlaceholder":"输入任务提示词...","terminal.launch":"启动终端","terminal.readyToLaunch":"点击启动终端开始执行任务","execution.success":"成功","execution.failed":"失败","execution.running":"运行中","execution.viewDetails":"查看详情","execution.noSummary":"暂无摘要","execution.commits":"次提交","execution.files":"个文件","execution.terminalOutput":"终端输出","execution.history":"执行历史","execution.gitLog":"Git 提交记录","execution.loading":"加载中...","execution.noHistory":"暂无执行记录","execution.resume":"恢复会话","execution.tryRecover":"尝试继续","execution.details":"详情","execution.collapse":"收起","execution.insight":"归纳","missions.navLabel":"任务控制台","missions.pageTitle":"任务控制台","missions.launchTask":"启动任务","missions.emptyTitle":"无运行中的任务","missions.emptyDesc":"点击「启动任务」开始执行","missions.gridPreset":"布局","missions.stopTask":"停止任务","missions.openFullView":"查看详情","missions.runningTime":"运行","missions.statusCompleted":"已完成","missions.statusStopped":"已停止","missions.statusRunning":"运行中","missions.dragHandle":"拖拽排序","missions.openInTerminal":"在终端打开","missions.launcher.title":"启动任务","missions.launcher.workspace":"工作空间","missions.launcher.project":"项目","missions.launcher.task":"任务","missions.launcher.selectWorkspace":"选择工作空间","missions.launcher.selectProject":"选择项目","missions.launcher.selectTask":"选择任务","missions.launcher.launch":"启动","missions.launcher.cancel":"取消","missions.launcher.noTasks":"暂无可执行任务","missions.error.launchFailed":"启动任务失败","missions.error.stopFailed":"停止任务失败","missions.filterAll":"全部工作区","missions.alreadyMonitored":"已在监控","missions.showMoreTasks":"选择其他任务...","missions.pickerTitle":"选择要启动的任务","missions.pickerFooter":"点击 Launch 启动执行","missions.noAvailableTasks":"暂无可用任务","missions.continueSession":"继续上次会话","missions.continueLabel":"继续","missions.launchNew":"启动新终端","missions.launchNewLabel":"新建","missions.fullPickerTitle":"选择任务","missions.fullPickerHint":"选择工作区和项目查看任务","missions.gridCustom":"自定义","missions.gridCols":"列","missions.gridRows":"行","settings.config.missions.title":"任务控制台布局","settings.config.missions.desc":"自定义网格布局的列数和行数范围","settings.config.missions.minCols":"最小列数","settings.config.missions.maxCols":"最大列数","settings.config.missions.minRows":"最小行数","settings.config.missions.maxRows":"最大行数","settings.config.hooks.title":"Hooks 配置","settings.config.hooks.desc":"管理 Claude Code 的 PostToolUse 钩子","settings.config.hooks.autoUploadTypes":"自动上传文件类型","settings.config.hooks.autoUploadTypesHint":"逗号分隔的文件扩展名","settings.config.hooks.install":"安装 Hook","settings.config.hooks.uninstall":"卸载 Hook","settings.config.hooks.installed":"Hook 已安装","settings.config.hooks.notInstalled":"Hook 未安装","settings.config.hooks.installHint":"安装后,Claude Code 写入匹配类型的文件时会自动上传为任务资产","assistant.title":"Tower 助手","assistant.iconLabel":"助手","assistant.starting":"启动中...","assistant.errorTitle":"会话启动失败","assistant.errorBody":"启动失败,请重试","assistant.loading":"加载中...","assistant.emptyTitle":"我能帮你做什么?","assistant.emptyBody":"输入消息以开始","assistant.copy":"复制","assistant.suggestion.createProject":"创建一个新项目","assistant.suggestion.createTask":"创建一个任务","assistant.suggestion.checkProgress":"查看任务进度","assistant.suggestion.dailySummary":"查看今日工作总结","assistant.inputPlaceholder":"输入消息,Enter 发送,Shift+Enter 换行","assistant.sendLabel":"发送消息","assistant.cancelLabel":"取消发送","assistant.thinking":"思考中","assistant.toolLabel":"工具","assistant.parseError":"解析错误","assistant.parseErrorBody":"无法解析助手输出内容","assistant.closeLabel":"关闭助手","assistant.expandTool":"展开工具调用详情","assistant.previewImage":"预览图片","assistant.removeImage":"移除图片","assistant.brokenImage":"图片不可用","assistant.imageCount":"张图片","assistant.uploadFailed":"上传失败","assistant.uploadFailedRemoveHint":"上传失败 — 点击 x 移除","assistant.closePreview":"关闭预览","assistant.inputPlaceholderWithImages":"输入消息或粘贴图片...","settings.assistant.title":"助手","settings.assistant.desc":"配置助手行为","settings.assistant.communicationMode":"通信模式","settings.assistant.communicationModeDesc":"选择与助手交互的方式","settings.assistant.modeTerminal":"终端模式","settings.assistant.modeChat":"聊天模式","assistant.newSession":"新会话","assistant.sessionList":"会话列表","assistant.deleteSession":"删除","assistant.noSessions":"暂无历史会话","project.migrate":"迁移到规范路径","project.migrateHint":"将项目文件夹移动到 Git 路径规则推导的位置","project.targetPath":"目标路径","project.migrating":"迁移中...","project.migrateSuccess":"项目已迁移到规范路径","project.migrateError":"迁移失败","project.samePathInfo":"路径已是规范路径","project.migrateSafetyWarning":"迁移前请确保没有运行中的任务","project.worktreeWarning":"该项目有活跃的 Git Worktree,迁移将被阻止","project.genDesc":"生成描述","project.analyzing":"分析中...","project.analyzeError":"分析失败,请重试","project.genDescDisabledTooltip":"请先选择路径","project.genDescNoPath":"请先输入地址","project.genDescNotCloned":"请先 clone 项目","project.genDescReady":"基于本地代码生成项目描述","project.deleteTitle":"删除项目","project.deleteWarning":"确定要删除「{name}」吗?","project.deleteIrreversible":"此操作无法撤销,所有任务和数据将被永久删除。","project.deleteConfirmLabel":"请输入「确认删除」以确认","project.deleteConfirmPlaceholder":"确认删除","project.deleteConfirmText":"确认删除","project.deleteButton":"删除项目","project.deleteSuccess":"项目已删除","project.deleteFailed":"删除失败,请重试","taskDrawer.title":"任务概览","taskDrawer.description":"描述","taskDrawer.labels":"标签","taskDrawer.createdAt":"创建时间","taskDrawer.resources":"关联资源","taskDrawer.lastExecution":"最近执行","taskDrawer.noDescription":"暂无描述","taskDrawer.noExecution":"暂无执行记录","codeSearch.patternPlaceholder":"搜索代码(支持正则)","codeSearch.globPlaceholder":"文件过滤,如 *.ts","codeSearch.noPath":"请先配置项目本地路径","codeSearch.searching":"搜索中...","codeSearch.noResults":"无匹配结果","codeSearch.truncated":"仅显示前 200 条结果","codeSearch.hint":"输入关键词后按 Enter 搜索","codeSearch.rgNotInstalled":"未找到 ripgrep (rg),请安装: brew install ripgrep","settings.notifications.title":"通知","settings.notifications.desc":"任务完成提醒","settings.notifications.navDesc":"桌面通知和 Toast 提醒","settings.notifications.enable":"任务完成通知","settings.notifications.enableDesc":"任务执行完成时显示桌面通知或 Toast 提醒","notification.permissionPrompt":"允许 Tower 在任务完成时发送桌面通知","notification.allow":"允许","notification.dismiss":"忽略","notification.taskCompleted":"任务已完成","notification.taskFailed":"任务失败","onboarding.title":"欢迎使用 Tower","onboarding.step1.title":"设置用户名","onboarding.step1.desc":"请输入您的用户名,AI 助手将使用此名称称呼您","onboarding.step1.usernamePlaceholder":"输入用户名","onboarding.step1.usernameLabel":"用户名","onboarding.step1.next":"下一步","onboarding.step2.title":"AI 连接测试","onboarding.step2.desc":"测试与 AI 适配器的连接,确保任务可以正常调度执行","onboarding.cliRequired":"需要安装并配置 Claude CLI 才能继续,请参考文档完成安装","onboarding.complete":"完成设置","onboarding.skip":"跳过","onboarding.back":"上一步","onboarding.step3.title":"配置 Git 路径规则","onboarding.step3.desc":"配置 Git 仓库地址与本地路径的映射规则,创建 Git 项目时将自动生成本地路径","onboarding.step3.addFirst":"添加第一条规则","onboarding.step3.noRules":"还没有配置规则,创建 Git 项目时需要手动填写本地路径","onboarding.step3.hostLabel":"Git 主机","onboarding.step3.hostPlaceholder":"例如 github.com","onboarding.step3.ownerLabel":"Owner 匹配","onboarding.step3.ownerPlaceholder":"* 匹配所有,或填具体用户名","onboarding.step3.pathLabel":"本地基础路径","onboarding.step3.pathPlaceholder":"例如 /Users/you/project","onboarding.step3.pathHint":"支持变量:{path}=完整路径,{owner}=第一段,{repo}=仓库名。不含变量时自动追加仓库名","onboarding.step3.pathHintRepo":"仓库名会自动追加到路径末尾","onboarding.step3.pathHintFull":"开启后保留完整子组路径(适合 GitLab 多级分组)","onboarding.step3.added":"已添加 {count} 条规则","onboarding.step3.exampleTitle":"配置示例","onboarding.step3.exampleCase1":"规则:主机 github.com,路径 ~/project → 结果 ~/project/my-app","onboarding.step3.exampleCase2":"规则:主机 gitlab.com,路径 ~/company/{path} → 结果 ~/company/team/group/my-app","onboarding.step3.exampleDesc":"创建项目输入 Git 地址时,系统自动匹配规则填充本地路径。使用 {path} 可保留完整子组路径","onboarding.step3.previewLabel":"测试预览","onboarding.step3.previewPlaceholder":"粘贴一个 Git 地址试试效果","onboarding.step3.previewNoMatch":"无法解析此地址","onboarding.stepIndicator":"步骤 {current}/{total}","onboarding.welcomeCta":"创建您的第一个工作区开始使用","onboarding.createWorkspace":"创建工作区","onboarding.defaultWorkspaceName":"我的工作区","tour.step1.title":"创建工作区","tour.step1.desc":"工作区是最顶层的组织单元。点击这里创建您的第一个工作区。","tour.step2.title":"创建项目","tour.step2.desc":"项目属于工作区。点击这里创建或导入一个项目,关联您的代码仓库。","tour.step3.title":"打开 AI 助手","tour.step3.desc":"AI 助手可以帮您管理任务和项目。点击这里随时与助手对话。","tour.skip":"跳过引导","tour.next":"下一步","tour.done":"完成","aiConfig.title":"AI 能力配置","aiConfig.description":"为每个 AI 功能场景独立配置 Provider 和模型","aiConfig.terminal":"终端执行","aiConfig.summary":"会话总结","aiConfig.dreaming":"知识沉淀","aiConfig.analysis":"项目分析","aiConfig.assistant":"助手聊天","aiConfig.provider":"Provider","aiConfig.mode":"模式","aiConfig.model":"模型","aiConfig.cli":"CLI(订阅)","aiConfig.api":"API(按量)","aiConfig.default":"默认","aiConfig.notConfigured":"未配置","aiConfig.cliNotFound":"CLI 未安装","aiConfig.apiKeyMissing":"API Key 未配置","aiConfig.saved":"已保存"},en:{"sidebar.workspace":"Workspaces","sidebar.newWorkspace":"New Workspace","sidebar.collapse":"Collapse Sidebar","sidebar.expand":"Expand Sidebar","sidebar.rename":"Rename","sidebar.delete":"Delete","sidebar.archive":"Archive","sidebar.manageLabels":"Manage Labels","sidebar.deleteConfirm":'Delete workspace "{name}"? All projects and tasks will be deleted.',"sidebar.lastWorkspaceError":"At least one workspace must be kept","sidebar.settings":"Settings","workspace.create":"New Workspace","workspace.edit":"Edit Workspace","workspace.name":"Name","workspace.namePlaceholder":"Enter workspace name","workspace.icon":"Icon","common.cancel":"Cancel","common.create":"Create","common.save":"Save","common.delete":"Delete","common.add":"Add","common.edit":"Edit","common.search":"Search","topbar.newProject":"New Project","topbar.importProject":"Import Project","topbar.searchPlaceholder":"Search tasks, projects, repos, notes, assets...","project.name":"Project Name","project.alias":"Alias","project.description":"Description","project.gitUrl":"Git Repository URL","project.gitUrlHint":"Optional, local path will be auto-inferred","project.namePlaceholder":"Enter project name","project.aliasPlaceholder":"Optional, e.g. Frontend Refactor","project.descPlaceholder":"Optional, project description","project.gitPlaceholder":"https://github.com/user/repo or git@github.com:user/repo.git","project.localPath":"Local Path","project.localPathPlaceholder":"/Users/you/projects/my-app","project.localPathHint":"Local folder path, auto-filled from Git URL","project.tildeWarning":"Use absolute path — ~ alias is not supported","project.importHint":"Select an existing local project folder","project.autoDetected":"Git remote auto-detected","project.edit":"Edit Project","git.clone":"Clone","git.cloning":"Cloning...","git.cloned":"Cloned","git.cloneSuccess":"Repository cloned successfully","board.kanban":"Task Board","board.overview":"Overview","board.running":"Running","board.tip":"Tips","board.newTask":"New Task","board.allFilter":"All","board.searchPlaceholder":"Search tasks...","board.inProgressFilter":"In Progress","board.inReviewFilter":"In Review","board.contextMenu.changeStatus":"Change Status","board.contextMenu.launch":"Launch Task","board.contextMenu.goToDetail":"Go to Detail","board.pin":"Pin to Top","board.unpin":"Unpin","board.viewAll":"View All","board.noTasks":"No tasks","task.create":"New Task","task.edit":"Edit Task","task.title":"Task Title","task.titlePlaceholder":"Enter task title","task.description":"Description","task.descPlaceholder":"Enter description (Markdown supported)","task.priority":"Priority","task.labels":"Labels","task.priorityLow":"Low","task.priorityMedium":"Med","task.priorityHigh":"High","task.priorityCritical":"Urgent","task.baseBranch":"Base Branch","task.branchLoading":"Loading branches...","task.branchNone":"No branches found","task.branchSearch":"Search branches...","task.branchDirect":"No branch isolation (work directly in main repo)","task.worktreeLabel":"Branch Isolation","task.worktreeYes":"On","task.worktreeNo":"Off","task.subPath":"Sub Path","task.subPathPlaceholder":"e.g., web, packages/api","task.subPathHint":"Mono-repo subdirectory, task executes in this directory","taskDetail.title":"Task Chat","taskDetail.back":"Back to list","taskDetail.hasConversation":"Has chat","taskDetail.updatedAt":"Updated","taskDetail.directMode":"Direct Mode","taskDetail.send":"Send","taskDetail.sending":"Sending...","taskDetail.inputPlaceholder":"Enter command...","taskDetail.emptyState":"Start a conversation to execute the task","taskDetail.emptyHint":"Press Enter to send","taskDetail.sendFailed":"Send failed, please retry","taskDetail.executionFailed":"Execution failed","taskDetail.executionFailedRetry":"Execution failed, please retry","taskDetail.panelDescription":"Task execution conversation","taskDetail.filesChanged":"files changed","search.placeholder":"Search tasks, projects, repos, notes, assets...","search.task":"Tasks","search.project":"Projects","search.repository":"Repos","search.all":"All","search.note":"Notes","search.asset":"Assets","search.noResults":"No results found","search.typeToSearch":"Type to start searching","search.results":"Search Results","sidebar.right.projectInfo":"Project Info","sidebar.right.repo":"Repository","sidebar.right.addRepo":"Add Repository","sidebar.right.noRepo":"No linked repositories","sidebar.right.addRepoHint":"Add a repository below","sidebar.right.browseRepo":"Browse local repos","sidebar.right.createRepo":"Create new repo","sidebar.right.recent":"Recent","sidebar.right.other":"Other","sidebar.right.browseWip":"Browse repos - coming soon","sidebar.right.createWip":"Create repo - coming soon","sidebar.right.linkWip":"Link repo - coming soon","sidebar.right.normalType":"Normal","sidebar.right.gitType":"Git Project","sidebar.right.edit":"Edit Project","sidebar.right.name":"Project Name","sidebar.right.aliasLabel":"Alias","sidebar.right.descLabel":"Description","sidebar.right.save":"Save","sidebar.right.cancel":"Cancel","sidebar.right.namePlaceholder":"Enter project name","sidebar.right.aliasPlaceholder":"Optional alias","sidebar.right.descPlaceholder":"Project description","label.manage":"Manage Labels","label.name":"Label name","label.color":"Color","label.builtin":"Built-in","label.add":"Add Label","label.noLabels":"No labels","settings.title":"Settings","settings.language":"Language","settings.languageDesc":"Switch interface language","settings.general":"General","settings.generalDesc":"Appearance and language preferences","settings.theme":"Theme","settings.themeDesc":"Choose interface theme","settings.themeLight":"Light","settings.themeDark":"Dark","settings.themeSystem":"System","settings.prompts":"Prompts","settings.promptsDesc":"Manage AI prompt templates","settings.prompts.title":"Prompt Management","settings.prompts.newPrompt":"New Prompt","settings.prompts.editPrompt":"Edit Prompt","settings.prompts.promptName":"Name","settings.prompts.promptNamePlaceholder":"Enter prompt name","settings.prompts.promptDescription":"Description","settings.prompts.promptDescriptionPlaceholder":"Optional, brief description","settings.prompts.promptContent":"Content","settings.prompts.promptContentPlaceholder":"Enter prompt content...","settings.prompts.deleteConfirmTitle":"Confirm Delete","settings.prompts.deleteConfirmMessage":"This cannot be undone.","settings.prompts.setDefault":"Set as Default","settings.prompts.default":"Default","settings.prompts.empty":"No prompts yet","settings.prompts.emptyHint":"Click the button above to create your first prompt","settings.prompts.save":"Save","settings.prompts.cancel":"Cancel","settings.prompts.delete":"Delete","settings.aiTools.title":"AI Tools","settings.aiTools.cliVerification":"CLI Verification","settings.aiTools.cliVerificationDesc":"Verify AI CLI tools are correctly installed","settings.aiTools.testConnection":"Test Connection","settings.aiTools.testing":"Testing...","settings.aiTools.testPassed":"All checks passed","settings.aiTools.testFailed":"Some checks failed","settings.config":"Config","settings.configDesc":"System configuration parameters","settings.config.empty":"No configurable parameters yet — coming in next phases","settings.config.git.title":"Git Path Mapping Rules","settings.config.git.desc":"Define Git URL to local path mapping rules for auto-populating localPath on project creation","settings.config.git.host":"Host","settings.config.git.hostPlaceholder":"github.com","settings.config.git.ownerMatch":"Owner Match","settings.config.git.ownerMatchPlaceholder":"* (match all)","settings.config.git.localPathTemplate":"Local Base Path","settings.config.git.localPathTemplatePlaceholder":"/Users/you/project","settings.config.git.priority":"Priority","settings.config.git.priorityHint":"Lower number = higher priority","settings.config.git.addRule":"Add Rule","settings.config.git.noRules":"No mapping rules yet — click Add Rule to create one","settings.config.git.deleteConfirm":"Delete this rule?","settings.config.git.deleteConfirmMessage":"This cannot be undone.","settings.config.git.save":"Save","settings.config.git.cancel":"Cancel","settings.config.git.edit":"Edit","settings.config.git.delete":"Delete","settings.config.git.actions":"Actions","settings.config.git.templateHint":"Supports {owner} and {repo} variables","settings.config.git.validationRequired":"Host and local path template are required","settings.config.system.title":"System Parameters","settings.config.system.desc":"Upload limits and concurrency control","settings.config.system.maxUpload":"Max Upload File Size","settings.config.system.maxUploadHint":"Maximum allowed size for a single file upload","settings.config.system.maxConcurrent":"Max Concurrent Executions","settings.config.system.maxConcurrentHint":"Maximum number of AI tasks running simultaneously","settings.config.system.saved":"System parameters saved","settings.config.gitParams.title":"Git Parameters","settings.config.gitParams.desc":"Git operation timeout","settings.config.gitParams.timeout":"Git Operation Timeout","settings.config.gitParams.timeoutHint":"Timeout for clone/status and other operations","settings.config.gitParams.saved":"Git parameters saved","settings.config.search.title":"Search Parameters","settings.config.search.desc":"Search result count, debounce delay, and snippet length","settings.config.search.resultLimit":"Search Result Limit","settings.config.search.resultLimitHint":"Maximum results returned per search category","settings.config.search.allModeCap":"All-Mode Per-Type Cap","settings.config.search.allModeCapHint":"Maximum results per category in All search mode","settings.config.search.debounceMs":"Search Debounce Delay","settings.config.search.debounceMsHint":"Wait time after typing stops before executing search","settings.config.search.snippetLength":"Snippet Length","settings.config.search.snippetLengthHint":"Maximum characters for search result preview text","settings.config.search.saved":"Search parameters saved","workspace.selectHint":"Select a workspace","workspace.selectDesc":"Choose a workspace from the sidebar","workspace.createError":"Failed to create workspace, please try again","board.noProject":'No projects yet. Click "New Project" to create one.',"board.tipText":"Reuse existing drag, detail, and task creation pipeline","board.tipDesc":"Align workspace entry with prototype first, then add Settings, Skills, Plugins.","folder.selectFolder":"Select Folder","folder.selectGitRepo":"Select Git Repository","folder.hint":"Click folder name to navigate · Use buttons to select","folder.manualInput":"Enter path manually:","folder.goTo":"Go","folder.searchDir":"Search current directory:","folder.selectCurrent":"Select Current","folder.selectPath":"Select Path","folder.empty":"No folders in this directory","folder.browse":"Browse","git.section":"Git","git.currentBranch":"Current Branch","git.switchBranch":"Switch Branch","git.localBranches":"Local","git.remoteBranches":"Remote","git.modified":"Modified","git.staged":"Staged","git.untracked":"Untracked","git.notInitialized":"Git is not initialized for this project","git.initRepo":"Initialize Git Repository","git.initSuccess":"Git repository initialized","git.initFailed":"Initialization failed","git.switchSuccess":"Switched to branch","git.switchFailed":"Branch switch failed","git.noLocalPath":"Set project local path first","git.loading":"Loading...","git.createBranch":"Create Branch","git.branchName":"Branch Name","git.branchNamePlaceholder":"feature/my-feature","git.baseBranch":"Base Branch","git.branchDesc":"Description","git.branchDescPlaceholder":"Optional, describe this branch","git.createSuccess":"Branch created successfully","git.createFailed":"Failed to create branch","git.fetchSuccess":"Remote branches updated","git.fetchFailed":"Failed to fetch remote branches","git.changes":"Changes","git.stagedChanges":"Staged","git.unstagedChanges":"Unstaged","git.stageAll":"Stage All","git.unstageAll":"Unstage All","git.commit":"Commit","git.commitSuccess":"Committed successfully","git.commitMsgPlaceholder":"Commit message (⌘+Enter to commit)","git.pull":"Pull","git.pullSuccess":"Pulled successfully","git.push":"Push","git.pushSuccess":"Pushed successfully","git.commitLog":"Commit Log","git.stash":"Stash","git.stashMsgPlaceholder":"Stash message (optional)","git.stashSaved":"Changes stashed","git.stashApply":"Apply","git.stashApplied":"Stash applied","git.stashDrop":"Drop","git.stashDropped":"Stash dropped","git.noChanges":"Working tree clean","git.sync":"Sync","git.pullFrom":"Pull from","git.pushTo":"Push to","git.fetchAll":"Fetch All Remotes","git.stashSave":"Stash Changes","git.stashPopLatest":"Pop Latest Stash","git.discardAll":"Discard All Changes","git.discardSuccess":"All changes discarded","git.tabLabel":"Git","git.openStudio":"Open Studio","git.openStudioFailed":"Failed to open studio","archive.title":"Archived Tasks","archive.backToBoard":"Back to Board","archive.noTasks":"No archived tasks","archive.noTasksDesc":"Completed or cancelled tasks older than today will appear here","archive.completedAt":"Completed","archive.cancelledAt":"Cancelled","archive.createdAt":"Created","archive.lastExecution":"Last execution","archive.status.done":"Done","archive.status.cancelled":"Cancelled","archive.tasksCount":"archived","sidebar.notes":"Notes","sidebar.assets":"Assets","notes.title":"Notes","notes.newNote":"New Note","notes.allCategories":"All","notes.category.account":"Account","notes.category.env":"Environment","notes.category.requirements":"Requirements","notes.category.memo":"Memo","notes.edit":"Edit","notes.delete":"Delete","notes.save":"Save","notes.cancel":"Cancel","notes.titlePlaceholder":"Note title","notes.contentPlaceholder":"Note content (Markdown supported)","notes.categoryLabel":"Category","notes.empty":"No notes yet","notes.emptyHint":'Click "New Note" to create your first note',"notes.deleteConfirm":'Delete note "{title}"?',"notes.noProject":"No projects in this workspace","notes.noProjectHint":"Create a project first","notes.backToBoard":"Back to Board","notes.loading":"Loading...","notes.workspace":"Workspace","notes.project":"Project","assets.title":"Assets","assets.upload":"Upload File","assets.empty":"No assets yet","assets.emptyHint":"Upload files as project assets","assets.filename":"Filename","assets.size":"Size","assets.uploadedAt":"Uploaded At","assets.preview":"Preview","assets.download":"Download","assets.delete":"Delete","assets.deleteConfirm":'Delete asset "{filename}"?',"assets.noProject":"No projects in this workspace","assets.noProjectHint":"Create a project first","assets.uploading":"Uploading...","assets.backToBoard":"Back to Board","assets.loading":"Loading...","assets.uploadTitle":"Upload Asset","assets.workspace":"Workspace","assets.project":"Project","assets.file":"File","assets.selectFile":"Click to select file...","assets.description":"Description","assets.descriptionPlaceholder":"Enter asset description (searchable)","assets.revealInFinder":"Reveal in Finder","assets.previewNotSupported":"Preview not supported for this file type","assets.loadingPreview":"Loading...","assets.previewError":"Failed to load preview","assets.fileTooLarge":"File too large to preview (over 1MB)","taskPage.title":"Task Details","taskPage.back":"Back","taskPage.backToBoard":"Back to Board","taskPage.conversation":"Conversation","taskPage.changes":"Changes","taskPage.notes":"Notes","taskPage.addNote":"Add Note","taskPage.noteTitle":"Title","taskPage.noteContent":"Content","taskPage.uploadFile":"Upload File","taskPage.attachments":"Attachments","taskPage.noNotes":"No notes yet","taskPage.noAttachments":"No attachments yet","taskPage.deleteNote":"Delete","taskPage.deleteAttachment":"Delete","taskPage.noteSaved":"Note saved","taskPage.viewDetails":"View Details","taskPage.noChanges":"No changes to display","taskPage.branchDeleted":"Task branch has been deleted, cannot view changes","taskPage.startExecution":"Start an execution to see changes","taskPage.loadingDiff":"Loading changes...","taskPage.noDiff":"No changes (project needs local path and base branch configured)","taskPage.tabFiles":"Files","taskPage.tabPreview":"Preview","taskPage.tabSearch":"Search","taskPage.tabFileTree":"Files","taskPage.completeTask":"Complete Task","taskPage.taskCompleted":"Task completed","taskPage.uncommittedChanges":"Worktree has {count} uncommitted file(s). Please click Commit button first","taskPage.noChangesToComplete":"No changes to complete — nothing was committed","taskPage.loadDiffFailed":"Failed to load changes","taskPage.fileTree.newFile":"New File","taskPage.fileTree.newFolder":"New Folder","taskPage.fileTree.rename":"Rename","taskPage.fileTree.delete":"Delete","taskPage.fileTree.revealInFinder":"Reveal in Finder","taskPage.fileTree.emptyHeading":"File tree unavailable","taskPage.fileTree.emptyBody":"Start task execution to view the worktree directory","taskPage.fileTree.emptyDir":"Empty directory","taskPage.fileTree.loadError":"Failed to load files. Try again.","taskPage.fileTree.renamePlaceholder":"Enter new name","taskPage.fileTree.newFilePlaceholder":"File name","taskPage.fileTree.newFolderPlaceholder":"Folder name","taskPage.fileTree.deleteConfirmHeading":"Confirm delete","taskPage.fileTree.deleteConfirmBody":'Delete "{name}"? This cannot be undone.',"taskPage.fileTree.deleteConfirmBodyFolder":'"{name}" and all its contents will be deleted.',"taskPage.fileTree.deleteConfirmAction":"Delete","taskPage.fileTree.searchPlaceholder":"Search files…","taskPage.fileTree.searchNoResults":"No matching files","editor.selectFile":"Select a file to open","editor.selectFileHint":"Click any file in the file tree on the left","editor.saveSuccess":"File saved","editor.saveError":"Save failed, please try again","editor.closeTab":"Close tab","editor.noWorktree":"No worktree — run the task first","diff.filesChanged":"{count} files changed","diff.additions":"+{count}","diff.deletions":"-{count}","diff.binary":"Binary","diff.truncated":"Diff truncated (too large)","diff.conflictWarning":"Merge blocked: conflicts detected","diff.conflictFiles":"{count} conflicting files","diff.commitChanges":"Commit Changes","diff.commitMessagePlaceholder":"First line is the title, blank line then description\n\ne.g.:\nfeat: add user authentication\n\nImplement JWT token verification and refresh","diff.commit":"Commit","diff.noChanges":"No changes detected","diff.commitSuccess":"Committed ({hash})","merge.button":"Merge","merge.confirmTitle":"Confirm Squash Merge","merge.targetBranch":"Target branch","merge.changedFiles":"Changed files","merge.commitsToSquash":"Commits to squash","merge.commitMessage":"Commit message","merge.confirm":"Confirm Merge","merge.cancel":"Cancel","merge.merging":"Merging...","merge.success":"Merge completed successfully","merge.conflictError":"Cannot merge: conflicts detected","merge.failed":"Merge failed","project.type.label":"Project Type","project.type.frontend":"Frontend","project.type.backend":"Backend","project.previewCommand":"Preview Start Command","project.previewCommandPlaceholder":"e.g. pnpm dev","project.previewCommandDesc":"Command to start your local dev server","preview.run":"Run","preview.stop":"Stop","preview.openTerminal":"Open in Terminal","preview.refresh":"Refresh Preview","preview.addressPlaceholder":"Enter local URL, press Enter to load","preview.noWorktree":"Preview Unavailable","preview.noWorktreeDesc":"Run a task to preview your frontend here","preview.statusStopped":"Stopped","preview.statusStarting":"Starting...","preview.statusRunning":"Running","preview.statusError":"Failed","preview.errorDesc":"Failed to start preview server. Check your start command.","preview.terminalError":"Cannot open terminal. Check terminal settings.","preview.port":"Port","settings.shell.label":"Default Shell","settings.shell.desc":"Shell for PTY terminal and AI CLI testing — uses your system shell with its aliases, plugins, etc.","settings.shell.winHint":"Claude Code requires Git Bash on Windows — select Git Bash as default","settings.terminal.label":"Terminal App","settings.terminal.desc":'GUI terminal app for "Open in Terminal"',"settings.terminal.placeholder":"Terminal","settings.terminal.idleTimeout":"Idle Timeout (seconds)","settings.terminal.idleTimeoutDesc":"How long before idle detection triggers after no terminal output (minimum 180s)","settings.cliProfile.title":"CLI Profile","settings.cliProfile.desc":"Configure AI CLI tool execution parameters","settings.cliProfile.navDesc":"CLI execution parameters","settings.cliProfile.command":"Command","settings.cliProfile.commandHint":"CLI executable name or path","settings.cliProfile.commandPlaceholder":"claude","settings.cliProfile.baseArgs":"Base Arguments","settings.cliProfile.baseArgsHint":"Arguments appended to every execution, one per line","settings.cliProfile.baseArgsPlaceholder":"--dangerously-skip-permissions","settings.cliProfile.envVars":"Environment Variables","settings.cliProfile.envVarsHint":"Environment variables injected into CLI process, format: KEY=VALUE, one per line","settings.cliProfile.envVarsPlaceholder":"MY_VAR=value","settings.cliProfile.saved":"CLI profile saved","settings.cliProfile.saveError":"Save failed","settings.cliProfile.invalidJson":"Invalid parameter format","settings.cliProfile.noProfile":"No default CLI profile found — run seed","terminal.connecting":"Connecting...","terminal.connected":"Connected","terminal.disconnected":"Disconnected","terminal.reconnecting":"Reconnecting...","terminal.noWorktree":"No Worktree","terminal.noWorktreeDesc":"Run the task first to start the terminal","terminal.execute":"Execute","terminal.executing":"Executing...","terminal.noPrompt":"Enter a prompt to execute","terminal.stopExecution":"Stop","terminal.stopHint":"Consider asking AI to commit before stopping","terminal.promptPlaceholder":"Enter task prompt...","terminal.launch":"Launch Terminal","terminal.readyToLaunch":"Click to launch terminal and start task execution","execution.success":"Success","execution.failed":"Failed","execution.running":"Running","execution.viewDetails":"Details","execution.noSummary":"No summary","execution.commits":"commits","execution.files":"files","execution.terminalOutput":"Terminal Output","execution.history":"Execution History","execution.gitLog":"Git Log","execution.loading":"Loading...","execution.noHistory":"No execution history","execution.resume":"Resume","execution.tryRecover":"Try Continue","execution.details":"Details","execution.collapse":"Collapse","execution.insight":"Insight","missions.navLabel":"Missions","missions.pageTitle":"Mission Control","missions.launchTask":"Launch Task","missions.emptyTitle":"No running tasks","missions.emptyDesc":'Click "Launch Task" to start an execution',"missions.gridPreset":"Layout","missions.stopTask":"Stop Task","missions.openFullView":"Open full view","missions.runningTime":"Running","missions.statusCompleted":"Completed","missions.statusStopped":"Stopped","missions.statusRunning":"Running","missions.dragHandle":"Drag to reorder","missions.openInTerminal":"Open in Terminal","missions.launcher.title":"Launch Task","missions.launcher.workspace":"Workspace","missions.launcher.project":"Project","missions.launcher.task":"Task","missions.launcher.selectWorkspace":"Select workspace","missions.launcher.selectProject":"Select project","missions.launcher.selectTask":"Select task","missions.launcher.launch":"Launch","missions.launcher.cancel":"Cancel","missions.launcher.noTasks":"No executable tasks","missions.error.launchFailed":"Failed to launch task","missions.error.stopFailed":"Failed to stop task","missions.filterAll":"All Workspaces","missions.alreadyMonitored":"Already monitored","missions.showMoreTasks":"Show more tasks...","missions.pickerTitle":"Select a task to launch","missions.pickerFooter":"Click Launch to start execution","missions.noAvailableTasks":"No available tasks","missions.continueSession":"Continue last session","missions.continueLabel":"Continue","missions.launchNew":"Start new terminal","missions.launchNewLabel":"New","missions.fullPickerTitle":"Select Task","missions.fullPickerHint":"Select a workspace and project to see tasks","missions.gridCustom":"Custom","missions.gridCols":"Cols","missions.gridRows":"Rows","settings.config.missions.title":"Mission Control Layout","settings.config.missions.desc":"Configure min/max range for custom grid columns and rows","settings.config.missions.minCols":"Min Columns","settings.config.missions.maxCols":"Max Columns","settings.config.missions.minRows":"Min Rows","settings.config.missions.maxRows":"Max Rows","settings.config.hooks.title":"Hook Configuration","settings.config.hooks.desc":"Manage Claude Code PostToolUse hooks","settings.config.hooks.autoUploadTypes":"Auto-upload File Types","settings.config.hooks.autoUploadTypesHint":"Comma-separated file extensions","settings.config.hooks.install":"Install Hook","settings.config.hooks.uninstall":"Uninstall Hook","settings.config.hooks.installed":"Hook installed","settings.config.hooks.notInstalled":"Hook not installed","settings.config.hooks.installHint":"Once installed, files matching the configured types written by Claude Code will be auto-uploaded as task assets","assistant.title":"Tower Assistant","assistant.iconLabel":"Assistant","assistant.starting":"Starting...","assistant.errorTitle":"Session failed","assistant.errorBody":"Failed to start. Try again.","assistant.loading":"Loading...","assistant.emptyTitle":"What can I help you with?","assistant.emptyBody":"Type a message to start","assistant.copy":"Copy","assistant.suggestion.createProject":"Create a new project","assistant.suggestion.createTask":"Create a task","assistant.suggestion.checkProgress":"Check task progress","assistant.suggestion.dailySummary":"View today's work summary","assistant.inputPlaceholder":"Type a message, Enter to send, Shift+Enter for new line","assistant.sendLabel":"Send message","assistant.cancelLabel":"Cancel","assistant.thinking":"Thinking","assistant.toolLabel":"Tool","assistant.parseError":"Parse error","assistant.parseErrorBody":"Could not parse assistant output","assistant.closeLabel":"Close assistant","assistant.expandTool":"Expand tool call details","assistant.previewImage":"Preview image","assistant.removeImage":"Remove image","assistant.brokenImage":"Image unavailable","assistant.imageCount":"image(s)","assistant.uploadFailed":"Upload failed","assistant.uploadFailedRemoveHint":"Upload failed — click x to remove","assistant.closePreview":"Close preview","assistant.inputPlaceholderWithImages":"Type a message or paste an image...","settings.assistant.title":"Assistant","settings.assistant.desc":"Configure assistant behavior","settings.assistant.communicationMode":"Communication Mode","settings.assistant.communicationModeDesc":"Choose how to interact with the assistant","settings.assistant.modeTerminal":"Terminal","settings.assistant.modeChat":"Chat","assistant.newSession":"New Session","assistant.sessionList":"Sessions","assistant.deleteSession":"Delete","assistant.noSessions":"No previous sessions","project.migrate":"Migrate to canonical path","project.migrateHint":"Move project folder to the location derived from Git path rules","project.targetPath":"Target Path","project.migrating":"Migrating...","project.migrateSuccess":"Project migrated to canonical path","project.migrateError":"Migration failed","project.samePathInfo":"Path is already canonical","project.migrateSafetyWarning":"Ensure no tasks are running before migration","project.worktreeWarning":"This project has active Git worktrees — migration will be blocked","project.genDesc":"Generate Description","project.analyzing":"Analyzing...","project.analyzeError":"Analysis failed, please retry","project.genDescDisabledTooltip":"Please select a path first","project.genDescNoPath":"Please enter an address first","project.genDescNotCloned":"Please clone the project first","project.genDescReady":"Generate description from local code","project.deleteTitle":"Delete Project","project.deleteWarning":'Are you sure you want to delete "{name}"?',"project.deleteIrreversible":"This action cannot be undone. All tasks and data will be permanently deleted.","project.deleteConfirmLabel":'Type "confirm delete" to confirm',"project.deleteConfirmPlaceholder":"confirm delete","project.deleteConfirmText":"confirm delete","project.deleteButton":"Delete Project","project.deleteSuccess":"Project deleted","project.deleteFailed":"Delete failed, please retry","taskDrawer.title":"Task Overview","taskDrawer.description":"Description","taskDrawer.labels":"Labels","taskDrawer.createdAt":"Created","taskDrawer.resources":"Resources","taskDrawer.lastExecution":"Last Execution","taskDrawer.noDescription":"No description","taskDrawer.noExecution":"No execution history","codeSearch.patternPlaceholder":"Search code (regex supported)","codeSearch.globPlaceholder":"File filter, e.g. *.ts","codeSearch.noPath":"Please configure local path first","codeSearch.searching":"Searching...","codeSearch.noResults":"No matches found","codeSearch.truncated":"Showing first 200 results","codeSearch.hint":"Type a keyword and press Enter to search","codeSearch.rgNotInstalled":"ripgrep (rg) not found, please install: brew install ripgrep","settings.notifications.title":"Notifications","settings.notifications.desc":"Task completion alerts","settings.notifications.navDesc":"Desktop and toast alerts","settings.notifications.enable":"Task Completion Notifications","settings.notifications.enableDesc":"Show a desktop notification or toast when a task finishes executing","notification.permissionPrompt":"Allow Tower to send desktop notifications when tasks complete","notification.allow":"Allow","notification.dismiss":"Dismiss","notification.taskCompleted":"Task completed","notification.taskFailed":"Task failed","onboarding.title":"Welcome to Tower","onboarding.step1.title":"Set Your Username","onboarding.step1.desc":"Enter your username — the AI assistant will address you by this name","onboarding.step1.usernamePlaceholder":"Enter username","onboarding.step1.usernameLabel":"Username","onboarding.step1.next":"Next","onboarding.step2.title":"AI Connection Test","onboarding.step2.desc":"Test connectivity with AI adapters to ensure tasks can be dispatched and executed","onboarding.cliRequired":"Claude CLI must be installed and configured to continue. Please refer to the documentation.","onboarding.complete":"Complete Setup","onboarding.skip":"Skip","onboarding.back":"Back","onboarding.step3.title":"Configure Git Path Rules","onboarding.step3.desc":"Set up mapping rules between Git repository URLs and local paths — local paths will be auto-generated when creating Git projects","onboarding.step3.addFirst":"Add First Rule","onboarding.step3.noRules":"No rules configured yet — you'll need to enter local paths manually when creating Git projects","onboarding.step3.hostLabel":"Git Host","onboarding.step3.hostPlaceholder":"e.g. github.com","onboarding.step3.ownerLabel":"Owner Match","onboarding.step3.ownerPlaceholder":"* for all, or specific username","onboarding.step3.pathLabel":"Local Base Path","onboarding.step3.pathPlaceholder":"e.g. /Users/you/project","onboarding.step3.pathHint":"Variables: {path}=full path, {owner}=first segment, {repo}=repo name. Without variables, repo name is auto-appended","onboarding.step3.pathHintRepo":"Repository name is auto-appended to the path","onboarding.step3.pathHintFull":"Preserves full subgroup path (for GitLab nested groups)","onboarding.step3.added":"{count} rule(s) added","onboarding.step3.exampleTitle":"Example","onboarding.step3.exampleCase1":"Rule: host github.com, path ~/project → result ~/project/my-app","onboarding.step3.exampleCase2":"Rule: host gitlab.com, path ~/company/{path} → result ~/company/team/group/my-app","onboarding.step3.exampleDesc":"When creating a project with a Git URL, the local path is auto-filled. Use {path} to preserve full subgroup structure.","onboarding.step3.previewLabel":"Test Preview","onboarding.step3.previewPlaceholder":"Paste a Git URL to preview the result","onboarding.step3.previewNoMatch":"Cannot parse this URL","onboarding.stepIndicator":"Step {current}/{total}","onboarding.welcomeCta":"Create your first workspace to get started","onboarding.createWorkspace":"Create Workspace","onboarding.defaultWorkspaceName":"My Workspace","tour.step1.title":"Create Workspace","tour.step1.desc":"Workspaces are the top-level organizer. Click here to create your first workspace.","tour.step2.title":"Create Project","tour.step2.desc":"Projects belong to workspaces. Click here to create or import a project linked to your code repository.","tour.step3.title":"Open AI Assistant","tour.step3.desc":"The AI assistant helps you manage tasks and projects. Click here to start a conversation anytime.","tour.skip":"Skip tour","tour.next":"Next","tour.done":"Done","aiConfig.title":"AI Capability Config","aiConfig.description":"Configure provider and model for each AI feature independently","aiConfig.terminal":"Terminal Execution","aiConfig.summary":"Session Summary","aiConfig.dreaming":"Knowledge Distillation","aiConfig.analysis":"Project Analysis","aiConfig.assistant":"Assistant Chat","aiConfig.provider":"Provider","aiConfig.mode":"Mode","aiConfig.model":"Model","aiConfig.cli":"CLI (Subscription)","aiConfig.api":"API (Pay-per-use)","aiConfig.default":"Default","aiConfig.notConfigured":"Not configured","aiConfig.cliNotFound":"CLI not installed","aiConfig.apiKeyMissing":"API key not configured","aiConfig.saved":"Saved"}},e=(0,c.createContext)(null);a.s(["I18nProvider",0,function({children:a}){let[f,g]=(0,c.useState)("zh");(0,c.useEffect)(()=>{let a=localStorage.getItem("locale");a&&a!==f&&g(a)},[]);let h=(0,c.useCallback)(a=>{g(a),localStorage.setItem("locale",a)},[]),i=(0,c.useCallback)((a,b)=>{let c=d[f][a]??a;if(b)for(let[a,d]of Object.entries(b))c=c.replace(`{${a}}`,d);return c},[f]);return(0,b.jsx)(e.Provider,{value:{locale:f,setLocale:h,t:i},children:a})},"useI18n",0,function(){let a=(0,c.useContext)(e);if(!a)throw Error("useI18n must be used within I18nProvider");return a}],584335)}];
|
|
4
|
+
- Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`)}function ah(a,b,c,d){if(d.syncDynamicErrorWithStack)throw ag(a,d.syncDynamicErrorWithStack),new k.StaticGenBailoutError;if(0!==b){if(c.hasSuspenseAboveBody)return;let d=c.dynamicErrors;if(d.length>0){for(let b=0;b<d.length;b++)ag(a,d[b]);throw new k.StaticGenBailoutError}if(c.hasDynamicViewport)throw console.error(`Route "${a.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),new k.StaticGenBailoutError;if(1===b)throw console.error(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new k.StaticGenBailoutError}else if(!1===c.hasAllowedDynamic&&c.hasDynamicMetadata)throw console.error(`Route "${a.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),new k.StaticGenBailoutError}function ai(a,b,c,d){if(d||c.hasSuspenseAboveBody)return[];if(0!==b){let d=c.dynamicErrors;if(d.length>0)return d;if(1===b)return[Object.defineProperty(new r.InvariantError(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E936",enumerable:!1,configurable:!0})]}else if(!1===c.hasAllowedDynamic&&0===c.dynamicErrors.length&&c.dynamicMetadata)return[c.dynamicMetadata];return[]}function aj(a,b,c,d,e){if(d){let{missingSampleErrors:a}=d;if(a.length>0)return a}let{validationPreventingErrors:f}=c;if(f.length>0)return f;if(e.renderedIds.size<e.expectedIds.size){let{thrownErrorsOutsideBoundary:b,createInstantStack:d}=c;if(0===b.length){let b=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering for an unknown reason.`,c=null!==d?d():Error();return c.name="Error",c.message=b,[c]}if(1===b.length){let c=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering, likely due to the following error.`,e=null!==d?d():Error();return e.name="Error",e.message=c,[e,b[0]]}{let c=`Route "${a.route}": Could not validate \`unstable_instant\` because the target segment was prevented from rendering, likely due to one of the following errors.`,e=null!==d?d():Error();return e.name="Error",e.message=c,[e,...b]}}if(0!==b){let d=c.dynamicErrors;if(d.length>0)return d;if(1===b)return c.hasAllowedClientDynamicAboveBoundary?[]:[Object.defineProperty(new r.InvariantError(`Route "${a.route}" failed to render during instant validation and Next.js was unable to determine a reason.`),"__NEXT_ERROR_CODE",{value:"E1055",enumerable:!1,configurable:!0})]}else{let a=c.dynamicErrors;if(a.length>0)return a;if(!1===c.hasAllowedDynamic&&c.dynamicMetadata)return[c.dynamicMetadata]}return[]}},620638,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=a.r(418803),e=a.r(737484),f=a.r(297781),g=a.r(194899),h=a.r(382114),i=a.r(773034);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},557674,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=a.r(620638).unstable_rethrow;("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},400767,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return f.ReadonlyURLSearchParams},RedirectType:function(){return m},forbidden:function(){return i.forbidden},notFound:function(){return h.notFound},permanentRedirect:function(){return g.permanentRedirect},redirect:function(){return g.redirect},unauthorized:function(){return j.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return k.unstable_rethrow}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(156677),g=a.r(560583),h=a.r(213730),i=a.r(269038),j=a.r(369916),k=a.r(557674);function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let m={push:"push",replace:"replace"};("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},695613,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={ReadonlyURLSearchParams:function(){return h.ReadonlyURLSearchParams},RedirectType:function(){return l.RedirectType},ServerInsertedHTMLContext:function(){return j.ServerInsertedHTMLContext},forbidden:function(){return l.forbidden},notFound:function(){return l.notFound},permanentRedirect:function(){return l.permanentRedirect},redirect:function(){return l.redirect},unauthorized:function(){return l.unauthorized},unstable_isUnrecognizedActionError:function(){return k.unstable_isUnrecognizedActionError},unstable_rethrow:function(){return l.unstable_rethrow},useParams:function(){return u},usePathname:function(){return s},useRouter:function(){return t},useSearchParams:function(){return r},useSelectedLayoutSegment:function(){return w},useSelectedLayoutSegments:function(){return v},useServerInsertedHTML:function(){return j.useServerInsertedHTML}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(115727)._(a.r(175391)),g=a.r(362556),h=a.r(923638),i=a.r(73388),j=a.r(635039),k=a.r(408504),l=a.r(400767),m=a.r(382114).useDynamicRouteParams,n=a.r(382114).useDynamicSearchParams,{instrumentParamsForClientValidation:o,instrumentSearchParamsForClientValidation:p,expectCompleteParamsInClientValidation:q}={};function r(){n?.("useSearchParams()");let a=(0,f.useContext)(h.SearchParamsContext);return(0,f.useMemo)(()=>a?new h.ReadonlyURLSearchParams(a):null,[a])}function s(){return m?.("usePathname()"),(0,f.useContext)(h.PathnameContext)}function t(){let a=(0,f.useContext)(g.AppRouterContext);if(null===a)throw Object.defineProperty(Error("invariant expected app router to be mounted"),"__NEXT_ERROR_CODE",{value:"E238",enumerable:!1,configurable:!0});return a}function u(){return m?.("useParams()"),(0,f.useContext)(h.PathParamsContext)}function v(a="children"){m?.("useSelectedLayoutSegments()");let b=(0,f.useContext)(g.LayoutRouterContext);return b?(0,i.getSelectedLayoutSegmentPath)(b.parentTree,a):null}function w(a="children"){m?.("useSelectedLayoutSegment()"),(0,f.useContext)(h.NavigationPromisesContext);let b=v(a);return(0,i.computeSelectedLayoutSegment)(b,a)}("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)},448287,(a,b,c)=>{b.exports=a.r(695613)},302856,a=>{"use strict";var b=a.i(175391);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.createContext)({}),g=(0,b.forwardRef)(({color:a,size:d,strokeWidth:g,absoluteStrokeWidth:h,className:i="",children:j,iconNode:k,...l},m)=>{let{size:n=24,strokeWidth:o=2,absoluteStrokeWidth:p=!1,color:q="currentColor",className:r=""}=(0,b.useContext)(f)??{},s=h??p?24*Number(g??o)/Number(d??n):g??o;return(0,b.createElement)("svg",{ref:m,...e,width:d??n??e.width,height:d??n??e.height,stroke:a??q,strokeWidth:s,className:c("lucide",r,i),...!j&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(l)&&{"aria-hidden":"true"},...l},[...k.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(j)?j:[j]])});a.s(["default",0,(a,e)=>{let f=(0,b.forwardRef)(({className:f,...h},i)=>(0,b.createElement)(g,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,f),...h}));return f.displayName=d(a),f}],302856)},910600,a=>{"use strict";var b=a.i(175391);a.s(["useControlled",0,function({controlled:a,default:c,name:d,state:e="value"}){let{current:f}=b.useRef(void 0!==a),[g,h]=b.useState(c),i=b.useCallback(a=>{f||h(a)},[]);return[f?a:g,i]}])},88326,447892,a=>{"use strict";var b=a.i(175391),c=a.i(962256),d=a.i(825863),e=a.i(527993),f=a.i(293785),g=a.i(545264);let h=b.createContext(void 0);function i(a=!1){let c=b.useContext(h);if(void 0===c&&!a)throw Error((0,g.default)(16));return c}function j(a){return(0,c.isHTMLElement)(a)&&"BUTTON"===a.tagName}a.s(["CompositeRootContext",0,h,"useCompositeRootContext",0,i],447892),a.s(["useButton",0,function(a={}){let{disabled:c=!1,focusableWhenDisabled:g,tabIndex:h=0,native:k=!0,composite:l}=a,m=b.useRef(null),n=i(!0),o=l??void 0!==n,{props:p}=function(a){let{focusableWhenDisabled:c,disabled:d,composite:e=!1,tabIndex:f=0,isNativeButton:g}=a,h=e&&!1!==c,i=e&&!1===c;return{props:b.useMemo(()=>{let a={onKeyDown(a){d&&c&&"Tab"!==a.key&&a.preventDefault()}};return e||(a.tabIndex=f,!g&&d&&(a.tabIndex=c?f:-1)),(g&&(c||h)||!g&&d)&&(a["aria-disabled"]=d),g&&(!c||i)&&(a.disabled=d),a},[e,d,c,h,i,g,f])}}({focusableWhenDisabled:g,disabled:c,composite:o,tabIndex:h,isNativeButton:k}),q=b.useCallback(()=>{let a=m.current;j(a)&&o&&c&&void 0===p.disabled&&a.disabled&&(a.disabled=!1)},[c,p.disabled,o]);return(0,e.useIsoLayoutEffect)(q,[q]),{getButtonProps:b.useCallback((a={})=>{let{onClick:b,onMouseDown:d,onKeyUp:e,onKeyDown:g,onPointerDown:h,...i}=a,l=k?"button":void 0;return(0,f.mergeProps)({type:l,onClick(a){c?a.preventDefault():b?.(a)},onMouseDown(a){c||d?.(a)},onKeyDown(a){var d;if(c||((0,f.makeEventPreventable)(a),g?.(a),a.baseUIHandlerPrevented))return;let e=a.target===a.currentTarget,h=a.currentTarget,i=j(h),l=!k&&(d=h,!!(d?.tagName==="A"&&d?.href)),m=e&&(k?i:!l),n="Enter"===a.key,p=" "===a.key,q=h.getAttribute("role"),r=q?.startsWith("menuitem")||"option"===q||"gridcell"===q;if(e&&o&&p){if(a.defaultPrevented&&r)return;a.preventDefault(),l||k&&i?(h.click(),a.preventBaseUIHandler()):m&&(b?.(a),a.preventBaseUIHandler());return}m&&(!k&&(p||n)&&a.preventDefault(),!k&&n&&b?.(a))},onKeyUp(a){c||(((0,f.makeEventPreventable)(a),e?.(a),a.target===a.currentTarget&&k&&o&&j(a.currentTarget)&&" "===a.key)?a.preventDefault():!a.baseUIHandlerPrevented&&(a.target!==a.currentTarget||k||o||" "!==a.key||b?.(a)))},onPointerDown(a){c?a.preventDefault():h?.(a)}},k?void 0:{role:"button"},p,i)},[c,p,o,k]),buttonRef:(0,d.useStableCallback)(a=>{m.current=a,q()})}}],88326)},969626,170469,a=>{"use strict";var b,c=a.i(545264),d=a.i(175391),e=a.i(302398);let f=((b={}).disabled="data-disabled",b.valid="data-valid",b.invalid="data-invalid",b.touched="data-touched",b.dirty="data-dirty",b.filled="data-filled",b.focused="data-focused",b),g={badInput:!1,customError:!1,patternMismatch:!1,rangeOverflow:!1,rangeUnderflow:!1,stepMismatch:!1,tooLong:!1,tooShort:!1,typeMismatch:!1,valid:null,valueMissing:!1},h={valid:null,touched:!1,dirty:!1,filled:!1,focused:!1},i={disabled:!1,...h};a.s(["DEFAULT_FIELD_ROOT_STATE",0,i,"DEFAULT_FIELD_STATE_ATTRIBUTES",0,h,"DEFAULT_VALIDITY_STATE",0,g,"fieldValidityMapping",0,{valid:a=>null===a?null:a?{[f.valid]:""}:{[f.invalid]:""}}],170469);let j=d.createContext({invalid:void 0,name:void 0,validityData:{state:g,errors:[],error:"",value:"",initialValue:null},setValidityData:e.NOOP,disabled:void 0,touched:h.touched,setTouched:e.NOOP,dirty:h.dirty,setDirty:e.NOOP,filled:h.filled,setFilled:e.NOOP,focused:h.focused,setFocused:e.NOOP,validate:()=>null,validationMode:"onSubmit",validationDebounceTime:0,shouldValidateOnChange:()=>!1,state:i,markedDirtyRef:{current:!1},validation:{getValidationProps:(a=e.EMPTY_OBJECT)=>a,getInputValidationProps:(a=e.EMPTY_OBJECT)=>a,inputRef:{current:null},commit:async()=>{}}});a.s(["FieldRootContext",0,j,"useFieldRootContext",0,function(a=!0){let b=d.useContext(j);if(b.setValidityData===e.NOOP&&!a)throw Error((0,c.default)(28));return b}],969626)},506489,a=>{"use strict";var b=a.i(175391),c=a.i(302398);let d=b.createContext({formRef:{current:{fields:new Map}},errors:{},clearErrors:c.NOOP,validationMode:"onSubmit",submitAttemptedRef:{current:!1}});a.s(["useFormContext",0,function(){return b.useContext(d)}])},176174,a=>{"use strict";var b=a.i(175391),c=a.i(302398);let d=b.createContext({controlId:void 0,registerControlId:c.NOOP,labelId:void 0,setLabelId:c.NOOP,messageIds:[],setMessageIds:c.NOOP,getDescriptionProps:a=>a});a.s(["LabelableContext",0,d,"useLabelableContext",0,function(){return b.useContext(d)}])},553902,a=>{"use strict";a.s(["getCombinedFieldValidityData",0,function(a,b){return{...a,state:{...a.state,valid:!b&&a.state.valid}}}])},799823,a=>{"use strict";var b=a.i(962256),c=a.i(848275),d=a.i(825863),e=a.i(394395),f=a.i(527993),g=a.i(128429),h=a.i(176174);a.s(["useLabel",0,function(a={}){let i,{id:j,fallbackControlId:k,native:l=!1,setLabelId:m,focusControl:n}=a,{controlId:o,setLabelId:p}=(0,h.useLabelableContext)(),q=(0,d.useStableCallback)(a=>{p(a),m?.(a)}),r=(i=(0,g.useBaseUiId)(j),(0,f.useIsoLayoutEffect)(()=>(q(i),()=>{q(void 0)}),[i,q]),i),s=o??k;function t(a){let d=(0,e.getTarget)(a.nativeEvent);d?.closest("button,input,select,textarea")||(!a.defaultPrevented&&a.detail>1&&a.preventDefault(),l||function(a){if(n)return n(a,s);if(!s)return;let d=(0,c.ownerDocument)(a.currentTarget).getElementById(s);(0,b.isHTMLElement)(d)&&d.focus({focusVisible:!0})}(a))}return l?{id:r,htmlFor:s??void 0,onMouseDown:t}:{id:r,onClick:t,onPointerDown(a){a.preventDefault()}}}],799823)},648172,a=>{"use strict";var b=a.i(175391),c=a.i(527993),d=a.i(825863),e=a.i(150155),f=a.i(962256),g=a.i(302398),h=a.i(128429),i=a.i(176174);a.s(["useLabelableId",0,function(a={}){let{id:j,implicit:k=!1,controlRef:l}=a,{controlId:m,registerControlId:n}=(0,i.useLabelableContext)(),o=(0,h.useBaseUiId)(j),p=k?m:void 0,q=(0,e.useRefWithInit)(()=>Symbol("labelable-control")),r=b.useRef(!1),s=b.useRef(null!=j),t=(0,d.useStableCallback)(()=>{r.current&&n!==g.NOOP&&(r.current=!1,n(q.current,void 0))});return(0,c.useIsoLayoutEffect)(()=>{let a;if(n!==g.NOOP){if(k){let b=l?.current;a=(0,f.isElement)(b)&&null!=b.closest("label")?j??null:p??o}else if(null!=j)s.current=!0,a=j;else{if(!s.current)return void t();a=o}if(void 0===a)return void t();r.current=!0,n(q.current,a)}},[j,l,p,n,k,o,q,t]),b.useEffect(()=>t,[t]),m??o}])},98719,a=>{"use strict";var b=a.i(425422),c=a.i(527993),d=a.i(825863),e=a.i(553902),f=a.i(506489),g=a.i(969626);a.s(["useField",0,function(a){let{enabled:h=!0,value:i,id:j,name:k,controlRef:l,commit:m}=a,{formRef:n}=(0,f.useFormContext)(),{invalid:o,markedDirtyRef:p,validityData:q,setValidityData:r}=(0,g.useFieldRootContext)(),s=(0,d.useStableCallback)(a.getValue);(0,c.useIsoLayoutEffect)(()=>{if(!h)return;let a=i;void 0===a&&(a=s()),null===q.initialValue&&null!==a&&r(b=>({...b,initialValue:a}))},[h,r,i,q.initialValue,s]),(0,c.useIsoLayoutEffect)(()=>{h&&j&&n.current.fields.set(j,{getValue:s,name:k,controlRef:l,validityData:(0,e.getCombinedFieldValidityData)(q,o),validate(a=!0){let c=i;void 0===c&&(c=s()),p.current=!0,a?b.flushSync(()=>m(c)):m(c)}})},[m,l,h,n,s,j,o,p,k,q,i]),(0,c.useIsoLayoutEffect)(()=>{let a=n.current.fields;return()=>{j&&a.delete(j)}},[n,j])}])},584335,a=>{"use strict";var b=a.i(858360),c=a.i(175391);let d={zh:{"sidebar.workspace":"工作空间","sidebar.newWorkspace":"新建工作空间","sidebar.collapse":"折叠侧边栏","sidebar.expand":"展开侧边栏","sidebar.rename":"重命名","sidebar.delete":"删除","sidebar.archive":"归档","sidebar.manageLabels":"管理标签","sidebar.deleteConfirm":"确认删除工作空间「{name}」?所有项目和任务将被删除。","sidebar.lastWorkspaceError":"至少需要保留一个工作空间","sidebar.settings":"配置","workspace.create":"新建工作空间","workspace.edit":"编辑工作空间","workspace.name":"名称","workspace.namePlaceholder":"输入工作空间名称","workspace.icon":"图标","common.cancel":"取消","common.create":"创建","common.save":"保存","common.delete":"删除","common.add":"添加","common.edit":"编辑","common.search":"搜索","topbar.newProject":"新建项目","topbar.importProject":"导入项目","topbar.searchPlaceholder":"搜索任务、项目、仓库、笔记、资源...","project.name":"项目名称","project.alias":"项目别名","project.description":"项目描述","project.gitUrl":"Git 仓库地址","project.gitUrlHint":"可选,输入后自动推断本地路径","project.namePlaceholder":"输入项目名称","project.aliasPlaceholder":"可选,如:前端重构","project.descPlaceholder":"可选,项目简介","project.gitPlaceholder":"https://github.com/user/repo 或 git@github.com:user/repo.git","project.localPath":"本地路径","project.localPathPlaceholder":"/Users/you/projects/my-app","project.localPathHint":"项目在本地磁盘的文件夹路径,输入 Git 地址后自动填充","project.tildeWarning":"请输入绝对路径,不支持 ~ 别名","project.importHint":"选择本地已有项目文件夹","project.autoDetected":"已自动检测 Git 远程","project.edit":"编辑项目","git.clone":"克隆到本地","git.cloning":"正在克隆...","git.cloned":"已克隆","git.cloneSuccess":"仓库克隆成功","board.kanban":"任务看板","board.overview":"概览","board.running":"执行中","board.tip":"提示","board.newTask":"新建任务","board.allFilter":"全部","board.searchPlaceholder":"搜索任务...","board.inProgressFilter":"执行中","board.inReviewFilter":"待评审","board.contextMenu.changeStatus":"更改状态","board.contextMenu.launch":"启动任务","board.contextMenu.goToDetail":"查看详情","board.pin":"置顶","board.unpin":"取消置顶","board.viewAll":"查看全部","board.noTasks":"暂无任务","task.create":"新建任务","task.edit":"编辑任务","task.title":"任务标题","task.titlePlaceholder":"输入任务标题","task.description":"描述","task.descPlaceholder":"输入任务描述 (支持 Markdown)","task.priority":"优先级","task.labels":"标签","task.priorityLow":"低","task.priorityMedium":"中","task.priorityHigh":"高","task.priorityCritical":"紧急","task.baseBranch":"基础分支","task.branchLoading":"加载分支...","task.branchNone":"未找到分支","task.branchSearch":"搜索分支...","task.branchDirect":"不使用分支隔离(直接在主仓库工作)","task.worktreeLabel":"分支隔离","task.worktreeYes":"启用","task.worktreeNo":"不启用","task.subPath":"子路径","task.subPathPlaceholder":"例如: web、packages/api","task.subPathHint":"Mono-repo 子目录,任务将在此目录下执行","taskDetail.title":"任务对话","taskDetail.back":"返回任务列表","taskDetail.hasConversation":"已有会话","taskDetail.updatedAt":"更新于","taskDetail.directMode":"直接模式","taskDetail.send":"发送","taskDetail.sending":"处理中...","taskDetail.inputPlaceholder":"输入指令...","taskDetail.emptyState":"开始对话,让 AI 代理执行任务","taskDetail.emptyHint":"输入指令后按 Enter 发送","taskDetail.sendFailed":"发送失败,请重试","taskDetail.executionFailed":"执行失败","taskDetail.executionFailedRetry":"执行失败,请重试","taskDetail.panelDescription":"聚焦当前任务的执行对话","taskDetail.filesChanged":"个文件已更改","search.placeholder":"搜索任务、项目、仓库、笔记、资源...","search.task":"任务","search.project":"项目","search.repository":"仓库","search.all":"全部","search.note":"笔记","search.asset":"资源","search.noResults":"没有找到结果","search.typeToSearch":"输入关键词开始搜索","search.results":"搜索结果","sidebar.right.projectInfo":"项目信息","sidebar.right.repo":"仓库","sidebar.right.addRepo":"添加仓库","sidebar.right.noRepo":"暂无已关联仓库","sidebar.right.addRepoHint":"点击下方添加仓库","sidebar.right.browseRepo":"浏览磁盘上的仓库","sidebar.right.createRepo":"在磁盘上创建新仓库","sidebar.right.recent":"最近","sidebar.right.other":"其他","sidebar.right.browseWip":"浏览磁盘仓库功能开发中","sidebar.right.createWip":"创建仓库功能开发中","sidebar.right.linkWip":"关联仓库功能开发中","sidebar.right.normalType":"普通项目","sidebar.right.gitType":"Git 项目","sidebar.right.edit":"编辑项目","sidebar.right.name":"项目名称","sidebar.right.aliasLabel":"别名","sidebar.right.descLabel":"描述","sidebar.right.save":"保存","sidebar.right.cancel":"取消","sidebar.right.namePlaceholder":"输入项目名称","sidebar.right.aliasPlaceholder":"可选别名","sidebar.right.descPlaceholder":"项目描述","label.manage":"管理标签","label.name":"标签名称","label.color":"颜色","label.builtin":"内置","label.add":"添加标签","label.noLabels":"暂无标签","settings.title":"配置","settings.language":"语言","settings.languageDesc":"切换界面语言","settings.general":"通用","settings.generalDesc":"主题与语言偏好","settings.theme":"主题","settings.themeDesc":"选择界面主题","settings.themeLight":"浅色","settings.themeDark":"深色","settings.themeSystem":"跟随系统","settings.prompts":"提示词","settings.promptsDesc":"管理 AI 提示词模板","settings.prompts.title":"提示词管理","settings.prompts.newPrompt":"新建提示词","settings.prompts.editPrompt":"编辑提示词","settings.prompts.promptName":"名称","settings.prompts.promptNamePlaceholder":"输入提示词名称","settings.prompts.promptDescription":"描述","settings.prompts.promptDescriptionPlaceholder":"可选,简要描述用途","settings.prompts.promptContent":"内容","settings.prompts.promptContentPlaceholder":"输入提示词内容...","settings.prompts.deleteConfirmTitle":"确认删除","settings.prompts.deleteConfirmMessage":"删除后无法恢复。","settings.prompts.setDefault":"设为默认","settings.prompts.default":"默认","settings.prompts.empty":"暂无提示词","settings.prompts.emptyHint":"点击上方按钮创建第一个提示词","settings.prompts.save":"保存","settings.prompts.cancel":"取消","settings.prompts.delete":"删除","settings.aiTools.title":"AI 工具","settings.aiTools.cliVerification":"CLI 验证","settings.aiTools.cliVerificationDesc":"验证 AI 工具命令行是否已正确安装","settings.aiTools.testConnection":"测试连接","settings.aiTools.testing":"测试中...","settings.aiTools.testPassed":"检测通过","settings.aiTools.testFailed":"部分检测未通过","settings.config":"参数配置","settings.configDesc":"系统运行参数","settings.config.empty":"暂无可配置参数 — 后续版本将添加","settings.config.git.title":"Git 路径映射规则","settings.config.git.desc":"定义 Git URL 到本地路径的映射规则,创建项目时自动填充 localPath","settings.config.git.host":"主机","settings.config.git.hostPlaceholder":"github.com","settings.config.git.ownerMatch":"Owner 匹配","settings.config.git.ownerMatchPlaceholder":"* (匹配所有)","settings.config.git.localPathTemplate":"本地基础路径","settings.config.git.localPathTemplatePlaceholder":"/Users/you/project","settings.config.git.priority":"优先级","settings.config.git.priorityHint":"数值越小优先级越高","settings.config.git.addRule":"添加规则","settings.config.git.noRules":"暂无映射规则 — 点击「添加规则」创建","settings.config.git.deleteConfirm":"确定删除此规则?","settings.config.git.deleteConfirmMessage":"此操作不可撤销。","settings.config.git.save":"保存","settings.config.git.cancel":"取消","settings.config.git.edit":"编辑","settings.config.git.delete":"删除","settings.config.git.actions":"操作","settings.config.git.templateHint":"支持 {owner} 和 {repo} 变量","settings.config.git.validationRequired":"主机和本地路径模板不能为空","settings.config.system.title":"系统参数","settings.config.system.desc":"上传限制与并发控制","settings.config.system.maxUpload":"最大上传文件大小","settings.config.system.maxUploadHint":"单个文件允许的最大上传大小","settings.config.system.maxConcurrent":"最大并发执行数","settings.config.system.maxConcurrentHint":"同时运行的 AI 任务上限","settings.config.system.saved":"系统参数已保存","settings.config.gitParams.title":"Git 参数","settings.config.gitParams.desc":"Git 操作超时","settings.config.gitParams.timeout":"Git 操作超时","settings.config.gitParams.timeoutHint":"clone/status 等操作的超时时间","settings.config.gitParams.saved":"Git 参数已保存","settings.config.search.title":"搜索参数","settings.config.search.desc":"搜索结果数量、防抖延迟与摘要长度","settings.config.search.resultLimit":"搜索结果数量","settings.config.search.resultLimitHint":"每类搜索返回的最大结果数","settings.config.search.allModeCap":"全部模式单类上限","settings.config.search.allModeCapHint":"「全部」搜索时每个类别显示的最大结果数","settings.config.search.debounceMs":"搜索防抖延迟","settings.config.search.debounceMsHint":"输入停止后等待多久执行搜索","settings.config.search.snippetLength":"摘要长度","settings.config.search.snippetLengthHint":"搜索结果预览文本的最大字符数","settings.config.search.saved":"搜索参数已保存","workspace.selectHint":"选择一个工作空间","workspace.selectDesc":"从左侧选择一个工作空间开始","workspace.createError":"创建工作区失败,请重试","board.noProject":"该工作空间没有项目,请点击顶部「新建项目」创建","board.tipText":"复用现有拖拽、详情和任务创建链路","board.tipDesc":"先把工作台入口对齐原型,再逐步补 Settings、Skills、Plugins。","folder.selectFolder":"选择文件夹","folder.selectGitRepo":"选择 Git 仓库","folder.hint":"点击文件夹名称进行导航 · 使用操作按钮进行选择","folder.manualInput":"手动输入路径:","folder.goTo":"前往","folder.searchDir":"搜索当前目录:","folder.selectCurrent":"选择当前","folder.selectPath":"选择路径","folder.empty":"此目录下没有文件夹","folder.browse":"浏览","git.section":"Git","git.currentBranch":"当前分支","git.switchBranch":"切换分支","git.localBranches":"本地分支","git.remoteBranches":"远程分支","git.modified":"已修改","git.staged":"已暂存","git.untracked":"未跟踪","git.notInitialized":"该项目尚未初始化 Git 仓库","git.initRepo":"初始化 Git 仓库","git.initSuccess":"Git 仓库初始化成功","git.initFailed":"初始化失败","git.switchSuccess":"已切换到分支","git.switchFailed":"切换分支失败","git.noLocalPath":"请先设置项目本地路径","git.loading":"加载中...","git.createBranch":"创建分支","git.branchName":"分支名称","git.branchNamePlaceholder":"feature/my-feature","git.baseBranch":"基于分支","git.branchDesc":"分支描述","git.branchDescPlaceholder":"可选,描述这个分支的用途","git.createSuccess":"分支创建成功","git.createFailed":"创建分支失败","git.fetchSuccess":"远程分支已更新","git.fetchFailed":"拉取远程分支失败","git.changes":"变更","git.stagedChanges":"已暂存","git.unstagedChanges":"未暂存","git.stageAll":"全部暂存","git.unstageAll":"全部取消","git.commit":"提交","git.commitSuccess":"提交成功","git.commitMsgPlaceholder":"提交信息 (⌘+Enter 提交)","git.pull":"拉取","git.pullSuccess":"拉取成功","git.push":"推送","git.pushSuccess":"推送成功","git.commitLog":"提交历史","git.stash":"暂存区","git.stashMsgPlaceholder":"暂存描述(可选)","git.stashSaved":"已暂存变更","git.stashApply":"恢复","git.stashApplied":"已恢复暂存","git.stashDrop":"删除","git.stashDropped":"已删除暂存","git.noChanges":"工作区干净,没有变更","git.sync":"同步","git.pullFrom":"拉取自","git.pushTo":"推送到","git.fetchAll":"获取所有远程","git.stashSave":"暂存变更","git.stashPopLatest":"恢复最近暂存","git.discardAll":"放弃所有更改","git.discardSuccess":"已放弃所有更改","git.tabLabel":"Git","git.openStudio":"打开工作台","git.openStudioFailed":"打开工作台失败","archive.title":"归档任务","archive.backToBoard":"返回看板","archive.noTasks":"暂无归档任务","archive.noTasksDesc":"已完成或已取消超过今日的任务将出现在此处","archive.completedAt":"完成于","archive.cancelledAt":"取消于","archive.createdAt":"创建于","archive.lastExecution":"最近执行","archive.status.done":"已完成","archive.status.cancelled":"已取消","archive.tasksCount":"条归档","sidebar.notes":"笔记","sidebar.assets":"资源","notes.title":"笔记","notes.newNote":"新建笔记","notes.allCategories":"全部分类","notes.category.account":"账号","notes.category.env":"环境","notes.category.requirements":"需求","notes.category.memo":"备忘","notes.edit":"编辑","notes.delete":"删除","notes.save":"保存","notes.cancel":"取消","notes.titlePlaceholder":"笔记标题","notes.contentPlaceholder":"笔记内容(支持 Markdown)","notes.categoryLabel":"分类","notes.empty":"暂无笔记","notes.emptyHint":"点击「新建笔记」创建第一条笔记","notes.deleteConfirm":"确认删除笔记「{title}」?","notes.noProject":"当前工作空间没有项目","notes.noProjectHint":"请先创建一个项目","notes.backToBoard":"返回看板","notes.loading":"加载中...","notes.workspace":"工作区","notes.project":"项目","assets.title":"资源","assets.upload":"上传文件","assets.empty":"暂无资源","assets.emptyHint":"上传文件作为项目资源","assets.filename":"文件名","assets.size":"大小","assets.uploadedAt":"上传时间","assets.preview":"预览","assets.download":"下载","assets.delete":"删除","assets.deleteConfirm":"确认删除资源「{filename}」?","assets.noProject":"当前工作空间没有项目","assets.noProjectHint":"请先创建一个项目","assets.uploading":"上传中...","assets.backToBoard":"返回看板","assets.loading":"加载中...","assets.uploadTitle":"上传资源","assets.workspace":"工作区","assets.project":"项目","assets.file":"文件","assets.selectFile":"点击选择文件...","assets.description":"描述","assets.descriptionPlaceholder":"输入资源描述(可搜索)","assets.revealInFinder":"在文件夹中显示","assets.previewNotSupported":"不支持预览此文件类型","assets.loadingPreview":"加载中...","assets.previewError":"加载预览失败","assets.fileTooLarge":"文件过大,无法预览(超过 1MB)","taskPage.title":"任务详情","taskPage.back":"返回","taskPage.backToBoard":"返回看板","taskPage.conversation":"对话","taskPage.changes":"变更","taskPage.notes":"备注","taskPage.addNote":"添加备注","taskPage.noteTitle":"标题","taskPage.noteContent":"内容","taskPage.uploadFile":"上传附件","taskPage.attachments":"附件","taskPage.noNotes":"暂无备注","taskPage.noAttachments":"暂无附件","taskPage.deleteNote":"删除","taskPage.deleteAttachment":"删除","taskPage.noteSaved":"备注已保存","taskPage.viewDetails":"查看详情","taskPage.noChanges":"暂无变更","taskPage.branchDeleted":"任务分支已删除,无法查看变更","taskPage.startExecution":"启动执行以查看变更","taskPage.loadingDiff":"加载变更中...","taskPage.noDiff":"暂无变更(需要项目配置本地路径和基础分支)","taskPage.tabFiles":"文件","taskPage.tabPreview":"预览","taskPage.tabSearch":"搜索","taskPage.tabFileTree":"文件树","taskPage.completeTask":"完成任务","taskPage.uncommittedChanges":"工作区有 {count} 个未提交的文件,请先点击 Commit 按钮提交后再完成任务","taskPage.noChangesToComplete":"没有任何改动,无法完成任务","taskPage.taskCompleted":"任务已完成","taskPage.loadDiffFailed":"加载变更失败","taskPage.fileTree.newFile":"新建文件","taskPage.fileTree.newFolder":"新建文件夹","taskPage.fileTree.rename":"重命名","taskPage.fileTree.delete":"删除","taskPage.fileTree.revealInFinder":"在文件夹中显示","taskPage.fileTree.emptyHeading":"文件树暂不可用","taskPage.fileTree.emptyBody":"启动任务执行后将在此显示 worktree 目录结构","taskPage.fileTree.emptyDir":"目录为空","taskPage.fileTree.loadError":"无法加载文件列表,请重试","taskPage.fileTree.renamePlaceholder":"输入新名称","taskPage.fileTree.newFilePlaceholder":"文件名","taskPage.fileTree.newFolderPlaceholder":"文件夹名","taskPage.fileTree.deleteConfirmHeading":"确认删除","taskPage.fileTree.deleteConfirmBody":"删除「{name}」?此操作不可撤销。","taskPage.fileTree.deleteConfirmBodyFolder":"「{name}」及其所有内容将被删除。","taskPage.fileTree.deleteConfirmAction":"删除","taskPage.fileTree.searchPlaceholder":"搜索文件…","taskPage.fileTree.searchNoResults":"无匹配文件","editor.selectFile":"选择文件以打开","editor.selectFileHint":"在左侧文件树中点击任意文件","editor.saveSuccess":"保存成功","editor.saveError":"保存失败,请重试","editor.closeTab":"关闭标签页","editor.noWorktree":"暂无工作区,请先执行任务","diff.filesChanged":"{count} 个文件更改","diff.additions":"+{count}","diff.deletions":"-{count}","diff.binary":"二进制文件","diff.truncated":"差异过大已截断","diff.conflictWarning":"合并被阻止:检测到冲突","diff.conflictFiles":"{count} 个冲突文件","diff.commitChanges":"提交更改","diff.commitMessagePlaceholder":"第一行为标题,空行后为详细描述\n\n例如:\nfeat: 添加用户认证\n\n实现 JWT token 验证和刷新机制","diff.commit":"提交","diff.noChanges":"未检测到更改","diff.commitSuccess":"已提交 ({hash})","merge.button":"合并","merge.confirmTitle":"确认 Squash 合并","merge.targetBranch":"目标分支","merge.changedFiles":"变更文件数","merge.commitsToSquash":"待压缩提交数","merge.commitMessage":"提交信息","merge.confirm":"确认合并","merge.cancel":"取消","merge.merging":"合并中...","merge.success":"合并成功","merge.conflictError":"无法合并:检测到冲突","merge.failed":"合并失败","project.type.label":"项目类型","project.type.frontend":"前端","project.type.backend":"后端","project.previewCommand":"预览启动命令","project.previewCommandPlaceholder":"例:pnpm dev","project.previewCommandDesc":"启动本地开发服务器的命令","preview.run":"运行","preview.stop":"停止","preview.openTerminal":"在终端中打开","preview.refresh":"刷新预览","preview.addressPlaceholder":"输入本地 URL,按 Enter 加载","preview.noWorktree":"预览面板不可用","preview.noWorktreeDesc":"启动任务执行后可在此预览前端页面","preview.statusStopped":"已停止","preview.statusStarting":"启动中...","preview.statusRunning":"运行中","preview.statusError":"启动失败","preview.errorDesc":"启动预览服务器时出错,请检查启动命令","preview.terminalError":"无法打开终端,请检查设置中的终端配置","preview.port":"端口","settings.shell.label":"默认 Shell","settings.shell.desc":"用于 PTY 终端和 AI CLI 测试的 Shell,使用系统已安装的 Shell 及其配置(别名、插件等)","settings.shell.winHint":"Claude Code 在 Windows 上需要 Git Bash 环境,建议选择 Git Bash","settings.terminal.label":"终端应用","settings.terminal.desc":'用于"在终端中打开"的 GUI 终端应用',"settings.terminal.placeholder":"Terminal","settings.terminal.idleTimeout":"空闲超时(秒)","settings.terminal.idleTimeoutDesc":"终端无输出多久后触发空闲检测(最低 180 秒)","settings.cliProfile.title":"CLI 配置","settings.cliProfile.desc":"配置 AI 命令行工具的执行参数","settings.cliProfile.navDesc":"CLI 执行参数配置","settings.cliProfile.command":"命令","settings.cliProfile.commandHint":"CLI 可执行文件名称或路径","settings.cliProfile.commandPlaceholder":"claude","settings.cliProfile.baseArgs":"基础参数","settings.cliProfile.baseArgsHint":"每次执行时附加的命令行参数,一行一个","settings.cliProfile.baseArgsPlaceholder":"--dangerously-skip-permissions","settings.cliProfile.envVars":"环境变量","settings.cliProfile.envVarsHint":"注入到 CLI 进程的环境变量,格式:KEY=VALUE,一行一个","settings.cliProfile.envVarsPlaceholder":"MY_VAR=value","settings.cliProfile.saved":"CLI 配置已保存","settings.cliProfile.saveError":"保存失败","settings.cliProfile.invalidJson":"参数格式无效","settings.cliProfile.noProfile":"未找到默认 CLI 配置,请运行 seed","terminal.connecting":"正在连接...","terminal.connected":"已连接","terminal.disconnected":"已断开","terminal.reconnecting":"正在重连...","terminal.noWorktree":"无工作区","terminal.noWorktreeDesc":"请先运行任务以启动终端","terminal.execute":"执行","terminal.executing":"执行中...","terminal.noPrompt":"请输入执行提示词","terminal.stopExecution":"停止执行","terminal.stopHint":"停止前建议在终端中让 AI 生成 commit","terminal.promptPlaceholder":"输入任务提示词...","terminal.launch":"启动终端","terminal.readyToLaunch":"点击启动终端开始执行任务","execution.success":"成功","execution.failed":"失败","execution.running":"运行中","execution.viewDetails":"查看详情","execution.noSummary":"暂无摘要","execution.commits":"次提交","execution.files":"个文件","execution.terminalOutput":"终端输出","execution.history":"执行历史","execution.gitLog":"Git 提交记录","execution.loading":"加载中...","execution.noHistory":"暂无执行记录","execution.resume":"恢复会话","execution.tryRecover":"尝试继续","execution.details":"详情","execution.collapse":"收起","execution.insight":"归纳","missions.navLabel":"任务控制台","missions.pageTitle":"任务控制台","missions.launchTask":"启动任务","missions.emptyTitle":"无运行中的任务","missions.emptyDesc":"点击「启动任务」开始执行","missions.gridPreset":"布局","missions.stopTask":"停止任务","missions.openFullView":"查看详情","missions.runningTime":"运行","missions.statusCompleted":"已完成","missions.statusStopped":"已停止","missions.statusRunning":"运行中","missions.dragHandle":"拖拽排序","missions.openInTerminal":"在终端打开","missions.launcher.title":"启动任务","missions.launcher.workspace":"工作空间","missions.launcher.project":"项目","missions.launcher.task":"任务","missions.launcher.selectWorkspace":"选择工作空间","missions.launcher.selectProject":"选择项目","missions.launcher.selectTask":"选择任务","missions.launcher.launch":"启动","missions.launcher.cancel":"取消","missions.launcher.noTasks":"暂无可执行任务","missions.error.launchFailed":"启动任务失败","missions.error.stopFailed":"停止任务失败","missions.filterAll":"全部工作区","missions.alreadyMonitored":"已在监控","missions.showMoreTasks":"选择其他任务...","missions.pickerTitle":"选择要启动的任务","missions.pickerFooter":"点击 Launch 启动执行","missions.noAvailableTasks":"暂无可用任务","missions.continueSession":"继续上次会话","missions.continueLabel":"继续","missions.launchNew":"启动新终端","missions.launchNewLabel":"新建","missions.fullPickerTitle":"选择任务","missions.fullPickerHint":"选择工作区和项目查看任务","missions.gridCustom":"自定义","missions.gridCols":"列","missions.gridRows":"行","settings.config.missions.title":"任务控制台布局","settings.config.missions.desc":"自定义网格布局的列数和行数范围","settings.config.missions.minCols":"最小列数","settings.config.missions.maxCols":"最大列数","settings.config.missions.minRows":"最小行数","settings.config.missions.maxRows":"最大行数","settings.config.hooks.title":"Hooks 配置","settings.config.hooks.desc":"管理 Claude Code 的 PostToolUse 钩子","settings.config.hooks.autoUploadTypes":"自动上传文件类型","settings.config.hooks.autoUploadTypesHint":"逗号分隔的文件扩展名","settings.config.hooks.install":"安装 Hook","settings.config.hooks.uninstall":"卸载 Hook","settings.config.hooks.installed":"Hook 已安装","settings.config.hooks.notInstalled":"Hook 未安装","settings.config.hooks.installHint":"安装后,Claude Code 写入匹配类型的文件时会自动上传为任务资产","assistant.title":"Tower 助手","assistant.iconLabel":"助手","assistant.starting":"启动中...","assistant.errorTitle":"会话启动失败","assistant.errorBody":"启动失败,请重试","assistant.loading":"加载中...","assistant.emptyTitle":"我能帮你做什么?","assistant.emptyBody":"输入消息以开始","assistant.copy":"复制","assistant.suggestion.createProject":"创建一个新项目","assistant.suggestion.createTask":"创建一个任务","assistant.suggestion.checkProgress":"查看任务进度","assistant.suggestion.dailySummary":"查看今日工作总结","assistant.inputPlaceholder":"输入消息,Enter 发送,Shift+Enter 换行","assistant.sendLabel":"发送消息","assistant.cancelLabel":"取消发送","assistant.thinking":"思考中","assistant.toolLabel":"工具","assistant.parseError":"解析错误","assistant.parseErrorBody":"无法解析助手输出内容","assistant.closeLabel":"关闭助手","assistant.expandTool":"展开工具调用详情","assistant.previewImage":"预览图片","assistant.removeImage":"移除图片","assistant.brokenImage":"图片不可用","assistant.imageCount":"张图片","assistant.uploadFailed":"上传失败","assistant.uploadFailedRemoveHint":"上传失败 — 点击 x 移除","assistant.closePreview":"关闭预览","assistant.inputPlaceholderWithImages":"输入消息或粘贴图片...","settings.assistant.title":"助手","settings.assistant.desc":"配置助手行为","settings.assistant.communicationMode":"通信模式","settings.assistant.communicationModeDesc":"选择与助手交互的方式","settings.assistant.modeTerminal":"终端模式","settings.assistant.modeChat":"聊天模式","assistant.newSession":"新会话","assistant.sessionList":"会话列表","assistant.deleteSession":"删除","assistant.noSessions":"暂无历史会话","project.migrate":"迁移到规范路径","project.migrateHint":"将项目文件夹移动到 Git 路径规则推导的位置","project.targetPath":"目标路径","project.migrating":"迁移中...","project.migrateSuccess":"项目已迁移到规范路径","project.migrateError":"迁移失败","project.samePathInfo":"路径已是规范路径","project.migrateSafetyWarning":"迁移前请确保没有运行中的任务","project.worktreeWarning":"该项目有活跃的 Git Worktree,迁移将被阻止","project.genDesc":"生成描述","project.analyzing":"分析中...","project.analyzeError":"分析失败,请重试","project.genDescDisabledTooltip":"请先选择路径","project.genDescNoPath":"请先输入地址","project.genDescNotCloned":"请先 clone 项目","project.genDescReady":"基于本地代码生成项目描述","project.deleteTitle":"删除项目","project.deleteWarning":"确定要删除「{name}」吗?","project.deleteIrreversible":"此操作无法撤销,所有任务和数据将被永久删除。","project.deleteConfirmLabel":"请输入「确认删除」以确认","project.deleteConfirmPlaceholder":"确认删除","project.deleteConfirmText":"确认删除","project.deleteButton":"删除项目","project.deleteSuccess":"项目已删除","project.deleteFailed":"删除失败,请重试","taskDrawer.title":"任务概览","taskDrawer.description":"描述","taskDrawer.labels":"标签","taskDrawer.createdAt":"创建时间","taskDrawer.resources":"关联资源","taskDrawer.lastExecution":"最近执行","taskDrawer.noDescription":"暂无描述","taskDrawer.noExecution":"暂无执行记录","codeSearch.patternPlaceholder":"搜索代码(支持正则)","codeSearch.globPlaceholder":"文件过滤,如 *.ts","codeSearch.noPath":"请先配置项目本地路径","codeSearch.searching":"搜索中...","codeSearch.noResults":"无匹配结果","codeSearch.truncated":"仅显示前 200 条结果","codeSearch.hint":"输入关键词后按 Enter 搜索","codeSearch.rgNotInstalled":"未找到 ripgrep (rg),请安装: brew install ripgrep","settings.notifications.title":"通知","settings.notifications.desc":"任务完成提醒","settings.notifications.navDesc":"桌面通知和 Toast 提醒","settings.notifications.enable":"任务完成通知","settings.notifications.enableDesc":"任务执行完成时显示桌面通知或 Toast 提醒","notification.permissionPrompt":"允许 Tower 在任务完成时发送桌面通知","notification.allow":"允许","notification.dismiss":"忽略","notification.taskCompleted":"任务已完成","notification.taskFailed":"任务失败","onboarding.title":"欢迎使用 Tower","onboarding.step1.title":"设置用户名","onboarding.step1.desc":"请输入您的用户名,AI 助手将使用此名称称呼您","onboarding.step1.usernamePlaceholder":"输入用户名","onboarding.step1.usernameLabel":"用户名","onboarding.step1.next":"下一步","onboarding.step2.title":"AI 连接测试","onboarding.step2.desc":"测试与 AI 适配器的连接,确保任务可以正常调度执行","onboarding.cliRequired":"需要安装并配置 Claude CLI 才能继续,请参考文档完成安装","onboarding.complete":"完成设置","onboarding.skip":"跳过","onboarding.back":"上一步","onboarding.step3.title":"配置 Git 路径规则","onboarding.step3.desc":"配置 Git 仓库地址与本地路径的映射规则,创建 Git 项目时将自动生成本地路径","onboarding.step3.addFirst":"添加第一条规则","onboarding.step3.noRules":"还没有配置规则,创建 Git 项目时需要手动填写本地路径","onboarding.step3.hostLabel":"Git 主机","onboarding.step3.hostPlaceholder":"例如 github.com","onboarding.step3.ownerLabel":"Owner 匹配","onboarding.step3.ownerPlaceholder":"* 匹配所有,或填具体用户名","onboarding.step3.pathLabel":"本地基础路径","onboarding.step3.pathPlaceholder":"例如 /Users/you/project","onboarding.step3.pathHint":"支持变量:{path}=完整路径,{owner}=第一段,{repo}=仓库名。不含变量时自动追加仓库名","onboarding.step3.pathHintRepo":"仓库名会自动追加到路径末尾","onboarding.step3.pathHintFull":"开启后保留完整子组路径(适合 GitLab 多级分组)","onboarding.step3.added":"已添加 {count} 条规则","onboarding.step3.exampleTitle":"配置示例","onboarding.step3.exampleCase1":"规则:主机 github.com,路径 ~/project → 结果 ~/project/my-app","onboarding.step3.exampleCase2":"规则:主机 gitlab.com,路径 ~/company/{path} → 结果 ~/company/team/group/my-app","onboarding.step3.exampleDesc":"创建项目输入 Git 地址时,系统自动匹配规则填充本地路径。使用 {path} 可保留完整子组路径","onboarding.step3.previewLabel":"测试预览","onboarding.step3.previewPlaceholder":"粘贴一个 Git 地址试试效果","onboarding.step3.previewNoMatch":"无法解析此地址","onboarding.stepIndicator":"步骤 {current}/{total}","onboarding.welcomeCta":"创建您的第一个工作区开始使用","onboarding.createWorkspace":"创建工作区","onboarding.defaultWorkspaceName":"我的工作区","tour.step1.title":"创建工作区","tour.step1.desc":"工作区是最顶层的组织单元。点击这里创建您的第一个工作区。","tour.step2.title":"创建项目","tour.step2.desc":"项目属于工作区。点击这里创建或导入一个项目,关联您的代码仓库。","tour.step3.title":"打开 AI 助手","tour.step3.desc":"AI 助手可以帮您管理任务和项目。点击这里随时与助手对话。","tour.skip":"跳过引导","tour.next":"下一步","tour.done":"完成","aiConfig.title":"AI 能力配置","aiConfig.description":"为每个 AI 功能场景独立配置 Provider 和模型","aiConfig.terminal":"终端执行","aiConfig.summary":"会话总结","aiConfig.dreaming":"知识沉淀","aiConfig.analysis":"项目分析","aiConfig.assistant":"助手聊天","aiConfig.provider":"Provider","aiConfig.mode":"模式","aiConfig.model":"模型","aiConfig.cli":"CLI(订阅)","aiConfig.api":"API(按量)","aiConfig.default":"默认","aiConfig.notConfigured":"未配置","aiConfig.cliNotFound":"CLI 未安装","aiConfig.apiKeyMissing":"API Key 未配置","aiConfig.saved":"已保存"},en:{"sidebar.workspace":"Workspaces","sidebar.newWorkspace":"New Workspace","sidebar.collapse":"Collapse Sidebar","sidebar.expand":"Expand Sidebar","sidebar.rename":"Rename","sidebar.delete":"Delete","sidebar.archive":"Archive","sidebar.manageLabels":"Manage Labels","sidebar.deleteConfirm":'Delete workspace "{name}"? All projects and tasks will be deleted.',"sidebar.lastWorkspaceError":"At least one workspace must be kept","sidebar.settings":"Settings","workspace.create":"New Workspace","workspace.edit":"Edit Workspace","workspace.name":"Name","workspace.namePlaceholder":"Enter workspace name","workspace.icon":"Icon","common.cancel":"Cancel","common.create":"Create","common.save":"Save","common.delete":"Delete","common.add":"Add","common.edit":"Edit","common.search":"Search","topbar.newProject":"New Project","topbar.importProject":"Import Project","topbar.searchPlaceholder":"Search tasks, projects, repos, notes, assets...","project.name":"Project Name","project.alias":"Alias","project.description":"Description","project.gitUrl":"Git Repository URL","project.gitUrlHint":"Optional, local path will be auto-inferred","project.namePlaceholder":"Enter project name","project.aliasPlaceholder":"Optional, e.g. Frontend Refactor","project.descPlaceholder":"Optional, project description","project.gitPlaceholder":"https://github.com/user/repo or git@github.com:user/repo.git","project.localPath":"Local Path","project.localPathPlaceholder":"/Users/you/projects/my-app","project.localPathHint":"Local folder path, auto-filled from Git URL","project.tildeWarning":"Use absolute path — ~ alias is not supported","project.importHint":"Select an existing local project folder","project.autoDetected":"Git remote auto-detected","project.edit":"Edit Project","git.clone":"Clone","git.cloning":"Cloning...","git.cloned":"Cloned","git.cloneSuccess":"Repository cloned successfully","board.kanban":"Task Board","board.overview":"Overview","board.running":"Running","board.tip":"Tips","board.newTask":"New Task","board.allFilter":"All","board.searchPlaceholder":"Search tasks...","board.inProgressFilter":"In Progress","board.inReviewFilter":"In Review","board.contextMenu.changeStatus":"Change Status","board.contextMenu.launch":"Launch Task","board.contextMenu.goToDetail":"Go to Detail","board.pin":"Pin to Top","board.unpin":"Unpin","board.viewAll":"View All","board.noTasks":"No tasks","task.create":"New Task","task.edit":"Edit Task","task.title":"Task Title","task.titlePlaceholder":"Enter task title","task.description":"Description","task.descPlaceholder":"Enter description (Markdown supported)","task.priority":"Priority","task.labels":"Labels","task.priorityLow":"Low","task.priorityMedium":"Med","task.priorityHigh":"High","task.priorityCritical":"Urgent","task.baseBranch":"Base Branch","task.branchLoading":"Loading branches...","task.branchNone":"No branches found","task.branchSearch":"Search branches...","task.branchDirect":"No branch isolation (work directly in main repo)","task.worktreeLabel":"Branch Isolation","task.worktreeYes":"On","task.worktreeNo":"Off","task.subPath":"Sub Path","task.subPathPlaceholder":"e.g., web, packages/api","task.subPathHint":"Mono-repo subdirectory, task executes in this directory","taskDetail.title":"Task Chat","taskDetail.back":"Back to list","taskDetail.hasConversation":"Has chat","taskDetail.updatedAt":"Updated","taskDetail.directMode":"Direct Mode","taskDetail.send":"Send","taskDetail.sending":"Sending...","taskDetail.inputPlaceholder":"Enter command...","taskDetail.emptyState":"Start a conversation to execute the task","taskDetail.emptyHint":"Press Enter to send","taskDetail.sendFailed":"Send failed, please retry","taskDetail.executionFailed":"Execution failed","taskDetail.executionFailedRetry":"Execution failed, please retry","taskDetail.panelDescription":"Task execution conversation","taskDetail.filesChanged":"files changed","search.placeholder":"Search tasks, projects, repos, notes, assets...","search.task":"Tasks","search.project":"Projects","search.repository":"Repos","search.all":"All","search.note":"Notes","search.asset":"Assets","search.noResults":"No results found","search.typeToSearch":"Type to start searching","search.results":"Search Results","sidebar.right.projectInfo":"Project Info","sidebar.right.repo":"Repository","sidebar.right.addRepo":"Add Repository","sidebar.right.noRepo":"No linked repositories","sidebar.right.addRepoHint":"Add a repository below","sidebar.right.browseRepo":"Browse local repos","sidebar.right.createRepo":"Create new repo","sidebar.right.recent":"Recent","sidebar.right.other":"Other","sidebar.right.browseWip":"Browse repos - coming soon","sidebar.right.createWip":"Create repo - coming soon","sidebar.right.linkWip":"Link repo - coming soon","sidebar.right.normalType":"Normal","sidebar.right.gitType":"Git Project","sidebar.right.edit":"Edit Project","sidebar.right.name":"Project Name","sidebar.right.aliasLabel":"Alias","sidebar.right.descLabel":"Description","sidebar.right.save":"Save","sidebar.right.cancel":"Cancel","sidebar.right.namePlaceholder":"Enter project name","sidebar.right.aliasPlaceholder":"Optional alias","sidebar.right.descPlaceholder":"Project description","label.manage":"Manage Labels","label.name":"Label name","label.color":"Color","label.builtin":"Built-in","label.add":"Add Label","label.noLabels":"No labels","settings.title":"Settings","settings.language":"Language","settings.languageDesc":"Switch interface language","settings.general":"General","settings.generalDesc":"Appearance and language preferences","settings.theme":"Theme","settings.themeDesc":"Choose interface theme","settings.themeLight":"Light","settings.themeDark":"Dark","settings.themeSystem":"System","settings.prompts":"Prompts","settings.promptsDesc":"Manage AI prompt templates","settings.prompts.title":"Prompt Management","settings.prompts.newPrompt":"New Prompt","settings.prompts.editPrompt":"Edit Prompt","settings.prompts.promptName":"Name","settings.prompts.promptNamePlaceholder":"Enter prompt name","settings.prompts.promptDescription":"Description","settings.prompts.promptDescriptionPlaceholder":"Optional, brief description","settings.prompts.promptContent":"Content","settings.prompts.promptContentPlaceholder":"Enter prompt content...","settings.prompts.deleteConfirmTitle":"Confirm Delete","settings.prompts.deleteConfirmMessage":"This cannot be undone.","settings.prompts.setDefault":"Set as Default","settings.prompts.default":"Default","settings.prompts.empty":"No prompts yet","settings.prompts.emptyHint":"Click the button above to create your first prompt","settings.prompts.save":"Save","settings.prompts.cancel":"Cancel","settings.prompts.delete":"Delete","settings.aiTools.title":"AI Tools","settings.aiTools.cliVerification":"CLI Verification","settings.aiTools.cliVerificationDesc":"Verify AI CLI tools are correctly installed","settings.aiTools.testConnection":"Test Connection","settings.aiTools.testing":"Testing...","settings.aiTools.testPassed":"All checks passed","settings.aiTools.testFailed":"Some checks failed","settings.config":"Config","settings.configDesc":"System configuration parameters","settings.config.empty":"No configurable parameters yet — coming in next phases","settings.config.git.title":"Git Path Mapping Rules","settings.config.git.desc":"Define Git URL to local path mapping rules for auto-populating localPath on project creation","settings.config.git.host":"Host","settings.config.git.hostPlaceholder":"github.com","settings.config.git.ownerMatch":"Owner Match","settings.config.git.ownerMatchPlaceholder":"* (match all)","settings.config.git.localPathTemplate":"Local Base Path","settings.config.git.localPathTemplatePlaceholder":"/Users/you/project","settings.config.git.priority":"Priority","settings.config.git.priorityHint":"Lower number = higher priority","settings.config.git.addRule":"Add Rule","settings.config.git.noRules":"No mapping rules yet — click Add Rule to create one","settings.config.git.deleteConfirm":"Delete this rule?","settings.config.git.deleteConfirmMessage":"This cannot be undone.","settings.config.git.save":"Save","settings.config.git.cancel":"Cancel","settings.config.git.edit":"Edit","settings.config.git.delete":"Delete","settings.config.git.actions":"Actions","settings.config.git.templateHint":"Supports {owner} and {repo} variables","settings.config.git.validationRequired":"Host and local path template are required","settings.config.system.title":"System Parameters","settings.config.system.desc":"Upload limits and concurrency control","settings.config.system.maxUpload":"Max Upload File Size","settings.config.system.maxUploadHint":"Maximum allowed size for a single file upload","settings.config.system.maxConcurrent":"Max Concurrent Executions","settings.config.system.maxConcurrentHint":"Maximum number of AI tasks running simultaneously","settings.config.system.saved":"System parameters saved","settings.config.gitParams.title":"Git Parameters","settings.config.gitParams.desc":"Git operation timeout","settings.config.gitParams.timeout":"Git Operation Timeout","settings.config.gitParams.timeoutHint":"Timeout for clone/status and other operations","settings.config.gitParams.saved":"Git parameters saved","settings.config.search.title":"Search Parameters","settings.config.search.desc":"Search result count, debounce delay, and snippet length","settings.config.search.resultLimit":"Search Result Limit","settings.config.search.resultLimitHint":"Maximum results returned per search category","settings.config.search.allModeCap":"All-Mode Per-Type Cap","settings.config.search.allModeCapHint":"Maximum results per category in All search mode","settings.config.search.debounceMs":"Search Debounce Delay","settings.config.search.debounceMsHint":"Wait time after typing stops before executing search","settings.config.search.snippetLength":"Snippet Length","settings.config.search.snippetLengthHint":"Maximum characters for search result preview text","settings.config.search.saved":"Search parameters saved","workspace.selectHint":"Select a workspace","workspace.selectDesc":"Choose a workspace from the sidebar","workspace.createError":"Failed to create workspace, please try again","board.noProject":'No projects yet. Click "New Project" to create one.',"board.tipText":"Reuse existing drag, detail, and task creation pipeline","board.tipDesc":"Align workspace entry with prototype first, then add Settings, Skills, Plugins.","folder.selectFolder":"Select Folder","folder.selectGitRepo":"Select Git Repository","folder.hint":"Click folder name to navigate · Use buttons to select","folder.manualInput":"Enter path manually:","folder.goTo":"Go","folder.searchDir":"Search current directory:","folder.selectCurrent":"Select Current","folder.selectPath":"Select Path","folder.empty":"No folders in this directory","folder.browse":"Browse","git.section":"Git","git.currentBranch":"Current Branch","git.switchBranch":"Switch Branch","git.localBranches":"Local","git.remoteBranches":"Remote","git.modified":"Modified","git.staged":"Staged","git.untracked":"Untracked","git.notInitialized":"Git is not initialized for this project","git.initRepo":"Initialize Git Repository","git.initSuccess":"Git repository initialized","git.initFailed":"Initialization failed","git.switchSuccess":"Switched to branch","git.switchFailed":"Branch switch failed","git.noLocalPath":"Set project local path first","git.loading":"Loading...","git.createBranch":"Create Branch","git.branchName":"Branch Name","git.branchNamePlaceholder":"feature/my-feature","git.baseBranch":"Base Branch","git.branchDesc":"Description","git.branchDescPlaceholder":"Optional, describe this branch","git.createSuccess":"Branch created successfully","git.createFailed":"Failed to create branch","git.fetchSuccess":"Remote branches updated","git.fetchFailed":"Failed to fetch remote branches","git.changes":"Changes","git.stagedChanges":"Staged","git.unstagedChanges":"Unstaged","git.stageAll":"Stage All","git.unstageAll":"Unstage All","git.commit":"Commit","git.commitSuccess":"Committed successfully","git.commitMsgPlaceholder":"Commit message (⌘+Enter to commit)","git.pull":"Pull","git.pullSuccess":"Pulled successfully","git.push":"Push","git.pushSuccess":"Pushed successfully","git.commitLog":"Commit Log","git.stash":"Stash","git.stashMsgPlaceholder":"Stash message (optional)","git.stashSaved":"Changes stashed","git.stashApply":"Apply","git.stashApplied":"Stash applied","git.stashDrop":"Drop","git.stashDropped":"Stash dropped","git.noChanges":"Working tree clean","git.sync":"Sync","git.pullFrom":"Pull from","git.pushTo":"Push to","git.fetchAll":"Fetch All Remotes","git.stashSave":"Stash Changes","git.stashPopLatest":"Pop Latest Stash","git.discardAll":"Discard All Changes","git.discardSuccess":"All changes discarded","git.tabLabel":"Git","git.openStudio":"Open Studio","git.openStudioFailed":"Failed to open studio","archive.title":"Archived Tasks","archive.backToBoard":"Back to Board","archive.noTasks":"No archived tasks","archive.noTasksDesc":"Completed or cancelled tasks older than today will appear here","archive.completedAt":"Completed","archive.cancelledAt":"Cancelled","archive.createdAt":"Created","archive.lastExecution":"Last execution","archive.status.done":"Done","archive.status.cancelled":"Cancelled","archive.tasksCount":"archived","sidebar.notes":"Notes","sidebar.assets":"Assets","notes.title":"Notes","notes.newNote":"New Note","notes.allCategories":"All","notes.category.account":"Account","notes.category.env":"Environment","notes.category.requirements":"Requirements","notes.category.memo":"Memo","notes.edit":"Edit","notes.delete":"Delete","notes.save":"Save","notes.cancel":"Cancel","notes.titlePlaceholder":"Note title","notes.contentPlaceholder":"Note content (Markdown supported)","notes.categoryLabel":"Category","notes.empty":"No notes yet","notes.emptyHint":'Click "New Note" to create your first note',"notes.deleteConfirm":'Delete note "{title}"?',"notes.noProject":"No projects in this workspace","notes.noProjectHint":"Create a project first","notes.backToBoard":"Back to Board","notes.loading":"Loading...","notes.workspace":"Workspace","notes.project":"Project","assets.title":"Assets","assets.upload":"Upload File","assets.empty":"No assets yet","assets.emptyHint":"Upload files as project assets","assets.filename":"Filename","assets.size":"Size","assets.uploadedAt":"Uploaded At","assets.preview":"Preview","assets.download":"Download","assets.delete":"Delete","assets.deleteConfirm":'Delete asset "{filename}"?',"assets.noProject":"No projects in this workspace","assets.noProjectHint":"Create a project first","assets.uploading":"Uploading...","assets.backToBoard":"Back to Board","assets.loading":"Loading...","assets.uploadTitle":"Upload Asset","assets.workspace":"Workspace","assets.project":"Project","assets.file":"File","assets.selectFile":"Click to select file...","assets.description":"Description","assets.descriptionPlaceholder":"Enter asset description (searchable)","assets.revealInFinder":"Reveal in Finder","assets.previewNotSupported":"Preview not supported for this file type","assets.loadingPreview":"Loading...","assets.previewError":"Failed to load preview","assets.fileTooLarge":"File too large to preview (over 1MB)","taskPage.title":"Task Details","taskPage.back":"Back","taskPage.backToBoard":"Back to Board","taskPage.conversation":"Conversation","taskPage.changes":"Changes","taskPage.notes":"Notes","taskPage.addNote":"Add Note","taskPage.noteTitle":"Title","taskPage.noteContent":"Content","taskPage.uploadFile":"Upload File","taskPage.attachments":"Attachments","taskPage.noNotes":"No notes yet","taskPage.noAttachments":"No attachments yet","taskPage.deleteNote":"Delete","taskPage.deleteAttachment":"Delete","taskPage.noteSaved":"Note saved","taskPage.viewDetails":"View Details","taskPage.noChanges":"No changes to display","taskPage.branchDeleted":"Task branch has been deleted, cannot view changes","taskPage.startExecution":"Start an execution to see changes","taskPage.loadingDiff":"Loading changes...","taskPage.noDiff":"No changes (project needs local path and base branch configured)","taskPage.tabFiles":"Files","taskPage.tabPreview":"Preview","taskPage.tabSearch":"Search","taskPage.tabFileTree":"Files","taskPage.completeTask":"Complete Task","taskPage.taskCompleted":"Task completed","taskPage.uncommittedChanges":"Worktree has {count} uncommitted file(s). Please click Commit button first","taskPage.noChangesToComplete":"No changes to complete — nothing was committed","taskPage.loadDiffFailed":"Failed to load changes","taskPage.fileTree.newFile":"New File","taskPage.fileTree.newFolder":"New Folder","taskPage.fileTree.rename":"Rename","taskPage.fileTree.delete":"Delete","taskPage.fileTree.revealInFinder":"Reveal in Finder","taskPage.fileTree.emptyHeading":"File tree unavailable","taskPage.fileTree.emptyBody":"Start task execution to view the worktree directory","taskPage.fileTree.emptyDir":"Empty directory","taskPage.fileTree.loadError":"Failed to load files. Try again.","taskPage.fileTree.renamePlaceholder":"Enter new name","taskPage.fileTree.newFilePlaceholder":"File name","taskPage.fileTree.newFolderPlaceholder":"Folder name","taskPage.fileTree.deleteConfirmHeading":"Confirm delete","taskPage.fileTree.deleteConfirmBody":'Delete "{name}"? This cannot be undone.',"taskPage.fileTree.deleteConfirmBodyFolder":'"{name}" and all its contents will be deleted.',"taskPage.fileTree.deleteConfirmAction":"Delete","taskPage.fileTree.searchPlaceholder":"Search files…","taskPage.fileTree.searchNoResults":"No matching files","editor.selectFile":"Select a file to open","editor.selectFileHint":"Click any file in the file tree on the left","editor.saveSuccess":"File saved","editor.saveError":"Save failed, please try again","editor.closeTab":"Close tab","editor.noWorktree":"No worktree — run the task first","diff.filesChanged":"{count} files changed","diff.additions":"+{count}","diff.deletions":"-{count}","diff.binary":"Binary","diff.truncated":"Diff truncated (too large)","diff.conflictWarning":"Merge blocked: conflicts detected","diff.conflictFiles":"{count} conflicting files","diff.commitChanges":"Commit Changes","diff.commitMessagePlaceholder":"First line is the title, blank line then description\n\ne.g.:\nfeat: add user authentication\n\nImplement JWT token verification and refresh","diff.commit":"Commit","diff.noChanges":"No changes detected","diff.commitSuccess":"Committed ({hash})","merge.button":"Merge","merge.confirmTitle":"Confirm Squash Merge","merge.targetBranch":"Target branch","merge.changedFiles":"Changed files","merge.commitsToSquash":"Commits to squash","merge.commitMessage":"Commit message","merge.confirm":"Confirm Merge","merge.cancel":"Cancel","merge.merging":"Merging...","merge.success":"Merge completed successfully","merge.conflictError":"Cannot merge: conflicts detected","merge.failed":"Merge failed","project.type.label":"Project Type","project.type.frontend":"Frontend","project.type.backend":"Backend","project.previewCommand":"Preview Start Command","project.previewCommandPlaceholder":"e.g. pnpm dev","project.previewCommandDesc":"Command to start your local dev server","preview.run":"Run","preview.stop":"Stop","preview.openTerminal":"Open in Terminal","preview.refresh":"Refresh Preview","preview.addressPlaceholder":"Enter local URL, press Enter to load","preview.noWorktree":"Preview Unavailable","preview.noWorktreeDesc":"Run a task to preview your frontend here","preview.statusStopped":"Stopped","preview.statusStarting":"Starting...","preview.statusRunning":"Running","preview.statusError":"Failed","preview.errorDesc":"Failed to start preview server. Check your start command.","preview.terminalError":"Cannot open terminal. Check terminal settings.","preview.port":"Port","settings.shell.label":"Default Shell","settings.shell.desc":"Shell for PTY terminal and AI CLI testing — uses your system shell with its aliases, plugins, etc.","settings.shell.winHint":"Claude Code requires Git Bash on Windows — select Git Bash as default","settings.terminal.label":"Terminal App","settings.terminal.desc":'GUI terminal app for "Open in Terminal"',"settings.terminal.placeholder":"Terminal","settings.terminal.idleTimeout":"Idle Timeout (seconds)","settings.terminal.idleTimeoutDesc":"How long before idle detection triggers after no terminal output (minimum 180s)","settings.cliProfile.title":"CLI Profile","settings.cliProfile.desc":"Configure AI CLI tool execution parameters","settings.cliProfile.navDesc":"CLI execution parameters","settings.cliProfile.command":"Command","settings.cliProfile.commandHint":"CLI executable name or path","settings.cliProfile.commandPlaceholder":"claude","settings.cliProfile.baseArgs":"Base Arguments","settings.cliProfile.baseArgsHint":"Arguments appended to every execution, one per line","settings.cliProfile.baseArgsPlaceholder":"--dangerously-skip-permissions","settings.cliProfile.envVars":"Environment Variables","settings.cliProfile.envVarsHint":"Environment variables injected into CLI process, format: KEY=VALUE, one per line","settings.cliProfile.envVarsPlaceholder":"MY_VAR=value","settings.cliProfile.saved":"CLI profile saved","settings.cliProfile.saveError":"Save failed","settings.cliProfile.invalidJson":"Invalid parameter format","settings.cliProfile.noProfile":"No default CLI profile found — run seed","terminal.connecting":"Connecting...","terminal.connected":"Connected","terminal.disconnected":"Disconnected","terminal.reconnecting":"Reconnecting...","terminal.noWorktree":"No Worktree","terminal.noWorktreeDesc":"Run the task first to start the terminal","terminal.execute":"Execute","terminal.executing":"Executing...","terminal.noPrompt":"Enter a prompt to execute","terminal.stopExecution":"Stop","terminal.stopHint":"Consider asking AI to commit before stopping","terminal.promptPlaceholder":"Enter task prompt...","terminal.launch":"Launch Terminal","terminal.readyToLaunch":"Click to launch terminal and start task execution","execution.success":"Success","execution.failed":"Failed","execution.running":"Running","execution.viewDetails":"Details","execution.noSummary":"No summary","execution.commits":"commits","execution.files":"files","execution.terminalOutput":"Terminal Output","execution.history":"Execution History","execution.gitLog":"Git Log","execution.loading":"Loading...","execution.noHistory":"No execution history","execution.resume":"Resume","execution.tryRecover":"Try Continue","execution.details":"Details","execution.collapse":"Collapse","execution.insight":"Insight","missions.navLabel":"Missions","missions.pageTitle":"Mission Control","missions.launchTask":"Launch Task","missions.emptyTitle":"No running tasks","missions.emptyDesc":'Click "Launch Task" to start an execution',"missions.gridPreset":"Layout","missions.stopTask":"Stop Task","missions.openFullView":"Open full view","missions.runningTime":"Running","missions.statusCompleted":"Completed","missions.statusStopped":"Stopped","missions.statusRunning":"Running","missions.dragHandle":"Drag to reorder","missions.openInTerminal":"Open in Terminal","missions.launcher.title":"Launch Task","missions.launcher.workspace":"Workspace","missions.launcher.project":"Project","missions.launcher.task":"Task","missions.launcher.selectWorkspace":"Select workspace","missions.launcher.selectProject":"Select project","missions.launcher.selectTask":"Select task","missions.launcher.launch":"Launch","missions.launcher.cancel":"Cancel","missions.launcher.noTasks":"No executable tasks","missions.error.launchFailed":"Failed to launch task","missions.error.stopFailed":"Failed to stop task","missions.filterAll":"All Workspaces","missions.alreadyMonitored":"Already monitored","missions.showMoreTasks":"Show more tasks...","missions.pickerTitle":"Select a task to launch","missions.pickerFooter":"Click Launch to start execution","missions.noAvailableTasks":"No available tasks","missions.continueSession":"Continue last session","missions.continueLabel":"Continue","missions.launchNew":"Start new terminal","missions.launchNewLabel":"New","missions.fullPickerTitle":"Select Task","missions.fullPickerHint":"Select a workspace and project to see tasks","missions.gridCustom":"Custom","missions.gridCols":"Cols","missions.gridRows":"Rows","settings.config.missions.title":"Mission Control Layout","settings.config.missions.desc":"Configure min/max range for custom grid columns and rows","settings.config.missions.minCols":"Min Columns","settings.config.missions.maxCols":"Max Columns","settings.config.missions.minRows":"Min Rows","settings.config.missions.maxRows":"Max Rows","settings.config.hooks.title":"Hook Configuration","settings.config.hooks.desc":"Manage Claude Code PostToolUse hooks","settings.config.hooks.autoUploadTypes":"Auto-upload File Types","settings.config.hooks.autoUploadTypesHint":"Comma-separated file extensions","settings.config.hooks.install":"Install Hook","settings.config.hooks.uninstall":"Uninstall Hook","settings.config.hooks.installed":"Hook installed","settings.config.hooks.notInstalled":"Hook not installed","settings.config.hooks.installHint":"Once installed, files matching the configured types written by Claude Code will be auto-uploaded as task assets","assistant.title":"Tower Assistant","assistant.iconLabel":"Assistant","assistant.starting":"Starting...","assistant.errorTitle":"Session failed","assistant.errorBody":"Failed to start. Try again.","assistant.loading":"Loading...","assistant.emptyTitle":"What can I help you with?","assistant.emptyBody":"Type a message to start","assistant.copy":"Copy","assistant.suggestion.createProject":"Create a new project","assistant.suggestion.createTask":"Create a task","assistant.suggestion.checkProgress":"Check task progress","assistant.suggestion.dailySummary":"View today's work summary","assistant.inputPlaceholder":"Type a message, Enter to send, Shift+Enter for new line","assistant.sendLabel":"Send message","assistant.cancelLabel":"Cancel","assistant.thinking":"Thinking","assistant.toolLabel":"Tool","assistant.parseError":"Parse error","assistant.parseErrorBody":"Could not parse assistant output","assistant.closeLabel":"Close assistant","assistant.expandTool":"Expand tool call details","assistant.previewImage":"Preview image","assistant.removeImage":"Remove image","assistant.brokenImage":"Image unavailable","assistant.imageCount":"image(s)","assistant.uploadFailed":"Upload failed","assistant.uploadFailedRemoveHint":"Upload failed — click x to remove","assistant.closePreview":"Close preview","assistant.inputPlaceholderWithImages":"Type a message or paste an image...","settings.assistant.title":"Assistant","settings.assistant.desc":"Configure assistant behavior","settings.assistant.communicationMode":"Communication Mode","settings.assistant.communicationModeDesc":"Choose how to interact with the assistant","settings.assistant.modeTerminal":"Terminal","settings.assistant.modeChat":"Chat","assistant.newSession":"New Session","assistant.sessionList":"Sessions","assistant.deleteSession":"Delete","assistant.noSessions":"No previous sessions","project.migrate":"Migrate to canonical path","project.migrateHint":"Move project folder to the location derived from Git path rules","project.targetPath":"Target Path","project.migrating":"Migrating...","project.migrateSuccess":"Project migrated to canonical path","project.migrateError":"Migration failed","project.samePathInfo":"Path is already canonical","project.migrateSafetyWarning":"Ensure no tasks are running before migration","project.worktreeWarning":"This project has active Git worktrees — migration will be blocked","project.genDesc":"Generate Description","project.analyzing":"Analyzing...","project.analyzeError":"Analysis failed, please retry","project.genDescDisabledTooltip":"Please select a path first","project.genDescNoPath":"Please enter an address first","project.genDescNotCloned":"Please clone the project first","project.genDescReady":"Generate description from local code","project.deleteTitle":"Delete Project","project.deleteWarning":'Are you sure you want to delete "{name}"?',"project.deleteIrreversible":"This action cannot be undone. All tasks and data will be permanently deleted.","project.deleteConfirmLabel":'Type "confirm delete" to confirm',"project.deleteConfirmPlaceholder":"confirm delete","project.deleteConfirmText":"confirm delete","project.deleteButton":"Delete Project","project.deleteSuccess":"Project deleted","project.deleteFailed":"Delete failed, please retry","taskDrawer.title":"Task Overview","taskDrawer.description":"Description","taskDrawer.labels":"Labels","taskDrawer.createdAt":"Created","taskDrawer.resources":"Resources","taskDrawer.lastExecution":"Last Execution","taskDrawer.noDescription":"No description","taskDrawer.noExecution":"No execution history","codeSearch.patternPlaceholder":"Search code (regex supported)","codeSearch.globPlaceholder":"File filter, e.g. *.ts","codeSearch.noPath":"Please configure local path first","codeSearch.searching":"Searching...","codeSearch.noResults":"No matches found","codeSearch.truncated":"Showing first 200 results","codeSearch.hint":"Type a keyword and press Enter to search","codeSearch.rgNotInstalled":"ripgrep (rg) not found, please install: brew install ripgrep","settings.notifications.title":"Notifications","settings.notifications.desc":"Task completion alerts","settings.notifications.navDesc":"Desktop and toast alerts","settings.notifications.enable":"Task Completion Notifications","settings.notifications.enableDesc":"Show a desktop notification or toast when a task finishes executing","notification.permissionPrompt":"Allow Tower to send desktop notifications when tasks complete","notification.allow":"Allow","notification.dismiss":"Dismiss","notification.taskCompleted":"Task completed","notification.taskFailed":"Task failed","onboarding.title":"Welcome to Tower","onboarding.step1.title":"Set Your Username","onboarding.step1.desc":"Enter your username — the AI assistant will address you by this name","onboarding.step1.usernamePlaceholder":"Enter username","onboarding.step1.usernameLabel":"Username","onboarding.step1.next":"Next","onboarding.step2.title":"AI Connection Test","onboarding.step2.desc":"Test connectivity with AI adapters to ensure tasks can be dispatched and executed","onboarding.cliRequired":"Claude CLI must be installed and configured to continue. Please refer to the documentation.","onboarding.complete":"Complete Setup","onboarding.skip":"Skip","onboarding.back":"Back","onboarding.step3.title":"Configure Git Path Rules","onboarding.step3.desc":"Set up mapping rules between Git repository URLs and local paths — local paths will be auto-generated when creating Git projects","onboarding.step3.addFirst":"Add First Rule","onboarding.step3.noRules":"No rules configured yet — you'll need to enter local paths manually when creating Git projects","onboarding.step3.hostLabel":"Git Host","onboarding.step3.hostPlaceholder":"e.g. github.com","onboarding.step3.ownerLabel":"Owner Match","onboarding.step3.ownerPlaceholder":"* for all, or specific username","onboarding.step3.pathLabel":"Local Base Path","onboarding.step3.pathPlaceholder":"e.g. /Users/you/project","onboarding.step3.pathHint":"Variables: {path}=full path, {owner}=first segment, {repo}=repo name. Without variables, repo name is auto-appended","onboarding.step3.pathHintRepo":"Repository name is auto-appended to the path","onboarding.step3.pathHintFull":"Preserves full subgroup path (for GitLab nested groups)","onboarding.step3.added":"{count} rule(s) added","onboarding.step3.exampleTitle":"Example","onboarding.step3.exampleCase1":"Rule: host github.com, path ~/project → result ~/project/my-app","onboarding.step3.exampleCase2":"Rule: host gitlab.com, path ~/company/{path} → result ~/company/team/group/my-app","onboarding.step3.exampleDesc":"When creating a project with a Git URL, the local path is auto-filled. Use {path} to preserve full subgroup structure.","onboarding.step3.previewLabel":"Test Preview","onboarding.step3.previewPlaceholder":"Paste a Git URL to preview the result","onboarding.step3.previewNoMatch":"Cannot parse this URL","onboarding.stepIndicator":"Step {current}/{total}","onboarding.welcomeCta":"Create your first workspace to get started","onboarding.createWorkspace":"Create Workspace","onboarding.defaultWorkspaceName":"My Workspace","tour.step1.title":"Create Workspace","tour.step1.desc":"Workspaces are the top-level organizer. Click here to create your first workspace.","tour.step2.title":"Create Project","tour.step2.desc":"Projects belong to workspaces. Click here to create or import a project linked to your code repository.","tour.step3.title":"Open AI Assistant","tour.step3.desc":"The AI assistant helps you manage tasks and projects. Click here to start a conversation anytime.","tour.skip":"Skip tour","tour.next":"Next","tour.done":"Done","aiConfig.title":"AI Capability Config","aiConfig.description":"Configure provider and model for each AI feature independently","aiConfig.terminal":"Terminal Execution","aiConfig.summary":"Session Summary","aiConfig.dreaming":"Knowledge Distillation","aiConfig.analysis":"Project Analysis","aiConfig.assistant":"Assistant Chat","aiConfig.provider":"Provider","aiConfig.mode":"Mode","aiConfig.model":"Model","aiConfig.cli":"CLI (Subscription)","aiConfig.api":"API (Pay-per-use)","aiConfig.default":"Default","aiConfig.notConfigured":"Not configured","aiConfig.cliNotFound":"CLI not installed","aiConfig.apiKeyMissing":"API key not configured","aiConfig.saved":"Saved"}},e=(0,c.createContext)(null);a.s(["I18nProvider",0,function({children:a}){let[f,g]=(0,c.useState)("zh");(0,c.useEffect)(()=>{let a=localStorage.getItem("locale");a&&a!==f&&g(a)},[]);let h=(0,c.useCallback)(a=>{g(a),localStorage.setItem("locale",a)},[]),i=(0,c.useCallback)((a,b)=>{let c=d[f][a]??a;if(b)for(let[a,d]of Object.entries(b))c=c.replace(`{${a}}`,d);return c},[f]);return(0,b.jsx)(e.Provider,{value:{locale:f,setLocale:h,t:i},children:a})},"useI18n",0,function(){let a=(0,c.useContext)(e);if(!a)throw Error("useI18n must be used within I18nProvider");return a}],584335)}];
|
|
5
5
|
|
|
6
|
-
//# sourceMappingURL=
|
|
6
|
+
//# sourceMappingURL=project_f_tower_0jhlcus._.js.map
|