@winspan/claude-forge 3.6.39 → 3.6.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/convention/types.d.ts +15 -5
  2. package/dist/convention/types.d.ts.map +1 -1
  3. package/dist/daemon/engine-registry.d.ts.map +1 -1
  4. package/dist/daemon/engine-registry.js +6 -0
  5. package/dist/daemon/engine-registry.js.map +1 -1
  6. package/dist/daemon/handler-context.d.ts +5 -1
  7. package/dist/daemon/handler-context.d.ts.map +1 -1
  8. package/dist/daemon/handlers/post-tool-use-handler.d.ts.map +1 -1
  9. package/dist/daemon/handlers/post-tool-use-handler.js +59 -2
  10. package/dist/daemon/handlers/post-tool-use-handler.js.map +1 -1
  11. package/dist/daemon/handlers/pre-tool-use-handler.d.ts.map +1 -1
  12. package/dist/daemon/handlers/pre-tool-use-handler.js +25 -2
  13. package/dist/daemon/handlers/pre-tool-use-handler.js.map +1 -1
  14. package/dist/daemon/handlers/session-cleanup.d.ts +2 -0
  15. package/dist/daemon/handlers/session-cleanup.d.ts.map +1 -1
  16. package/dist/daemon/handlers/session-cleanup.js +20 -0
  17. package/dist/daemon/handlers/session-cleanup.js.map +1 -1
  18. package/dist/daemon/handlers/stop-handler.d.ts.map +1 -1
  19. package/dist/daemon/handlers/stop-handler.js +1 -0
  20. package/dist/daemon/handlers/stop-handler.js.map +1 -1
  21. package/dist/pipeline/completion-gate.d.ts +1 -0
  22. package/dist/pipeline/completion-gate.d.ts.map +1 -1
  23. package/dist/pipeline/completion-gate.js +43 -3
  24. package/dist/pipeline/completion-gate.js.map +1 -1
  25. package/dist/pipeline/completion-verifier.d.ts +75 -0
  26. package/dist/pipeline/completion-verifier.d.ts.map +1 -0
  27. package/dist/pipeline/completion-verifier.js +217 -0
  28. package/dist/pipeline/completion-verifier.js.map +1 -0
  29. package/dist/pipeline/diagnosis-service.d.ts +43 -0
  30. package/dist/pipeline/diagnosis-service.d.ts.map +1 -0
  31. package/dist/pipeline/diagnosis-service.js +136 -0
  32. package/dist/pipeline/diagnosis-service.js.map +1 -0
  33. package/dist/pipeline/execution-engine.d.ts +79 -0
  34. package/dist/pipeline/execution-engine.d.ts.map +1 -0
  35. package/dist/pipeline/execution-engine.js +227 -0
  36. package/dist/pipeline/execution-engine.js.map +1 -0
  37. package/dist/pipeline/node-type-sync.d.ts.map +1 -1
  38. package/dist/pipeline/node-type-sync.js +25 -22
  39. package/dist/pipeline/node-type-sync.js.map +1 -1
  40. package/dist/pipeline/plan-service.d.ts +58 -0
  41. package/dist/pipeline/plan-service.d.ts.map +1 -0
  42. package/dist/pipeline/plan-service.js +382 -0
  43. package/dist/pipeline/plan-service.js.map +1 -0
  44. package/dist/pipeline/strategy-selector.d.ts +41 -0
  45. package/dist/pipeline/strategy-selector.d.ts.map +1 -0
  46. package/dist/pipeline/strategy-selector.js +112 -0
  47. package/dist/pipeline/strategy-selector.js.map +1 -0
  48. package/dist/pipeline/template-evolver.d.ts +45 -0
  49. package/dist/pipeline/template-evolver.d.ts.map +1 -0
  50. package/dist/pipeline/template-evolver.js +223 -0
  51. package/dist/pipeline/template-evolver.js.map +1 -0
  52. package/dist/storage/repositories/node-attempt-repository.d.ts +29 -0
  53. package/dist/storage/repositories/node-attempt-repository.d.ts.map +1 -0
  54. package/dist/storage/repositories/node-attempt-repository.js +57 -0
  55. package/dist/storage/repositories/node-attempt-repository.js.map +1 -0
  56. package/dist/storage/repositories/pipeline-plan-repository.d.ts +75 -0
  57. package/dist/storage/repositories/pipeline-plan-repository.d.ts.map +1 -0
  58. package/dist/storage/repositories/pipeline-plan-repository.js +123 -0
  59. package/dist/storage/repositories/pipeline-plan-repository.js.map +1 -0
  60. package/dist/storage/repositories/template-evolution-repository.d.ts +39 -0
  61. package/dist/storage/repositories/template-evolution-repository.d.ts.map +1 -0
  62. package/dist/storage/repositories/template-evolution-repository.js +83 -0
  63. package/dist/storage/repositories/template-evolution-repository.js.map +1 -0
  64. package/dist/storage/sqlite.d.ts +8 -0
  65. package/dist/storage/sqlite.d.ts.map +1 -1
  66. package/dist/storage/sqlite.js +13 -0
  67. package/dist/storage/sqlite.js.map +1 -1
  68. package/dist/web/routes/evolution.d.ts +4 -0
  69. package/dist/web/routes/evolution.d.ts.map +1 -0
  70. package/dist/web/routes/evolution.js +61 -0
  71. package/dist/web/routes/evolution.js.map +1 -0
  72. package/dist/web/routes/plans.d.ts +5 -0
  73. package/dist/web/routes/plans.d.ts.map +1 -0
  74. package/dist/web/routes/plans.js +163 -0
  75. package/dist/web/routes/plans.js.map +1 -0
  76. package/dist/web/routes/templates.d.ts +4 -0
  77. package/dist/web/routes/templates.d.ts.map +1 -0
  78. package/dist/web/routes/templates.js +117 -0
  79. package/dist/web/routes/templates.js.map +1 -0
  80. package/dist/web/server.d.ts.map +1 -1
  81. package/dist/web/server.js +6 -0
  82. package/dist/web/server.js.map +1 -1
  83. package/dist/web-static/assets/Analytics-Bo74j97W.js +1 -0
  84. package/dist/web-static/assets/BatchProgress-BQ533tSf.js +1 -0
  85. package/dist/web-static/assets/{Breadcrumb-DbDeWYcH.js → Breadcrumb-DtfwnOx6.js} +1 -1
  86. package/dist/web-static/assets/{Config-yTRFpmlP.js → Config-DhfQsbT1.js} +1 -1
  87. package/dist/web-static/assets/{ConfirmDialog-CH1HyRaY.js → ConfirmDialog-CVzB7X5y.js} +1 -1
  88. package/dist/web-static/assets/{Conventions-DaqIk41m.js → Conventions-BobuQiOk.js} +1 -1
  89. package/dist/web-static/assets/Dashboard-Bj28rnDe.js +1 -0
  90. package/dist/web-static/assets/{ErrorState-HW0OjEYK.js → ErrorState-DXHA8lr8.js} +1 -1
  91. package/dist/web-static/assets/Events-C0y7WcDP.js +1 -0
  92. package/dist/web-static/assets/Evolution-DimZAXFS.js +1 -0
  93. package/dist/web-static/assets/Knowledge-Y1lX6vor.js +2 -0
  94. package/dist/web-static/assets/{NodeTypes-B5E6NYKn.js → NodeTypes-DyrDqhBp.js} +1 -1
  95. package/dist/web-static/assets/{Pagination-ooTI9JPa.js → Pagination-lp8b_3NR.js} +1 -1
  96. package/dist/web-static/assets/{PipelineDetail-DCnqD5lr.js → PipelineDetail-DGKz18zu.js} +3 -3
  97. package/dist/web-static/assets/{PipelineTemplates-CxGoLw6Q.js → PipelineTemplates-D4zvL6I1.js} +1 -1
  98. package/dist/web-static/assets/Pipelines-CR9oD3Xy.js +2 -0
  99. package/dist/web-static/assets/ProjectDetail-RfdtEvTT.js +1 -0
  100. package/dist/web-static/assets/Projects-RGIPdiJn.js +1 -0
  101. package/dist/web-static/assets/Quality-BdvL1VQn.js +3 -0
  102. package/dist/web-static/assets/{SessionDetail-DleCNmQH.js → SessionDetail-BNDIfmmq.js} +1 -1
  103. package/dist/web-static/assets/{Sessions-Dz6xFq_4.js → Sessions-CorfQV78.js} +2 -2
  104. package/dist/web-static/assets/{BatchProgress-CIrC9RcC.js → Skeleton-B7PVDJJ_.js} +1 -1
  105. package/dist/web-static/assets/Skills-BJt0OrKj.js +1 -0
  106. package/dist/web-static/assets/TemplateDetail-DOfBYdQ3.js +1 -0
  107. package/dist/web-static/assets/Templates-Cp3yC5tv.js +1 -0
  108. package/dist/web-static/assets/{client-B_-7qCOP.js → client-BhcjNvkG.js} +1 -1
  109. package/dist/web-static/assets/index-CqwJts5v.css +2 -0
  110. package/dist/web-static/assets/index-DdmJVOxm.js +2 -0
  111. package/dist/web-static/assets/{ui-B2gvOcFY.js → ui-CDL3BZ13.js} +1 -1
  112. package/dist/web-static/assets/useDebounce-DNfPs3Tv.js +1 -0
  113. package/dist/web-static/assets/vendor-DRGPi8ui.js +9 -0
  114. package/dist/web-static/assets/{vendor-charts-BXsEmmv5.js → vendor-charts-9eVsQvUV.js} +4 -4
  115. package/dist/web-static/assets/{vendor-editor-DYIoTHFO.js → vendor-editor-B1NX2ipj.js} +1 -1
  116. package/dist/web-static/assets/vendor-flow-srkes8If.js +7 -0
  117. package/dist/web-static/assets/{vendor-motion-BsfSkSjj.js → vendor-motion-CQmdgnI8.js} +2 -2
  118. package/dist/web-static/assets/{vendor-query-BF-uT_c5.js → vendor-query-DqPOMnuX.js} +1 -1
  119. package/dist/web-static/assets/{vendor-react-CXfI0Tes.js → vendor-react-DJI9oneq.js} +1 -1
  120. package/dist/web-static/index.html +11 -11
  121. package/package.json +2 -1
  122. package/dist/web-static/assets/Analytics-BTMAlQBr.js +0 -1
  123. package/dist/web-static/assets/Dashboard-BS61GjKa.js +0 -1
  124. package/dist/web-static/assets/Events-DAms_1fs.js +0 -1
  125. package/dist/web-static/assets/Knowledge-CZhuou1K.js +0 -2
  126. package/dist/web-static/assets/Pipelines-DEuVx4hF.js +0 -2
  127. package/dist/web-static/assets/ProjectDetail-Dn01H3zi.js +0 -1
  128. package/dist/web-static/assets/Projects-D5-BfuFU.js +0 -1
  129. package/dist/web-static/assets/Quality-wvfdPtGB.js +0 -3
  130. package/dist/web-static/assets/Skills-CpHL-tyW.js +0 -1
  131. package/dist/web-static/assets/index-CN_edVMt.js +0 -2
  132. package/dist/web-static/assets/index-DLMLziRH.css +0 -2
  133. package/dist/web-static/assets/useDebounce-Bo1fLB5L.js +0 -1
  134. package/dist/web-static/assets/vendor-BpBCrKSP.js +0 -9
  135. package/dist/web-static/assets/vendor-flow-D-_WxBha.js +0 -7
@@ -1,4 +1,4 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{mr as t}from"./vendor-BpBCrKSP.js";import{C as n}from"./vendor-charts-BXsEmmv5.js";import{c as r}from"./vendor-flow-D-_WxBha.js";var i=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},a=new class extends i{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},o={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},s=new class{#e=o;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function c(e){setTimeout(e,0)}var l=typeof window>`u`||`Deno`in globalThis;function u(){}function d(e,t){return typeof e==`function`?e(t):e}function f(e){return typeof e==`number`&&e>=0&&e!==1/0}function p(e,t){return Math.max(e+(t||0)-Date.now(),0)}function m(e,t){return typeof e==`function`?e(t):e}function h(e,t){return typeof e==`function`?e(t):e}function g(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==v(o,t.options))return!1}else if(!b(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function _(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(y(t.options.mutationKey)!==y(a))return!1}else if(!b(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function v(e,t){return(t?.queryKeyHashFn||y)(e)}function y(e){return JSON.stringify(e,(e,t)=>T(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function b(e,t){return e===t?!0:typeof e==typeof t&&e&&t&&typeof e==`object`&&typeof t==`object`?Object.keys(t).every(n=>b(e[n],t[n])):!1}var x=Object.prototype.hasOwnProperty;function S(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=w(e)&&w(t);if(!r&&!(T(e)&&T(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:x.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=S(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function C(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function w(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function T(e){if(!E(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!E(n)||!n.hasOwnProperty(`isPrototypeOf`)||Object.getPrototypeOf(e)!==Object.prototype)}function E(e){return Object.prototype.toString.call(e)===`[object Object]`}function ee(e){return new Promise(t=>{s.setTimeout(t,e)})}function D(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:S(e,t)}function te(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function ne(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var O=Symbol();function k(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===O?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function A(e,t){return typeof e==`function`?e(...t):!!e}function re(e,t,n){let r=!1,i;return Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var j=(()=>{let e=()=>l;return{isServer(){return e()},setIsServer(t){e=t}}})();function M(){let e,t,n=new Promise((n,r)=>{e=n,t=r});n.status=`pending`,n.catch(()=>{});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.resolve=t=>{r({status:`fulfilled`,value:t}),e(t)},n.reject=e=>{r({status:`rejected`,reason:e}),t(e)},n}var ie=c;function ae(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=ie,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var N=ae(),P=new class extends i{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function oe(e){return Math.min(1e3*2**e,3e4)}function F(e){return(e??`online`)===`online`?P.isOnline():!0}var I=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function L(e){let t=!1,n=0,r,i=M(),o=()=>i.status!==`pending`,s=t=>{if(!o()){let n=new I(t);p(n),e.onCancel?.(n)}},c=()=>{t=!0},l=()=>{t=!1},u=()=>a.isFocused()&&(e.networkMode===`always`||P.isOnline())&&e.canRun(),d=()=>F(e.networkMode)&&e.canRun(),f=e=>{o()||(r?.(),i.resolve(e))},p=e=>{o()||(r?.(),i.reject(e))},m=()=>new Promise(t=>{r=e=>{(o()||u())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,o()||e.onContinue?.()}),h=()=>{if(o())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(f).catch(r=>{if(o())return;let i=e.retry??(j.isServer()?0:3),a=e.retryDelay??oe,s=typeof a==`function`?a(n,r):a,c=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);if(t||!c){p(r);return}n++,e.onFail?.(n,r),ee(s).then(()=>u()?void 0:m()).then(()=>{t?p(r):h()})})};return{promise:i,status:()=>i.status,cancel:s,continue:()=>(r?.(),i),cancelRetry:c,continueRetry:l,canStart:d,start:()=>(d()?h():m().then(h),i)}}var se=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),f(this.gcTime)&&(this.#e=s.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(j.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(s.clearTimeout(this.#e),this.#e=void 0)}},ce=class extends se{#e;#t;#n;#r;#i;#a;#o;constructor(e){super(),this.#o=!1,this.#a=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#r=e.client,this.#n=this.#r.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=R(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#i?.promise}setOptions(e){if(this.options={...this.#a,...e},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=R(this.options);e.data!==void 0&&(this.setState(ue(e.data,e.dataUpdatedAt)),this.#e=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#n.remove(this)}setData(e,t){let n=D(this.state.data,e,this.options);return this.#c({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#c({type:`setState`,state:e,setStateOptions:t})}cancel(e){let t=this.#i?.promise;return this.#i?.cancel(e),t?t.then(u).catch(u):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#e}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>h(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===O||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>m(e.options.staleTime,this)===`static`):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!p(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#i?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#i?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#i&&(this.#o||this.#s()?this.#i.cancel({revert:!0}):this.#i.cancelRetry()),this.scheduleGc()),this.#n.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}#s(){return this.state.fetchStatus===`paused`&&this.state.status===`pending`}invalidate(){this.state.isInvalidated||this.#c({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#i?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#i)return this.#i.continueRetry(),this.#i.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(this.#o=!0,n.signal)})},i=()=>{let e=k(this.options,t),n=(()=>{let e={client:this.#r,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#o=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#r,state:this.state,fetchFn:i};return r(e),e})();this.options.behavior?.onFetch(a,this),this.#t=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#c({type:`fetch`,meta:a.fetchOptions?.meta}),this.#i=L({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof I&&e.revert&&this.setState({...this.#t,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#c({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#c({type:`pause`})},onContinue:()=>{this.#c({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#i.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#n.config.onSuccess?.(e,this),this.#n.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof I){if(e.silent)return this.#i.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#c({type:`error`,error:e}),this.#n.config.onError?.(e,this),this.#n.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#c(e){this.state=(t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...le(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...ue(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#t=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}})(this.state),N.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#n.notify({query:this,type:`updated`,action:e})})}};function le(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:F(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function ue(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function R(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var de=class extends i{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=M(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),z(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return B(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return B(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof h(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!C(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&V(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||h(this.options.enabled,this.#t)!==h(t.enabled,this.#t)||m(this.options.staleTime,this.#t)!==m(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||h(this.options.enabled,this.#t)!==h(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return pe(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(u)),t}#g(){this.#b();let e=m(this.options.staleTime,this.#t);if(j.isServer()||this.#r.isStale||!f(e))return;let t=p(this.#r.dataUpdatedAt,e)+1;this.#d=s.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(j.isServer()||h(this.options.enabled,this.#t)===!1||!f(this.#p)||this.#p===0)&&(this.#f=s.setInterval(()=>{(this.options.refetchIntervalInBackground||a.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d!==void 0&&(s.clearTimeout(this.#d),this.#d=void 0)}#x(){this.#f!==void 0&&(s.clearInterval(this.#f),this.#f=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&z(e,t),o=i&&V(e,n,t,r);(a||o)&&(l={...l,...le(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let g=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,g=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(m=`success`,d=D(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!g)if(i&&d===a?.data&&t.select===this.#c)d=this.#l;else try{this.#c=t.select,d=t.select(d),d=D(i?.data,d,t),this.#l=d,this.#s=null}catch(e){this.#s=e}this.#s&&(f=this.#s,d=this.#l,p=Date.now(),m=`error`);let _=l.fetchStatus===`fetching`,v=m===`pending`,y=m===`error`,b=v&&_,x=d!==void 0,S={status:m,fetchStatus:l.fetchStatus,isPending:v,isSuccess:m===`success`,isError:y,isInitialLoading:b,isLoading:b,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:_,isRefetching:_&&!v,isLoadingError:y&&!x,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:y&&x,isStale:H(e,t),refetch:this.refetch,promise:this.#o,isEnabled:h(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=S.data!==void 0,r=S.status===`error`&&!t,i=e=>{r?e.reject(S.error):t&&e.resolve(S.data)},a=()=>{i(this.#o=S.promise=M())},o=this.#o;switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||S.data!==o.value)&&a();break;case`rejected`:(!r||S.error!==o.reason)&&a();break}}return S}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!C(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){N.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function fe(e,t){return h(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&t.retryOnMount===!1)}function z(e,t){return fe(e,t)||e.state.data!==void 0&&B(e,t,t.refetchOnMount)}function B(e,t,n){if(h(t.enabled,e)!==!1&&m(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&H(e,t)}return!1}function V(e,t,n,r){return(e!==t||h(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&H(e,n)}function H(e,t){return h(t.enabled,e)!==!1&&e.isStaleByTime(m(t.staleTime,e))}function pe(e,t){return!C(e.getCurrentResult(),t)}function U(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{re(e,()=>t.signal,()=>n=!0)},u=k(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject();if(r==null&&e.pages.length)return Promise.resolve(e);let a=await u((()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})()),{maxPages:o}=t.options,s=i?ne:te;return{pages:s(e.pages,a,o),pageParams:s(e.pageParams,r,o)}};if(i&&a.length){let e=i===`backward`,t=e?me:W,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:W(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(c<t)}return s};t.options.persister?t.fetchFn=()=>t.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=l}}}function W(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function me(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var he=class extends se{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||G(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=L({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let r=this.state.status===`pending`,i=!this.#r.canStart();try{if(r)t();else{this.#i({type:`pending`,variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:i})}let a=await this.#r.start();return await this.#n.config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await this.#n.config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),this.#i({type:`success`,data:a}),a}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#n.runNext(this)}}#i(e){this.state=(t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}})(this.state),N.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function G(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var ge=class extends i{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){let r=new he({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=K(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=K(e);if(typeof t==`string`){let n=this.#t.get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=K(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}else return!0}runNext(e){let t=K(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){N.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>_(t,e))}findAll(e={}){return this.getAll().filter(t=>_(e,t))}notify(e){N.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return N.batch(()=>Promise.all(e.map(e=>e.continue().catch(u))))}};function K(e){return e.options.scope?.id}var _e=class extends i{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),C(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&y(t.mutationKey)!==y(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??G();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){N.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},ve=class extends i{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){let r=t.queryKey,i=t.queryHash??v(r,t),a=this.get(i);return a||(a=new ce({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){N.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>g(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>g(e,t)):t}notify(e){N.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){N.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){N.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},ye=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new ve,this.#t=e.mutationCache||new ge,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=a.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=P.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(m(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=d(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return N.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;N.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return N.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t},r=N.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(u).catch(u)}invalidateQueries(e,t={}){return N.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=N.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(u)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(u)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(m(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(u).catch(u)}fetchInfiniteQuery(e){return e.behavior=U(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(u).catch(u)}ensureInfiniteQueryData(e){return e.behavior=U(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return P.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(y(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{b(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(y(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{b(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=v(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===O&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},q=e(t(),1),be=r(),J=q.createContext(void 0),Y=e=>{let t=q.useContext(J);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},xe=({client:e,children:t})=>(q.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,be.jsx)(J.Provider,{value:e,children:t})),X=q.createContext(!1),Se=()=>q.useContext(X);X.Provider;function Ce(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var we=q.createContext(Ce()),Te=()=>q.useContext(we),Ee=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?A(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(t.isReset()||(e.retryOnMount=!1))},De=e=>{q.useEffect(()=>{e.clearReset()},[e])},Oe=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||A(n,[e.error,r])),ke=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},Ae=(e,t)=>e.isLoading&&e.isFetching&&!t,je=(e,t)=>e?.suspense&&t.isPending,Z=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function Me(e,t,n){let r=Se(),i=Te(),a=Y(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash);o._optimisticResults=r?`isRestoring`:`optimistic`,ke(o),Ee(o,i,s),De(i);let c=!a.getQueryCache().get(o.queryHash),[l]=q.useState(()=>new t(a,o)),d=l.getOptimisticResult(o),f=!r&&e.subscribed!==!1;if(q.useSyncExternalStore(q.useCallback(e=>{let t=f?l.subscribe(N.batchCalls(e)):u;return l.updateResult(),t},[l,f]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),q.useEffect(()=>{l.setOptions(o)},[o,l]),je(o,d))throw Z(o,l,i);if(Oe({result:d,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw d.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,d),o.experimental_prefetchInRender&&!j.isServer()&&Ae(d,r)&&(c?Z(o,l,i):s?.promise)?.catch(u).finally(()=>{l.updateResult()}),o.notifyOnChangeProps?d:l.trackResult(d)}function Ne(e,t){return Me(e,de,t)}function Pe(e,t){let n=Y(t),[r]=q.useState(()=>new _e(n,e));q.useEffect(()=>{r.setOptions(e)},[r,e]);let i=q.useSyncExternalStore(q.useCallback(e=>r.subscribe(N.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=q.useCallback((e,t)=>{r.mutate(e,t).catch(u)},[r]);if(i.error&&A(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}var Fe=e(n(),1);function Q(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o;n.key&&n.debug?.call(n)&&(o=Date.now());let s=e();if(!(s.length!==r.length||s.some((e,t)=>r[t]!==e)))return i;r=s;let c;if(n.key&&n.debug?.call(n)&&(c=Date.now()),i=t(...s),n.key&&n.debug?.call(n)){let e=Math.round((Date.now()-o)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,i=(e,t)=>{for(e=String(e);e.length<t;)e=` `+e;return e};console.info(`%c⏱ ${i(t,5)} /${i(e,5)} ms`,`
1
+ import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{gr as t}from"./vendor-DRGPi8ui.js";import{C as n}from"./vendor-charts-9eVsQvUV.js";import{c as r}from"./vendor-flow-srkes8If.js";var i=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}},a=new class extends i{#e;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e();return window.addEventListener(`visibilitychange`,t,!1),()=>{window.removeEventListener(`visibilitychange`,t)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(e=>{typeof e==`boolean`?this.setFocused(e):this.onFocus()})}setFocused(e){this.#e!==e&&(this.#e=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return typeof this.#e==`boolean`?this.#e:globalThis.document?.visibilityState!==`hidden`}},o={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},s=new class{#e=o;setTimeoutProvider(e){this.#e=e}setTimeout(e,t){return this.#e.setTimeout(e,t)}clearTimeout(e){this.#e.clearTimeout(e)}setInterval(e,t){return this.#e.setInterval(e,t)}clearInterval(e){this.#e.clearInterval(e)}};function c(e){setTimeout(e,0)}var l=typeof window>`u`||`Deno`in globalThis;function u(){}function d(e,t){return typeof e==`function`?e(t):e}function f(e){return typeof e==`number`&&e>=0&&e!==1/0}function p(e,t){return Math.max(e+(t||0)-Date.now(),0)}function m(e,t){return typeof e==`function`?e(t):e}function h(e,t){return typeof e==`function`?e(t):e}function g(e,t){let{type:n=`all`,exact:r,fetchStatus:i,predicate:a,queryKey:o,stale:s}=e;if(o){if(r){if(t.queryHash!==v(o,t.options))return!1}else if(!b(t.queryKey,o))return!1}if(n!==`all`){let e=t.isActive();if(n===`active`&&!e||n===`inactive`&&e)return!1}return!(typeof s==`boolean`&&t.isStale()!==s||i&&i!==t.state.fetchStatus||a&&!a(t))}function _(e,t){let{exact:n,status:r,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(n){if(y(t.options.mutationKey)!==y(a))return!1}else if(!b(t.options.mutationKey,a))return!1}return!(r&&t.state.status!==r||i&&!i(t))}function v(e,t){return(t?.queryKeyHashFn||y)(e)}function y(e){return JSON.stringify(e,(e,t)=>T(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function b(e,t){return e===t?!0:typeof e==typeof t&&e&&t&&typeof e==`object`&&typeof t==`object`?Object.keys(t).every(n=>b(e[n],t[n])):!1}var x=Object.prototype.hasOwnProperty;function S(e,t,n=0){if(e===t)return e;if(n>500)return t;let r=w(e)&&w(t);if(!r&&!(T(e)&&T(t)))return t;let i=(r?e:Object.keys(e)).length,a=r?t:Object.keys(t),o=a.length,s=r?Array(o):{},c=0;for(let l=0;l<o;l++){let o=r?l:a[l],u=e[o],d=t[o];if(u===d){s[o]=u,(r?l<i:x.call(e,o))&&c++;continue}if(u===null||d===null||typeof u!=`object`||typeof d!=`object`){s[o]=d;continue}let f=S(u,d,n+1);s[o]=f,f===u&&c++}return i===o&&c===i?e:s}function C(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function w(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function T(e){if(!E(e))return!1;let t=e.constructor;if(t===void 0)return!0;let n=t.prototype;return!(!E(n)||!n.hasOwnProperty(`isPrototypeOf`)||Object.getPrototypeOf(e)!==Object.prototype)}function E(e){return Object.prototype.toString.call(e)===`[object Object]`}function ee(e){return new Promise(t=>{s.setTimeout(t,e)})}function D(e,t,n){return typeof n.structuralSharing==`function`?n.structuralSharing(e,t):n.structuralSharing===!1?t:S(e,t)}function te(e,t,n=0){let r=[...e,t];return n&&r.length>n?r.slice(1):r}function ne(e,t,n=0){let r=[t,...e];return n&&r.length>n?r.slice(0,-1):r}var O=Symbol();function k(e,t){return!e.queryFn&&t?.initialPromise?()=>t.initialPromise:!e.queryFn||e.queryFn===O?()=>Promise.reject(Error(`Missing queryFn: '${e.queryHash}'`)):e.queryFn}function A(e,t){return typeof e==`function`?e(...t):!!e}function re(e,t,n){let r=!1,i;return Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(i??=t(),r?i:(r=!0,i.aborted?n():i.addEventListener(`abort`,n,{once:!0}),i))}),e}var j=(()=>{let e=()=>l;return{isServer(){return e()},setIsServer(t){e=t}}})();function M(){let e,t,n=new Promise((n,r)=>{e=n,t=r});n.status=`pending`,n.catch(()=>{});function r(e){Object.assign(n,e),delete n.resolve,delete n.reject}return n.resolve=t=>{r({status:`fulfilled`,value:t}),e(t)},n.reject=e=>{r({status:`rejected`,reason:e}),t(e)},n}var ie=c;function ae(){let e=[],t=0,n=e=>{e()},r=e=>{e()},i=ie,a=r=>{t?e.push(r):i(()=>{n(r)})},o=()=>{let t=e;e=[],t.length&&i(()=>{r(()=>{t.forEach(e=>{n(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{t--,t||o()}return n},batchCalls:e=>(...t)=>{a(()=>{e(...t)})},schedule:a,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e},setScheduler:e=>{i=e}}}var N=ae(),P=new class extends i{#e=!0;#t;#n;constructor(){super(),this.#n=e=>{if(typeof window<`u`&&window.addEventListener){let t=()=>e(!0),n=()=>e(!1);return window.addEventListener(`online`,t,!1),window.addEventListener(`offline`,n,!1),()=>{window.removeEventListener(`online`,t),window.removeEventListener(`offline`,n)}}}}onSubscribe(){this.#t||this.setEventListener(this.#n)}onUnsubscribe(){this.hasListeners()||(this.#t?.(),this.#t=void 0)}setEventListener(e){this.#n=e,this.#t?.(),this.#t=e(this.setOnline.bind(this))}setOnline(e){this.#e!==e&&(this.#e=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#e}};function oe(e){return Math.min(1e3*2**e,3e4)}function F(e){return(e??`online`)===`online`?P.isOnline():!0}var I=class extends Error{constructor(e){super(`CancelledError`),this.revert=e?.revert,this.silent=e?.silent}};function L(e){let t=!1,n=0,r,i=M(),o=()=>i.status!==`pending`,s=t=>{if(!o()){let n=new I(t);p(n),e.onCancel?.(n)}},c=()=>{t=!0},l=()=>{t=!1},u=()=>a.isFocused()&&(e.networkMode===`always`||P.isOnline())&&e.canRun(),d=()=>F(e.networkMode)&&e.canRun(),f=e=>{o()||(r?.(),i.resolve(e))},p=e=>{o()||(r?.(),i.reject(e))},m=()=>new Promise(t=>{r=e=>{(o()||u())&&t(e)},e.onPause?.()}).then(()=>{r=void 0,o()||e.onContinue?.()}),h=()=>{if(o())return;let r,i=n===0?e.initialPromise:void 0;try{r=i??e.fn()}catch(e){r=Promise.reject(e)}Promise.resolve(r).then(f).catch(r=>{if(o())return;let i=e.retry??(j.isServer()?0:3),a=e.retryDelay??oe,s=typeof a==`function`?a(n,r):a,c=i===!0||typeof i==`number`&&n<i||typeof i==`function`&&i(n,r);if(t||!c){p(r);return}n++,e.onFail?.(n,r),ee(s).then(()=>u()?void 0:m()).then(()=>{t?p(r):h()})})};return{promise:i,status:()=>i.status,cancel:s,continue:()=>(r?.(),i),cancelRetry:c,continueRetry:l,canStart:d,start:()=>(d()?h():m().then(h),i)}}var se=class{#e;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),f(this.gcTime)&&(this.#e=s.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(j.isServer()?1/0:300*1e3))}clearGcTimeout(){this.#e!==void 0&&(s.clearTimeout(this.#e),this.#e=void 0)}},ce=class extends se{#e;#t;#n;#r;#i;#a;#o;constructor(e){super(),this.#o=!1,this.#a=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.#r=e.client,this.#n=this.#r.getQueryCache(),this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#e=R(this.options),this.state=e.state??this.#e,this.scheduleGc()}get meta(){return this.options.meta}get promise(){return this.#i?.promise}setOptions(e){if(this.options={...this.#a,...e},this.updateGcTime(this.options.gcTime),this.state&&this.state.data===void 0){let e=R(this.options);e.data!==void 0&&(this.setState(ue(e.data,e.dataUpdatedAt)),this.#e=e)}}optionalRemove(){!this.observers.length&&this.state.fetchStatus===`idle`&&this.#n.remove(this)}setData(e,t){let n=D(this.state.data,e,this.options);return this.#c({data:n,type:`success`,dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#c({type:`setState`,state:e,setStateOptions:t})}cancel(e){let t=this.#i?.promise;return this.#i?.cancel(e),t?t.then(u).catch(u):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}get resetState(){return this.#e}reset(){this.destroy(),this.setState(this.resetState)}isActive(){return this.observers.some(e=>h(e.options.enabled,this)!==!1)}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===O||!this.isFetched()}isFetched(){return this.state.dataUpdateCount+this.state.errorUpdateCount>0}isStatic(){return this.getObserversCount()>0?this.observers.some(e=>m(e.options.staleTime,this)===`static`):!1}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):this.state.data===void 0||this.state.isInvalidated}isStaleByTime(e=0){return this.state.data===void 0?!0:e===`static`?!1:this.state.isInvalidated?!0:!p(this.state.dataUpdatedAt,e)}onFocus(){this.observers.find(e=>e.shouldFetchOnWindowFocus())?.refetch({cancelRefetch:!1}),this.#i?.continue()}onOnline(){this.observers.find(e=>e.shouldFetchOnReconnect())?.refetch({cancelRefetch:!1}),this.#i?.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(this.#i&&(this.#o||this.#s()?this.#i.cancel({revert:!0}):this.#i.cancelRetry()),this.scheduleGc()),this.#n.notify({type:`observerRemoved`,query:this,observer:e}))}getObserversCount(){return this.observers.length}#s(){return this.state.fetchStatus===`paused`&&this.state.status===`pending`}invalidate(){this.state.isInvalidated||this.#c({type:`invalidate`})}async fetch(e,t){if(this.state.fetchStatus!==`idle`&&this.#i?.status()!==`rejected`){if(this.state.data!==void 0&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#i)return this.#i.continueRetry(),this.#i.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,r=e=>{Object.defineProperty(e,`signal`,{enumerable:!0,get:()=>(this.#o=!0,n.signal)})},i=()=>{let e=k(this.options,t),n=(()=>{let e={client:this.#r,queryKey:this.queryKey,meta:this.meta};return r(e),e})();return this.#o=!1,this.options.persister?this.options.persister(e,n,this):e(n)},a=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:this.#r,state:this.state,fetchFn:i};return r(e),e})();this.options.behavior?.onFetch(a,this),this.#t=this.state,(this.state.fetchStatus===`idle`||this.state.fetchMeta!==a.fetchOptions?.meta)&&this.#c({type:`fetch`,meta:a.fetchOptions?.meta}),this.#i=L({initialPromise:t?.initialPromise,fn:a.fetchFn,onCancel:e=>{e instanceof I&&e.revert&&this.setState({...this.#t,fetchStatus:`idle`}),n.abort()},onFail:(e,t)=>{this.#c({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#c({type:`pause`})},onContinue:()=>{this.#c({type:`continue`})},retry:a.options.retry,retryDelay:a.options.retryDelay,networkMode:a.options.networkMode,canRun:()=>!0});try{let e=await this.#i.start();if(e===void 0)throw Error(`${this.queryHash} data is undefined`);return this.setData(e),this.#n.config.onSuccess?.(e,this),this.#n.config.onSettled?.(e,this.state.error,this),e}catch(e){if(e instanceof I){if(e.silent)return this.#i.promise;if(e.revert){if(this.state.data===void 0)throw e;return this.state.data}}throw this.#c({type:`error`,error:e}),this.#n.config.onError?.(e,this),this.#n.config.onSettled?.(this.state.data,e,this),e}finally{this.scheduleGc()}}#c(e){this.state=(t=>{switch(e.type){case`failed`:return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case`pause`:return{...t,fetchStatus:`paused`};case`continue`:return{...t,fetchStatus:`fetching`};case`fetch`:return{...t,...le(t.data,this.options),fetchMeta:e.meta??null};case`success`:let n={...t,...ue(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:`idle`,fetchFailureCount:0,fetchFailureReason:null}};return this.#t=e.manual?n:void 0,n;case`error`:let r=e.error;return{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:`idle`,status:`error`,isInvalidated:!0};case`invalidate`:return{...t,isInvalidated:!0};case`setState`:return{...t,...e.state}}})(this.state),N.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),this.#n.notify({query:this,type:`updated`,action:e})})}};function le(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:F(t.networkMode)?`fetching`:`paused`,...e===void 0&&{error:null,status:`pending`}}}function ue(e,t){return{data:e,dataUpdatedAt:t??Date.now(),error:null,isInvalidated:!1,status:`success`}}function R(e){let t=typeof e.initialData==`function`?e.initialData():e.initialData,n=t!==void 0,r=n?typeof e.initialDataUpdatedAt==`function`?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?r??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?`success`:`pending`,fetchStatus:`idle`}}var de=class extends i{constructor(e,t){super(),this.options=t,this.#e=e,this.#s=null,this.#o=M(),this.bindMethods(),this.setOptions(t)}#e;#t=void 0;#n=void 0;#r=void 0;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),z(this.#t,this.options)?this.#h():this.updateResult(),this.#y())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return B(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return B(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#b(),this.#x(),this.#t.removeObserver(this)}setOptions(e){let t=this.options,n=this.#t;if(this.options=this.#e.defaultQueryOptions(e),this.options.enabled!==void 0&&typeof this.options.enabled!=`boolean`&&typeof this.options.enabled!=`function`&&typeof h(this.options.enabled,this.#t)!=`boolean`)throw Error(`Expected enabled to be a boolean or a callback that returns a boolean`);this.#S(),this.#t.setOptions(this.options),t._defaulted&&!C(this.options,t)&&this.#e.getQueryCache().notify({type:`observerOptionsUpdated`,query:this.#t,observer:this});let r=this.hasListeners();r&&V(this.#t,n,this.options,t)&&this.#h(),this.updateResult(),r&&(this.#t!==n||h(this.options.enabled,this.#t)!==h(t.enabled,this.#t)||m(this.options.staleTime,this.#t)!==m(t.staleTime,this.#t))&&this.#g();let i=this.#_();r&&(this.#t!==n||h(this.options.enabled,this.#t)!==h(t.enabled,this.#t)||i!==this.#p)&&this.#v(i)}getOptimisticResult(e){let t=this.#e.getQueryCache().build(this.#e,e),n=this.createResult(t,e);return pe(this,n)&&(this.#r=n,this.#a=this.options,this.#i=this.#t.state),n}getCurrentResult(){return this.#r}trackResult(e,t){return new Proxy(e,{get:(e,n)=>(this.trackProp(n),t?.(n),n===`promise`&&(this.trackProp(`data`),!this.options.experimental_prefetchInRender&&this.#o.status===`pending`&&this.#o.reject(Error(`experimental_prefetchInRender feature flag is not enabled`))),Reflect.get(e,n))})}trackProp(e){this.#m.add(e)}getCurrentQuery(){return this.#t}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#e.defaultQueryOptions(e),n=this.#e.getQueryCache().build(this.#e,t);return n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#h({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#r))}#h(e){this.#S();let t=this.#t.fetch(this.options,e);return e?.throwOnError||(t=t.catch(u)),t}#g(){this.#b();let e=m(this.options.staleTime,this.#t);if(j.isServer()||this.#r.isStale||!f(e))return;let t=p(this.#r.dataUpdatedAt,e)+1;this.#d=s.setTimeout(()=>{this.#r.isStale||this.updateResult()},t)}#_(){return(typeof this.options.refetchInterval==`function`?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#v(e){this.#x(),this.#p=e,!(j.isServer()||h(this.options.enabled,this.#t)===!1||!f(this.#p)||this.#p===0)&&(this.#f=s.setInterval(()=>{(this.options.refetchIntervalInBackground||a.isFocused())&&this.#h()},this.#p))}#y(){this.#g(),this.#v(this.#_())}#b(){this.#d!==void 0&&(s.clearTimeout(this.#d),this.#d=void 0)}#x(){this.#f!==void 0&&(s.clearInterval(this.#f),this.#f=void 0)}createResult(e,t){let n=this.#t,r=this.options,i=this.#r,a=this.#i,o=this.#a,s=e===n?this.#n:e.state,{state:c}=e,l={...c},u=!1,d;if(t._optimisticResults){let i=this.hasListeners(),a=!i&&z(e,t),o=i&&V(e,n,t,r);(a||o)&&(l={...l,...le(c.data,e.options)}),t._optimisticResults===`isRestoring`&&(l.fetchStatus=`idle`)}let{error:f,errorUpdatedAt:p,status:m}=l;d=l.data;let g=!1;if(t.placeholderData!==void 0&&d===void 0&&m===`pending`){let e;i?.isPlaceholderData&&t.placeholderData===o?.placeholderData?(e=i.data,g=!0):e=typeof t.placeholderData==`function`?t.placeholderData(this.#u?.state.data,this.#u):t.placeholderData,e!==void 0&&(m=`success`,d=D(i?.data,e,t),u=!0)}if(t.select&&d!==void 0&&!g)if(i&&d===a?.data&&t.select===this.#c)d=this.#l;else try{this.#c=t.select,d=t.select(d),d=D(i?.data,d,t),this.#l=d,this.#s=null}catch(e){this.#s=e}this.#s&&(f=this.#s,d=this.#l,p=Date.now(),m=`error`);let _=l.fetchStatus===`fetching`,v=m===`pending`,y=m===`error`,b=v&&_,x=d!==void 0,S={status:m,fetchStatus:l.fetchStatus,isPending:v,isSuccess:m===`success`,isError:y,isInitialLoading:b,isLoading:b,data:d,dataUpdatedAt:l.dataUpdatedAt,error:f,errorUpdatedAt:p,failureCount:l.fetchFailureCount,failureReason:l.fetchFailureReason,errorUpdateCount:l.errorUpdateCount,isFetched:e.isFetched(),isFetchedAfterMount:l.dataUpdateCount>s.dataUpdateCount||l.errorUpdateCount>s.errorUpdateCount,isFetching:_,isRefetching:_&&!v,isLoadingError:y&&!x,isPaused:l.fetchStatus===`paused`,isPlaceholderData:u,isRefetchError:y&&x,isStale:H(e,t),refetch:this.refetch,promise:this.#o,isEnabled:h(t.enabled,e)!==!1};if(this.options.experimental_prefetchInRender){let t=S.data!==void 0,r=S.status===`error`&&!t,i=e=>{r?e.reject(S.error):t&&e.resolve(S.data)},a=()=>{i(this.#o=S.promise=M())},o=this.#o;switch(o.status){case`pending`:e.queryHash===n.queryHash&&i(o);break;case`fulfilled`:(r||S.data!==o.value)&&a();break;case`rejected`:(!r||S.error!==o.reason)&&a();break}}return S}updateResult(){let e=this.#r,t=this.createResult(this.#t,this.options);this.#i=this.#t.state,this.#a=this.options,this.#i.data!==void 0&&(this.#u=this.#t),!C(t,e)&&(this.#r=t,this.#C({listeners:(()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,n=typeof t==`function`?t():t;if(n===`all`||!n&&!this.#m.size)return!0;let r=new Set(n??this.#m);return this.options.throwOnError&&r.add(`error`),Object.keys(this.#r).some(t=>{let n=t;return this.#r[n]!==e[n]&&r.has(n)})})()}))}#S(){let e=this.#e.getQueryCache().build(this.#e,this.options);if(e===this.#t)return;let t=this.#t;this.#t=e,this.#n=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#y()}#C(e){N.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#r)}),this.#e.getQueryCache().notify({query:this.#t,type:`observerResultsUpdated`})})}};function fe(e,t){return h(t.enabled,e)!==!1&&e.state.data===void 0&&!(e.state.status===`error`&&t.retryOnMount===!1)}function z(e,t){return fe(e,t)||e.state.data!==void 0&&B(e,t,t.refetchOnMount)}function B(e,t,n){if(h(t.enabled,e)!==!1&&m(t.staleTime,e)!==`static`){let r=typeof n==`function`?n(e):n;return r===`always`||r!==!1&&H(e,t)}return!1}function V(e,t,n,r){return(e!==t||h(r.enabled,e)===!1)&&(!n.suspense||e.state.status!==`error`)&&H(e,n)}function H(e,t){return h(t.enabled,e)!==!1&&e.isStaleByTime(m(t.staleTime,e))}function pe(e,t){return!C(e.getCurrentResult(),t)}function U(e){return{onFetch:(t,n)=>{let r=t.options,i=t.fetchOptions?.meta?.fetchMore?.direction,a=t.state.data?.pages||[],o=t.state.data?.pageParams||[],s={pages:[],pageParams:[]},c=0,l=async()=>{let n=!1,l=e=>{re(e,()=>t.signal,()=>n=!0)},u=k(t.options,t.fetchOptions),d=async(e,r,i)=>{if(n)return Promise.reject();if(r==null&&e.pages.length)return Promise.resolve(e);let a=await u((()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:r,direction:i?`backward`:`forward`,meta:t.options.meta};return l(e),e})()),{maxPages:o}=t.options,s=i?ne:te;return{pages:s(e.pages,a,o),pageParams:s(e.pageParams,r,o)}};if(i&&a.length){let e=i===`backward`,t=e?me:W,n={pages:a,pageParams:o};s=await d(n,t(r,n),e)}else{let t=e??a.length;do{let e=c===0?o[0]??r.initialPageParam:W(r,s);if(c>0&&e==null)break;s=await d(s,e),c++}while(c<t)}return s};t.options.persister?t.fetchFn=()=>t.options.persister?.(l,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},n):t.fetchFn=l}}}function W(e,{pages:t,pageParams:n}){let r=t.length-1;return t.length>0?e.getNextPageParam(t[r],t,n[r],n):void 0}function me(e,{pages:t,pageParams:n}){return t.length>0?e.getPreviousPageParam?.(t[0],t,n[0],n):void 0}var he=class extends se{#e;#t;#n;#r;constructor(e){super(),this.#e=e.client,this.mutationId=e.mutationId,this.#n=e.mutationCache,this.#t=[],this.state=e.state||G(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#t.includes(e)||(this.#t.push(e),this.clearGcTimeout(),this.#n.notify({type:`observerAdded`,mutation:this,observer:e}))}removeObserver(e){this.#t=this.#t.filter(t=>t!==e),this.scheduleGc(),this.#n.notify({type:`observerRemoved`,mutation:this,observer:e})}optionalRemove(){this.#t.length||(this.state.status===`pending`?this.scheduleGc():this.#n.remove(this))}continue(){return this.#r?.continue()??this.execute(this.state.variables)}async execute(e){let t=()=>{this.#i({type:`continue`})},n={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};this.#r=L({fn:()=>this.options.mutationFn?this.options.mutationFn(e,n):Promise.reject(Error(`No mutationFn found`)),onFail:(e,t)=>{this.#i({type:`failed`,failureCount:e,error:t})},onPause:()=>{this.#i({type:`pause`})},onContinue:t,retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>this.#n.canRun(this)});let r=this.state.status===`pending`,i=!this.#r.canStart();try{if(r)t();else{this.#i({type:`pending`,variables:e,isPaused:i}),this.#n.config.onMutate&&await this.#n.config.onMutate(e,this,n);let t=await this.options.onMutate?.(e,n);t!==this.state.context&&this.#i({type:`pending`,context:t,variables:e,isPaused:i})}let a=await this.#r.start();return await this.#n.config.onSuccess?.(a,e,this.state.context,this,n),await this.options.onSuccess?.(a,e,this.state.context,n),await this.#n.config.onSettled?.(a,null,this.state.variables,this.state.context,this,n),await this.options.onSettled?.(a,null,e,this.state.context,n),this.#i({type:`success`,data:a}),a}catch(t){try{await this.#n.config.onError?.(t,e,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onError?.(t,e,this.state.context,n)}catch(e){Promise.reject(e)}try{await this.#n.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this,n)}catch(e){Promise.reject(e)}try{await this.options.onSettled?.(void 0,t,e,this.state.context,n)}catch(e){Promise.reject(e)}throw this.#i({type:`error`,error:t}),t}finally{this.#n.runNext(this)}}#i(e){this.state=(t=>{switch(e.type){case`failed`:return{...t,failureCount:e.failureCount,failureReason:e.error};case`pause`:return{...t,isPaused:!0};case`continue`:return{...t,isPaused:!1};case`pending`:return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:`pending`,variables:e.variables,submittedAt:Date.now()};case`success`:return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:`success`,isPaused:!1};case`error`:return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:`error`}}})(this.state),N.batch(()=>{this.#t.forEach(t=>{t.onMutationUpdate(e)}),this.#n.notify({mutation:this,type:`updated`,action:e})})}};function G(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:`idle`,variables:void 0,submittedAt:0}}var ge=class extends i{constructor(e={}){super(),this.config=e,this.#e=new Set,this.#t=new Map,this.#n=0}#e;#t;#n;build(e,t,n){let r=new he({client:e,mutationCache:this,mutationId:++this.#n,options:e.defaultMutationOptions(t),state:n});return this.add(r),r}add(e){this.#e.add(e);let t=K(e);if(typeof t==`string`){let n=this.#t.get(t);n?n.push(e):this.#t.set(t,[e])}this.notify({type:`added`,mutation:e})}remove(e){if(this.#e.delete(e)){let t=K(e);if(typeof t==`string`){let n=this.#t.get(t);if(n)if(n.length>1){let t=n.indexOf(e);t!==-1&&n.splice(t,1)}else n[0]===e&&this.#t.delete(t)}}this.notify({type:`removed`,mutation:e})}canRun(e){let t=K(e);if(typeof t==`string`){let n=this.#t.get(t)?.find(e=>e.state.status===`pending`);return!n||n===e}else return!0}runNext(e){let t=K(e);return typeof t==`string`?(this.#t.get(t)?.find(t=>t!==e&&t.state.isPaused))?.continue()??Promise.resolve():Promise.resolve()}clear(){N.batch(()=>{this.#e.forEach(e=>{this.notify({type:`removed`,mutation:e})}),this.#e.clear(),this.#t.clear()})}getAll(){return Array.from(this.#e)}find(e){let t={exact:!0,...e};return this.getAll().find(e=>_(t,e))}findAll(e={}){return this.getAll().filter(t=>_(e,t))}notify(e){N.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return N.batch(()=>Promise.all(e.map(e=>e.continue().catch(u))))}};function K(e){return e.options.scope?.id}var _e=class extends i{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),C(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&y(t.mutationKey)!==y(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??G();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){N.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},ve=class extends i{constructor(e={}){super(),this.config=e,this.#e=new Map}#e;build(e,t,n){let r=t.queryKey,i=t.queryHash??v(r,t),a=this.get(i);return a||(a=new ce({client:e,queryKey:r,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(r)}),this.add(a)),a}add(e){this.#e.has(e.queryHash)||(this.#e.set(e.queryHash,e),this.notify({type:`added`,query:e}))}remove(e){let t=this.#e.get(e.queryHash);t&&(e.destroy(),t===e&&this.#e.delete(e.queryHash),this.notify({type:`removed`,query:e}))}clear(){N.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#e.get(e)}getAll(){return[...this.#e.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>g(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>g(e,t)):t}notify(e){N.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){N.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){N.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},ye=class{#e;#t;#n;#r;#i;#a;#o;#s;constructor(e={}){this.#e=e.queryCache||new ve,this.#t=e.mutationCache||new ge,this.#n=e.defaultOptions||{},this.#r=new Map,this.#i=new Map,this.#a=0}mount(){this.#a++,this.#a===1&&(this.#o=a.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onFocus())}),this.#s=P.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#e.onOnline())}))}unmount(){this.#a--,this.#a===0&&(this.#o?.(),this.#o=void 0,this.#s?.(),this.#s=void 0)}isFetching(e){return this.#e.findAll({...e,fetchStatus:`fetching`}).length}isMutating(e){return this.#t.findAll({...e,status:`pending`}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),n=this.#e.build(this,t),r=n.state.data;return r===void 0?this.fetchQuery(e):(e.revalidateIfStale&&n.isStaleByTime(m(t.staleTime,n))&&this.prefetchQuery(t),Promise.resolve(r))}getQueriesData(e){return this.#e.findAll(e).map(({queryKey:e,state:t})=>[e,t.data])}setQueryData(e,t,n){let r=this.defaultQueryOptions({queryKey:e}),i=this.#e.get(r.queryHash)?.state.data,a=d(t,i);if(a!==void 0)return this.#e.build(this,r).setData(a,{...n,manual:!0})}setQueriesData(e,t,n){return N.batch(()=>this.#e.findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#e.get(t.queryHash)?.state}removeQueries(e){let t=this.#e;N.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#e;return N.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:`active`,...e},t)))}cancelQueries(e,t={}){let n={revert:!0,...t},r=N.batch(()=>this.#e.findAll(e).map(e=>e.cancel(n)));return Promise.all(r).then(u).catch(u)}invalidateQueries(e,t={}){return N.batch(()=>(this.#e.findAll(e).forEach(e=>{e.invalidate()}),e?.refetchType===`none`?Promise.resolve():this.refetchQueries({...e,type:e?.refetchType??e?.type??`active`},t)))}refetchQueries(e,t={}){let n={...t,cancelRefetch:t.cancelRefetch??!0},r=N.batch(()=>this.#e.findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(u)),e.state.fetchStatus===`paused`?Promise.resolve():t}));return Promise.all(r).then(u)}fetchQuery(e){let t=this.defaultQueryOptions(e);t.retry===void 0&&(t.retry=!1);let n=this.#e.build(this,t);return n.isStaleByTime(m(t.staleTime,n))?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(u).catch(u)}fetchInfiniteQuery(e){return e.behavior=U(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(u).catch(u)}ensureInfiniteQueryData(e){return e.behavior=U(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return P.isOnline()?this.#t.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#e}getMutationCache(){return this.#t}getDefaultOptions(){return this.#n}setDefaultOptions(e){this.#n=e}setQueryDefaults(e,t){this.#r.set(y(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#r.values()],n={};return t.forEach(t=>{b(e,t.queryKey)&&Object.assign(n,t.defaultOptions)}),n}setMutationDefaults(e,t){this.#i.set(y(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#i.values()],n={};return t.forEach(t=>{b(e,t.mutationKey)&&Object.assign(n,t.defaultOptions)}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#n.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||=v(t.queryKey,t),t.refetchOnReconnect===void 0&&(t.refetchOnReconnect=t.networkMode!==`always`),t.throwOnError===void 0&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode=`offlineFirst`),t.queryFn===O&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#n.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#e.clear(),this.#t.clear()}},q=e(t(),1),be=r(),J=q.createContext(void 0),Y=e=>{let t=q.useContext(J);if(e)return e;if(!t)throw Error(`No QueryClient set, use QueryClientProvider to set one`);return t},xe=({client:e,children:t})=>(q.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,be.jsx)(J.Provider,{value:e,children:t})),X=q.createContext(!1),Se=()=>q.useContext(X);X.Provider;function Ce(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}var we=q.createContext(Ce()),Te=()=>q.useContext(we),Ee=(e,t,n)=>{let r=n?.state.error&&typeof e.throwOnError==`function`?A(e.throwOnError,[n.state.error,n]):e.throwOnError;(e.suspense||e.experimental_prefetchInRender||r)&&(t.isReset()||(e.retryOnMount=!1))},De=e=>{q.useEffect(()=>{e.clearReset()},[e])},Oe=({result:e,errorResetBoundary:t,throwOnError:n,query:r,suspense:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r&&(i&&e.data===void 0||A(n,[e.error,r])),ke=e=>{if(e.suspense){let t=1e3,n=e=>e===`static`?e:Math.max(e??t,t),r=e.staleTime;e.staleTime=typeof r==`function`?(...e)=>n(r(...e)):n(r),typeof e.gcTime==`number`&&(e.gcTime=Math.max(e.gcTime,t))}},Ae=(e,t)=>e.isLoading&&e.isFetching&&!t,je=(e,t)=>e?.suspense&&t.isPending,Z=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function Me(e,t,n){let r=Se(),i=Te(),a=Y(n),o=a.defaultQueryOptions(e);a.getDefaultOptions().queries?._experimental_beforeQuery?.(o);let s=a.getQueryCache().get(o.queryHash);o._optimisticResults=r?`isRestoring`:`optimistic`,ke(o),Ee(o,i,s),De(i);let c=!a.getQueryCache().get(o.queryHash),[l]=q.useState(()=>new t(a,o)),d=l.getOptimisticResult(o),f=!r&&e.subscribed!==!1;if(q.useSyncExternalStore(q.useCallback(e=>{let t=f?l.subscribe(N.batchCalls(e)):u;return l.updateResult(),t},[l,f]),()=>l.getCurrentResult(),()=>l.getCurrentResult()),q.useEffect(()=>{l.setOptions(o)},[o,l]),je(o,d))throw Z(o,l,i);if(Oe({result:d,errorResetBoundary:i,throwOnError:o.throwOnError,query:s,suspense:o.suspense}))throw d.error;return a.getDefaultOptions().queries?._experimental_afterQuery?.(o,d),o.experimental_prefetchInRender&&!j.isServer()&&Ae(d,r)&&(c?Z(o,l,i):s?.promise)?.catch(u).finally(()=>{l.updateResult()}),o.notifyOnChangeProps?d:l.trackResult(d)}function Ne(e,t){return Me(e,de,t)}function Pe(e,t){let n=Y(t),[r]=q.useState(()=>new _e(n,e));q.useEffect(()=>{r.setOptions(e)},[r,e]);let i=q.useSyncExternalStore(q.useCallback(e=>r.subscribe(N.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),a=q.useCallback((e,t)=>{r.mutate(e,t).catch(u)},[r]);if(i.error&&A(r.options.throwOnError,[i.error]))throw i.error;return{...i,mutate:a,mutateAsync:i.mutate}}var Fe=e(n(),1);function Q(e,t,n){let r=n.initialDeps??[],i,a=!0;function o(){let o;n.key&&n.debug?.call(n)&&(o=Date.now());let s=e();if(!(s.length!==r.length||s.some((e,t)=>r[t]!==e)))return i;r=s;let c;if(n.key&&n.debug?.call(n)&&(c=Date.now()),i=t(...s),n.key&&n.debug?.call(n)){let e=Math.round((Date.now()-o)*100)/100,t=Math.round((Date.now()-c)*100)/100,r=t/16,i=(e,t)=>{for(e=String(e);e.length<t;)e=` `+e;return e};console.info(`%c⏱ ${i(t,5)} /${i(e,5)} ms`,`
2
2
  font-size: .6rem;
3
3
  font-weight: bold;
4
4
  color: hsl(${Math.max(0,Math.min(120-120*r,120))}deg 100% 31%);`,n?.key)}return n?.onChange&&!(a&&n.skipInitialOnChange)&&n.onChange(i),a=!1,i}return o.updateDeps=e=>{r=e},o}function $(e,t){if(e===void 0)throw Error(`Unexpected undefined${t?`: ${t}`:``}`);return e}var Ie=(e,t)=>Math.abs(e-t)<1.01,Le=(e,t,n)=>{let r;return function(...i){e.clearTimeout(r),r=e.setTimeout(()=>t.apply(this,i),n)}},Re=e=>{let{offsetWidth:t,offsetHeight:n}=e;return{width:t,height:n}},ze=e=>e,Be=e=>{let t=Math.max(e.startIndex-e.overscan,0),n=Math.min(e.endIndex+e.overscan,e.count-1),r=[];for(let e=t;e<=n;e++)r.push(e);return r},Ve=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=e=>{let{width:n,height:r}=e;t({width:Math.round(n),height:Math.round(r)})};if(i(Re(n)),!r.ResizeObserver)return()=>{};let a=new r.ResizeObserver(t=>{let r=()=>{let e=t[0];if(e?.borderBoxSize){let t=e.borderBoxSize[0];if(t){i({width:t.inlineSize,height:t.blockSize});return}}i(Re(n))};e.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(r):r()});return a.observe(n,{box:`border-box`}),()=>{a.unobserve(n)}},He={passive:!0},Ue=typeof window>`u`?!0:`onscrollend`in window,We=(e,t)=>{let n=e.scrollElement;if(!n)return;let r=e.targetWindow;if(!r)return;let i=0,a=e.options.useScrollendEvent&&Ue?()=>void 0:Le(r,()=>{t(i,!1)},e.options.isScrollingResetDelay),o=r=>()=>{let{horizontal:o,isRtl:s}=e.options;i=o?n.scrollLeft*(s&&-1||1):n.scrollTop,a(),t(i,r)},s=o(!0),c=o(!1);n.addEventListener(`scroll`,s,He);let l=e.options.useScrollendEvent&&Ue;return l&&n.addEventListener(`scrollend`,c,He),()=>{n.removeEventListener(`scroll`,s),l&&n.removeEventListener(`scrollend`,c)}},Ge=(e,t,n)=>{if(t?.borderBoxSize){let e=t.borderBoxSize[0];if(e)return Math.round(e[n.options.horizontal?`inlineSize`:`blockSize`])}return e[n.options.horizontal?`offsetWidth`:`offsetHeight`]},Ke=(e,{adjustments:t=0,behavior:n},r)=>{var i,a;let o=e+t;(a=(i=r.scrollElement)?.scrollTo)==null||a.call(i,{[r.options.horizontal?`left`:`top`]:o,behavior:n})},qe=class{constructor(e){this.unsubs=[],this.scrollElement=null,this.targetWindow=null,this.isScrolling=!1,this.scrollState=null,this.measurementsCache=[],this.itemSizeCache=new Map,this.laneAssignments=new Map,this.pendingMeasuredCacheIndexes=[],this.prevLanes=void 0,this.lanesChangedFlag=!1,this.lanesSettling=!1,this.scrollRect=null,this.scrollOffset=null,this.scrollDirection=null,this.scrollAdjustments=0,this.elementsCache=new Map,this.now=()=>{var e;return((e=this.targetWindow?.performance)?.now)?.call(e)??Date.now()},this.observer=(()=>{let e=null,t=()=>e||(!this.targetWindow||!this.targetWindow.ResizeObserver?null:e=new this.targetWindow.ResizeObserver(e=>{e.forEach(e=>{let t=()=>{let t=e.target,n=this.indexFromElement(t);if(!t.isConnected){this.observer.unobserve(t);return}this.shouldMeasureDuringScroll(n)&&this.resizeItem(n,this.options.measureElement(t,e,this))};this.options.useAnimationFrameWithResizeObserver?requestAnimationFrame(t):t()})}));return{disconnect:()=>{var n;(n=t())==null||n.disconnect(),e=null},observe:e=>t()?.observe(e,{box:`border-box`}),unobserve:e=>t()?.unobserve(e)}})(),this.range=null,this.setOptions=e=>{Object.entries(e).forEach(([t,n])=>{n===void 0&&delete e[t]}),this.options={debug:!1,initialOffset:0,overscan:1,paddingStart:0,paddingEnd:0,scrollPaddingStart:0,scrollPaddingEnd:0,horizontal:!1,getItemKey:ze,rangeExtractor:Be,onChange:()=>{},measureElement:Ge,initialRect:{width:0,height:0},scrollMargin:0,gap:0,indexAttribute:`data-index`,initialMeasurementsCache:[],lanes:1,isScrollingResetDelay:150,enabled:!0,isRtl:!1,useScrollendEvent:!1,useAnimationFrameWithResizeObserver:!1,laneAssignmentMode:`estimate`,...e}},this.notify=e=>{var t,n;(n=(t=this.options).onChange)==null||n.call(t,this,e)},this.maybeNotify=Q(()=>(this.calculateRange(),[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]),e=>{this.notify(e)},{key:!1,debug:()=>this.options.debug,initialDeps:[this.isScrolling,this.range?this.range.startIndex:null,this.range?this.range.endIndex:null]}),this.cleanup=()=>{this.unsubs.filter(Boolean).forEach(e=>e()),this.unsubs=[],this.observer.disconnect(),this.rafId!=null&&this.targetWindow&&(this.targetWindow.cancelAnimationFrame(this.rafId),this.rafId=null),this.scrollState=null,this.scrollElement=null,this.targetWindow=null},this._didMount=()=>()=>{this.cleanup()},this._willUpdate=()=>{let e=this.options.enabled?this.options.getScrollElement():null;if(this.scrollElement!==e){if(this.cleanup(),!e){this.maybeNotify();return}this.scrollElement=e,this.scrollElement&&`ownerDocument`in this.scrollElement?this.targetWindow=this.scrollElement.ownerDocument.defaultView:this.targetWindow=this.scrollElement?.window??null,this.elementsCache.forEach(e=>{this.observer.observe(e)}),this.unsubs.push(this.options.observeElementRect(this,e=>{this.scrollRect=e,this.maybeNotify()})),this.unsubs.push(this.options.observeElementOffset(this,(e,t)=>{this.scrollAdjustments=0,this.scrollDirection=t?this.getScrollOffset()<e?`forward`:`backward`:null,this.scrollOffset=e,this.isScrolling=t,this.scrollState&&this.scheduleScrollReconcile(),this.maybeNotify()})),this._scrollToOffset(this.getScrollOffset(),{adjustments:void 0,behavior:void 0})}},this.rafId=null,this.getSize=()=>this.options.enabled?(this.scrollRect=this.scrollRect??this.options.initialRect,this.scrollRect[this.options.horizontal?`width`:`height`]):(this.scrollRect=null,0),this.getScrollOffset=()=>this.options.enabled?(this.scrollOffset=this.scrollOffset??(typeof this.options.initialOffset==`function`?this.options.initialOffset():this.options.initialOffset),this.scrollOffset):(this.scrollOffset=null,0),this.getFurthestMeasurement=(e,t)=>{let n=new Map,r=new Map;for(let i=t-1;i>=0;i--){let t=e[i];if(n.has(t.lane))continue;let a=r.get(t.lane);if(a==null||t.end>a.end?r.set(t.lane,t):t.end<a.end&&n.set(t.lane,!0),n.size===this.options.lanes)break}return r.size===this.options.lanes?Array.from(r.values()).sort((e,t)=>e.end===t.end?e.index-t.index:e.end-t.end)[0]:void 0},this.getMeasurementOptions=Q(()=>[this.options.count,this.options.paddingStart,this.options.scrollMargin,this.options.getItemKey,this.options.enabled,this.options.lanes,this.options.laneAssignmentMode],(e,t,n,r,i,a,o)=>(this.prevLanes!==void 0&&this.prevLanes!==a&&(this.lanesChangedFlag=!0),this.prevLanes=a,this.pendingMeasuredCacheIndexes=[],{count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o}),{key:!1}),this.getMeasurements=Q(()=>[this.getMeasurementOptions(),this.itemSizeCache],({count:e,paddingStart:t,scrollMargin:n,getItemKey:r,enabled:i,lanes:a,laneAssignmentMode:o},s)=>{if(!i)return this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),[];if(this.laneAssignments.size>e)for(let t of this.laneAssignments.keys())t>=e&&this.laneAssignments.delete(t);this.lanesChangedFlag&&(this.lanesChangedFlag=!1,this.lanesSettling=!0,this.measurementsCache=[],this.itemSizeCache.clear(),this.laneAssignments.clear(),this.pendingMeasuredCacheIndexes=[]),this.measurementsCache.length===0&&!this.lanesSettling&&(this.measurementsCache=this.options.initialMeasurementsCache,this.measurementsCache.forEach(e=>{this.itemSizeCache.set(e.key,e.size)}));let c=this.lanesSettling?0:this.pendingMeasuredCacheIndexes.length>0?Math.min(...this.pendingMeasuredCacheIndexes):0;this.pendingMeasuredCacheIndexes=[],this.lanesSettling&&this.measurementsCache.length===e&&(this.lanesSettling=!1);let l=this.measurementsCache.slice(0,c),u=Array(a).fill(void 0);for(let e=0;e<c;e++){let t=l[e];t&&(u[t.lane]=e)}for(let i=c;i<e;i++){let e=r(i),a=this.laneAssignments.get(i),c,d,f=o===`estimate`||s.has(e);if(a!==void 0&&this.options.lanes>1){c=a;let e=u[c],r=e===void 0?void 0:l[e];d=r?r.end+this.options.gap:t+n}else{let e=this.options.lanes===1?l[i-1]:this.getFurthestMeasurement(l,i);d=e?e.end+this.options.gap:t+n,c=e?e.lane:i%this.options.lanes,this.options.lanes>1&&f&&this.laneAssignments.set(i,c)}let p=s.get(e),m=typeof p==`number`?p:this.options.estimateSize(i),h=d+m;l[i]={index:i,start:d,size:m,end:h,key:e,lane:c},u[c]=i}return this.measurementsCache=l,l},{key:!1,debug:()=>this.options.debug}),this.calculateRange=Q(()=>[this.getMeasurements(),this.getSize(),this.getScrollOffset(),this.options.lanes],(e,t,n,r)=>this.range=e.length>0&&t>0?Ye({measurements:e,outerSize:t,scrollOffset:n,lanes:r}):null,{key:!1,debug:()=>this.options.debug}),this.getVirtualIndexes=Q(()=>{let e=null,t=null,n=this.calculateRange();return n&&(e=n.startIndex,t=n.endIndex),this.maybeNotify.updateDeps([this.isScrolling,e,t]),[this.options.rangeExtractor,this.options.overscan,this.options.count,e,t]},(e,t,n,r,i)=>r===null||i===null?[]:e({startIndex:r,endIndex:i,overscan:t,count:n}),{key:!1,debug:()=>this.options.debug}),this.indexFromElement=e=>{let t=this.options.indexAttribute,n=e.getAttribute(t);return n?parseInt(n,10):(console.warn(`Missing attribute name '${t}={index}' on measured element.`),-1)},this.shouldMeasureDuringScroll=e=>{if(!this.scrollState||this.scrollState.behavior!==`smooth`)return!0;let t=this.scrollState.index??this.getVirtualItemForOffset(this.scrollState.lastTargetOffset)?.index;if(t!==void 0&&this.range){let n=Math.max(this.options.overscan,Math.ceil((this.range.endIndex-this.range.startIndex)/2)),r=Math.max(0,t-n),i=Math.min(this.options.count-1,t+n);return e>=r&&e<=i}return!0},this.measureElement=e=>{if(!e){this.elementsCache.forEach((e,t)=>{e.isConnected||(this.observer.unobserve(e),this.elementsCache.delete(t))});return}let t=this.indexFromElement(e),n=this.options.getItemKey(t),r=this.elementsCache.get(n);r!==e&&(r&&this.observer.unobserve(r),this.observer.observe(e),this.elementsCache.set(n,e)),(!this.isScrolling||this.scrollState)&&this.shouldMeasureDuringScroll(t)&&this.resizeItem(t,this.options.measureElement(e,void 0,this))},this.resizeItem=(e,t)=>{let n=this.measurementsCache[e];if(!n)return;let r=t-(this.itemSizeCache.get(n.key)??n.size);r!==0&&(this.scrollState?.behavior!==`smooth`&&(this.shouldAdjustScrollPositionOnItemSizeChange===void 0?n.start<this.getScrollOffset()+this.scrollAdjustments:this.shouldAdjustScrollPositionOnItemSizeChange(n,r,this))&&this._scrollToOffset(this.getScrollOffset(),{adjustments:this.scrollAdjustments+=r,behavior:void 0}),this.pendingMeasuredCacheIndexes.push(n.index),this.itemSizeCache=new Map(this.itemSizeCache.set(n.key,t)),this.notify(!1))},this.getVirtualItems=Q(()=>[this.getVirtualIndexes(),this.getMeasurements()],(e,t)=>{let n=[];for(let r=0,i=e.length;r<i;r++){let i=t[e[r]];n.push(i)}return n},{key:!1,debug:()=>this.options.debug}),this.getVirtualItemForOffset=e=>{let t=this.getMeasurements();if(t.length!==0)return $(t[Je(0,t.length-1,e=>$(t[e]).start,e)])},this.getMaxScrollOffset=()=>{if(!this.scrollElement)return 0;if(`scrollHeight`in this.scrollElement)return this.options.horizontal?this.scrollElement.scrollWidth-this.scrollElement.clientWidth:this.scrollElement.scrollHeight-this.scrollElement.clientHeight;{let e=this.scrollElement.document.documentElement;return this.options.horizontal?e.scrollWidth-this.scrollElement.innerWidth:e.scrollHeight-this.scrollElement.innerHeight}},this.getOffsetForAlignment=(e,t,n=0)=>{if(!this.scrollElement)return 0;let r=this.getSize(),i=this.getScrollOffset();t===`auto`&&(t=e>=i+r?`end`:`start`),t===`center`?e+=(n-r)/2:t===`end`&&(e-=r);let a=this.getMaxScrollOffset();return Math.max(Math.min(a,e),0)},this.getOffsetForIndex=(e,t=`auto`)=>{e=Math.max(0,Math.min(e,this.options.count-1));let n=this.getSize(),r=this.getScrollOffset(),i=this.measurementsCache[e];if(!i)return;if(t===`auto`)if(i.end>=r+n-this.options.scrollPaddingEnd)t=`end`;else if(i.start<=r+this.options.scrollPaddingStart)t=`start`;else return[r,t];if(t===`end`&&e===this.options.count-1)return[this.getMaxScrollOffset(),t];let a=t===`end`?i.end+this.options.scrollPaddingEnd:i.start-this.options.scrollPaddingStart;return[this.getOffsetForAlignment(a,t,i.size),t]},this.scrollToOffset=(e,{align:t=`start`,behavior:n=`auto`}={})=>{let r=this.getOffsetForAlignment(e,t);this.scrollState={index:null,align:t,behavior:n,startedAt:this.now(),lastTargetOffset:r,stableFrames:0},this._scrollToOffset(r,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollToIndex=(e,{align:t=`auto`,behavior:n=`auto`}={})=>{e=Math.max(0,Math.min(e,this.options.count-1));let r=this.getOffsetForIndex(e,t);if(!r)return;let[i,a]=r,o=this.now();this.scrollState={index:e,align:a,behavior:n,startedAt:o,lastTargetOffset:i,stableFrames:0},this._scrollToOffset(i,{adjustments:void 0,behavior:n}),this.scheduleScrollReconcile()},this.scrollBy=(e,{behavior:t=`auto`}={})=>{let n=this.getScrollOffset()+e;this.scrollState={index:null,align:`start`,behavior:t,startedAt:this.now(),lastTargetOffset:n,stableFrames:0},this._scrollToOffset(n,{adjustments:void 0,behavior:t}),this.scheduleScrollReconcile()},this.getTotalSize=()=>{let e=this.getMeasurements(),t;if(e.length===0)t=this.options.paddingStart;else if(this.options.lanes===1)t=e[e.length-1]?.end??0;else{let n=Array(this.options.lanes).fill(null),r=e.length-1;for(;r>=0&&n.some(e=>e===null);){let t=e[r];n[t.lane]===null&&(n[t.lane]=t.end),r--}t=Math.max(...n.filter(e=>e!==null))}return Math.max(t-this.options.scrollMargin+this.options.paddingEnd,0)},this._scrollToOffset=(e,{adjustments:t,behavior:n})=>{this.options.scrollToFn(e,{behavior:n,adjustments:t},this)},this.measure=()=>{this.itemSizeCache=new Map,this.laneAssignments=new Map,this.notify(!1)},this.setOptions(e)}scheduleScrollReconcile(){if(!this.targetWindow){this.scrollState=null;return}this.rafId??=this.targetWindow.requestAnimationFrame(()=>{this.rafId=null,this.reconcileScroll()})}reconcileScroll(){if(!this.scrollState||!this.scrollElement)return;if(this.now()-this.scrollState.startedAt>5e3){this.scrollState=null;return}let e=this.scrollState.index==null?void 0:this.getOffsetForIndex(this.scrollState.index,this.scrollState.align),t=e?e[0]:this.scrollState.lastTargetOffset,n=t!==this.scrollState.lastTargetOffset;if(!n&&Ie(t,this.getScrollOffset())){if(this.scrollState.stableFrames++,this.scrollState.stableFrames>=1){this.scrollState=null;return}}else this.scrollState.stableFrames=0,n&&(this.scrollState.lastTargetOffset=t,this.scrollState.behavior=`auto`,this._scrollToOffset(t,{adjustments:void 0,behavior:`auto`}));this.scheduleScrollReconcile()}},Je=(e,t,n,r)=>{for(;e<=t;){let i=(e+t)/2|0,a=n(i);if(a<r)e=i+1;else if(a>r)t=i-1;else return i}return e>0?e-1:0};function Ye({measurements:e,outerSize:t,scrollOffset:n,lanes:r}){let i=e.length-1,a=t=>e[t].start;if(e.length<=r)return{startIndex:0,endIndex:i};let o=Je(0,i,a,n),s=o;if(r===1)for(;s<i&&e[s].end<n+t;)s++;else if(r>1){let a=Array(r).fill(0);for(;s<i&&a.some(e=>e<n+t);){let t=e[s];a[t.lane]=t.end,s++}let c=Array(r).fill(n+t);for(;o>=0&&c.some(e=>e>=n);){let t=e[o];c[t.lane]=t.start,o--}o=Math.max(0,o-o%r),s=Math.min(i,s+(r-1-s%r))}return{startIndex:o,endIndex:s}}var Xe=typeof document<`u`?q.useLayoutEffect:q.useEffect;function Ze({useFlushSync:e=!0,...t}){let n=q.useReducer(()=>({}),{})[1],r={...t,onChange:(r,i)=>{var a;e&&i?(0,Fe.flushSync)(n):n(),(a=t.onChange)==null||a.call(t,r,i)}},[i]=q.useState(()=>new qe(r));return i.setOptions(r),Xe(()=>i._didMount(),[]),Xe(()=>i._willUpdate()),i}function Qe(e){return Ze({observeElementRect:Ve,observeElementOffset:We,scrollToFn:Ke,...e})}export{Y as a,xe as i,Pe as n,ye as o,Ne as r,Qe as t};
@@ -1,4 +1,4 @@
1
- import{a as e,t}from"./rolldown-runtime-COnpUsM8.js";import{mr as n,pr as r}from"./vendor-BpBCrKSP.js";import{C as i}from"./vendor-charts-BXsEmmv5.js";var a=t((e=>{var t=r(),a=n(),o=i();function s(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function c(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function l(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function u(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function d(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function f(e){if(l(e)!==e)throw Error(s(188))}function p(e){var t=e.alternate;if(!t){if(t=l(e),t===null)throw Error(s(188));return t===e?e:null}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var a=i.alternate;if(a===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===n)return f(i),e;if(a===r)return f(i),t;a=a.sibling}throw Error(s(188))}if(n.return!==r.return)n=i,r=a;else{for(var o=!1,c=i.child;c;){if(c===n){o=!0,n=i,r=a;break}if(c===r){o=!0,r=i,n=a;break}c=c.sibling}if(!o){for(c=a.child;c;){if(c===n){o=!0,n=a,r=i;break}if(c===r){o=!0,r=a,n=i;break}c=c.sibling}if(!o)throw Error(s(189))}}if(n.alternate!==r)throw Error(s(190))}if(n.tag!==3)throw Error(s(188));return n.stateNode.current===n?e:t}function m(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=m(e),t!==null)return t;e=e.sibling}return null}var h=Object.assign,g=Symbol.for(`react.element`),_=Symbol.for(`react.transitional.element`),v=Symbol.for(`react.portal`),y=Symbol.for(`react.fragment`),b=Symbol.for(`react.strict_mode`),x=Symbol.for(`react.profiler`),ee=Symbol.for(`react.consumer`),te=Symbol.for(`react.context`),ne=Symbol.for(`react.forward_ref`),re=Symbol.for(`react.suspense`),ie=Symbol.for(`react.suspense_list`),ae=Symbol.for(`react.memo`),oe=Symbol.for(`react.lazy`),se=Symbol.for(`react.activity`),ce=Symbol.for(`react.memo_cache_sentinel`),le=Symbol.iterator;function ue(e){return typeof e!=`object`||!e?null:(e=le&&e[le]||e[`@@iterator`],typeof e==`function`?e:null)}var de=Symbol.for(`react.client.reference`);function fe(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===de?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case y:return`Fragment`;case x:return`Profiler`;case b:return`StrictMode`;case re:return`Suspense`;case ie:return`SuspenseList`;case se:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case v:return`Portal`;case te:return e.displayName||`Context`;case ee:return(e._context.displayName||`Context`)+`.Consumer`;case ne:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case ae:return t=e.displayName||null,t===null?fe(e.type)||`Memo`:t;case oe:t=e._payload,e=e._init;try{return fe(e(t))}catch{}}return null}var pe=Array.isArray,S=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,C=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,me={pending:!1,data:null,method:null,action:null},he=[],ge=-1;function _e(e){return{current:e}}function w(e){0>ge||(e.current=he[ge],he[ge]=null,ge--)}function T(e,t){ge++,he[ge]=e.current,e.current=t}var ve=_e(null),ye=_e(null),be=_e(null),xe=_e(null);function Se(e,t){switch(T(be,t),T(ye,e),T(ve,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}w(ve),T(ve,e)}function Ce(){w(ve),w(ye),w(be)}function we(e){e.memoizedState!==null&&T(xe,e);var t=ve.current,n=Hd(t,e.type);t!==n&&(T(ye,e),T(ve,n))}function Te(e){ye.current===e&&(w(ve),w(ye)),xe.current===e&&(w(xe),Qf._currentValue=me)}var Ee,De;function Oe(e){if(Ee===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ee=t&&t[1]||``,De=-1<e.stack.indexOf(`
1
+ import{a as e,t}from"./rolldown-runtime-COnpUsM8.js";import{gr as n,hr as r}from"./vendor-DRGPi8ui.js";import{C as i}from"./vendor-charts-9eVsQvUV.js";var a=t((e=>{var t=r(),a=n(),o=i();function s(e){var t=`https://react.dev/errors/`+e;if(1<arguments.length){t+=`?args[]=`+encodeURIComponent(arguments[1]);for(var n=2;n<arguments.length;n++)t+=`&args[]=`+encodeURIComponent(arguments[n])}return`Minified React error #`+e+`; visit `+t+` for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`}function c(e){return!(!e||e.nodeType!==1&&e.nodeType!==9&&e.nodeType!==11)}function l(e){var t=e,n=e;if(e.alternate)for(;t.return;)t=t.return;else{e=t;do t=e,t.flags&4098&&(n=t.return),e=t.return;while(e)}return t.tag===3?n:null}function u(e){if(e.tag===13){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function d(e){if(e.tag===31){var t=e.memoizedState;if(t===null&&(e=e.alternate,e!==null&&(t=e.memoizedState)),t!==null)return t.dehydrated}return null}function f(e){if(l(e)!==e)throw Error(s(188))}function p(e){var t=e.alternate;if(!t){if(t=l(e),t===null)throw Error(s(188));return t===e?e:null}for(var n=e,r=t;;){var i=n.return;if(i===null)break;var a=i.alternate;if(a===null){if(r=i.return,r!==null){n=r;continue}break}if(i.child===a.child){for(a=i.child;a;){if(a===n)return f(i),e;if(a===r)return f(i),t;a=a.sibling}throw Error(s(188))}if(n.return!==r.return)n=i,r=a;else{for(var o=!1,c=i.child;c;){if(c===n){o=!0,n=i,r=a;break}if(c===r){o=!0,r=i,n=a;break}c=c.sibling}if(!o){for(c=a.child;c;){if(c===n){o=!0,n=a,r=i;break}if(c===r){o=!0,r=a,n=i;break}c=c.sibling}if(!o)throw Error(s(189))}}if(n.alternate!==r)throw Error(s(190))}if(n.tag!==3)throw Error(s(188));return n.stateNode.current===n?e:t}function m(e){var t=e.tag;if(t===5||t===26||t===27||t===6)return e;for(e=e.child;e!==null;){if(t=m(e),t!==null)return t;e=e.sibling}return null}var h=Object.assign,g=Symbol.for(`react.element`),_=Symbol.for(`react.transitional.element`),v=Symbol.for(`react.portal`),y=Symbol.for(`react.fragment`),b=Symbol.for(`react.strict_mode`),x=Symbol.for(`react.profiler`),ee=Symbol.for(`react.consumer`),te=Symbol.for(`react.context`),ne=Symbol.for(`react.forward_ref`),re=Symbol.for(`react.suspense`),ie=Symbol.for(`react.suspense_list`),ae=Symbol.for(`react.memo`),oe=Symbol.for(`react.lazy`),se=Symbol.for(`react.activity`),ce=Symbol.for(`react.memo_cache_sentinel`),le=Symbol.iterator;function ue(e){return typeof e!=`object`||!e?null:(e=le&&e[le]||e[`@@iterator`],typeof e==`function`?e:null)}var de=Symbol.for(`react.client.reference`);function fe(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===de?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case y:return`Fragment`;case x:return`Profiler`;case b:return`StrictMode`;case re:return`Suspense`;case ie:return`SuspenseList`;case se:return`Activity`}if(typeof e==`object`)switch(e.$$typeof){case v:return`Portal`;case te:return e.displayName||`Context`;case ee:return(e._context.displayName||`Context`)+`.Consumer`;case ne:var t=e.render;return e=e.displayName,e||=(e=t.displayName||t.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case ae:return t=e.displayName||null,t===null?fe(e.type)||`Memo`:t;case oe:t=e._payload,e=e._init;try{return fe(e(t))}catch{}}return null}var pe=Array.isArray,S=a.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,C=o.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,me={pending:!1,data:null,method:null,action:null},he=[],ge=-1;function _e(e){return{current:e}}function w(e){0>ge||(e.current=he[ge],he[ge]=null,ge--)}function T(e,t){ge++,he[ge]=e.current,e.current=t}var ve=_e(null),ye=_e(null),be=_e(null),xe=_e(null);function Se(e,t){switch(T(be,t),T(ye,e),T(ve,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}w(ve),T(ve,e)}function Ce(){w(ve),w(ye),w(be)}function we(e){e.memoizedState!==null&&T(xe,e);var t=ve.current,n=Hd(t,e.type);t!==n&&(T(ye,e),T(ve,n))}function Te(e){ye.current===e&&(w(ve),w(ye)),xe.current===e&&(w(xe),Qf._currentValue=me)}var Ee,De;function Oe(e){if(Ee===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);Ee=t&&t[1]||``,De=-1<e.stack.indexOf(`
2
2
  at`)?` (<anonymous>)`:-1<e.stack.indexOf(`@`)?`@unknown:0:0`:``}return`
3
3
  `+Ee+e+De}var ke=!1;function Ae(e,t){if(!e||ke)return``;ke=!0;var n=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var r={DetermineComponentFrameRoot:function(){try{if(t){var n=function(){throw Error()};if(Object.defineProperty(n.prototype,`props`,{set:function(){throw Error()}}),typeof Reflect==`object`&&Reflect.construct){try{Reflect.construct(n,[])}catch(e){var r=e}Reflect.construct(e,[],n)}else{try{n.call()}catch(e){r=e}e.call(n.prototype)}}else{try{throw Error()}catch(e){r=e}(n=e())&&typeof n.catch==`function`&&n.catch(function(){})}}catch(e){if(e&&r&&typeof e.stack==`string`)return[e.stack,r.stack]}return[null,null]}};r.DetermineComponentFrameRoot.displayName=`DetermineComponentFrameRoot`;var i=Object.getOwnPropertyDescriptor(r.DetermineComponentFrameRoot,`name`);i&&i.configurable&&Object.defineProperty(r.DetermineComponentFrameRoot,`name`,{value:`DetermineComponentFrameRoot`});var a=r.DetermineComponentFrameRoot(),o=a[0],s=a[1];if(o&&s){var c=o.split(`
4
4
  `),l=s.split(`
@@ -4,19 +4,19 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Claude Forge - 管理后台</title>
7
- <script type="module" crossorigin src="/assets/index-CN_edVMt.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-DdmJVOxm.js"></script>
8
8
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-COnpUsM8.js">
9
- <link rel="modulepreload" crossorigin href="/assets/vendor-BpBCrKSP.js">
10
- <link rel="modulepreload" crossorigin href="/assets/vendor-charts-BXsEmmv5.js">
11
- <link rel="modulepreload" crossorigin href="/assets/vendor-react-CXfI0Tes.js">
12
- <link rel="modulepreload" crossorigin href="/assets/vendor-flow-D-_WxBha.js">
13
- <link rel="modulepreload" crossorigin href="/assets/vendor-query-BF-uT_c5.js">
14
- <link rel="modulepreload" crossorigin href="/assets/vendor-motion-BsfSkSjj.js">
15
- <link rel="modulepreload" crossorigin href="/assets/client-B_-7qCOP.js">
16
- <link rel="modulepreload" crossorigin href="/assets/ui-B2gvOcFY.js">
17
- <link rel="modulepreload" crossorigin href="/assets/useDebounce-Bo1fLB5L.js">
9
+ <link rel="modulepreload" crossorigin href="/assets/vendor-DRGPi8ui.js">
10
+ <link rel="modulepreload" crossorigin href="/assets/vendor-charts-9eVsQvUV.js">
11
+ <link rel="modulepreload" crossorigin href="/assets/vendor-react-DJI9oneq.js">
12
+ <link rel="modulepreload" crossorigin href="/assets/vendor-flow-srkes8If.js">
13
+ <link rel="modulepreload" crossorigin href="/assets/vendor-query-DqPOMnuX.js">
14
+ <link rel="modulepreload" crossorigin href="/assets/vendor-motion-CQmdgnI8.js">
15
+ <link rel="modulepreload" crossorigin href="/assets/client-BhcjNvkG.js">
16
+ <link rel="modulepreload" crossorigin href="/assets/ui-CDL3BZ13.js">
17
+ <link rel="modulepreload" crossorigin href="/assets/useDebounce-DNfPs3Tv.js">
18
18
  <link rel="stylesheet" crossorigin href="/assets/vendor-flow-CHpVij2M.css">
19
- <link rel="stylesheet" crossorigin href="/assets/index-DLMLziRH.css">
19
+ <link rel="stylesheet" crossorigin href="/assets/index-CqwJts5v.css">
20
20
  </head>
21
21
  <body>
22
22
  <div id="root"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@winspan/claude-forge",
3
- "version": "3.6.39",
3
+ "version": "3.6.43",
4
4
  "description": "SDLC intelligent orchestration engine for Claude Code",
5
5
  "main": "dist/cli/index.js",
6
6
  "type": "module",
@@ -96,6 +96,7 @@
96
96
  "commander": "^14.0.3",
97
97
  "cors": "^2.8.6",
98
98
  "express": "^5.2.1",
99
+ "glob": "^13.0.6",
99
100
  "js-yaml": "^4.1.1",
100
101
  "uuid": "^14.0.0",
101
102
  "zod": "^4.3.6"
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{Ft as t,Ht as n,In as r,Ln as i,Tn as a,Un as ee,Vt as o,dr as s,fn as te,mr as c,nr as ne,o as l,s as u}from"./vendor-BpBCrKSP.js";import{S as d,_ as f,c as p,d as m,f as h,g,h as _,l as v,m as y,p as b,s as x,u as S,v as C,x as w,y as T}from"./vendor-charts-BXsEmmv5.js";import{r as E}from"./vendor-query-BF-uT_c5.js";import{c as D}from"./vendor-flow-D-_WxBha.js";import{F as re,K as ie,gt as ae,ht as oe,lt as se,q as ce,vt as le}from"./client-B_-7qCOP.js";import{a as O,l as k,n as ue,r as A}from"./ui-B2gvOcFY.js";import{t as de}from"./ErrorState-HW0OjEYK.js";import{t as j}from"./exportCsv-CSExJI8h.js";var M=e(c(),1),N=D();function P({children:e,fallback:t,rootMargin:n=`200px`}){let[r,i]=(0,M.useState)(!1),a=(0,M.useRef)(null);return(0,M.useEffect)(()=>{let e=new IntersectionObserver(([t])=>{t.isIntersecting&&(i(!0),e.disconnect())},{rootMargin:n,threshold:.01});return a.current&&e.observe(a.current),()=>e.disconnect()},[n]),(0,N.jsx)(`div`,{ref:a,style:{minHeight:r?`auto`:`400px`},children:r?e:t||(0,N.jsx)(`div`,{className:`flex items-center justify-center h-96 text-gray-400`,children:`加载中...`})})}var F=[`#667eea`,`#10b981`,`#f59e0b`,`#ef4444`,`#8b5cf6`,`#06b6d4`],fe={"7d":7,"30d":30,"90d":90,custom:0};function I(){let[e,c]=(0,M.useState)(`30d`),[D,I]=(0,M.useState)(``),[L,pe]=(0,M.useState)(``),[R,z]=(0,M.useState)(`sessions`),B=fe[e],V=e===`custom`?D?`${D}T00:00:00`:void 0:u(l(new Date,B),`yyyy-MM-dd'T'HH:mm:ss`),H=e===`custom`&&L?`${L}T23:59:59`:void 0,{data:U,isLoading:me,isError:he,refetch:ge}=E({queryKey:[`sessions`,{limit:100,startTime:V,endTime:H}],queryFn:()=>le({limit:100,start_time:V,end_time:H}).then(e=>e.data)}),{data:W,isLoading:_e,isError:ve,refetch:ye}=E({queryKey:[`events`,{limit:100,startTime:V,endTime:H}],queryFn:()=>ce({limit:100,start_time:V,end_time:H}).then(e=>e.data)}),{data:be,isLoading:xe}=E({queryKey:[`event-stats`],queryFn:()=>ie().then(e=>e.data)}),{data:G}=E({queryKey:[`api-usage-stats`,e],queryFn:()=>re(e===`custom`?90:B).then(e=>e.data),staleTime:6e4}),{data:K}=E({queryKey:[`roi-stats-analytics`],queryFn:()=>ae().then(e=>e.data),staleTime:6e4}),{data:q}=E({queryKey:[`pipelines-analytics`,{limit:100}],queryFn:()=>se({limit:100}).then(e=>e.data),enabled:R===`pipelines`}),{data:J}=E({queryKey:[`quality-history-analytics`,{limit:100}],queryFn:()=>oe({limit:100}).then(e=>e.data),enabled:R===`pipelines`}),Se=me||_e||xe,Ce=he||ve,we=()=>{j(`analytics-sessions-${u(new Date,`yyyyMMdd`)}.csv`,[`日期`,`会话数`],Y.map(e=>[e.date,e.count])),j(`analytics-tools-${u(new Date,`yyyyMMdd`)}.csv`,[`工具`,`使用次数`],Z.map(e=>[e.name,e.value])),j(`analytics-projects-${u(new Date,`yyyyMMdd`)}.csv`,[`项目`,`事件数`],X.map(e=>[e.name,e.value])),j(`analytics-durations-${u(new Date,`yyyyMMdd`)}.csv`,[`时长区间`,`会话数`],Q.map(e=>[e.range,e.count]))},Y=(0,M.useMemo)(()=>{if(!U?.items)return[];if(e===`custom`){if(!D||!L)return[];let e=new Date(D),t=new Date(L),n=Math.ceil((t.getTime()-e.getTime())/(1e3*60*60*24))+1;return Array.from({length:n},(t,n)=>{let r=u(new Date(e.getTime()+n*24*60*60*1e3),`MM-dd`);return{date:r,count:U.items.filter(e=>u(k(e.start_time),`MM-dd`)===r).length}})}return Array.from({length:B},(e,t)=>{let n=u(l(new Date,B-1-t),`MM-dd`);return{date:n,count:U.items.filter(e=>u(k(e.start_time),`MM-dd`)===n).length}})},[U?.items,B,e,D,L]),Te=(0,M.useMemo)(()=>W?.items?Array.from({length:24},(e,t)=>{let n=W.items.filter(e=>k(e.timestamp).getHours()===t).length;return{hour:`${t}:00`,count:n}}):[],[W?.items]),X=(0,M.useMemo)(()=>{if(!W?.items)return[];let e=W.items.reduce((e,t)=>{let n=t.project_path.split(`/`).pop()||`Unknown`;return e[n]=(e[n]||0)+1,e},{});return Object.entries(e).sort((e,t)=>t[1]-e[1]).slice(0,10).map(([e,t])=>({name:e,value:t}))},[W?.items]),Ee={Bash:`Bash 命令`,Read:`读取文件`,Edit:`编辑文件`,Write:`写入文件`,Grep:`搜索内容`,Glob:`查找文件`,Agent:`子代理`,WebFetch:`网页获取`,WebSearch:`网页搜索`,TodoWrite:`任务管理`,NotebookEdit:`笔记编辑`,stop:`停止`,notification:`通知`,UserPrompt:`用户输入`,TaskCreate:`创建任务`,TaskUpdate:`更新任务`,TaskList:`任务列表`,TaskGet:`获取任务`,TaskStop:`停止任务`,TaskOutput:`任务输出`},Z=(0,M.useMemo)(()=>{if(!W?.items)return[];let e=W.items.reduce((e,t)=>{let n=t.tool_name||`N/A`;return e[n]=(e[n]||0)+1,e},{});return Object.entries(e).sort((e,t)=>t[1]-e[1]).slice(0,15).map(([e,t])=>({name:Ee[e]||e,value:t}))},[W?.items]),{sessionDurations:De,durationBuckets:Q}=(0,M.useMemo)(()=>{if(!U?.items)return{sessionDurations:[],durationBuckets:[]};let e=U.items.filter(e=>e.end_time).map(e=>{let t=(k(e.end_time).getTime()-k(e.start_time).getTime())/1e3/60;return Math.round(t)});return{sessionDurations:e,durationBuckets:[{range:`0-5分钟`,count:e.filter(e=>e<=5).length},{range:`5-15分钟`,count:e.filter(e=>e>5&&e<=15).length},{range:`15-30分钟`,count:e.filter(e=>e>15&&e<=30).length},{range:`30-60分钟`,count:e.filter(e=>e>30&&e<=60).length},{range:`60+分钟`,count:e.filter(e=>e>60).length}]}},[U?.items]),{avgSessionEvents:Oe,avgSessionDuration:ke}=(0,M.useMemo)(()=>{let e=De.filter(e=>e>0&&e<=480),t=e.length>0?e.reduce((e,t)=>e+t,0)/e.length:0,n=U?.items.filter(e=>e.event_count>0&&e.event_count<=500)??[];return{avgSessionEvents:n.length>0?n.reduce((e,t)=>e+t.event_count,0)/n.length:0,avgSessionDuration:t}},[U?.items,De]),$=(0,M.useMemo)(()=>{if(!q?.items)return null;let e=q.items,t=e.filter(e=>e.status===`completed`).length;return{completed:t,failed:e.filter(e=>e.status===`failed`).length,completionRate:e.length>0?(t/e.length*100).toFixed(1):`0`,complexityDist:e.reduce((e,t)=>(e[t.complexity]=(e[t.complexity]||0)+1,e),{}),avgNodes:e.length>0?(e.reduce((e,t)=>e+(t.stats?.totalNodes||0),0)/e.length).toFixed(1):`0`,total:e.length}},[q?.items]),Ae=(0,M.useMemo)(()=>J?.items?Array.from({length:B},(e,t)=>{let n=u(l(new Date,B-1-t),`MM-dd`),r=J.items.filter(e=>u(k(e.created_at),`MM-dd`)===n);return{date:n,total:r.length,unresolved:r.filter(e=>!e.resolved).length}}):[],[J?.items,B]);return Se?(0,N.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,N.jsx)(`div`,{className:`animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600`})}):Ce?(0,N.jsx)(de,{message:`分析数据加载失败`,onRetry:()=>{ge(),ye()}}):(0,N.jsxs)(`div`,{className:`space-y-6`,children:[(0,N.jsx)(A,{children:(0,N.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,N.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,N.jsx)(ne,{className:`h-4 w-4 text-gray-400`}),(0,N.jsx)(`span`,{className:`text-sm text-gray-600`,children:`时间范围:`}),(0,N.jsx)(`div`,{className:`flex gap-1 border border-gray-200 rounded-lg overflow-hidden`,children:[`7d`,`30d`,`90d`,`custom`].map(t=>(0,N.jsx)(`button`,{onClick:()=>c(t),className:O(`px-3 py-1.5 text-sm transition-colors`,e===t?`bg-blue-50 text-blue-700 font-medium`:`text-gray-600 hover:bg-gray-50`),children:t===`7d`?`7 天`:t===`30d`?`30 天`:t===`90d`?`90 天`:`自定义`},t))})]}),(0,N.jsx)(ue,{variant:`outline`,size:`sm`,icon:r,onClick:we,children:`导出数据`})]}),e===`custom`&&(0,N.jsxs)(`div`,{className:`flex items-center gap-3 pl-6`,children:[(0,N.jsx)(`label`,{className:`text-sm text-gray-600`,children:`开始日期:`}),(0,N.jsx)(`input`,{type:`date`,value:D,onChange:e=>I(e.target.value),className:`px-3 py-1.5 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500`}),(0,N.jsx)(`label`,{className:`text-sm text-gray-600`,children:`结束日期:`}),(0,N.jsx)(`input`,{type:`date`,value:L,onChange:e=>pe(e.target.value),className:`px-3 py-1.5 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500`})]})]})}),(0,N.jsxs)(`div`,{className:`flex gap-1 bg-gray-100 p-1 rounded-lg w-fit`,children:[(0,N.jsxs)(`button`,{onClick:()=>z(`sessions`),className:O(`flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors`,R===`sessions`?`bg-white text-gray-900 shadow-sm`:`text-gray-600 hover:text-gray-900`),children:[(0,N.jsx)(s,{className:`h-4 w-4`}),`会话分析`]}),(0,N.jsxs)(`button`,{onClick:()=>z(`pipelines`),className:O(`flex items-center gap-2 px-4 py-2 rounded-md text-sm font-medium transition-colors`,R===`pipelines`?`bg-white text-gray-900 shadow-sm`:`text-gray-600 hover:text-gray-900`),children:[(0,N.jsx)(a,{className:`h-4 w-4`}),`Pipeline 分析`]})]}),R===`sessions`&&(0,N.jsxs)(`div`,{className:`space-y-6`,children:[K&&(0,N.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 gap-3`,children:[{label:`本周会话`,curr:K.week.sessions,pct:K.weekOverWeek.sessions},{label:`本周写入操作`,curr:K.week.writeOps,pct:K.weekOverWeek.writeOps},{label:`本周节省时间`,curr:`${K.week.timeSavedHours}h`,pct:K.weekOverWeek.timeSaved},{label:`本周质量拦截`,curr:K.week.qualityBlocked,pct:K.weekOverWeek.qualityBlocked},{label:`本月会话`,curr:K.month.sessions,pct:K.monthOverMonth.sessions},{label:`本月质量拦截`,curr:K.month.qualityBlocked,pct:K.monthOverMonth.qualityBlocked}].map(e=>(0,N.jsxs)(A,{className:`!p-3`,children:[(0,N.jsx)(`div`,{className:`text-xs text-gray-500 mb-1`,children:e.label}),(0,N.jsxs)(`div`,{className:`flex items-end justify-between`,children:[(0,N.jsx)(`span`,{className:`text-xl font-bold text-gray-900`,children:e.curr}),e.pct!==null&&e.pct!==void 0?(0,N.jsxs)(`span`,{className:O(`flex items-center gap-0.5 text-xs font-medium`,e.pct>0?`text-green-600`:e.pct<0?`text-red-500`:`text-gray-400`),children:[e.pct>0?(0,N.jsx)(o,{className:`h-3 w-3`}):e.pct<0?(0,N.jsx)(n,{className:`h-3 w-3`}):(0,N.jsx)(te,{className:`h-3 w-3`}),e.pct>0?`+`:``,e.pct,`%`]}):(0,N.jsx)(`span`,{className:`text-xs text-gray-300`,children:`—`})]}),(0,N.jsx)(`div`,{className:`text-xs text-gray-400 mt-0.5`,children:`较上期`})]},e.label))}),(0,N.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4`,children:[(0,N.jsxs)(A,{className:`text-center !p-4`,children:[(0,N.jsx)(s,{className:`h-7 w-7 text-indigo-500 mx-auto mb-2`}),(0,N.jsx)(`div`,{className:`text-2xl font-bold text-gray-900`,children:Oe.toFixed(1)}),(0,N.jsx)(`div`,{className:`text-sm text-gray-500`,children:`平均会话事件数`})]}),(0,N.jsxs)(A,{className:`text-center !p-4`,children:[(0,N.jsx)(ee,{className:`h-7 w-7 text-green-500 mx-auto mb-2`}),(0,N.jsx)(`div`,{className:`text-2xl font-bold text-gray-900`,children:ke.toFixed(1)}),(0,N.jsx)(`div`,{className:`text-sm text-gray-500`,children:`平均会话时长(分钟)`})]}),(0,N.jsxs)(A,{className:`text-center !p-4`,children:[(0,N.jsx)(t,{className:`h-7 w-7 text-amber-500 mx-auto mb-2`}),(0,N.jsx)(`div`,{className:`text-2xl font-bold text-gray-900`,children:W?.total||0}),(0,N.jsx)(`div`,{className:`text-sm text-gray-500`,children:`总事件数`})]}),(0,N.jsxs)(A,{className:`text-center !p-4`,children:[(0,N.jsx)(o,{className:`h-7 w-7 text-purple-500 mx-auto mb-2`}),(0,N.jsx)(`div`,{className:`text-2xl font-bold text-gray-900`,children:U?.total||0}),(0,N.jsx)(`div`,{className:`text-sm text-gray-500`,children:`总会话数`})]})]}),(0,N.jsxs)(`div`,{className:`grid grid-cols-1 xl:grid-cols-2 gap-6`,children:[(0,N.jsx)(A,{title:`最近 ${B} 天会话趋势`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(x,{data:Y,children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{dataKey:`date`}),(0,N.jsx)(m,{}),(0,N.jsx)(T,{}),(0,N.jsx)(y,{type:`monotone`,dataKey:`count`,stroke:`#667eea`,fill:`#667eea`,fillOpacity:.3})]})})})}),(0,N.jsx)(A,{title:`24 小时事件分布`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(S,{data:Te,children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{dataKey:`hour`}),(0,N.jsx)(m,{}),(0,N.jsx)(T,{}),(0,N.jsx)(_,{type:`monotone`,dataKey:`count`,stroke:`#10b981`,strokeWidth:2})]})})})}),(0,N.jsx)(A,{title:`项目活跃度 Top 10`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(v,{data:X,layout:`vertical`,children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{type:`number`}),(0,N.jsx)(m,{dataKey:`name`,type:`category`,width:100}),(0,N.jsx)(T,{}),(0,N.jsx)(b,{dataKey:`value`,fill:`#667eea`})]})})})}),(0,N.jsx)(A,{title:`工具使用排行 Top 15`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(v,{data:Z,children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{dataKey:`name`,angle:-45,textAnchor:`end`,height:80}),(0,N.jsx)(m,{}),(0,N.jsx)(T,{}),(0,N.jsx)(b,{dataKey:`value`,fill:`#10b981`})]})})})}),(0,N.jsx)(A,{title:`会话时长分布`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(p,{children:[(0,N.jsx)(f,{data:Q,cx:`50%`,cy:`50%`,labelLine:!1,label:({range:e,count:t})=>`${e}: ${t}`,outerRadius:80,fill:`#8884d8`,dataKey:`count`,children:Q.map((e,t)=>(0,N.jsx)(C,{fill:F[t%F.length]},`cell-${t}`))}),(0,N.jsx)(T,{})]})})})}),(0,N.jsx)(A,{title:`事件类型趋势`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(x,{data:be?.stats.slice(0,30)||[],children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{dataKey:`date`}),(0,N.jsx)(m,{}),(0,N.jsx)(T,{}),(0,N.jsx)(w,{}),(0,N.jsx)(y,{type:`monotone`,dataKey:`count`,stackId:`1`,stroke:`#667eea`,fill:`#667eea`})]})})})})]}),G&&(0,N.jsxs)(N.Fragment,{children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-2 mt-2`,children:[(0,N.jsx)(i,{className:`h-5 w-5 text-gray-500`}),(0,N.jsx)(`h2`,{className:`text-base font-semibold text-gray-800`,children:`Token 与费用统计`})]}),(0,N.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4`,children:[(0,N.jsxs)(A,{className:`text-center !p-4`,children:[(0,N.jsxs)(`div`,{className:`text-2xl font-bold text-gray-900`,children:[`$`,G.summary.totalCost.toFixed(4)]}),(0,N.jsx)(`div`,{className:`text-sm text-gray-500`,children:`总费用(USD)`})]}),(0,N.jsxs)(A,{className:`text-center !p-4`,children:[(0,N.jsxs)(`div`,{className:`text-2xl font-bold text-gray-900`,children:[(G.summary.totalTokens/1e3).toFixed(1),`K`]}),(0,N.jsx)(`div`,{className:`text-sm text-gray-500`,children:`总 Token 数`})]}),(0,N.jsxs)(A,{className:`text-center !p-4`,children:[(0,N.jsxs)(`div`,{className:`text-2xl font-bold text-gray-900`,children:[(G.summary.totalTokensIn/1e3).toFixed(1),`K`]}),(0,N.jsx)(`div`,{className:`text-sm text-gray-500`,children:`输入 Token`})]}),(0,N.jsxs)(A,{className:`text-center !p-4`,children:[(0,N.jsxs)(`div`,{className:`text-2xl font-bold text-gray-900`,children:[(G.summary.totalTokensOut/1e3).toFixed(1),`K`]}),(0,N.jsx)(`div`,{className:`text-sm text-gray-500`,children:`输出 Token`})]})]}),(0,N.jsxs)(`div`,{className:`grid grid-cols-1 xl:grid-cols-2 gap-6`,children:[(0,N.jsx)(A,{title:`每日 Token 趋势`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(x,{data:G.dailyTrend,children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{dataKey:`date`}),(0,N.jsx)(m,{}),(0,N.jsx)(T,{formatter:e=>`${(e/1e3).toFixed(1)}K`}),(0,N.jsx)(w,{}),(0,N.jsx)(y,{type:`monotone`,dataKey:`tokens_in`,name:`输入`,stroke:`#667eea`,fill:`#667eea`,fillOpacity:.3,stackId:`1`}),(0,N.jsx)(y,{type:`monotone`,dataKey:`tokens_out`,name:`输出`,stroke:`#10b981`,fill:`#10b981`,fillOpacity:.3,stackId:`1`})]})})})}),(0,N.jsx)(A,{title:`每日费用趋势(USD)`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(v,{data:G.dailyTrend,children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{dataKey:`date`}),(0,N.jsx)(m,{tickFormatter:e=>`$${e.toFixed(3)}`}),(0,N.jsx)(T,{formatter:e=>`$${e.toFixed(4)}`}),(0,N.jsx)(b,{dataKey:`cost_usd`,name:`费用`,fill:`#f59e0b`})]})})})}),G.byModel.length>0&&(0,N.jsx)(A,{title:`按模型费用分布`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(p,{children:[(0,N.jsx)(f,{data:G.byModel,dataKey:`cost`,nameKey:`model`,cx:`50%`,cy:`50%`,outerRadius:80,label:({model:e,cost:t})=>`${e}: $${t.toFixed(4)}`,children:G.byModel.map((e,t)=>(0,N.jsx)(C,{fill:F[t%F.length]},t))}),(0,N.jsx)(T,{formatter:e=>`$${e.toFixed(4)}`})]})})})})]})]})]}),R===`pipelines`&&$&&(0,N.jsxs)(`div`,{className:`space-y-6`,children:[(0,N.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-4 gap-4`,children:[(0,N.jsxs)(A,{className:`text-center`,children:[(0,N.jsx)(`div`,{className:`text-3xl font-bold text-blue-600`,children:$.total}),(0,N.jsx)(`div`,{className:`text-sm text-gray-600 mt-1`,children:`总 Pipeline`})]}),(0,N.jsxs)(A,{className:`text-center`,children:[(0,N.jsxs)(`div`,{className:`text-3xl font-bold text-green-600`,children:[$.completionRate,`%`]}),(0,N.jsx)(`div`,{className:`text-sm text-gray-600 mt-1`,children:`完成率`})]}),(0,N.jsxs)(A,{className:`text-center`,children:[(0,N.jsx)(`div`,{className:`text-3xl font-bold text-purple-600`,children:$.avgNodes}),(0,N.jsx)(`div`,{className:`text-sm text-gray-600 mt-1`,children:`平均节点数`})]}),(0,N.jsxs)(A,{className:`text-center`,children:[(0,N.jsx)(`div`,{className:`text-3xl font-bold text-red-600`,children:$.failed}),(0,N.jsx)(`div`,{className:`text-sm text-gray-600 mt-1`,children:`失败数`})]})]}),(0,N.jsx)(A,{title:`复杂度分布`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(v,{data:Object.entries($.complexityDist).map(([e,t])=>({name:e===`simple`?`简单`:e===`moderate`?`中等`:`复杂`,value:t})),children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{dataKey:`name`}),(0,N.jsx)(m,{}),(0,N.jsx)(T,{}),(0,N.jsx)(b,{dataKey:`value`,name:`数量`,fill:`#667eea`})]})})})}),Ae.length>0&&(0,N.jsx)(A,{title:`质量问题趋势`,children:(0,N.jsx)(P,{children:(0,N.jsx)(d,{width:`100%`,height:250,children:(0,N.jsxs)(S,{data:Ae,children:[(0,N.jsx)(g,{strokeDasharray:`3 3`}),(0,N.jsx)(h,{dataKey:`date`}),(0,N.jsx)(m,{}),(0,N.jsx)(T,{}),(0,N.jsx)(w,{}),(0,N.jsx)(_,{type:`monotone`,dataKey:`total`,name:`总问题`,stroke:`#667eea`,strokeWidth:2}),(0,N.jsx)(_,{type:`monotone`,dataKey:`unresolved`,name:`未解决`,stroke:`#ef4444`,strokeWidth:2})]})})})})]})]})}export{I as default};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{$n as t,Bt as n,Ft as r,It as i,Nn as a,Qt as o,Tn as s,Un as c,Ut as l,cr as ee,dr as te,in as ne,ln as u,mr as d,on as f,rn as p,rr as m,s as h,zn as g}from"./vendor-BpBCrKSP.js";import{S as re,d as _,f as ie,g as ae,m as oe,s as se,y as ce}from"./vendor-charts-BXsEmmv5.js";import{c as le}from"./vendor-react-CXfI0Tes.js";import{a as ue,n as v,r as y}from"./vendor-query-BF-uT_c5.js";import{c as b}from"./vendor-flow-D-_WxBha.js";import{Ft as de,G as fe,Nt as pe,P as me,at as he,et as x,gt as S,h as C,m as w,q as T,tt as E}from"./client-B_-7qCOP.js";import{a as D,i as O,l as k,n as A,r as j,s as M,t as N}from"./ui-B2gvOcFY.js";import{t as P}from"./vendor-motion-BsfSkSjj.js";import{t as F}from"./ConfirmDialog-CH1HyRaY.js";import{t as I}from"./useSmartPolling-DYAVOihL.js";var L=e(d(),1),R=b(),ge={PreToolUse:`#3b82f6`,PostToolUse:`#10b981`,UserPromptSubmit:`#f59e0b`,Stop:`#ef4444`,Notification:`#8b5cf6`};function z(){let e=le(),d=ue(),[b,z]=(0,L.useState)(!1),B=(0,L.useRef)(null),[V,H]=(0,L.useState)({open:!1,title:``,description:``,onConfirm:()=>{}}),{data:U}=y({queryKey:[`pipelines-active`],queryFn:()=>me().then(e=>e.data)}),W=(U?.total||0)>0,G=I(W),{data:K}=y({queryKey:[`daemon-status`],queryFn:()=>fe().then(e=>e.data),refetchInterval:G}),{data:q}=y({queryKey:[`overview`],queryFn:()=>he().then(e=>e.data),refetchInterval:G}),{data:J}=y({queryKey:[`roi-stats`],queryFn:()=>S().then(e=>e.data),refetchInterval:6e4}),{data:Y,refetch:_e}=y({queryKey:[`events-live`],queryFn:()=>T({limit:100}).then(e=>e.data),refetchInterval:b?!1:G}),{data:X}=y({queryKey:[`memory-process-dash`],queryFn:()=>E().then(e=>e.data),refetchInterval:G}),{data:Z}=y({queryKey:[`memory-caches-dash`],queryFn:()=>x().then(e=>e.data),refetchInterval:G}),Q=v({mutationFn:e=>C(e),onSuccess:()=>d.invalidateQueries({queryKey:[`pipelines-active`]})}),ve=v({mutationFn:()=>w(),onSuccess:()=>d.invalidateQueries({queryKey:[`pipelines-active`]})}),ye=v({mutationFn:()=>pe(),onSuccess:()=>d.invalidateQueries({queryKey:[`overview`]})}),be=v({mutationFn:()=>de()});(0,L.useEffect)(()=>{!b&&B.current&&B.current.scrollIntoView({behavior:`smooth`})},[Y,b]);let $=q?.recommendations?.find(e=>e.action===`/quality`);return(0,R.jsxs)(`div`,{className:`space-y-6`,children:[(0,R.jsx)(j,{className:`!p-3`,children:(0,R.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-2`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-4 text-sm flex-wrap`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(`div`,{className:D(`w-2 h-2 rounded-full`,K?.running?`bg-green-500 animate-pulse`:`bg-red-500`)}),(0,R.jsx)(`span`,{className:`font-medium`,children:K?.running?`Daemon PID:${K.pid}`:`Daemon 离线`})]}),K?.uptime&&(0,R.jsxs)(`span`,{className:`text-gray-400`,children:[`运行 `,K.uptime.formatted]}),K?.memory&&(0,R.jsxs)(`span`,{className:`text-gray-400`,children:[`内存 `,K.memory.rss,`MB`]}),W&&(0,R.jsx)(N,{variant:`info`,children:`Pipeline 运行中`}),$&&(0,R.jsx)(N,{variant:`warning`,children:$.title})]}),(0,R.jsx)(A,{variant:`ghost`,size:`sm`,icon:ne,onClick:()=>{H({open:!0,title:`重启 Daemon`,description:`确认重启 daemon?这将中断当前所有会话。`,onConfirm:()=>{be.mutate(),H(e=>({...e,open:!1}))}})},children:`重启`})]})}),X&&(0,R.jsx)(j,{className:`!p-3`,children:(0,R.jsxs)(`div`,{className:`flex items-center justify-between flex-wrap gap-3`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,R.jsx)(g,{className:`h-4 w-4 text-purple-500`}),(0,R.jsx)(`span`,{className:`text-sm font-medium text-gray-700`,children:`内存`})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-4 text-sm flex-wrap`,children:[(0,R.jsxs)(`span`,{className:`text-gray-500`,children:[`RSS `,(0,R.jsxs)(`span`,{className:`font-mono text-gray-800`,children:[X.rssMB,` MB`]})]}),(0,R.jsxs)(`span`,{className:`text-gray-500`,children:[`堆 `,(0,R.jsxs)(`span`,{className:`font-mono text-gray-800`,children:[X.heapUsedMB,`/`,X.heapTotalMB,` MB`]})]}),Z&&(0,R.jsxs)(`span`,{className:`text-gray-500`,children:[`缓存 `,(0,R.jsxs)(`span`,{className:`font-mono text-gray-800`,children:[Z.caches.reduce((e,t)=>e+t.size,0),`/`,Z.caches.reduce((e,t)=>e+t.maxSize,0)]}),` 条`]}),(0,R.jsx)(`button`,{onClick:()=>e(`/config?section=memory_mgmt`),className:`text-xs text-blue-600 hover:underline`,children:`管理`})]})]})}),W&&(0,R.jsxs)(`div`,{children:[(0,R.jsx)(`h2`,{className:`text-sm font-semibold text-gray-500 uppercase tracking-wider mb-3`,children:`当前运行中`}),(0,R.jsx)(`div`,{className:`space-y-3`,children:U?.items.map((t,n)=>(0,R.jsx)(P.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},children:(0,R.jsx)(j,{className:`border-l-4 border-l-blue-500 !p-4`,children:(0,R.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,R.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-3 mb-2`,children:[(0,R.jsx)(s,{className:`h-5 w-5 text-blue-500`}),t.type===`dynamic`&&(0,R.jsx)(N,{variant:`primary`,size:`sm`,children:`动态编排`}),(0,R.jsx)(N,{variant:`info`,children:t.phaseLabel}),(0,R.jsx)(`span`,{className:`text-sm text-gray-500`,children:t.projectPath?t.projectPath.split(`/`).pop():``})]}),(0,R.jsx)(`p`,{className:`text-sm text-gray-700 line-clamp-2`,children:t.requirement?.slice(0,150)}),(0,R.jsxs)(`p`,{className:`text-xs text-gray-400 mt-2`,children:[`创建于 `,t.updatedAt?h(k(t.updatedAt),`HH:mm:ss`):``]})]}),(0,R.jsxs)(`div`,{className:`flex gap-2 ml-4`,children:[(0,R.jsx)(A,{variant:`secondary`,size:`sm`,icon:a,onClick:()=>e(`/pipelines/${t.id}`),children:`查看`}),(0,R.jsx)(A,{variant:`danger`,size:`sm`,icon:i,onClick:()=>{H({open:!0,title:`关闭 Pipeline`,description:`确认关闭此 Pipeline?`,onConfirm:()=>{Q.mutate(t.id),H(e=>({...e,open:!1}))}})},children:`关闭`})]})]})})},t.id))})]}),q?.recommendations&&q.recommendations.length>0&&(0,R.jsx)(`div`,{className:`space-y-2`,children:q.recommendations.map((r,i)=>(0,R.jsxs)(P.div,{initial:{opacity:0,x:-10},animate:{opacity:1,x:0},className:D(`flex items-center justify-between p-3 rounded-lg border cursor-pointer transition-all hover:shadow-sm`,r.type===`warning`?`bg-amber-50 border-amber-200`:`bg-blue-50 border-blue-200`),children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-3 flex-1`,onClick:()=>e(r.action),children:[(0,R.jsx)(n,{className:D(`h-4 w-4`,r.type===`warning`?`text-amber-500`:`text-blue-500`)}),(0,R.jsx)(`span`,{className:`text-sm font-medium`,children:r.title})]}),(0,R.jsxs)(`div`,{className:`flex items-center gap-1`,children:[r.action===`/quality`&&(0,R.jsx)(A,{variant:`ghost`,size:`sm`,icon:t,onClick:e=>{e.stopPropagation(),ye.mutate()},children:`修复`}),r.action===`/pipelines`&&(0,R.jsx)(A,{variant:`ghost`,size:`sm`,icon:l,onClick:e=>{e.stopPropagation(),ve.mutate()},children:`清理`}),(0,R.jsx)(ee,{className:`h-4 w-4 text-gray-300`})]})]},i))}),(0,R.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-4`,children:[(0,R.jsx)(`div`,{className:`cursor-pointer`,onClick:()=>e(`/sessions`),children:(0,R.jsx)(O,{title:`本周节省`,value:`${J?.week.timeSavedHours||0}h`,icon:c,color:`blue`})}),(0,R.jsx)(`div`,{className:`cursor-pointer`,onClick:()=>e(`/analytics`),children:(0,R.jsx)(O,{title:`Token 用量`,value:M(J?.week.tokensTotal||0),icon:r,color:`green`})}),(0,R.jsx)(`div`,{className:`cursor-pointer`,onClick:()=>e(`/quality`),children:(0,R.jsx)(O,{title:`质量拦截`,value:J?.week.qualityBlocked||0,icon:o,color:`purple`})}),(0,R.jsx)(`div`,{className:`cursor-pointer`,onClick:()=>e(`/knowledge`),children:(0,R.jsx)(O,{title:`知识沉淀`,value:J?.totals.knowledgeNodes||0,icon:m,color:`orange`})})]}),(0,R.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-6`,children:[(0,R.jsx)(j,{title:`7 天活动趋势`,children:(0,R.jsx)(re,{width:`100%`,height:180,children:(0,R.jsxs)(se,{data:J?.dailyTrend||[],children:[(0,R.jsx)(`defs`,{children:(0,R.jsxs)(`linearGradient`,{id:`gradE`,x1:`0`,y1:`0`,x2:`0`,y2:`1`,children:[(0,R.jsx)(`stop`,{offset:`5%`,stopColor:`#3b82f6`,stopOpacity:.3}),(0,R.jsx)(`stop`,{offset:`95%`,stopColor:`#3b82f6`,stopOpacity:0})]})}),(0,R.jsx)(ae,{strokeDasharray:`3 3`,stroke:`#e5e7eb`}),(0,R.jsx)(ie,{dataKey:`date`,stroke:`#6b7280`}),(0,R.jsx)(_,{stroke:`#6b7280`}),(0,R.jsx)(ce,{contentStyle:{borderRadius:`8px`,border:`1px solid #e5e7eb`}}),(0,R.jsx)(oe,{type:`monotone`,dataKey:`events`,stroke:`#3b82f6`,fill:`url(#gradE)`,name:`事件`})]})})}),(0,R.jsx)(j,{title:`实时事件流`,action:(0,R.jsxs)(`div`,{className:`flex items-center gap-1`,children:[b&&(0,R.jsx)(A,{variant:`ghost`,size:`sm`,icon:p,onClick:()=>void _e(),children:`刷新`}),(0,R.jsx)(A,{variant:`ghost`,size:`sm`,icon:b?f:u,onClick:()=>z(!b),children:b?`继续`:`暂停`})]}),children:(0,R.jsxs)(`div`,{className:`h-[180px] overflow-y-auto text-xs font-mono space-y-1`,children:[Y?.items.map((t,n)=>{let r=t.tool_input,i=r?.file_path?String(r.file_path).split(`/`).slice(-2).join(`/`):r?.command?String(r.command).slice(0,60):r?.pattern?String(r.pattern):t.hook_type===`UserPromptSubmit`?`用户输入`:``;return(0,R.jsxs)(`div`,{className:`flex items-center gap-2 py-1 hover:bg-gray-50 rounded px-1 cursor-pointer`,onClick:()=>e(`/events`),children:[(0,R.jsx)(`span`,{className:`text-gray-400 w-14 flex-shrink-0`,children:h(k(t.timestamp),`HH:mm:ss`)}),(0,R.jsx)(`span`,{className:`w-2 h-2 rounded-full flex-shrink-0`,style:{backgroundColor:ge[t.hook_type]||`#6b7280`}}),(0,R.jsx)(`span`,{className:`text-gray-700 font-medium w-16 flex-shrink-0 truncate`,children:t.tool_name||t.hook_type}),(0,R.jsx)(`span`,{className:`text-gray-400 truncate flex-1`,children:i})]},`${t.id}-${n}`)}),(0,R.jsx)(`div`,{ref:B})]})})]}),(0,R.jsx)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-3`,children:[{label:`会话管理`,icon:te,path:`/sessions`,count:J?.week.sessions},{label:`流水线`,icon:s,path:`/pipelines`,count:U?.total},{label:`质量门禁`,icon:o,path:`/quality`,count:q?.recommendations?.find(e=>e.action===`/quality`)?`!`:`0`},{label:`知识图谱`,icon:m,path:`/knowledge`,count:J?.totals.knowledgeNodes}].map(t=>(0,R.jsx)(P.div,{whileHover:{scale:1.02},whileTap:{scale:.98},className:`bg-white rounded-xl p-4 border border-gray-100 cursor-pointer hover:border-blue-200 hover:shadow-sm transition-all`,onClick:()=>e(t.path),children:(0,R.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,R.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,R.jsx)(t.icon,{className:`h-5 w-5 text-gray-500`}),(0,R.jsx)(`span`,{className:`text-sm font-medium text-gray-700`,children:t.label})]}),(0,R.jsx)(`span`,{className:`text-sm font-bold text-gray-900`,children:t.count??`-`})]})},t.path))}),(0,R.jsx)(F,{open:V.open,title:V.title,description:V.description,variant:`warning`,onConfirm:V.onConfirm,onCancel:()=>H(e=>({...e,open:!1}))})]})}export{z as default};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{Gt as t,In as n,Mn as r,Qn as i,Ut as a,Xn as o,ar as s,en as c,mr as l,nr as ee,o as te,pn as ne,rn as u,s as d}from"./vendor-BpBCrKSP.js";import{a as f,n as p,r as m,t as h}from"./vendor-query-BF-uT_c5.js";import{c as g}from"./vendor-flow-D-_WxBha.js";import{kt as _,q as v}from"./client-B_-7qCOP.js";import{a as y,l as re,n as b,r as x,t as ie}from"./ui-B2gvOcFY.js";import{n as ae,t as oe}from"./vendor-motion-BsfSkSjj.js";import{t as se}from"./useDebounce-Bo1fLB5L.js";import{t as ce}from"./ErrorState-HW0OjEYK.js";import{t as le}from"./exportCsv-CSExJI8h.js";import{t as ue}from"./ConfirmDialog-CH1HyRaY.js";var S=e(l(),1),C=g(),de={PreToolUse:`bg-blue-100 text-blue-700`,PostToolUse:`bg-green-100 text-green-700`,UserPromptSubmit:`bg-amber-100 text-amber-700`,Stop:`bg-red-100 text-red-700`,Notification:`bg-purple-100 text-purple-700`};function w(e){if(!e)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function T(e){if(e.hook_type===`UserPromptSubmit`){let t=e.user_prompt;return{title:`用户输入`,subtitle:t?t.slice(0,80):`用户提交了新请求`}}if(e.tool_name){let t=e.tool_input;return t?.file_path?{title:`${e.tool_name} 文件`,subtitle:String(t.file_path).split(`/`).slice(-2).join(`/`)}:t?.command?{title:`${e.tool_name} 命令`,subtitle:String(t.command).slice(0,100)}:t?.pattern?{title:`${e.tool_name} 搜索`,subtitle:String(t.pattern)}:{title:e.tool_name,subtitle:e.hook_type}}return{title:e.hook_type,subtitle:e.project_path.split(`/`).pop()||``}}function E(){let e=f(),[l,g]=(0,S.useState)(50),[E,D]=(0,S.useState)(``),[O,k]=(0,S.useState)(``),[A,j]=(0,S.useState)(``),[M,N]=(0,S.useState)(null),[P,F]=(0,S.useState)(``),I=se(P),[L,R]=(0,S.useState)(``),[z,B]=(0,S.useState)(``),[V,H]=(0,S.useState)(`all`),[U,fe]=(0,S.useState)(30),[W,G]=(0,S.useState)({open:!1,title:``,description:``,onConfirm:()=>{}}),K=(0,S.useRef)(null),q=V===`all`?void 0:d(te(new Date,V===`1d`?1:V===`7d`?7:30),`yyyy-MM-dd'T'HH:mm:ss`),{data:J,isLoading:pe,isError:me,refetch:Y}=m({queryKey:[`events`,{limit:l,tool_name:E||void 0,start_time:q,search:L||void 0}],queryFn:()=>v({limit:l,tool_name:E||void 0,start_time:q,search:L||void 0}).then(e=>e.data)}),X=p({mutationFn:e=>_(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`events`]})}}),Z=J?.items.filter(e=>!(O&&e.hook_type!==O||A&&e.project_path.split(`/`).pop()!==A||I&&![e.tool_name,w(e.tool_input),w(e.tool_output)].join(` `).toLowerCase().includes(I.toLowerCase())))||[],Q=h({count:Z.length,getScrollElement:()=>K.current,estimateSize:()=>120,overscan:5});if(pe)return(0,C.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,C.jsx)(`div`,{className:`animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600`})});if(me)return(0,C.jsx)(ce,{message:`事件数据加载失败`,onRetry:()=>Y()});let he=Array.from(new Set(J?.items.map(e=>e.project_path.split(`/`).pop()||``).filter(Boolean)||[])),ge=Z.reduce((e,t)=>{let n=t.tool_name||`N/A`;return e[n]=(e[n]||0)+1,e},{}),$=Object.entries(ge).sort((e,t)=>t[1]-e[1]).slice(0,10),_e=Array.from(new Set(J?.items.map(e=>e.hook_type)||[]));return(0,C.jsxs)(`div`,{className:`space-y-6`,children:[(0,C.jsx)(x,{children:(0,C.jsxs)(`div`,{className:`flex flex-wrap gap-3 items-center justify-between`,children:[(0,C.jsxs)(`div`,{className:`flex flex-wrap gap-3 items-center flex-1`,children:[(0,C.jsxs)(`div`,{className:`relative flex-1 min-w-[240px] max-w-sm`,children:[(0,C.jsx)(c,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400`}),(0,C.jsx)(`input`,{type:`text`,placeholder:`实时过滤:工具名、文件名...`,value:P,onChange:e=>{F(e.target.value)},className:`w-full pl-10 pr-4 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm`})]}),(0,C.jsx)(`div`,{className:`relative min-w-[200px] max-w-xs`,children:(0,C.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),R(z)},children:[(0,C.jsx)(`input`,{type:`text`,placeholder:`全文搜索内容(回车提交)...`,value:z,onChange:e=>B(e.target.value),className:y(`w-full pl-3 pr-4 py-2 border rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm`,L?`border-blue-400 bg-blue-50`:`border-gray-200`)}),L&&(0,C.jsx)(`button`,{type:`button`,onClick:()=>{R(``),B(``)},className:`absolute right-2 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 text-xs`,children:`✕`})]})}),(0,C.jsxs)(`select`,{value:O,onChange:e=>{k(e.target.value)},className:`px-3 py-2 border border-gray-200 rounded-lg text-sm`,children:[(0,C.jsx)(`option`,{value:``,children:`全部类型`}),_e.map(e=>(0,C.jsx)(`option`,{value:e,children:e},e))]}),(0,C.jsxs)(`select`,{value:A,onChange:e=>{j(e.target.value)},className:`px-3 py-2 border border-gray-200 rounded-lg text-sm`,children:[(0,C.jsx)(`option`,{value:``,children:`全部项目`}),he.map(e=>(0,C.jsx)(`option`,{value:e,children:e},e))]}),(0,C.jsxs)(`div`,{className:`flex items-center gap-1 border border-gray-200 rounded-lg overflow-hidden text-sm`,children:[(0,C.jsx)(ee,{className:`h-3.5 w-3.5 text-gray-400 ml-2`}),[`all`,`1d`,`7d`,`30d`].map(e=>(0,C.jsx)(`button`,{onClick:()=>{H(e)},className:y(`px-2.5 py-2 transition-colors`,V===e?`bg-blue-50 text-blue-700 font-medium`:`text-gray-600 hover:bg-gray-50`),children:e===`all`?`全部`:e},e))]}),(0,C.jsxs)(`select`,{value:l,onChange:e=>g(Number(e.target.value)),className:`px-3 py-2 border border-gray-200 rounded-lg text-sm`,children:[(0,C.jsx)(`option`,{value:20,children:`20 条`}),(0,C.jsx)(`option`,{value:50,children:`50 条`}),(0,C.jsx)(`option`,{value:100,children:`100 条`})]})]}),(0,C.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,C.jsxs)(`select`,{value:U,onChange:e=>fe(Number(e.target.value)),className:`px-2 py-1.5 border border-gray-200 rounded-lg text-sm`,children:[(0,C.jsx)(`option`,{value:7,children:`7天`}),(0,C.jsx)(`option`,{value:30,children:`30天`}),(0,C.jsx)(`option`,{value:90,children:`90天`})]}),(0,C.jsx)(b,{variant:`secondary`,size:`sm`,icon:n,onClick:()=>{let e=[`时间`,`类型`,`工具`,`项目`,`会话ID`,`摘要`],t=Z.map(e=>{let t=T(e);return[e.timestamp,e.hook_type,e.tool_name||``,e.project_path.split(`/`).pop()||``,e.session_id.slice(0,12),t.subtitle]});le(`events-${d(new Date,`yyyyMMdd-HHmmss`)}.csv`,e,t)},children:`导出`}),(0,C.jsx)(b,{variant:`secondary`,size:`sm`,icon:a,onClick:()=>{G({open:!0,title:`清理历史事件`,description:`确认清理 ${U} 天前的已蒸馏事件?此操作不可撤销。`,onConfirm:()=>{X.mutate(U),G({...W,open:!1})}})},loading:X.isPending,children:`清理历史`}),(0,C.jsx)(b,{variant:`secondary`,size:`sm`,icon:u,onClick:()=>Y(),children:`刷新`})]})]})}),(0,C.jsx)(x,{title:`工具使用频率`,children:(0,C.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:$.map(([e,t])=>(0,C.jsxs)(`button`,{onClick:()=>{D(E===e?``:e)},className:y(`px-3 py-1.5 rounded-full text-sm transition-all`,E===e?`bg-blue-100 text-blue-700 border-2 border-blue-300`:`bg-gray-100 text-gray-700 hover:bg-gray-200 border-2 border-transparent`),children:[(0,C.jsx)(`span`,{className:`font-medium`,children:e}),(0,C.jsx)(`span`,{className:`ml-1 text-xs opacity-70`,children:t})]},e))})}),(0,C.jsx)(x,{title:`执行轨迹 (${Z.length})`,children:(0,C.jsx)(`div`,{ref:K,className:`h-[600px] overflow-auto`,style:{contain:`strict`},children:(0,C.jsx)(`div`,{style:{height:`${Q.getTotalSize()}px`,width:`100%`,position:`relative`},children:Q.getVirtualItems().map(e=>{let n=Z[e.index],a=T(n),c=M===n.event_id;return(0,C.jsx)(`div`,{"data-index":e.index,ref:Q.measureElement,style:{position:`absolute`,top:0,left:0,width:`100%`,transform:`translateY(${e.start}px)`},className:`pb-2`,children:(0,C.jsxs)(`div`,{className:`border border-gray-100 rounded-lg overflow-hidden`,children:[(0,C.jsxs)(`div`,{className:`flex items-center justify-between p-3 hover:bg-gray-50 cursor-pointer`,onClick:()=>N(c?null:n.event_id),children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-3 min-w-0 flex-1`,children:[(0,C.jsx)(`button`,{className:`text-gray-400`,children:c?(0,C.jsx)(i,{className:`h-4 w-4`}):(0,C.jsx)(o,{className:`h-4 w-4`})}),(0,C.jsx)(ie,{size:`sm`,className:de[n.hook_type]||`bg-gray-100 text-gray-700`,children:n.hook_type}),n.tool_name&&(0,C.jsxs)(`div`,{className:`flex items-center gap-1 text-sm text-gray-700 flex-shrink-0`,children:[n.tool_name===`Bash`?(0,C.jsx)(t,{className:`h-4 w-4`}):(0,C.jsx)(r,{className:`h-4 w-4`}),(0,C.jsx)(`span`,{className:`font-mono`,children:n.tool_name})]}),(0,C.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,C.jsx)(`div`,{className:`text-sm font-medium text-gray-900 truncate`,children:a.title}),(0,C.jsx)(`div`,{className:`text-xs text-gray-500 truncate`,children:a.subtitle})]})]}),(0,C.jsx)(`div`,{className:`text-xs text-gray-400 font-mono ml-3`,children:d(re(n.timestamp),`HH:mm:ss`)})]}),(0,C.jsx)(ae,{children:c&&(0,C.jsx)(oe.div,{initial:{height:0,opacity:0},animate:{height:`auto`,opacity:1},exit:{height:0,opacity:0},className:`border-t border-gray-100 bg-gray-50`,children:(0,C.jsxs)(`div`,{className:`p-4 space-y-4`,children:[(0,C.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-4 gap-3 text-xs`,children:[(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`text-gray-400 mb-1`,children:`会话`}),(0,C.jsxs)(`div`,{className:`font-mono text-gray-700`,children:[n.session_id.slice(0,12),`...`]})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`text-gray-400 mb-1`,children:`项目`}),(0,C.jsx)(`div`,{className:`text-gray-700`,children:n.project_path.split(`/`).pop()})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`text-gray-400 mb-1`,children:`时间`}),(0,C.jsx)(`div`,{className:`font-mono text-gray-700`,children:n.timestamp})]}),(0,C.jsxs)(`div`,{children:[(0,C.jsx)(`div`,{className:`text-gray-400 mb-1`,children:`类型`}),(0,C.jsx)(`div`,{className:`text-gray-700`,children:n.hook_type})]})]}),n.tool_input&&(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-semibold text-gray-500 mb-2 uppercase tracking-wider`,children:[(0,C.jsx)(ne,{className:`h-3 w-3`}),` 输入`]}),(0,C.jsx)(`pre`,{className:`bg-white p-3 rounded-lg text-xs font-mono overflow-x-auto border border-gray-200 text-gray-700 whitespace-pre-wrap break-all`,children:w(n.tool_input)})]}),n.tool_output&&(0,C.jsxs)(`div`,{children:[(0,C.jsxs)(`div`,{className:`flex items-center gap-2 text-xs font-semibold text-gray-500 mb-2 uppercase tracking-wider`,children:[(0,C.jsx)(s,{className:`h-3 w-3`}),` 输出`]}),(0,C.jsx)(`pre`,{className:`bg-white p-3 rounded-lg text-xs font-mono overflow-x-auto border border-gray-200 text-gray-700 whitespace-pre-wrap break-all max-h-64 overflow-y-auto`,children:w(n.tool_output)})]})]})})})]})},n.event_id)})})})}),(0,C.jsx)(ue,{open:W.open,title:W.title,description:W.description,variant:`danger`,onConfirm:W.onConfirm,onCancel:()=>G({...W,open:!1})})]})}export{E as default};
@@ -1,2 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{An as t,Hn as n,In as r,Jt as i,Tn as a,Ut as o,an as s,dn as c,en as l,mr as u,qn as d,rr as f,s as ee,yn as p,zt as te}from"./vendor-BpBCrKSP.js";import{S as ne,_ as re,c as ie,v as ae,y as oe}from"./vendor-charts-BXsEmmv5.js";import{a as se,n as m,r as h}from"./vendor-query-BF-uT_c5.js";import{a as g,c as _,i as v,n as y,o as b,r as x,s as S,t as ce}from"./vendor-flow-D-_WxBha.js";import{$ as le,Ct as ue,Kt as de,Q as fe,Z as pe,_ as me,a as he,en as C,g as ge,x as _e,zt as w}from"./client-B_-7qCOP.js";import{n as T,r as E,t as D}from"./ui-B2gvOcFY.js";import{t as ve}from"./vendor-motion-BsfSkSjj.js";import{t as ye}from"./exportCsv-CSExJI8h.js";import{t as be}from"./ConfirmDialog-CH1HyRaY.js";import{t as xe}from"./Pagination-ooTI9JPa.js";var O=e(u(),1);function Se(e,t){let[n,r]=(0,O.useState)(e);return(0,O.useEffect)(()=>{let n=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(n)}},[e,t]),n}var k=_();function Ce({open:e,count:t,itemLabel:n=`项`,loading:r=!1,onConfirm:i,onCancel:a}){let[s,c]=(0,O.useState)(``);if((0,O.useEffect)(()=>{e||c(``)},[e]),(0,O.useEffect)(()=>{if(!e)return;let t=e=>{e.key===`Escape`&&a()};return window.addEventListener(`keydown`,t),()=>window.removeEventListener(`keydown`,t)},[e,a]),!e)return null;let l=t<5?`simple`:t<=20?`count`:`keyword`,u=`DELETE`,d=l===`simple`||l===`count`&&s===String(t)||l===`keyword`&&s===u;return(0,k.jsx)(`div`,{className:`fixed inset-0 z-50 flex items-center justify-center bg-black/40 backdrop-blur-sm`,onClick:a,children:(0,k.jsxs)(`div`,{className:`bg-white rounded-xl shadow-xl w-full max-w-md mx-4 p-6`,onClick:e=>e.stopPropagation(),children:[(0,k.jsxs)(`div`,{className:`flex items-start gap-4`,children:[(0,k.jsx)(`div`,{className:`flex-shrink-0 w-10 h-10 rounded-full flex items-center justify-center bg-red-50`,children:(0,k.jsx)(o,{className:`h-5 w-5 text-red-500`})}),(0,k.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,k.jsxs)(`h3`,{className:`text-base font-semibold text-gray-900`,children:[`删除 `,t,` 个`,n]}),(0,k.jsx)(`p`,{className:`mt-1 text-sm text-gray-500 leading-relaxed`,children:`此操作不可撤销,关联数据也会被删除。`}),l===`count`&&(0,k.jsxs)(`div`,{className:`mt-3`,children:[(0,k.jsxs)(`label`,{className:`block text-xs text-gray-500 mb-1`,children:[`请输入数量 `,(0,k.jsx)(`span`,{className:`font-mono font-bold text-gray-800`,children:t}),` 以确认:`]}),(0,k.jsx)(`input`,{autoFocus:!0,type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&d&&i()},placeholder:String(t),className:`w-full px-3 py-1.5 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-red-400 font-mono`})]}),l===`keyword`&&(0,k.jsxs)(`div`,{className:`mt-3`,children:[(0,k.jsxs)(`label`,{className:`block text-xs text-gray-500 mb-1`,children:[`请输入 `,(0,k.jsx)(`span`,{className:`font-mono font-bold text-red-600`,children:u}),` 以确认:`]}),(0,k.jsx)(`input`,{autoFocus:!0,type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&d&&i()},placeholder:u,className:`w-full px-3 py-1.5 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-red-400 font-mono`})]})]})]}),(0,k.jsxs)(`div`,{className:`flex justify-end gap-3 mt-6`,children:[(0,k.jsx)(T,{variant:`secondary`,size:`sm`,onClick:a,disabled:r,children:`取消`}),(0,k.jsx)(T,{variant:`danger`,size:`sm`,onClick:i,loading:r,disabled:!d,children:`确认删除`})]})]})})}var A={requirement:`#3b82f6`,decision:`#8b5cf6`,code_change:`#10b981`,outcome:`#f59e0b`};function we({nodes:e,edges:t,onNodeClick:n}){let r=(0,O.useMemo)(()=>e.map((e,t)=>({id:e.id,type:`default`,data:{label:(0,k.jsxs)(`div`,{className:`text-xs`,children:[(0,k.jsx)(`div`,{className:`font-semibold truncate max-w-[120px]`,children:e.title}),(0,k.jsx)(`div`,{className:`text-gray-500 text-[10px]`,children:e.node_type})]})},position:{x:t%5*200+Math.sin(t)*30,y:Math.floor(t/5)*150+Math.cos(t)*20},style:{background:A[e.node_type]||`#6b7280`,color:`#fff`,border:`none`,borderRadius:`8px`,padding:`8px 12px`,minWidth:`140px`}})),[e]),i=(0,O.useMemo)(()=>t.map(e=>({id:e.id,source:e.from_node_id,target:e.to_node_id,label:e.edge_type,labelStyle:{fontSize:10,fill:`#6b7280`},style:{stroke:`#d1d5db`,strokeWidth:Math.max(1,e.weight)},markerEnd:{type:S.ArrowClosed,color:`#d1d5db`}})),[t]),[a,,o]=b(r),[s,,c]=g(i),l=(0,O.useCallback)((e,t)=>{n?.(t.id)},[n]);return e.length===0?(0,k.jsx)(`div`,{className:`flex items-center justify-center h-full text-gray-400 text-sm`,children:`暂无知识节点`}):(0,k.jsxs)(v,{nodes:a,edges:s,onNodesChange:o,onEdgesChange:c,onNodeClick:l,fitView:!0,fitViewOptions:{padding:.2},minZoom:.3,maxZoom:2,children:[(0,k.jsx)(ce,{color:`#f3f4f6`,gap:20}),(0,k.jsx)(y,{}),(0,k.jsx)(x,{nodeColor:t=>A[e.find(e=>e.id===t.id)?.node_type||``]||`#6b7280`,style:{background:`#f9fafb`}})]})}var j={requirement:t,decision:p,code_change:n,outcome:d},M={requirement:`#3b82f6`,decision:`#8b5cf6`,code_change:`#10b981`,outcome:`#f59e0b`},N={requirement:`需求`,decision:`决策`,code_change:`代码变更`,outcome:`结果`},P=[`#3b82f6`,`#8b5cf6`,`#10b981`,`#f59e0b`,`#ef4444`,`#06b6d4`];function F(){let e=se(),[t,n]=(0,O.useState)(``),u=Se(t,300),[d,p]=(0,O.useState)(``),[g,_]=(0,O.useState)(null),[v,y]=(0,O.useState)(new Set),[b,x]=(0,O.useState)(1),[S,ce]=(0,O.useState)(20),[A,F]=(0,O.useState)(!1),[Te,I]=(0,O.useState)(!1),[Ee,L]=(0,O.useState)(!1),[R,De]=(0,O.useState)(null),[z,Oe]=(0,O.useState)(``),[B,ke]=(0,O.useState)(`list`),[V,H]=(0,O.useState)({open:!1,title:``,description:``,onConfirm:()=>{}}),[Ae,U]=(0,O.useState)(!1),{data:W}=h({queryKey:[`knowledge-overview`],queryFn:()=>le().then(e=>e.data)}),{data:je}=h({queryKey:[`knowledge-search`,u,d,z],queryFn:()=>w(u,z||void 0,d||void 0).then(e=>e.data),enabled:u.length>0}),{data:G}=h({queryKey:[`knowledge-all`],queryFn:()=>w(``,void 0,void 0,500).then(e=>e.data)}),{data:Me}=h({queryKey:[`knowledge-filtered`,d,z],queryFn:()=>w(``,z||void 0,d||void 0,500).then(e=>e.data),enabled:t.length===0&&(!!d||!!z)}),{data:K}=h({queryKey:[`knowledge-neighbors`,g],queryFn:()=>fe(g).then(e=>e.data),enabled:!!g}),{data:q}=h({queryKey:[`knowledge-graph`,z,d],queryFn:()=>pe(z||void 0,d||void 0).then(e=>e.data),enabled:B===`graph`}),Ne=m({mutationFn:me,onSuccess:()=>{e.invalidateQueries({queryKey:[`knowledge-all`]}),e.invalidateQueries({queryKey:[`knowledge-filtered`]}),e.invalidateQueries({queryKey:[`knowledge-search`]}),e.invalidateQueries({queryKey:[`knowledge-overview`]}),F(!1)}}),Pe=m({mutationFn:({id:e,data:t})=>de(e,t),onSuccess:()=>{e.invalidateQueries({queryKey:[`knowledge-all`]}),e.invalidateQueries({queryKey:[`knowledge-filtered`]}),e.invalidateQueries({queryKey:[`knowledge-search`]}),I(!1),De(null)}}),Fe=m({mutationFn:_e,onSuccess:()=>{e.invalidateQueries({queryKey:[`knowledge-all`]}),e.invalidateQueries({queryKey:[`knowledge-filtered`]}),e.invalidateQueries({queryKey:[`knowledge-search`]}),e.invalidateQueries({queryKey:[`knowledge-overview`]}),_(null)}}),J=m({mutationFn:e=>he(e),onSuccess:()=>{e.invalidateQueries({queryKey:[`knowledge-all`]}),e.invalidateQueries({queryKey:[`knowledge-filtered`]}),e.invalidateQueries({queryKey:[`knowledge-search`]}),e.invalidateQueries({queryKey:[`knowledge-overview`]}),y(new Set),_(null)}}),Y=m({mutationFn:ge,onSuccess:()=>{e.invalidateQueries({queryKey:[`knowledge-neighbors`]}),e.invalidateQueries({queryKey:[`knowledge-graph`]}),L(!1)}}),X=u?je?.items:d||z?Me?.items:G?.items,Ie=Array.from(new Set(G?.items.map(e=>e.node_type)||[])),Le=Array.from(new Set(G?.items.map(e=>e.project_path||``).filter(Boolean)||[])),Z=W?.byType?Object.entries(W.byType).map(([e,t])=>({name:e,value:t})):[],Re=Math.ceil((X?.length||0)/S),Q=X?.slice((b-1)*S,b*S),ze=e=>{e.preventDefault();let t=new FormData(e.currentTarget);Ne.mutate({title:t.get(`title`),content:t.get(`content`),node_type:t.get(`node_type`),project_path:t.get(`project_path`),tags:t.get(`tags`)})},Be=e=>{if(e.preventDefault(),!R)return;let t=new FormData(e.currentTarget);Pe.mutate({id:R.id,data:{title:t.get(`title`),content:t.get(`content`),tags:t.get(`tags`)}})},Ve=e=>{H({open:!0,title:`删除知识节点`,description:`确认删除此知识节点?关联的边也会被删除。`,onConfirm:()=>{Fe.mutate(e),H(e=>({...e,open:!1}))}})},He=()=>{U(!0)},Ue=()=>{if(!X||X.length===0)return;let e=[`ID`,`标题`,`类型`,`内容`,`标签`,`项目路径`],t=X.map(e=>[e.id,e.title,e.node_type,e.content,e.tags||``,e.project_path||``]);ye(`knowledge-nodes-${ee(new Date,`yyyyMMdd-HHmmss`)}.csv`,e,t)},We=()=>{if(!X||X.length===0)return;let e=new Blob([JSON.stringify(X,null,2)],{type:`application/json`}),t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=`knowledge-nodes-${ee(new Date,`yyyyMMdd-HHmmss`)}.json`,n.click(),URL.revokeObjectURL(t)},$=m({mutationFn:e=>ue(e).then(e=>e.data),onSuccess:t=>{C(t.message,`success`),e.invalidateQueries({queryKey:[`knowledge-all`]}),e.invalidateQueries({queryKey:[`knowledge-overview`]})},onError:()=>C(`导入失败`,`error`)});return(0,k.jsxs)(`div`,{className:`space-y-6`,children:[(0,k.jsx)(E,{children:(0,k.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,k.jsxs)(`div`,{className:`relative flex-1`,children:[(0,k.jsx)(l,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400`}),(0,k.jsx)(`input`,{type:`text`,placeholder:`搜索知识节点(需求、决策、代码变更、结果)...`,value:t,onChange:e=>{n(e.target.value),x(1)},className:`w-full pl-10 pr-4 py-3 border border-gray-200 rounded-xl focus:outline-none focus:ring-2 focus:ring-blue-500 text-lg`})]}),(0,k.jsxs)(`select`,{value:d,onChange:e=>{p(e.target.value),x(1)},className:`px-3 py-3 border border-gray-200 rounded-xl text-sm focus:outline-none focus:ring-2 focus:ring-blue-500`,children:[(0,k.jsx)(`option`,{value:``,children:`全部类型`}),Ie.map(e=>(0,k.jsx)(`option`,{value:e,children:e},e))]}),(0,k.jsxs)(`select`,{value:z,onChange:e=>{Oe(e.target.value),x(1)},className:`px-3 py-3 border border-gray-200 rounded-xl text-sm focus:outline-none focus:ring-2 focus:ring-blue-500`,children:[(0,k.jsx)(`option`,{value:``,children:`全部项目`}),Le.map(e=>(0,k.jsx)(`option`,{value:e,children:e.split(`/`).pop()},e))]}),(0,k.jsx)(T,{variant:`primary`,size:`sm`,icon:s,onClick:()=>F(!0),children:`创建节点`}),v.size>0&&(0,k.jsxs)(T,{variant:`danger`,size:`sm`,icon:o,onClick:He,loading:J.isPending,children:[`删除 (`,v.size,`)`]}),(0,k.jsxs)(`div`,{className:`flex border border-gray-200 rounded-lg overflow-hidden`,children:[(0,k.jsx)(`button`,{onClick:()=>ke(`list`),className:`px-3 py-2 text-sm transition-colors ${B===`list`?`bg-blue-50 text-blue-700 font-medium`:`text-gray-600 hover:bg-gray-50`}`,children:`列表`}),(0,k.jsxs)(`button`,{onClick:()=>ke(`graph`),className:`px-3 py-2 text-sm transition-colors flex items-center gap-1 ${B===`graph`?`bg-blue-50 text-blue-700 font-medium`:`text-gray-600 hover:bg-gray-50`}`,children:[(0,k.jsx)(c,{className:`h-4 w-4`}),`图谱`]})]})]})}),(0,k.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,k.jsxs)(E,{title:`知识图谱概览`,children:[(0,k.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 mb-4`,children:[(0,k.jsxs)(`button`,{className:`text-center p-4 bg-blue-50 rounded-xl hover:bg-blue-100 transition-colors cursor-pointer`,onClick:()=>{p(``),Oe(``),x(1)},title:`点击查看全部节点`,children:[(0,k.jsx)(f,{className:`h-8 w-8 text-blue-500 mx-auto mb-2`}),(0,k.jsx)(`div`,{className:`text-3xl font-bold text-blue-600`,children:W?.totalNodes||0}),(0,k.jsx)(`div`,{className:`text-sm text-gray-600`,children:`知识节点`})]}),(0,k.jsxs)(`div`,{className:`text-center p-4 bg-purple-50 rounded-xl`,children:[(0,k.jsx)(a,{className:`h-8 w-8 text-purple-500 mx-auto mb-2`}),(0,k.jsx)(`div`,{className:`text-3xl font-bold text-purple-600`,children:Z.length}),(0,k.jsx)(`div`,{className:`text-sm text-gray-600`,children:`节点类型`})]})]}),Z.length>0&&(0,k.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:Z.map((e,t)=>(0,k.jsxs)(`button`,{onClick:()=>{p(d===e.name?``:e.name),x(1)},className:`flex items-center gap-1.5 px-3 py-1.5 rounded-full text-sm font-medium transition-colors ${d===e.name?`text-white`:`bg-gray-100 text-gray-700 hover:bg-gray-200`}`,style:d===e.name?{backgroundColor:P[t%P.length]}:{},children:[(0,k.jsx)(`span`,{className:`w-2 h-2 rounded-full flex-shrink-0`,style:{backgroundColor:P[t%P.length]}}),N[e.name]||e.name,(0,k.jsxs)(`span`,{className:`opacity-70`,children:[`(`,e.value,`)`]})]},e.name))})]}),(0,k.jsx)(E,{title:`节点类型分布`,children:Z.length>0?(0,k.jsx)(ne,{width:`100%`,height:220,children:(0,k.jsxs)(ie,{margin:{top:20,right:20,bottom:20,left:20},children:[(0,k.jsx)(re,{data:Z,cx:`50%`,cy:`50%`,innerRadius:50,outerRadius:80,dataKey:`value`,label:({name:e,percent:t})=>t>=.05?`${N[e]||e} ${(t*100).toFixed(0)}%`:``,labelLine:({percent:e})=>e>=.05,onClick:e=>{p(d===e.name?``:e.name),x(1)},style:{cursor:`pointer`},children:Z.map((e,t)=>(0,k.jsx)(ae,{fill:P[t%P.length],opacity:d&&d!==e.name?.4:1},t))}),(0,k.jsx)(oe,{formatter:(e,t)=>[e,N[t]||t]})]})}):(0,k.jsx)(`div`,{className:`flex items-center justify-center h-48 text-gray-400`,children:`暂无数据`})})]}),B===`graph`&&(0,k.jsx)(E,{title:`知识图谱`,children:(0,k.jsx)(`div`,{className:`h-[600px] border border-gray-200 rounded-lg overflow-hidden`,children:q?(0,k.jsx)(we,{nodes:q.nodes,edges:q.edges,onNodeClick:_}):(0,k.jsx)(`div`,{className:`flex items-center justify-center h-full`,children:(0,k.jsx)(`div`,{className:`animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600`})})})}),B===`list`&&(0,k.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-3 gap-6`,children:[(0,k.jsx)(`div`,{className:`lg:col-span-2`,children:(0,k.jsxs)(E,{title:`知识节点 (${X?.length||0})`,action:(0,k.jsxs)(`div`,{className:`flex gap-2`,children:[X&&X.length>0&&(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(T,{variant:`secondary`,size:`sm`,icon:r,onClick:Ue,children:`导出 CSV`}),(0,k.jsx)(T,{variant:`secondary`,size:`sm`,icon:r,onClick:We,children:`导出 JSON`})]}),(0,k.jsxs)(`label`,{className:`cursor-pointer`,children:[(0,k.jsx)(`input`,{type:`file`,accept:`.json,.csv`,className:`hidden`,onChange:e=>{let t=e.target.files?.[0];if(!t)return;let n=new FileReader;n.onload=e=>{try{let n=e.target?.result,r=[];if(t.name.endsWith(`.json`)){let e=JSON.parse(n);r=Array.isArray(e)?e:e.nodes||e.items||[]}else if(t.name.endsWith(`.csv`)){let e=n.split(`
2
- `).filter(e=>e.trim()),t=e[0].split(`,`).map(e=>e.trim().replace(/^"|"$/g,``));r=e.slice(1).map(e=>{let n=e.split(`,`).map(e=>e.trim().replace(/^"|"$/g,``)),r={};return t.forEach((e,t)=>{r[e]=n[t]||``}),{title:r.title||r.标题||``,content:r.content||r.内容||``,node_type:r.node_type||r.类型||`requirement`,project_path:r.project_path||r.项目路径||``,tags:r.tags||r.标签?(r.tags||r.标签).split(`;`).filter(Boolean):[]}})}if(r.length===0){C(`未解析到有效节点,请检查文件格式`,`error`);return}$.mutate(r)}catch{C(`文件解析失败,请检查格式`,`error`)}},n.readAsText(t),e.target.value=``}}),(0,k.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-lg border border-gray-200 bg-white hover:bg-gray-50 transition-colors ${$.isPending?`opacity-50 pointer-events-none`:``}`,children:[(0,k.jsx)(te,{className:`h-4 w-4`}),$.isPending?`导入中...`:`导入`]})]}),Q&&Q.length>0&&(0,k.jsx)(`button`,{onClick:()=>{v.size===Q.length?y(new Set):y(new Set(Q.map(e=>e.id)))},className:`text-xs text-blue-600 hover:underline`,children:v.size===Q.length?`取消全选`:`全选当前页`})]}),children:[(0,k.jsxs)(`div`,{className:`space-y-2`,children:[Q?.map((e,t)=>{let n=j[e.node_type]||f,r=M[e.node_type]||`#6b7280`;return(0,k.jsx)(ve.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:t*.03},className:`p-4 rounded-lg border cursor-pointer transition-all group ${v.has(e.id)?`border-blue-300 bg-blue-50`:g===e.id?`border-blue-300 bg-blue-50 shadow-sm`:`border-gray-100 hover:border-gray-200 hover:bg-gray-50`}`,onClick:()=>_(e.id),children:(0,k.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,k.jsx)(`input`,{type:`checkbox`,checked:v.has(e.id),onChange:t=>{t.stopPropagation(),y(t=>{let n=new Set(t);return n.has(e.id)?n.delete(e.id):n.add(e.id),n})},onClick:e=>e.stopPropagation(),className:`h-4 w-4 rounded border-gray-300 text-blue-600 cursor-pointer flex-shrink-0 mt-1`}),(0,k.jsx)(`div`,{className:`p-2 rounded-lg`,style:{backgroundColor:`${r}15`},children:(0,k.jsx)(n,{className:`h-5 w-5`,style:{color:r}})}),(0,k.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(`span`,{className:`font-semibold text-gray-900 truncate`,children:e.title}),(0,k.jsx)(D,{size:`sm`,variant:e.node_type===`outcome`?`success`:e.node_type===`decision`?`info`:`default`,children:N[e.node_type]||e.node_type})]}),(0,k.jsx)(`p`,{className:`text-sm text-gray-600 mt-1 line-clamp-2`,children:e.content}),e.tags&&e.tags.trim()&&(0,k.jsx)(`div`,{className:`flex gap-1 mt-2`,children:e.tags.split(`,`).filter(e=>e.trim()).slice(0,3).map(e=>(0,k.jsx)(`span`,{className:`text-xs px-2 py-0.5 bg-gray-100 rounded-full text-gray-600`,children:e.trim()},e))})]}),(0,k.jsxs)(`div`,{className:`flex gap-1 flex-shrink-0 opacity-0 group-hover:opacity-100 transition-opacity`,children:[(0,k.jsx)(`button`,{onClick:t=>{t.stopPropagation(),De({id:e.id,title:e.title,content:e.content,tags:e.tags||``}),I(!0)},className:`p-1.5 rounded hover:bg-gray-200 text-gray-400 hover:text-gray-600`,children:(0,k.jsx)(i,{className:`h-3.5 w-3.5`})}),(0,k.jsx)(`button`,{onClick:t=>{t.stopPropagation(),Ve(e.id)},className:`p-1.5 rounded hover:bg-red-100 text-gray-400 hover:text-red-600`,children:(0,k.jsx)(o,{className:`h-3.5 w-3.5`})})]})]})},e.id)}),(!Q||Q.length===0)&&(0,k.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 text-gray-400`,children:[(0,k.jsx)(f,{className:`h-12 w-12 mb-4`}),(0,k.jsx)(`p`,{children:`暂无知识节点`}),(0,k.jsx)(`p`,{className:`text-sm mt-1`,children:`使用 Claude Code 进行开发后,知识会自动沉淀`})]})]}),X&&X.length>0&&(0,k.jsx)(`div`,{className:`mt-4`,children:(0,k.jsx)(xe,{currentPage:b,totalPages:Re,onPageChange:x,pageSize:S,onPageSizeChange:e=>{ce(e),x(1)},totalItems:X.length})})]})}),(0,k.jsx)(`div`,{children:(0,k.jsx)(E,{title:`节点详情`,children:g&&X?(()=>{let e=X.find(e=>e.id===g);if(!e)return(0,k.jsx)(`div`,{className:`text-gray-400 text-center py-8`,children:`节点未找到`});let t=j[e.node_type]||f,n=M[e.node_type]||`#6b7280`;return(0,k.jsxs)(`div`,{className:`space-y-4`,children:[(0,k.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,k.jsx)(`div`,{className:`p-3 rounded-xl`,style:{backgroundColor:`${n}15`},children:(0,k.jsx)(t,{className:`h-6 w-6`,style:{color:n}})}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`div`,{className:`font-bold text-gray-900`,children:e.title}),(0,k.jsx)(D,{size:`sm`,children:N[e.node_type]||e.node_type})]})]}),(0,k.jsx)(`div`,{className:`p-3 bg-gray-50 rounded-lg text-sm text-gray-700 whitespace-pre-wrap`,children:e.content}),e.tags&&e.tags.trim()&&(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`div`,{className:`text-xs font-semibold text-gray-500 mb-2`,children:`标签`}),(0,k.jsx)(`div`,{className:`flex flex-wrap gap-1`,children:e.tags.split(`,`).filter(e=>e.trim()).map(e=>(0,k.jsx)(`span`,{className:`text-xs px-2 py-1 bg-blue-50 text-blue-600 rounded-full`,children:e.trim()},e))})]}),K&&K.items.length>0&&(0,k.jsxs)(`div`,{children:[(0,k.jsxs)(`div`,{className:`text-xs font-semibold text-gray-500 mb-2`,children:[`关联节点 (`,K.total,`)`]}),(0,k.jsx)(`div`,{className:`space-y-2`,children:K.items.map((e,t)=>(0,k.jsxs)(`div`,{className:`p-2 bg-gray-50 rounded-lg text-sm cursor-pointer hover:bg-gray-100`,onClick:()=>_(e.id),children:[(0,k.jsx)(`div`,{className:`font-medium`,children:e.title}),(0,k.jsxs)(`div`,{className:`text-xs text-gray-500`,children:[e.edge_type,` · `,e.node_type]})]},t))})]}),(0,k.jsx)(T,{variant:`ghost`,size:`sm`,icon:a,onClick:()=>L(!0),children:`添加关系`})]})})():(0,k.jsxs)(`div`,{className:`flex flex-col items-center justify-center py-16 text-gray-400`,children:[(0,k.jsx)(l,{className:`h-8 w-8 mb-3`}),(0,k.jsx)(`p`,{className:`text-sm`,children:`点击左侧节点查看详情`})]})})})]}),A&&(0,k.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50`,onClick:()=>F(!1),children:(0,k.jsxs)(`div`,{className:`bg-white rounded-xl p-6 w-full max-w-2xl max-h-[90vh] overflow-y-auto`,onClick:e=>e.stopPropagation(),children:[(0,k.jsx)(`h3`,{className:`text-xl font-bold mb-4`,children:`创建知识节点`}),(0,k.jsxs)(`form`,{onSubmit:ze,className:`space-y-4`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`标题 *`}),(0,k.jsx)(`input`,{type:`text`,name:`title`,required:!0,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`内容 *`}),(0,k.jsx)(`textarea`,{name:`content`,required:!0,rows:6,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`类型 *`}),(0,k.jsxs)(`select`,{name:`node_type`,required:!0,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`,children:[(0,k.jsx)(`option`,{value:`requirement`,children:`需求 (requirement)`}),(0,k.jsx)(`option`,{value:`decision`,children:`决策 (decision)`}),(0,k.jsx)(`option`,{value:`code_change`,children:`代码变更 (code_change)`}),(0,k.jsx)(`option`,{value:`outcome`,children:`结果 (outcome)`})]})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`项目路径 *`}),(0,k.jsx)(`input`,{type:`text`,name:`project_path`,required:!0,placeholder:`/path/to/project`,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`标签(逗号分隔)`}),(0,k.jsx)(`input`,{type:`text`,name:`tags`,placeholder:`tag1, tag2, tag3`,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`})]}),(0,k.jsxs)(`div`,{className:`flex gap-2 justify-end pt-2`,children:[(0,k.jsx)(T,{type:`button`,variant:`secondary`,onClick:()=>F(!1),children:`取消`}),(0,k.jsx)(T,{type:`submit`,variant:`primary`,loading:Ne.isPending,children:`创建`})]})]})]})}),Te&&R&&(0,k.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50`,onClick:()=>I(!1),children:(0,k.jsxs)(`div`,{className:`bg-white rounded-xl p-6 w-full max-w-2xl max-h-[90vh] overflow-y-auto`,onClick:e=>e.stopPropagation(),children:[(0,k.jsx)(`h3`,{className:`text-xl font-bold mb-4`,children:`编辑知识节点`}),(0,k.jsxs)(`form`,{onSubmit:Be,className:`space-y-4`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`标题`}),(0,k.jsx)(`input`,{type:`text`,name:`title`,defaultValue:R.title,required:!0,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`内容`}),(0,k.jsx)(`textarea`,{name:`content`,defaultValue:R.content,required:!0,rows:6,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`标签(逗号分隔)`}),(0,k.jsx)(`input`,{type:`text`,name:`tags`,defaultValue:R.tags,placeholder:`tag1, tag2, tag3`,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`})]}),(0,k.jsxs)(`div`,{className:`flex gap-2 justify-end pt-2`,children:[(0,k.jsx)(T,{type:`button`,variant:`secondary`,onClick:()=>I(!1),children:`取消`}),(0,k.jsx)(T,{type:`submit`,variant:`primary`,loading:Pe.isPending,children:`保存`})]})]})]})}),Ee&&g&&(0,k.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50`,onClick:()=>L(!1),children:(0,k.jsxs)(`div`,{className:`bg-white rounded-xl p-6 w-full max-w-md`,onClick:e=>e.stopPropagation(),children:[(0,k.jsx)(`h3`,{className:`text-xl font-bold mb-4`,children:`添加关系`}),(0,k.jsxs)(`form`,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.currentTarget),n=t.get(`to_node_id`),r=t.get(`edge_type`);n&&r&&Y.mutate({from_node_id:g,to_node_id:n,edge_type:r})},className:`space-y-4`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`目标节点 *`}),(0,k.jsxs)(`select`,{name:`to_node_id`,required:!0,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`,children:[(0,k.jsx)(`option`,{value:``,children:`选择节点`}),G?.items.filter(e=>e.id!==g).map(e=>(0,k.jsxs)(`option`,{value:e.id,children:[e.title,` (`,N[e.node_type]||e.node_type,`)`]},e.id))]})]}),(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`label`,{className:`block text-sm font-medium text-gray-700 mb-1`,children:`关系类型 *`}),(0,k.jsxs)(`select`,{name:`edge_type`,required:!0,className:`w-full px-3 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500`,children:[(0,k.jsx)(`option`,{value:``,children:`选择关系`}),(0,k.jsx)(`option`,{value:`depends_on`,children:`依赖于`}),(0,k.jsx)(`option`,{value:`implements`,children:`实现`}),(0,k.jsx)(`option`,{value:`relates_to`,children:`关联到`}),(0,k.jsx)(`option`,{value:`causes`,children:`导致`}),(0,k.jsx)(`option`,{value:`resolves`,children:`解决`})]})]}),(0,k.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2`,children:[(0,k.jsx)(`button`,{type:`button`,onClick:()=>L(!1),className:`px-4 py-2 text-sm text-gray-700 hover:bg-gray-100 rounded-lg transition-colors`,children:`取消`}),(0,k.jsx)(`button`,{type:`submit`,disabled:Y.isPending,className:`px-4 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors disabled:opacity-50`,children:Y.isPending?`创建中...`:`创建`})]})]})]})}),(0,k.jsx)(be,{open:V.open,title:V.title,description:V.description,variant:`danger`,onConfirm:V.onConfirm,onCancel:()=>H({...V,open:!1})}),(0,k.jsx)(Ce,{open:Ae,count:v.size,itemLabel:`知识节点`,loading:J.isPending,onConfirm:()=>{J.mutate(Array.from(v)),U(!1),y(new Set)},onCancel:()=>U(!1)})]})}export{F as default};
@@ -1,2 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{In as t,It as n,Nn as r,Tn as i,Un as ee,Ut as te,en as a,mr as o,rn as s,s as c}from"./vendor-BpBCrKSP.js";import{c as l}from"./vendor-react-CXfI0Tes.js";import{a as u,n as d,r as f}from"./vendor-query-BF-uT_c5.js";import{c as p}from"./vendor-flow-D-_WxBha.js";import{h as ne,i as re,lt as m,m as h}from"./client-B_-7qCOP.js";import{l as g,n as _,r as v,t as y}from"./ui-B2gvOcFY.js";import{t as ie}from"./vendor-motion-BsfSkSjj.js";import{t as ae}from"./useDebounce-Bo1fLB5L.js";import{t as oe}from"./ErrorState-HW0OjEYK.js";import{t as b}from"./exportCsv-CSExJI8h.js";import{t as x}from"./ConfirmDialog-CH1HyRaY.js";import{t as S}from"./useSmartPolling-DYAVOihL.js";import{t as C}from"./Pagination-ooTI9JPa.js";import{n as w,r as T,t as se}from"./BatchProgress-CIrC9RcC.js";var E=e(o(),1),D=p();function O(){let e=u(),o=l(),[p,O]=(0,E.useState)(``),k=ae(p),[A,ce]=(0,E.useState)(``),[j,M]=(0,E.useState)(`all`),[N,P]=(0,E.useState)(1),[F,I]=(0,E.useState)(20),[L,R]=(0,E.useState)(new Set),[z,B]=(0,E.useState)(``),[V,H]=(0,E.useState)({open:!1,title:``,description:``,onConfirm:()=>{}}),{data:U,isLoading:W,isError:le,refetch:G}=f({queryKey:[`pipelines`,`active`],queryFn:()=>m({status:`active`,page_size:100}).then(e=>e.data),refetchInterval:S((U?.total??0)>0)}),{data:K,refetch:ue}=f({queryKey:[`pipelines`,`completed`,k,A,N,F],queryFn:()=>m({status:`completed`,search:k||void 0,complexity:A||void 0,page:N,page_size:F}).then(e=>e.data)}),q=d({mutationFn:e=>ne(e),onSuccess:()=>e.invalidateQueries({queryKey:[`pipelines`]})}),J=d({mutationFn:()=>h(),onSuccess:()=>e.invalidateQueries({queryKey:[`pipelines`]})}),Y=d({mutationFn:e=>re(e),onSuccess:t=>{e.invalidateQueries({queryKey:[`pipelines`]}),R(new Set),t.failed.length>0&&alert(`关闭完成:成功 ${t.success.length} 个,失败 ${t.failed.length} 个\n失败原因:\n${t.errors.map(e=>`${e.id}: ${e.reason}`).join(`
2
- `)}`)}});if(W)return(0,D.jsxs)(`div`,{className:`space-y-6`,children:[(0,D.jsx)(w,{rows:2}),(0,D.jsx)(T,{count:5})]});if(le)return(0,D.jsx)(oe,{message:`Pipeline 数据加载失败`,onRetry:()=>G()});let X=U?.items||[],Z=K?.items||[],Q=K?.total||0,$=X.filter(e=>!z||e.requirement.toLowerCase().includes(z.toLowerCase())||e.project.toLowerCase().includes(z.toLowerCase())),de=j===`all`||j===`active`,fe=j===`all`||j===`completed`,pe=Math.ceil(Q/F);return(0,D.jsxs)(`div`,{className:`space-y-6`,children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,D.jsxs)(`span`,{className:`text-sm text-gray-500`,children:[X.length,` 个活跃 · `,Q,` 个已完成`,L.size>0&&` · 已选 ${L.size} 个`]}),(0,D.jsxs)(`select`,{value:j,onChange:e=>{M(e.target.value),P(1)},className:`px-3 py-1.5 border border-gray-200 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500`,children:[(0,D.jsx)(`option`,{value:`all`,children:`全部状态`}),(0,D.jsx)(`option`,{value:`active`,children:`仅活跃`}),(0,D.jsx)(`option`,{value:`completed`,children:`仅已完成`})]})]}),(0,D.jsxs)(`div`,{className:`flex gap-2`,children:[$.length>0&&L.size>0&&(0,D.jsxs)(_,{variant:`danger`,size:`sm`,icon:n,onClick:()=>{L.size!==0&&H({open:!0,title:`批量关闭 Pipeline`,description:`确认关闭选中的 ${L.size} 个 Pipeline?`,count:L.size,onConfirm:()=>{Y.mutate(Array.from(L)),H(e=>({...e,open:!1}))}})},loading:Y.isPending,children:[`批量关闭 (`,L.size,`)`]}),$.length>0&&(0,D.jsxs)(D.Fragment,{children:[(0,D.jsx)(_,{variant:`secondary`,size:`sm`,onClick:()=>{L.size===$.length?R(new Set):R(new Set($.map(e=>e.id)))},children:L.size===$.length?`取消全选`:`全选`}),(0,D.jsx)(_,{variant:`danger`,size:`sm`,icon:te,onClick:()=>{H({open:!0,title:`清理过期 Pipeline`,description:`确认关闭所有过期 Pipeline?`,onConfirm:()=>{J.mutate(),H(e=>({...e,open:!1}))}})},loading:J.isPending,children:`清理过期`})]}),(0,D.jsx)(_,{variant:`secondary`,size:`sm`,icon:s,onClick:()=>G(),children:`刷新`}),(0,D.jsx)(_,{variant:`secondary`,size:`sm`,icon:t,onClick:()=>{let e=[...X,...Z];b(`pipelines-${c(new Date,`yyyyMMdd-HHmmss`)}.csv`,[`ID`,`需求`,`复杂度`,`状态`,`项目`,`创建时间`],e.map(e=>[e.id,e.requirement,e.complexity,e.status,e.project,e.createdAt]))},children:`导出 CSV`})]})]}),Y.isPending&&(0,D.jsx)(se,{total:L.size,done:0,label:`批量关闭中`}),de&&X.length>0&&(0,D.jsxs)(`div`,{children:[(0,D.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,D.jsxs)(`h3`,{className:`text-sm font-semibold text-gray-500 uppercase tracking-wider`,children:[`活跃中 (`,$.length,`/`,X.length,`)`]}),(0,D.jsxs)(`div`,{className:`relative w-64`,children:[(0,D.jsx)(a,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400`}),(0,D.jsx)(`input`,{type:`text`,placeholder:`搜索活跃 Pipeline...`,value:z,onChange:e=>B(e.target.value),className:`w-full pl-10 pr-4 py-1.5 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm`})]})]}),(0,D.jsx)(`div`,{className:`space-y-3`,children:$.map((e,t)=>(0,D.jsx)(ie.div,{initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{delay:t*.05},children:(0,D.jsx)(v,{className:`!p-0 overflow-hidden cursor-pointer hover:shadow-md transition-shadow`,onClick:()=>o(`/pipelines/${e.id}`),children:(0,D.jsxs)(`div`,{className:`flex items-center justify-between p-4`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-4 flex-1 min-w-0`,children:[(0,D.jsx)(`input`,{type:`checkbox`,checked:L.has(e.id),onChange:t=>{t.stopPropagation(),R(t=>{let n=new Set(t);return n.has(e.id)?n.delete(e.id):n.add(e.id),n})},onClick:e=>e.stopPropagation(),className:`h-4 w-4 rounded border-gray-300 text-blue-600 flex-shrink-0`}),(0,D.jsx)(`div`,{className:`flex items-center justify-center w-10 h-10 rounded-lg`,style:{backgroundColor:`#10b98120`},children:(0,D.jsx)(i,{className:`h-5 w-5`,style:{color:`#10b981`}})}),(0,D.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,D.jsx)(`div`,{className:`font-medium text-gray-900 truncate`,children:e.requirement}),(0,D.jsxs)(`div`,{className:`text-sm text-gray-500 flex items-center gap-3 mt-1`,children:[(0,D.jsx)(y,{variant:`primary`,size:`sm`,children:`动态`}),(0,D.jsx)(`span`,{children:e.project}),(0,D.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,D.jsx)(ee,{className:`h-3 w-3`}),c(g(e.createdAt),`MM-dd HH:mm`)]})]}),e.type===`dynamic`&&e.nodeConfig&&(0,D.jsxs)(`div`,{className:`mt-2 flex items-center gap-3 text-xs text-gray-600`,children:[(0,D.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,D.jsx)(i,{className:`h-3 w-3`}),e.nodeConfig.totalNodes,` 个节点`]}),e.nodeConfig.boundSkills.length>0&&(0,D.jsxs)(`span`,{className:`flex items-center gap-1`,children:[`⚡ `,e.nodeConfig.boundSkills.length,` 个技能`]}),(0,D.jsxs)(`span`,{className:`text-gray-400`,children:[`节点类型:`,e.nodeConfig.nodeTypes.map(e=>e.split(/[_\-.]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)).join(` → `)]})]})]})]}),(0,D.jsx)(_,{variant:`danger`,size:`sm`,icon:n,onClick:()=>{H({open:!0,title:`关闭 Pipeline`,description:`确认关闭此 Pipeline?`,onConfirm:()=>{q.mutate(e.id),H(e=>({...e,open:!1}))}})},loading:q.isPending,children:`关闭`})]})})},e.id))})]}),fe&&(0,D.jsxs)(`div`,{children:[(0,D.jsx)(`h3`,{className:`text-sm font-semibold text-gray-500 uppercase tracking-wider mb-3`,children:`历史记录`}),(0,D.jsxs)(v,{children:[(0,D.jsxs)(`div`,{className:`flex flex-wrap gap-3 items-center mb-4 pb-4 border-b border-gray-100`,children:[(0,D.jsxs)(`div`,{className:`relative flex-1 min-w-[240px] max-w-sm`,children:[(0,D.jsx)(a,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400`}),(0,D.jsx)(`input`,{type:`text`,placeholder:`搜索需求描述...`,value:p,onChange:e=>{O(e.target.value),P(1)},className:`w-full pl-10 pr-4 py-2 border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 text-sm`})]}),(0,D.jsxs)(`select`,{value:A,onChange:e=>{ce(e.target.value),P(1)},className:`px-3 py-2 border border-gray-200 rounded-lg text-sm`,children:[(0,D.jsx)(`option`,{value:``,children:`全部复杂度`}),(0,D.jsx)(`option`,{value:`simple`,children:`简单`}),(0,D.jsx)(`option`,{value:`moderate`,children:`中等`}),(0,D.jsx)(`option`,{value:`complex`,children:`复杂`})]})]}),(0,D.jsx)(`div`,{className:`overflow-x-auto`,children:(0,D.jsxs)(`table`,{className:`w-full`,children:[(0,D.jsx)(`thead`,{children:(0,D.jsxs)(`tr`,{className:`text-left text-sm text-gray-600`,children:[(0,D.jsx)(`th`,{className:`pb-3 font-medium`,children:`需求`}),(0,D.jsx)(`th`,{className:`pb-3 font-medium`,children:`项目`}),(0,D.jsx)(`th`,{className:`pb-3 font-medium`,children:`类型`}),(0,D.jsx)(`th`,{className:`pb-3 font-medium`,children:`复杂度`}),(0,D.jsx)(`th`,{className:`pb-3 font-medium`,children:`时间`}),(0,D.jsx)(`th`,{className:`pb-3 font-medium`,children:`操作`})]})}),(0,D.jsx)(`tbody`,{className:`text-sm`,children:Z.map(e=>(0,D.jsxs)(`tr`,{className:`border-t border-gray-50 hover:bg-gray-50 cursor-pointer`,onClick:()=>o(`/pipelines/${e.id}`),children:[(0,D.jsx)(`td`,{className:`py-3 max-w-xs truncate`,children:e.requirement}),(0,D.jsx)(`td`,{className:`py-3`,children:e.project}),(0,D.jsx)(`td`,{className:`py-3`,children:(0,D.jsxs)(`div`,{className:`space-y-1`,children:[(0,D.jsx)(y,{size:`sm`,variant:`primary`,children:`动态编排`}),e.nodeConfig&&(0,D.jsxs)(`div`,{className:`text-xs text-gray-500 space-y-0.5`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,D.jsx)(i,{className:`h-3 w-3`}),e.nodeConfig.totalNodes,` 节点`,e.nodeConfig.boundSkills.length>0&&(0,D.jsxs)(`span`,{className:`ml-1`,children:[`· ⚡ `,e.nodeConfig.boundSkills.length,` 技能`]})]}),(0,D.jsx)(`div`,{className:`text-gray-400 max-w-[200px] truncate`,children:e.nodeConfig.nodeTypes.map(e=>e.split(/[_\-.]/).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join(` `)).join(` → `)})]})]})}),(0,D.jsx)(`td`,{className:`py-3`,children:(0,D.jsx)(y,{size:`sm`,variant:e.complexity===`complex`?`danger`:e.complexity===`moderate`?`warning`:`default`,children:e.complexity||`-`})}),(0,D.jsx)(`td`,{className:`py-3 text-gray-500`,children:c(g(e.createdAt),`MM-dd HH:mm`)}),(0,D.jsx)(`td`,{className:`py-3`,children:(0,D.jsx)(_,{variant:`ghost`,size:`sm`,icon:r,onClick:t=>{t.stopPropagation(),o(`/pipelines/${e.id}`)},children:`查看`})})]},e.id))})]})}),Q===0&&(0,D.jsx)(`div`,{className:`text-center py-12 text-gray-400`,children:`暂无历史记录`}),Q>0&&(0,D.jsx)(C,{currentPage:N,totalPages:pe,onPageChange:P,pageSize:F,onPageSizeChange:e=>{I(e),P(1)},totalItems:Q})]})]}),(0,D.jsx)(x,{open:V.open,title:V.title,description:V.description,count:V.count,variant:`danger`,onConfirm:V.onConfirm,onCancel:()=>H({...V,open:!1})})]})}export{O as default};
@@ -1 +0,0 @@
1
- import{a as e}from"./rolldown-runtime-COnpUsM8.js";import{$n as t,$t as n,An as r,Bn as i,Bt as a,Dn as o,Ft as s,Gn as c,Gt as l,It as u,Mn as d,Qt as ee,Tn as te,Ut as ne,Vt as re,Wt as f,Zt as p,cn as ie,dr as m,er as h,lr as g,mr as _,or as v,qn as y,rn as ae,rr as b,s as x,tn as S,vn as C}from"./vendor-BpBCrKSP.js";import{c as oe,l as se}from"./vendor-react-CXfI0Tes.js";import{a as ce,n as w,r as T}from"./vendor-query-BF-uT_c5.js";import{c as E}from"./vendor-flow-D-_WxBha.js";import{A as le,L as ue,R as de,T as fe,Tt as pe,Ut as D,Wt as me,Y as O,Yt as k,d as A,dt as j,en as M,ft as N,j as P,mt as he,ut as ge,wt as _e,z as ve}from"./client-B_-7qCOP.js";import{a as ye,c as be,l as F,n as I,r as L,t as R}from"./ui-B2gvOcFY.js";import{t as xe}from"./Pagination-ooTI9JPa.js";import{t as Se}from"./Breadcrumb-DbDeWYcH.js";var z=e(_(),1),B=E(),Ce={spec:{label:`规格`,icon:r,color:`text-blue-600`,bg:`bg-blue-50`,border:`border-blue-200`},security:{label:`安全`,icon:p,color:`text-red-600`,bg:`bg-red-50`,border:`border-red-200`},quality:{label:`质量`,icon:d,color:`text-purple-600`,bg:`bg-purple-50`,border:`border-purple-200`},test:{label:`测试`,icon:f,color:`text-green-600`,bg:`bg-green-50`,border:`border-green-200`},performance:{label:`性能`,icon:s,color:`text-orange-600`,bg:`bg-orange-50`,border:`border-orange-200`}},V={fail:{label:`失败`,icon:c,color:`text-red-600`,bg:`bg-red-50`,border:`border-red-300`},warn:{label:`警告`,icon:a,color:`text-yellow-600`,bg:`bg-yellow-50`,border:`border-yellow-300`},pass:{label:`通过`,icon:y,color:`text-green-600`,bg:`bg-green-50`,border:`border-green-300`}};function we({level:e}){let t=V[e];if(!t)return(0,B.jsx)(R,{size:`sm`,children:e});let n=t.icon;return(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium border ${t.bg} ${t.color} ${t.border}`,children:[(0,B.jsx)(n,{className:`h-3 w-3`}),t.label]})}function Te({category:e}){let t=Ce[e];if(!t)return(0,B.jsx)(R,{size:`sm`,children:e});let n=t.icon;return(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium border ${t.bg} ${t.color} ${t.border}`,children:[(0,B.jsx)(n,{className:`h-3 w-3`}),t.label]})}function H(){let{encodedPath:e}=se(),c=oe(),d=ce(),[f,p]=(0,z.useState)(`sessions`),[_,v]=(0,z.useState)(!1),[y,S]=(0,z.useState)(``),[C,E]=(0,z.useState)(!1),[D,O]=(0,z.useState)(``),[k,A]=(0,z.useState)(null),[j,N]=(0,z.useState)(1),[P,Ce]=(0,z.useState)(20),[V,H]=(0,z.useState)(null),De=async e=>{try{let t=await he(e);await navigator.clipboard.writeText(t.data.context),H(e),M(`上下文已复制,请粘贴到 Claude Code 进行修复`,`success`),setTimeout(()=>H(null),3e3)}catch{M(`复制失败`,`error`)}},U=e?encodeURIComponent(e):``,{data:W,isLoading:Oe,isError:ke,error:Ae}=T({queryKey:[`project`,e],queryFn:()=>ge(U).then(e=>e.data),enabled:!!e}),{data:G}=T({queryKey:[`claudemd`,e],queryFn:()=>ue(U).then(e=>e.data),enabled:!!e&&f===`claudemd`}),{data:K}=T({queryKey:[`claudemd-modules`,e],queryFn:()=>de(U).then(e=>e.data),enabled:!!e&&f===`claudemd`}),je=w({mutationFn:()=>fe(U),onSuccess:()=>{d.invalidateQueries({queryKey:[`projects`]}),c(`/projects`)},onError:e=>M(e.message||`删除失败`,`error`)}),Me=w({mutationFn:e=>me(U,e),onSuccess:()=>{d.invalidateQueries({queryKey:[`claudemd`,e]}),E(!1)},onError:e=>M(e.message||`保存失败`,`error`)}),q=w({mutationFn:()=>le(U),onSuccess:t=>{d.invalidateQueries({queryKey:[`claudemd`,e]}),A({success:!0,message:t.data.distilled?`蒸馏完成,压缩 ${t.data.reduction}%(${t.data.before} → ${t.data.after} 字符):${t.data.summary}`:t.data.message??`无需蒸馏`})},onError:e=>{A({success:!1,message:e.message})}}),[J,Y]=(0,z.useState)(null),[Ne,Pe]=(0,z.useState)(!1),[Fe,Ie]=(0,z.useState)(!1),[X,Z]=(0,z.useState)(null),[Le,Re]=(0,z.useState)(!1),[Q,$]=(0,z.useState)(null);return ke?(0,B.jsxs)(`div`,{className:`flex items-center justify-center h-96 text-red-500`,children:[`加载失败:`,Ae?.message||`未知错误`]}):Oe||!W?(0,B.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,B.jsx)(`div`,{className:`animate-spin rounded-full h-12 w-12 border-b-2 border-blue-600`})}):(0,B.jsxs)(`div`,{className:`space-y-6`,children:[(0,B.jsx)(Se,{items:[{label:`项目列表`,path:`/projects`},{label:W.projectName}]}),(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,B.jsx)(I,{variant:`ghost`,size:`sm`,icon:g,onClick:()=>c(`/projects`),children:`返回`}),(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(`div`,{className:`flex items-center justify-center w-10 h-10 rounded-lg bg-blue-50`,children:(0,B.jsx)(o,{className:`h-5 w-5 text-blue-600`})}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`text-xl font-bold text-gray-900`,children:W.projectName}),(0,B.jsx)(`p`,{className:`text-sm text-gray-500`,children:W.projectPath})]})]})]}),(0,B.jsx)(I,{variant:`danger`,size:`sm`,icon:ne,onClick:()=>v(!0),children:`删除项目`})]}),_&&(0,B.jsx)(`div`,{className:`fixed inset-0 bg-black/50 flex items-center justify-center z-50`,children:(0,B.jsxs)(L,{className:`max-w-md`,children:[(0,B.jsxs)(`h3`,{className:`text-lg font-bold text-red-600 mb-3 flex items-center gap-2`,children:[(0,B.jsx)(a,{className:`h-5 w-5`}),`危险操作:删除项目`]}),(0,B.jsxs)(`div`,{className:`bg-red-50 border border-red-200 rounded-lg p-3 mb-4`,children:[(0,B.jsxs)(`p`,{className:`text-sm text-red-800 font-medium mb-2`,children:[`⚠️ 此操作将永久删除项目 `,(0,B.jsx)(`strong`,{children:W.projectName}),` 的所有监控数据:`]}),(0,B.jsxs)(`ul`,{className:`text-xs text-red-700 space-y-1 ml-4 list-disc`,children:[(0,B.jsx)(`li`,{children:`所有会话记录`}),(0,B.jsx)(`li`,{children:`所有 Pipeline 历史`}),(0,B.jsx)(`li`,{children:`所有质量问题记录`}),(0,B.jsx)(`li`,{children:`所有事件日志`}),(0,B.jsx)(`li`,{children:`所有知识节点`})]}),(0,B.jsx)(`p`,{className:`text-xs text-red-800 font-bold mt-2`,children:`此操作无法撤销,无法恢复!`})]}),(0,B.jsxs)(`div`,{className:`mb-4`,children:[(0,B.jsxs)(`label`,{className:`block text-sm font-medium text-gray-700 mb-2`,children:[`请输入项目名称 `,(0,B.jsx)(`code`,{className:`px-1.5 py-0.5 bg-gray-100 rounded text-red-600`,children:W.projectName}),` 以确认删除:`]}),(0,B.jsx)(`input`,{type:`text`,value:y,onChange:e=>S(e.target.value),placeholder:`输入项目名称`,className:`w-full px-3 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-red-500 focus:border-red-500`,autoFocus:!0})]}),(0,B.jsxs)(`div`,{className:`flex gap-2 justify-end`,children:[(0,B.jsx)(I,{variant:`ghost`,size:`sm`,onClick:()=>{v(!1),S(``)},children:`取消`}),(0,B.jsx)(I,{variant:`danger`,size:`sm`,disabled:y!==W.projectName,onClick:()=>{y===W.projectName&&(je.mutate(),v(!1),S(``))},children:`确认删除`})]})]})}),(0,B.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-5 gap-4`,children:[(0,B.jsx)(L,{className:`!p-4 cursor-pointer hover:shadow-md transition-shadow`,onClick:()=>p(`sessions`),children:(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(m,{className:`h-8 w-8 text-blue-500`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-2xl font-bold text-gray-900`,children:W.sessions.total}),(0,B.jsx)(`p`,{className:`text-sm text-gray-500`,children:`会话`})]})]})}),(0,B.jsx)(L,{className:`!p-4 cursor-pointer hover:shadow-md transition-shadow`,onClick:()=>p(`pipelines`),children:(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(te,{className:`h-8 w-8 text-green-500`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-2xl font-bold text-gray-900`,children:W.pipelines.total}),(0,B.jsx)(`p`,{className:`text-sm text-gray-500`,children:`Pipeline`})]})]})}),(0,B.jsx)(L,{className:`!p-4 cursor-pointer hover:shadow-md transition-shadow`,onClick:()=>p(`api`),children:(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(l,{className:`h-8 w-8 text-purple-500`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-2xl font-bold text-gray-900`,children:W.events.total}),(0,B.jsx)(`p`,{className:`text-sm text-gray-500`,children:`事件`})]})]})}),(0,B.jsx)(L,{className:`!p-4 cursor-pointer hover:shadow-md transition-shadow`,onClick:()=>p(`quality`),children:(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(ee,{className:`h-8 w-8 text-orange-500`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-2xl font-bold text-gray-900`,children:W.quality.total}),(0,B.jsx)(`p`,{className:`text-sm text-gray-500`,children:`质量`})]})]})}),(0,B.jsx)(L,{className:`!p-4 cursor-pointer hover:shadow-md transition-shadow`,onClick:()=>p(`knowledge`),children:(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(b,{className:`h-8 w-8 text-pink-500`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-2xl font-bold text-gray-900`,children:W.knowledge.total}),(0,B.jsx)(`p`,{className:`text-sm text-gray-500`,children:`知识`})]})]})})]}),(0,B.jsx)(`div`,{className:`flex gap-1 bg-gray-100 p-1 rounded-lg w-fit flex-wrap`,children:[{key:`sessions`,label:`会话`},{key:`pipelines`,label:`Pipeline`},{key:`quality`,label:`质量问题`},{key:`knowledge`,label:`知识文档`},{key:`rules`,label:`规则管理`},{key:`convention`,label:`自定义规范`},{key:`claudemd`,label:`CLAUDE.md`},{key:`environment`,label:`环境初始化`}].map(e=>(0,B.jsx)(`button`,{onClick:()=>p(e.key),className:`px-4 py-2 rounded-md text-sm font-medium transition-colors ${f===e.key?`bg-white text-gray-900 shadow-sm`:`text-gray-600 hover:text-gray-900`}`,children:e.label},e.key))}),f===`sessions`&&(0,B.jsxs)(L,{children:[(0,B.jsx)(`div`,{className:`overflow-x-auto`,children:(0,B.jsxs)(`table`,{className:`w-full`,children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{className:`text-left text-sm text-gray-600`,children:[(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`会话 ID`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`首条对话`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`状态`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`开始时间`})]})}),(0,B.jsx)(`tbody`,{className:`text-sm`,children:(()=>{let e=W.sessions.items;return Math.ceil(e.length/P),(0,B.jsxs)(B.Fragment,{children:[e.slice((j-1)*P,j*P).map(e=>(0,B.jsxs)(`tr`,{onClick:()=>c(`/sessions/${e.session_id}`,{state:{from:`/projects/${U}`}}),className:`border-t border-gray-50 hover:bg-blue-50 cursor-pointer transition-colors`,children:[(0,B.jsx)(`td`,{className:`py-3 font-mono text-xs`,children:e.session_id.slice(0,12)}),(0,B.jsx)(`td`,{className:`py-3 text-gray-700 max-w-md truncate`,title:e.first_requirement,children:e.first_requirement?e.first_requirement:`(无对话记录)`}),(0,B.jsx)(`td`,{className:`py-3`,children:(0,B.jsx)(R,{size:`sm`,className:be(e.status),children:e.status})}),(0,B.jsx)(`td`,{className:`py-3 text-gray-500`,children:x(F(e.start_time),`MM-dd HH:mm`)})]},e.session_id)),e.length===0&&(0,B.jsx)(`tr`,{children:(0,B.jsx)(`td`,{colSpan:4,className:`py-8 text-center text-gray-400`,children:`暂无会话记录`})})]})})()})]})}),(()=>{let e=W.sessions.items,t=Math.ceil(e.length/P);return e.length>P?(0,B.jsx)(`div`,{className:`mt-4`,children:(0,B.jsx)(xe,{currentPage:j,totalPages:t,onPageChange:N,pageSize:P,onPageSizeChange:e=>{Ce(e),N(1)},totalItems:e.length})}):null})()]}),f===`pipelines`&&(0,B.jsx)(L,{children:(0,B.jsx)(`div`,{className:`overflow-x-auto`,children:(0,B.jsxs)(`table`,{className:`w-full`,children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{className:`text-left text-sm text-gray-600`,children:[(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`需求`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`阶段`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`时间`})]})}),(0,B.jsx)(`tbody`,{className:`text-sm`,children:W.pipelines.items.map(e=>(0,B.jsxs)(`tr`,{onClick:()=>c(`/pipelines/${e.id}`,{state:{from:`/projects/${U}`}}),className:`border-t border-gray-50 hover:bg-blue-50 cursor-pointer transition-colors`,children:[(0,B.jsx)(`td`,{className:`py-3 max-w-xs truncate`,children:e.requirement}),(0,B.jsx)(`td`,{className:`py-3`,children:(0,B.jsx)(R,{size:`sm`,children:e.phase})}),(0,B.jsx)(`td`,{className:`py-3 text-gray-500`,children:x(F(e.updated_at),`MM-dd HH:mm`)})]},e.id))})]})})}),f===`quality`&&(0,B.jsxs)(L,{children:[(0,B.jsx)(`div`,{className:`flex items-center justify-between mb-4`,children:(0,B.jsxs)(`p`,{className:`text-sm text-gray-600`,children:[`共 `,W.quality.total,` 个质量问题`]})}),(0,B.jsx)(`div`,{className:`overflow-x-auto`,children:(0,B.jsxs)(`table`,{className:`w-full`,children:[(0,B.jsx)(`thead`,{children:(0,B.jsxs)(`tr`,{className:`text-left text-sm text-gray-600`,children:[(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`问题`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`级别`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`分类`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`状态`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`,children:`时间`}),(0,B.jsx)(`th`,{className:`pb-3 font-medium`})]})}),(0,B.jsx)(`tbody`,{className:`text-sm`,children:W.quality.items.map(e=>(0,B.jsxs)(`tr`,{className:`border-t border-gray-50 hover:bg-blue-50 transition-colors`,children:[(0,B.jsx)(`td`,{className:`py-3 max-w-xs truncate`,children:e.message}),(0,B.jsx)(`td`,{className:`py-3`,children:(0,B.jsx)(we,{level:e.level})}),(0,B.jsx)(`td`,{className:`py-3`,children:(0,B.jsx)(Te,{category:e.category})}),(0,B.jsx)(`td`,{className:`py-3`,children:(0,B.jsx)(R,{size:`sm`,variant:e.resolved?`success`:`default`,children:e.resolved?`已解决`:`未解决`})}),(0,B.jsx)(`td`,{className:`py-3 text-gray-500`,children:x(F(e.created_at),`MM-dd HH:mm`)}),(0,B.jsx)(`td`,{className:`py-3`,children:!e.resolved&&(0,B.jsxs)(`button`,{onClick:()=>De(e.id),className:`flex items-center gap-1 px-2 py-1 text-xs text-gray-500 hover:text-blue-600 hover:bg-blue-50 rounded transition-colors`,title:`复制上下文到剪贴板`,children:[V===e.id?(0,B.jsx)(h,{className:`h-3.5 w-3.5 text-green-500`}):(0,B.jsx)(i,{className:`h-3.5 w-3.5`}),V===e.id?`已复制`:`复制`]})})]},e.id))})]})})]}),f===`knowledge`&&(0,B.jsx)(L,{children:(0,B.jsx)(`div`,{className:`space-y-3`,children:W.knowledge.items.map(e=>(0,B.jsx)(`div`,{className:`p-4 border border-gray-100 rounded-lg hover:bg-blue-50 cursor-pointer transition-colors`,children:(0,B.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,B.jsx)(r,{className:`h-5 w-5 text-blue-500 flex-shrink-0 mt-0.5`}),(0,B.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,B.jsx)(`h4`,{className:`font-medium text-gray-900 mb-1`,children:e.title}),(0,B.jsxs)(`p`,{className:`text-sm text-gray-600 line-clamp-2`,children:[e.content?.substring(0,150),`...`]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-3 mt-2 text-xs text-gray-400`,children:[(0,B.jsx)(R,{size:`sm`,children:e.node_type}),(0,B.jsxs)(`span`,{children:[`更新于 `,x(F(e.updated_at),`MM-dd HH:mm`)]})]})]})]})},e.id))})}),f===`rules`&&(0,B.jsxs)(`div`,{className:`space-y-6`,children:[(0,B.jsx)(L,{title:`意图识别规则`,children:(0,B.jsx)(`div`,{className:`space-y-2`,children:W.rules.intentRules.slice(0,10).map(e=>(0,B.jsx)(`div`,{className:`flex items-center justify-between p-3 border border-gray-100 rounded-lg`,children:(0,B.jsxs)(`div`,{className:`flex-1`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(R,{size:`sm`,children:e.rule_type}),(0,B.jsx)(`code`,{className:`text-xs text-gray-600`,children:e.pattern})]}),(0,B.jsxs)(`div`,{className:`flex items-center gap-3 mt-1 text-xs text-gray-400`,children:[(0,B.jsxs)(`span`,{children:[`命中 `,e.hit_count,` 次`]}),(0,B.jsxs)(`span`,{children:[`置信度 `,(e.confidence*100).toFixed(0),`%`]})]})]})},e.id))})}),(0,B.jsx)(L,{title:`任务模式`,children:(0,B.jsx)(`div`,{className:`space-y-2`,children:W.rules.taskPatterns.slice(0,10).map(e=>(0,B.jsxs)(`div`,{className:`p-3 border border-gray-100 rounded-lg`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,B.jsx)(R,{size:`sm`,children:e.task_type}),(0,B.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-gray-500`,children:[(0,B.jsx)(re,{className:`h-3 w-3`}),(0,B.jsxs)(`span`,{children:[`效果 `,(e.effectiveness_score*100).toFixed(0),`%`]})]})]}),(0,B.jsx)(`p`,{className:`text-sm text-gray-600 mb-1`,children:e.failure_pattern}),(0,B.jsxs)(`p`,{className:`text-xs text-gray-500`,children:[`策略:`,e.prevention_strategy]})]},e.id))})})]}),f===`convention`&&e&&(0,B.jsx)(Ee,{encodedPath:U}),f===`claudemd`&&(0,B.jsxs)(`div`,{className:`space-y-4`,children:[(0,B.jsx)(L,{children:(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,B.jsx)(r,{className:`h-5 w-5 text-blue-500`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`font-medium text-gray-900`,children:`CLAUDE.md`}),(0,B.jsx)(`p`,{className:`text-xs text-gray-500`,children:G?.exists?`${(G.size/1024).toFixed(1)} KB · ${G.hasAutoSection?`含自动区块`:`纯用户内容`}`:`文件不存在`})]})]}),(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsx)(I,{variant:`ghost`,size:`sm`,icon:ae,onClick:()=>d.invalidateQueries({queryKey:[`claudemd`,e]}),children:`刷新`}),G?.exists&&(0,B.jsx)(I,{variant:`secondary`,size:`sm`,icon:s,onClick:()=>{A(null),q.mutate()},disabled:q.isPending,title:`AI 蒸馏:压缩冗余内容,保留核心规范`,children:q.isPending?`蒸馏中...`:`蒸馏`}),G?.exists&&!C&&(0,B.jsx)(I,{size:`sm`,icon:ie,onClick:()=>{O(G.content||``),E(!0)},children:`编辑`})]})]})}),k&&(0,B.jsx)(L,{children:(0,B.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,B.jsx)(`p`,{className:`text-sm ${k.success?`text-gray-900`:`text-red-600`}`,children:k.message}),(0,B.jsx)(I,{variant:`ghost`,size:`sm`,icon:u,onClick:()=>A(null)})]})}),C&&(0,B.jsxs)(L,{children:[(0,B.jsx)(`textarea`,{className:`w-full px-3 py-2 text-sm border border-gray-200 rounded-md font-mono h-96 resize-y`,value:D,onChange:e=>O(e.target.value)}),(0,B.jsxs)(`div`,{className:`flex gap-2 justify-end mt-3`,children:[(0,B.jsx)(I,{variant:`ghost`,size:`sm`,icon:u,onClick:()=>E(!1),children:`取消`}),(0,B.jsx)(I,{size:`sm`,icon:t,onClick:()=>Me.mutate(D),children:`保存`})]})]}),!C&&G?.exists&&(0,B.jsx)(L,{title:`内容预览`,children:(0,B.jsx)(`pre`,{className:`text-xs text-gray-700 bg-gray-50 p-4 rounded-md overflow-auto max-h-96 whitespace-pre-wrap font-mono`,children:G.content})}),(0,B.jsx)(L,{title:`子模块 (${K?.total??0})`,children:K?.items.length===0?(0,B.jsx)(`p`,{className:`text-sm text-gray-400`,children:`未检测到子模块`}):(0,B.jsx)(`div`,{className:`space-y-2`,children:K?.items.map(e=>(0,B.jsxs)(`div`,{className:`flex items-center justify-between p-3 border border-gray-100 rounded-lg`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(o,{className:`h-4 w-4 text-gray-400`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:e.name}),(0,B.jsx)(`p`,{className:`text-xs text-gray-400`,children:e.relativePath})]})]}),(0,B.jsx)(R,{size:`sm`,variant:e.hasClaudeMd?`success`:`default`,children:e.hasClaudeMd?`已有 CLAUDE.md`:`未生成`})]},e.path))})})]}),f===`environment`&&(0,B.jsxs)(`div`,{className:`space-y-4`,children:[(0,B.jsx)(L,{children:(0,B.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`font-medium text-gray-900 mb-1`,children:`环境检测 & 项目初始化`}),(0,B.jsx)(`p`,{className:`text-sm text-gray-500`,children:`检测项目技术栈、创建 .claude-forge 目录、自动生成 CLAUDE.md(如不存在)`})]}),(0,B.jsxs)(`div`,{className:`flex gap-2 flex-shrink-0`,children:[(0,B.jsx)(I,{variant:`secondary`,size:`sm`,icon:n,onClick:async()=>{Pe(!0),Y(null);try{Y((await ve(U)).data.profile)}catch(e){Y({error:String(e)})}finally{Pe(!1)}},disabled:Ne,children:Ne?`检测中...`:`环境检测`}),(0,B.jsx)(I,{size:`sm`,icon:s,onClick:async()=>{Ie(!0),Z(null);try{let t=await pe(U);Z({success:t.data.success,message:t.data.message,claudeMdGenerated:t.data.claudeMdGenerated}),Y(t.data.profile),d.invalidateQueries({queryKey:[`claudemd`,e]}),d.invalidateQueries({queryKey:[`project`,e]})}catch(e){Z({success:!1,message:String(e)})}finally{Ie(!1)}},disabled:Fe,children:Fe?`初始化中...`:`一键初始化`}),(0,B.jsx)(I,{size:`sm`,icon:r,onClick:async()=>{Re(!0),$(null);try{let t=await _e(U);$({success:t.data.success,message:t.data.message}),t.data.skipped||(d.invalidateQueries({queryKey:[`conventions`,e]}),d.invalidateQueries({queryKey:[`claudemd`,e]}))}catch(e){$({success:!1,message:String(e)})}finally{Re(!1)}},disabled:Le,children:Le?`生成中...`:`初始化规范`})]})]})}),X&&(0,B.jsx)(L,{children:(0,B.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex items-start gap-2`,children:[X.success?(0,B.jsx)(t,{className:`h-4 w-4 text-green-500 mt-0.5 flex-shrink-0`}):(0,B.jsx)(u,{className:`h-4 w-4 text-red-500 mt-0.5 flex-shrink-0`}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-sm font-medium ${X.success?`text-gray-900`:`text-red-600`}`,children:X.message}),X.claudeMdGenerated&&(0,B.jsx)(`p`,{className:`text-xs text-green-600 mt-0.5`,children:`CLAUDE.md 已自动生成`})]})]}),(0,B.jsx)(I,{variant:`ghost`,size:`sm`,icon:u,onClick:()=>Z(null)})]})}),Q&&(0,B.jsx)(L,{children:(0,B.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex items-start gap-2`,children:[Q.success?(0,B.jsx)(t,{className:`h-4 w-4 text-green-500 mt-0.5 flex-shrink-0`}):(0,B.jsx)(u,{className:`h-4 w-4 text-red-500 mt-0.5 flex-shrink-0`}),(0,B.jsx)(`p`,{className:ye(`text-sm font-medium`,Q.success?`text-gray-900`:`text-red-600`),children:Q.message})]}),(0,B.jsx)(I,{variant:`ghost`,size:`sm`,icon:u,onClick:()=>$(null)})]})}),J&&!(`error`in J)&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(L,{title:`技术栈`,children:(0,B.jsxs)(`div`,{className:`grid grid-cols-2 gap-4 text-sm`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-xs text-gray-400 mb-1`,children:`项目名称`}),(0,B.jsx)(`p`,{className:`font-medium text-gray-900`,children:J.projectName})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-xs text-gray-400 mb-1`,children:`包管理器`}),(0,B.jsx)(`p`,{className:`font-medium text-gray-900`,children:J.packageManager||`未检测到`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-xs text-gray-400 mb-1`,children:`测试框架`}),(0,B.jsx)(`p`,{className:`font-medium text-gray-900`,children:J.testFramework||`未检测到`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-xs text-gray-400 mb-1`,children:`构建工具`}),(0,B.jsx)(`p`,{className:`font-medium text-gray-900`,children:J.buildTool||`未检测到`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-xs text-gray-400 mb-1`,children:`Linter`}),(0,B.jsx)(`p`,{className:`font-medium text-gray-900`,children:J.linter||`未检测到`})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`p`,{className:`text-xs text-gray-400 mb-1`,children:`Formatter`}),(0,B.jsx)(`p`,{className:`font-medium text-gray-900`,children:J.formatter||`未检测到`})]})]})}),J.languages.length>0&&(0,B.jsx)(L,{title:`检测到的语言`,children:(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:J.languages.map((e,t)=>(0,B.jsxs)(R,{size:`sm`,children:[e.name,e.version?` ${e.version}`:``]},t))})}),J.frameworks.length>0&&(0,B.jsx)(L,{title:`检测到的框架`,children:(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:J.frameworks.map((e,t)=>(0,B.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2 py-1 bg-blue-50 rounded-md`,children:[(0,B.jsx)(`span`,{className:`text-sm font-medium text-blue-700`,children:e.name}),(0,B.jsx)(`span`,{className:`text-xs text-blue-400`,children:e.category})]},t))})}),Object.keys(J.scripts).length>0&&(0,B.jsx)(L,{title:`常用脚本`,children:(0,B.jsx)(`div`,{className:`space-y-1`,children:Object.entries(J.scripts).map(([e,t])=>(0,B.jsxs)(`div`,{className:`flex items-start gap-3 text-sm py-1 border-b border-gray-50 last:border-0`,children:[(0,B.jsx)(`span`,{className:`font-mono text-blue-600 flex-shrink-0 w-24`,children:e}),(0,B.jsx)(`span`,{className:`text-gray-600 font-mono text-xs break-all`,children:t})]},e))})}),J.keyDirectories.length>0&&(0,B.jsx)(L,{title:`关键目录`,children:(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:J.keyDirectories.map((e,t)=>(0,B.jsxs)(`div`,{className:`flex items-center gap-1.5 px-2 py-1 bg-gray-50 rounded-md`,children:[(0,B.jsx)(o,{className:`h-3.5 w-3.5 text-gray-400`}),(0,B.jsx)(`span`,{className:`text-sm text-gray-700 font-mono`,children:e})]},t))})})]}),J&&`error`in J&&(0,B.jsx)(L,{children:(0,B.jsxs)(`p`,{className:`text-sm text-red-600`,children:[`检测失败:`,J.error]})})]})]})}function Ee({encodedPath:e}){let[t,n]=(0,z.useState)(`bindings`),[r,i]=(0,z.useState)(!1),[a,o]=(0,z.useState)(``),[c,l]=(0,z.useState)(!1),d=ce(),{data:ee,isLoading:te}=T({queryKey:[`project-conventions`,e],queryFn:()=>j(e).then(e=>e.data)}),{data:ne}=T({queryKey:[`global-conventions`],queryFn:()=>O().then(e=>e.data),enabled:r}),{data:re}=T({queryKey:[`project-custom-yaml`,e],queryFn:()=>N(e).then(e=>e.data),enabled:c}),f=w({mutationFn:t=>A(e,t).then(e=>e.data),onSuccess:t=>{M(`已绑定:${t.convention.name}`,`success`),i(!1),d.invalidateQueries({queryKey:[`project-conventions`,e]})}}),p=w({mutationFn:t=>D(e,t).then(e=>e.data),onSuccess:()=>{M(`已解绑`,`success`),d.invalidateQueries({queryKey:[`project-conventions`,e]})}}),m=w({mutationFn:()=>P(e).then(e=>e.data),onSuccess:t=>{M(t.isIncremental?`增量蒸馏完成,版本 ${t.convention.version}`:`蒸馏完成,生成 ${t.convention.name}`,`success`),d.invalidateQueries({queryKey:[`project-conventions`,e]}),n(`custom`)}}),h=w({mutationFn:t=>k(e,t).then(e=>e.data),onSuccess:()=>{M(`保存成功`,`success`),l(!1),d.invalidateQueries({queryKey:[`project-conventions`,e]})}}),g=ee?.bindings||[],_=ee?.custom,y=(ne?.items||[]).filter(e=>!g.some(t=>t.id===e.id)),b={official:`bg-amber-50 text-amber-700`,user:`bg-blue-50 text-blue-700`,community:`bg-purple-50 text-purple-700`},x={official:`官方`,user:`用户`,community:`社区`};return te?(0,B.jsx)(`div`,{className:`flex items-center justify-center py-16`,children:(0,B.jsx)(ae,{className:`h-6 w-6 animate-spin text-blue-500`})}):(0,B.jsxs)(`div`,{className:`space-y-4`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`div`,{className:`flex gap-1 bg-gray-100 rounded-lg p-1`,children:[`bindings`,`custom`].map(e=>(0,B.jsx)(`button`,{onClick:()=>n(e),className:`px-4 py-1.5 text-sm font-medium rounded-md transition-colors flex items-center gap-1.5 ${t===e?`bg-white text-gray-900 shadow-sm`:`text-gray-500 hover:text-gray-700`}`,children:e===`bindings`?`绑定的规范 (${g.length})`:(0,B.jsxs)(B.Fragment,{children:[`蒸馏规范`,_&&(0,B.jsx)(`span`,{className:`inline-flex items-center px-1.5 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-700`,children:`实际生效`})]})},e))}),(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[t===`bindings`&&(0,B.jsxs)(`button`,{onClick:()=>i(!r),className:`flex items-center gap-1.5 px-3 py-1.5 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors`,children:[(0,B.jsx)(C,{className:`h-3.5 w-3.5`}),`绑定规范`]}),t===`custom`&&(0,B.jsxs)(`button`,{onClick:()=>m.mutate(),disabled:m.isPending||g.length===0,className:`flex items-center gap-1.5 px-3 py-1.5 text-sm bg-purple-600 text-white rounded-lg hover:bg-purple-700 disabled:opacity-50 transition-colors`,title:g.length===0?`请先绑定至少一个规范`:``,children:[(0,B.jsx)(s,{className:`h-3.5 w-3.5 ${m.isPending?`animate-pulse`:``}`}),m.isPending?`蒸馏中...`:_?`重新蒸馏`:`生成蒸馏规范`]})]})]}),r&&(0,B.jsxs)(`div`,{className:`bg-white rounded-xl border border-blue-200 p-4 space-y-3`,children:[(0,B.jsx)(`div`,{className:`text-sm font-medium text-gray-700`,children:`从全局规范库选择绑定`}),y.length===0?(0,B.jsx)(`p`,{className:`text-sm text-gray-400`,children:`所有全局规范已全部绑定`}):(0,B.jsx)(`div`,{className:`grid gap-2`,children:y.map(e=>(0,B.jsxs)(`div`,{className:`flex items-center justify-between p-3 bg-gray-50 rounded-lg`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`text-sm font-medium text-gray-900`,children:e.name}),(0,B.jsx)(`span`,{className:`px-1.5 py-0.5 text-xs rounded-full ${b[e.source]||`bg-gray-100 text-gray-600`}`,children:x[e.source]||e.source}),(0,B.jsxs)(`span`,{className:`text-xs text-gray-400`,children:[`v`,e.version]})]}),(0,B.jsx)(`p`,{className:`text-xs text-gray-500 mt-0.5`,children:e.description})]}),(0,B.jsx)(`button`,{onClick:()=>f.mutate(e.id),disabled:f.isPending,className:`px-3 py-1.5 text-xs bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50 transition-colors`,children:`绑定`})]},e.id))}),(0,B.jsx)(`button`,{onClick:()=>i(!1),className:`text-xs text-gray-400 hover:text-gray-600`,children:`关闭`})]}),t===`bindings`&&(0,B.jsx)(`div`,{className:`space-y-3`,children:g.length===0?(0,B.jsxs)(`div`,{className:`text-center py-12 bg-white rounded-xl border border-gray-200`,children:[(0,B.jsx)(v,{className:`h-10 w-10 text-gray-300 mx-auto mb-3`}),(0,B.jsx)(`p`,{className:`text-gray-500 text-sm`,children:`尚未绑定任何规范`}),(0,B.jsx)(`p`,{className:`text-xs text-gray-400 mt-1`,children:`点击「绑定规范」从全局规范库选择`})]}):g.map(e=>(0,B.jsx)(`div`,{className:`bg-white rounded-xl border border-gray-200 p-4`,children:(0,B.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,B.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2 mb-1`,children:[(0,B.jsx)(`span`,{className:`font-medium text-gray-900`,children:e.name}),(0,B.jsx)(`span`,{className:`px-1.5 py-0.5 text-xs rounded-full font-medium ${b[e.source]||`bg-gray-100 text-gray-600`}`,children:x[e.source]||e.source}),(0,B.jsxs)(`span`,{className:`text-xs text-gray-400`,children:[`v`,e.version]})]}),(0,B.jsx)(`p`,{className:`text-xs text-gray-500`,children:e.description}),(0,B.jsxs)(`div`,{className:`flex gap-3 mt-2 text-xs text-gray-400`,children:[(0,B.jsxs)(`span`,{children:[e.roles?Object.keys(e.roles).length:0,` 个角色`]}),(0,B.jsxs)(`span`,{children:[e.quality_standards?.length||0,` 条质量标准`]})]})]}),(0,B.jsx)(`button`,{onClick:()=>p.mutate(e.id),disabled:p.isPending,className:`ml-4 p-1.5 text-gray-400 hover:text-red-500 rounded transition-colors`,title:`解绑`,children:(0,B.jsx)(u,{className:`h-4 w-4`})})]})},e.id))}),t===`custom`&&(0,B.jsx)(`div`,{className:`space-y-4`,children:_?(0,B.jsxs)(`div`,{className:`bg-white rounded-xl border border-gray-200 overflow-hidden`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between px-5 py-4 border-b border-gray-100`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`font-semibold text-gray-900`,children:_.name}),(0,B.jsxs)(`span`,{className:`text-xs text-gray-400`,children:[`v`,_.version]}),(0,B.jsx)(`span`,{className:`inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-700 border border-green-200`,children:`项目真实规范`})]}),(0,B.jsx)(`p`,{className:`text-xs text-gray-500 mt-0.5`,children:_.description})]}),!c&&(0,B.jsxs)(`button`,{onClick:()=>{o(re?.yaml||``),l(!0)},className:`flex items-center gap-1.5 px-3 py-1.5 text-sm bg-gray-100 text-gray-700 hover:bg-gray-200 rounded-lg transition-colors`,children:[(0,B.jsx)(ie,{className:`h-3.5 w-3.5`}),`编辑 YAML`]})]}),(0,B.jsx)(`div`,{className:`p-5`,children:c?(0,B.jsxs)(`div`,{className:`space-y-3`,children:[(0,B.jsx)(`textarea`,{value:a||re?.yaml||``,onChange:e=>o(e.target.value),rows:24,className:`w-full px-3 py-2 text-xs border border-gray-200 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 font-mono`}),(0,B.jsxs)(`div`,{className:`flex gap-2`,children:[(0,B.jsxs)(`button`,{onClick:()=>h.mutate(a),disabled:h.isPending,className:`flex items-center gap-1.5 px-4 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700 disabled:opacity-50 transition-colors`,children:[(0,B.jsx)(S,{className:`h-3.5 w-3.5`}),h.isPending?`保存中...`:`保存`]}),(0,B.jsx)(`button`,{onClick:()=>l(!1),className:`px-4 py-2 text-sm bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors`,children:`取消`})]})]}):(0,B.jsxs)(`div`,{className:`space-y-4 text-sm`,children:[_.principles&&(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`div`,{className:`text-xs font-medium text-gray-500 uppercase tracking-wide mb-2`,children:`核心原则`}),(0,B.jsx)(`pre`,{className:`text-xs text-gray-700 bg-gray-50 rounded-lg p-3 whitespace-pre-wrap border border-gray-100 max-h-48 overflow-y-auto`,children:typeof _.principles==`string`?_.principles:JSON.stringify(_.principles,null,2)})]}),_.quality_standards&&_.quality_standards.length>0&&(0,B.jsxs)(`div`,{children:[(0,B.jsxs)(`div`,{className:`text-xs font-medium text-gray-500 uppercase tracking-wide mb-2`,children:[`质量标准 (`,_.quality_standards.length,`)`]}),(0,B.jsxs)(`div`,{className:`space-y-1`,children:[_.quality_standards.slice(0,5).map((e,t)=>(0,B.jsxs)(`div`,{className:`flex items-start gap-2 text-xs text-gray-600`,children:[(0,B.jsx)(`span`,{className:`mt-0.5 px-1.5 py-0.5 rounded text-xs font-medium ${e.severity===`must`?`bg-red-50 text-red-600`:e.severity===`should`?`bg-yellow-50 text-yellow-600`:`bg-gray-100 text-gray-500`}`,children:e.severity||`rule`}),(0,B.jsx)(`span`,{children:e.rule||String(e)})]},t)),_.quality_standards.length>5&&(0,B.jsxs)(`p`,{className:`text-xs text-gray-400`,children:[`...还有 `,_.quality_standards.length-5,` 条`]})]})]})]})})]}):(0,B.jsxs)(`div`,{className:`text-center py-12 bg-white rounded-xl border border-gray-200`,children:[(0,B.jsx)(s,{className:`h-10 w-10 text-gray-300 mx-auto mb-3`}),(0,B.jsx)(`p`,{className:`text-gray-500 text-sm`,children:`尚未生成蒸馏规范`}),(0,B.jsx)(`p`,{className:`text-xs text-gray-400 mt-1`,children:g.length>0?`点击「生成蒸馏规范」将绑定的规范融合为项目专属规范`:`请先绑定至少一个规范,再生成蒸馏规范`})]})})]})}export{H as default};