@devflow-tools/devflow 0.16.0 → 0.16.2

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 (132) hide show
  1. package/dist/cli.js +78 -49
  2. package/dist/dashboard/404.html +1 -1
  3. package/dist/dashboard/_next/static/chunks/{736-db1a009357c222d2.js → 384-484184f146e1b764.js} +1 -1
  4. package/dist/dashboard/_next/static/chunks/{429-eac85fdc49353ed8.js → 429-3a8e078af4ea04bd.js} +1 -1
  5. package/dist/dashboard/_next/static/chunks/app/accuracy/{page-ca6a419d8b29eb4f.js → page-3b8b7448c9c7aeee.js} +1 -1
  6. package/dist/dashboard/_next/static/chunks/app/benchmark/page-d8f3f089f1d15cc7.js +1 -0
  7. package/dist/dashboard/_next/static/chunks/app/context/{page-1874ae1050524cb6.js → page-480f7324dee9cf74.js} +1 -1
  8. package/dist/dashboard/_next/static/chunks/app/doctor/{page-d542f2ab8d6a1c59.js → page-c32c81c69968099f.js} +1 -1
  9. package/dist/dashboard/_next/static/chunks/app/executions/{page-b98ec834dcda8d93.js → page-bee250062acc03a8.js} +1 -1
  10. package/dist/dashboard/_next/static/chunks/app/graph/{page-f0e7e15288791e9c.js → page-75947209e5b7741c.js} +1 -1
  11. package/dist/dashboard/_next/static/chunks/app/knowledge/{page-86808abd0d47c026.js → page-61a2d663940fb04b.js} +1 -1
  12. package/dist/dashboard/_next/static/chunks/app/{layout-4b78776412bd4fee.js → layout-572650e435947896.js} +1 -1
  13. package/dist/dashboard/_next/static/chunks/app/memory/{page-e169762426ac7a23.js → page-71d7c8926179b065.js} +1 -1
  14. package/dist/dashboard/_next/static/chunks/app/{page-c3e980fb2621470c.js → page-10dcf844701d7903.js} +1 -1
  15. package/dist/dashboard/_next/static/chunks/app/replay/{page-a8a465ed885df0cf.js → page-f354eb8ed0bfbb11.js} +1 -1
  16. package/dist/dashboard/_next/static/chunks/app/runs/[id]/{page-cc1d5182707fca5b.js → page-ffc0fda72263722c.js} +1 -1
  17. package/dist/dashboard/_next/static/chunks/app/runs/{page-bbf0a58abd70430c.js → page-4da6997bddcfeb45.js} +1 -1
  18. package/dist/dashboard/_next/static/chunks/app/settings/{page-9602ff45892e7910.js → page-0fa1d3b02152a97c.js} +1 -1
  19. package/dist/dashboard/_next/static/chunks/app/timeline/{page-a8eb3caf23be8a86.js → page-b676878a19561da3.js} +1 -1
  20. package/dist/dashboard/_next/static/chunks/app/tool-metrics/{page-1f86f62b187f2b5e.js → page-6452423bc1f543ec.js} +1 -1
  21. package/dist/dashboard/_next/static/chunks/app/workflows/{page-551939c9e86b26c6.js → page-0ff0044616ac56aa.js} +1 -1
  22. package/dist/dashboard/_next/static/chunks/main-app-cf693a9b955f073e.js +1 -0
  23. package/dist/dashboard/accuracy.html +1 -1
  24. package/dist/dashboard/accuracy.txt +3 -3
  25. package/dist/dashboard/benchmark.html +1 -1
  26. package/dist/dashboard/benchmark.txt +3 -3
  27. package/dist/dashboard/context.html +1 -1
  28. package/dist/dashboard/context.txt +3 -3
  29. package/dist/dashboard/doctor.html +1 -1
  30. package/dist/dashboard/doctor.txt +3 -3
  31. package/dist/dashboard/executions.html +1 -1
  32. package/dist/dashboard/executions.txt +3 -3
  33. package/dist/dashboard/graph.html +1 -1
  34. package/dist/dashboard/graph.txt +3 -3
  35. package/dist/dashboard/index.html +1 -1
  36. package/dist/dashboard/index.txt +3 -3
  37. package/dist/dashboard/knowledge.html +1 -1
  38. package/dist/dashboard/knowledge.txt +3 -3
  39. package/dist/dashboard/memory.html +1 -1
  40. package/dist/dashboard/memory.txt +3 -3
  41. package/dist/dashboard/replay.html +1 -1
  42. package/dist/dashboard/replay.txt +3 -3
  43. package/dist/dashboard/runs/_.html +1 -1
  44. package/dist/dashboard/runs/_.txt +3 -3
  45. package/dist/dashboard/runs.html +1 -1
  46. package/dist/dashboard/runs.txt +3 -3
  47. package/dist/dashboard/settings.html +1 -1
  48. package/dist/dashboard/settings.txt +3 -3
  49. package/dist/dashboard/timeline.html +1 -1
  50. package/dist/dashboard/timeline.txt +3 -3
  51. package/dist/dashboard/tool-metrics.html +1 -1
  52. package/dist/dashboard/tool-metrics.txt +3 -3
  53. package/dist/dashboard/workflows.html +1 -1
  54. package/dist/dashboard/workflows.txt +3 -3
  55. package/dist/hooks/hook-client.js +5 -5
  56. package/dist/hooks/hook-daemon.js +11 -11
  57. package/dist/hooks/post-tool-use-failure.js +2 -2
  58. package/dist/hooks/post-tool-use.js +3 -3
  59. package/dist/hooks/pre-compact.js +2 -2
  60. package/dist/hooks/pre-tool-use.js +2 -2
  61. package/dist/hooks/session-end.js +2 -2
  62. package/dist/hooks/stop.js +2 -2
  63. package/dist/hooks/user-prompt-submit.js +3 -2
  64. package/dist/plugin/.claude-plugin/plugin.json +1 -1
  65. package/dist/plugin/CLAUDE.md +34 -0
  66. package/dist/plugin/dist/command-registry.json +297 -0
  67. package/dist/plugin/dist/hooks/hook-client.js +5 -5
  68. package/dist/plugin/dist/hooks/hook-daemon.js +11 -11
  69. package/dist/plugin/dist/hooks/post-tool-use-failure.js +2 -2
  70. package/dist/plugin/dist/hooks/post-tool-use.js +3 -3
  71. package/dist/plugin/dist/hooks/pre-compact.js +2 -2
  72. package/dist/plugin/dist/hooks/pre-tool-use.js +2 -2
  73. package/dist/plugin/dist/hooks/session-end.js +2 -2
  74. package/dist/plugin/dist/hooks/stop.js +2 -2
  75. package/dist/plugin/dist/hooks/user-prompt-submit.js +3 -2
  76. package/dist/plugin/dist/skills/devflow:animation/SKILL.md +63 -0
  77. package/dist/plugin/dist/skills/devflow:context/SKILL.md +90 -0
  78. package/dist/plugin/dist/skills/devflow:css/SKILL.md +63 -0
  79. package/dist/plugin/dist/skills/devflow:docker/SKILL.md +67 -0
  80. package/dist/plugin/dist/skills/devflow:electron/SKILL.md +67 -0
  81. package/dist/plugin/dist/skills/devflow:git/SKILL.md +67 -0
  82. package/dist/plugin/dist/skills/devflow:graph/SKILL.md +80 -0
  83. package/dist/plugin/dist/skills/devflow:graphql/SKILL.md +66 -0
  84. package/dist/plugin/dist/skills/devflow:knowledge/SKILL.md +80 -0
  85. package/dist/plugin/dist/skills/devflow:memory/SKILL.md +79 -0
  86. package/dist/plugin/dist/skills/devflow:nest/SKILL.md +68 -0
  87. package/dist/plugin/dist/skills/devflow:nextjs/SKILL.md +65 -0
  88. package/dist/plugin/dist/skills/devflow:performance/SKILL.md +67 -0
  89. package/dist/plugin/dist/skills/devflow:react/SKILL.md +96 -0
  90. package/dist/plugin/dist/skills/devflow:tailwind/SKILL.md +65 -0
  91. package/dist/plugin/dist/skills/devflow:taro/SKILL.md +66 -0
  92. package/dist/plugin/dist/skills/devflow:ui-layout/SKILL.md +63 -0
  93. package/dist/plugin/dist/skills/devflow:vue/SKILL.md +72 -0
  94. package/dist/plugin/dist/skills/devflow:workflow/SKILL.md +80 -0
  95. package/dist/plugin/hooks/constitution.md +20 -0
  96. package/dist/plugin/hooks/post-tool-use +20 -0
  97. package/dist/plugin/hooks/post-tool-use-failure +19 -0
  98. package/dist/plugin/hooks/pre-compact +19 -0
  99. package/dist/plugin/hooks/pre-tool-use +23 -0
  100. package/dist/plugin/hooks/session-end +19 -0
  101. package/dist/plugin/hooks/session-start +249 -0
  102. package/dist/plugin/hooks/stop +27 -0
  103. package/dist/plugin/hooks/user-prompt-submit +19 -0
  104. package/dist/plugin/package.json +43 -0
  105. package/dist/plugin/skills/{devflow:react → react}/SKILL.md +16 -3
  106. package/package.json +13 -13
  107. package/plugin-registry.json +29 -29
  108. package/dist/dashboard/_next/static/chunks/app/benchmark/page-6c6d0acbcde4eb85.js +0 -1
  109. package/dist/dashboard/_next/static/chunks/main-app-202a5f91ead17fa7.js +0 -1
  110. /package/dist/dashboard/_next/static/{n_2t1_63toasXsidAssD9 → ZaapgyqOj6AXHY5zdw6_X}/_buildManifest.js +0 -0
  111. /package/dist/dashboard/_next/static/{n_2t1_63toasXsidAssD9 → ZaapgyqOj6AXHY5zdw6_X}/_ssgManifest.js +0 -0
  112. /package/dist/plugin/{hooks.json → hooks/hooks.json} +0 -0
  113. /package/dist/plugin/skills/{devflow:animation → animation}/SKILL.md +0 -0
  114. /package/dist/plugin/skills/{devflow:context → context}/SKILL.md +0 -0
  115. /package/dist/plugin/skills/{devflow:css → css}/SKILL.md +0 -0
  116. /package/dist/plugin/skills/{devflow:docker → docker}/SKILL.md +0 -0
  117. /package/dist/plugin/skills/{devflow:doctor → doctor}/SKILL.md +0 -0
  118. /package/dist/plugin/skills/{devflow:electron → electron}/SKILL.md +0 -0
  119. /package/dist/plugin/skills/{devflow:git → git}/SKILL.md +0 -0
  120. /package/dist/plugin/skills/{devflow:graph → graph}/SKILL.md +0 -0
  121. /package/dist/plugin/skills/{devflow:graphql → graphql}/SKILL.md +0 -0
  122. /package/dist/plugin/skills/{devflow:knowledge → knowledge}/SKILL.md +0 -0
  123. /package/dist/plugin/skills/{devflow:memory → memory}/SKILL.md +0 -0
  124. /package/dist/plugin/skills/{devflow:nest → nest}/SKILL.md +0 -0
  125. /package/dist/plugin/skills/{devflow:nextjs → nextjs}/SKILL.md +0 -0
  126. /package/dist/plugin/skills/{devflow:performance → performance}/SKILL.md +0 -0
  127. /package/dist/plugin/skills/{devflow:start → start}/SKILL.md +0 -0
  128. /package/dist/plugin/skills/{devflow:tailwind → tailwind}/SKILL.md +0 -0
  129. /package/dist/plugin/skills/{devflow:taro → taro}/SKILL.md +0 -0
  130. /package/dist/plugin/skills/{devflow:ui-layout → ui-layout}/SKILL.md +0 -0
  131. /package/dist/plugin/skills/{devflow:vue → vue}/SKILL.md +0 -0
  132. /package/dist/plugin/skills/{devflow:workflow → workflow}/SKILL.md +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[916],{90239:function(e,t,n){Promise.resolve().then(n.bind(n,53906))},53906:function(e,t,n){"use strict";n.d(t,{ExecutionsView:function(){return h}});var o=n(27573),r=n(31988),c=n(41493),s=n(3806),a=n(7653),l=n(39790);let i=(0,n(2389).Z)("CircleCheckBig",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);var d=n(53512),u=n(25555),m=n(90743);function g(e){let{rate:t}=e;return(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("div",{className:"w-20 h-2 bg-muted rounded-full overflow-hidden",children:(0,o.jsx)("div",{className:"h-full ".concat(t>=80?"bg-green-500":t>=50?"bg-yellow-500":"bg-red-500"," rounded-full"),style:{width:"".concat(t,"%")}})}),(0,o.jsxs)("span",{className:"text-xs text-muted-foreground",children:[t.toFixed(1),"%"]})]})}function h(){let{t:e}=(0,s.$G)(),[t,n]=(0,a.useState)(null),{data:h,isLoading:x}=(0,r.a)({queryKey:["telemetry","executions"],queryFn:()=>c.h.getExecutions(50),refetchInterval:1e4}),{data:y}=(0,r.a)({queryKey:["telemetry","mcp-compliance"],queryFn:()=>c.h.getMcpCompliance()}),{data:p}=(0,r.a)({queryKey:["telemetry","executions",t,"events"],queryFn:()=>c.h.getExecutionEvents(t),enabled:!!t}),f=null!=h?h:[];return x?(0,o.jsxs)("div",{className:"flex items-center justify-center h-full text-muted-foreground",children:[(0,o.jsx)(l.Z,{className:"h-5 w-5 animate-spin mr-2"}),e("executions.loading")]}):(0,o.jsxs)("div",{className:"h-full overflow-auto p-6",children:[(0,o.jsx)("h2",{className:"text-xl font-bold mb-4",children:e("executions.title")}),y&&(0,o.jsxs)("div",{className:"grid grid-cols-3 gap-4 mb-6",children:[(0,o.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,o.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.overallCompliance")}),(0,o.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[y.overall.toFixed(1),"%"]})]}),(0,o.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,o.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.totalExecutions")}),(0,o.jsx)("div",{className:"text-2xl font-bold mt-1",children:f.length})]}),(0,o.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,o.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.skillsTracked")}),(0,o.jsx)("div",{className:"text-2xl font-bold mt-1",children:Object.keys(y.bySkill).length})]})]}),(0,o.jsx)("div",{className:"bg-card border border-border rounded-lg overflow-hidden",children:(0,o.jsxs)("table",{className:"w-full text-sm",children:[(0,o.jsx)("thead",{className:"bg-muted/50",children:(0,o.jsxs)("tr",{children:[(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.skill")}),(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.status")}),(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.tools")}),(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.mcpRate")}),(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.duration")})]})}),(0,o.jsxs)("tbody",{children:[f.map(e=>{var r,c,s;return(0,o.jsxs)("tr",{className:"border-t border-border cursor-pointer hover:bg-muted/30 ".concat(t===e.executionId?"bg-muted/50":""),onClick:()=>n(e.executionId),children:[(0,o.jsx)("td",{className:"px-4 py-2 font-mono text-xs",children:e.skillName}),(0,o.jsx)("td",{className:"px-4 py-2",children:"completed"===e.status?(0,o.jsx)(i,{className:"h-4 w-4 text-green-500 inline"}):"failed"===e.status?(0,o.jsx)(d.Z,{className:"h-4 w-4 text-red-500 inline"}):(0,o.jsx)(u.Z,{className:"h-4 w-4 text-yellow-500 inline animate-spin"})}),(0,o.jsx)("td",{className:"px-4 py-2",children:e.totalToolCalls}),(0,o.jsx)("td",{className:"px-4 py-2",children:(0,o.jsx)(g,{rate:null!==(r=e.mcpComplianceRate)&&void 0!==r?r:0})}),(0,o.jsx)("td",{className:"px-4 py-2",children:(s=null!==(c=e.totalDuration)&&void 0!==c?c:0)<1e3?"".concat(s,"ms"):"".concat((s/1e3).toFixed(1),"s")})]},e.executionId)}),0===f.length&&(0,o.jsx)("tr",{children:(0,o.jsx)("td",{colSpan:5,className:"px-4 py-8 text-center text-muted-foreground",children:e("executions.empty")})})]})]})}),t&&p&&(0,o.jsxs)("div",{className:"mt-6 bg-card border border-border rounded-lg p-4",children:[(0,o.jsxs)("h3",{className:"font-bold mb-3 flex items-center gap-2",children:[(0,o.jsx)(m.Z,{className:"h-4 w-4"}),e("executions.traceTimeline")]}),(0,o.jsx)("div",{className:"space-y-2",children:(null!=p?p:[]).map(t=>(0,o.jsxs)("div",{className:"flex items-start gap-3 p-2 rounded-md bg-muted/30 text-sm",children:[(0,o.jsx)("span",{className:"text-xs text-muted-foreground w-16 shrink-0",children:new Date(t.timestamp).toLocaleTimeString()}),(0,o.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs font-mono ".concat(t.isMcpTool?"bg-green-500/20 text-green-400":"subagent"===t.toolType?"bg-blue-500/20 text-blue-400":"bg-muted text-muted-foreground"),children:t.toolType}),(0,o.jsx)("span",{className:"font-mono text-xs flex-1",children:t.toolName}),t.blocked&&(0,o.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-red-500/20 text-red-400",children:e("executions.blocked")}),t.mcpEnforced&&(0,o.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-green-500/20 text-green-400",children:"MCP"}),t.mcpFallback&&(0,o.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-yellow-500/20 text-yellow-400",children:e("executions.fallback")})]},t.eventId))})]})]})}},41493:function(e,t,n){"use strict";n.d(t,{h:function(){return a}});var o,r=n(50794);let c=null!==(o=n(49767).env.NEXT_PUBLIC_DEVFLOW_API_URL)&&void 0!==o?o:"http://localhost:13337";async function s(e,t){let n=function(){try{return localStorage.getItem("devflow-active-project-root")}catch(e){return null}}(),o={"Content-Type":"application/json",...(0,r.O)()};n&&(o["x-devflow-project"]=n);let s=await fetch("".concat(c,"/api").concat(e),{...t,headers:{...o,...null==t?void 0:t.headers}});if(!s.ok){let e=await s.text();if(401===s.status)throw Error("API 401: configure NEXT_PUBLIC_DEVFLOW_API_KEY or localStorage['devflow-api-key']");throw Error("API ".concat(s.status,": ").concat(e))}let a=await s.json();return a&&"object"==typeof a&&"ok"in a&&"data"in a?a.data:a}let a={listProjects:()=>s("/projects"),getProject:e=>s("/projects/".concat(e)),createProject:e=>s("/projects",{method:"POST",body:JSON.stringify(e)}),deleteProject:e=>s("/projects/".concat(e),{method:"DELETE"}),connectProject:e=>s("/projects/connect",{method:"POST",body:JSON.stringify({rootPath:e})}),disconnectProject:()=>s("/projects/active",{method:"DELETE"}),getActiveProject:()=>s("/projects/active"),getOnboardingPackByRoot:e=>s("/projects/onboarding-pack?rootPath=".concat(encodeURIComponent(e))),refreshOnboardingPack:e=>s("/projects/onboarding-pack/refresh",{method:"POST",body:JSON.stringify({rootPath:e})}),getContextStatus:()=>s("/context/status"),buildContext:e=>s("/context/build",{method:"POST",body:JSON.stringify(e)}),buildTaskContext:e=>s("/context/build-task",{method:"POST",body:JSON.stringify(e)}),submitFeedback:e=>s("/context/feedback",{method:"POST",body:JSON.stringify(e)}),getFeedbackSummary:()=>s("/context/feedback-summary"),getGraph:()=>s("/graph"),getLayeredGraph:()=>s("/graph?view=layered"),getNode:e=>s("/graph/".concat(e)),expandNode:(e,t,n)=>s("/graph/".concat(e,"/expand?depth=").concat(null!=t?t:2,"&direction=").concat(null!=n?n:"both")),listWorkflows:()=>s("/workflows"),runWorkflow:(e,t)=>s("/workflows/".concat(e,"/run"),{method:"POST",body:JSON.stringify({input:t})}),listRuns:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return s("/workflows/runs?limit=".concat(e,"&offset=").concat(t))},getRun:e=>s("/workflows/runs/".concat(e)),approveRun:e=>s("/workflows/runs/".concat(e,"/approve"),{method:"POST"}),rejectRun:(e,t)=>s("/workflows/runs/".concat(e,"/reject"),{method:"POST",body:JSON.stringify({reason:t})}),getMemory:()=>s("/memory"),addMemory:e=>s("/memory",{method:"POST",body:JSON.stringify(e)}),updateMemoryEntry:(e,t)=>s("/memory/".concat(e),{method:"PUT",body:JSON.stringify(t)}),deleteMemoryEntry:e=>s("/memory/".concat(e),{method:"DELETE"}),getCandidates:()=>s("/memory/candidates"),approveCandidate:e=>s("/memory/candidates/".concat(e,"/approve"),{method:"POST"}),rejectCandidate:e=>s("/memory/candidates/".concat(e,"/reject"),{method:"POST"}),searchMemory:(e,t,n)=>s("/memory/search",{method:"POST",body:JSON.stringify({query:e,limit:t,categories:n})}),updateMemory:(e,t,n)=>s("/memory/".concat(e,"/").concat(t),{method:"PUT",body:JSON.stringify({value:n})}),searchKnowledge:(e,t)=>s("/knowledge/search?q=".concat(encodeURIComponent(e)).concat(t?"&scope=".concat(t):"")),syncKnowledge:e=>s("/knowledge/sync",{method:"POST",body:JSON.stringify({pluginName:e})}),getKnowledgeSources:()=>s("/knowledge/sources"),listTelemetryRuns:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0;return s("/telemetry/runs?limit=".concat(e,"&offset=").concat(t).concat(n?"&source=".concat(n):""))},getTelemetryRun:e=>s("/telemetry/runs/".concat(e)),getTimeline:(e,t)=>s("/telemetry/timeline".concat(e?"?from=".concat(e).concat(t?"&to=".concat(t):""):"")),listSessions:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,o=new URLSearchParams({limit:String(e),offset:String(t)});return n&&o.set("projectRoot",n),s("/telemetry/sessions?".concat(o))},getSession:e=>s("/telemetry/sessions/".concat(e)),getSessionEvents:e=>s("/telemetry/sessions/".concat(e,"/events")),getRunEvents:e=>s("/telemetry/runs/".concat(e,"/events")),getRunStats:e=>s("/telemetry/runs/".concat(e,"/stats")),completeRun:e=>s("/telemetry/runs/".concat(e,"/complete"),{method:"POST"}),getTelemetryStats:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:7;return s("/telemetry/stats?days=".concat(e))},getRoiSummary:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:7;return s("/telemetry/roi-summary?days=".concat(e))},listBenchmarkReports:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;return s("/benchmark/reports?limit=".concat(e))},getLatestBenchmarkReport:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";return s("/benchmark/reports/latest?suite=".concat(encodeURIComponent(e)))},getBenchmarkReport:e=>s("/benchmark/reports/".concat(encodeURIComponent(e))),cleanupTelemetry:e=>s("/telemetry/cleanup",{method:"POST",body:JSON.stringify({olderThanDays:e})}),getToolMetricsSummary:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:7;return s("/telemetry/tool-metrics/summary?days=".concat(e))},getAccuracyStats:(e,t)=>{let n=new URLSearchParams;e&&n.set("engine",e),t&&n.set("since",String(t));let o=n.toString();return s("/telemetry/accuracy/stats".concat(o?"?".concat(o):""))},getAccuracyQueries:e=>{let t=new URLSearchParams;(null==e?void 0:e.engine)&&t.set("engine",e.engine),(null==e?void 0:e.status)&&t.set("status",e.status),(null==e?void 0:e.limit)&&t.set("limit",String(e.limit)),(null==e?void 0:e.offset)&&t.set("offset",String(e.offset));let n=t.toString();return s("/telemetry/accuracy/queries".concat(n?"?".concat(n):""))},postAccuracyFeedback:e=>s("/telemetry/accuracy/feedback",{method:"POST",body:JSON.stringify(e)}),getAutoCheck:()=>s("/telemetry/auto-check"),getExecutions:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,t=arguments.length>1?arguments[1]:void 0,n=new URLSearchParams({limit:String(e)});return t&&n.set("skillName",t),s("/telemetry/executions?".concat(n))},getExecutionEvents:e=>s("/telemetry/executions/".concat(e,"/events")),getMcpCompliance:()=>s("/telemetry/mcp-compliance"),getGovernanceRules:()=>s("/governance/rules"),createGovernanceRule:e=>s("/governance/rules",{method:"POST",body:JSON.stringify(e)}),updateGovernanceRule:e=>s("/governance/rules/".concat(encodeURIComponent(e.id)),{method:"PUT",body:JSON.stringify(e)}),deleteGovernanceRule:e=>s("/governance/rules/".concat(encodeURIComponent(e)),{method:"DELETE"}),getGovernanceAudit:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return s("/governance/audit-chain?limit=".concat(e,"&offset=").concat(t))},listPlugins:(e,t)=>s("/registry/plugins".concat(e?"?search=".concat(encodeURIComponent(e)).concat(t?"&tag=".concat(t):""):t?"?tag=".concat(t):"")),getPlugin:e=>s("/registry/plugins/".concat(e)),publishPlugin:e=>s("/registry/plugins",{method:"POST",body:JSON.stringify(e)}),getPluginEffectiveness:e=>s("/registry/plugins/effectiveness".concat(e?"?rootPath=".concat(encodeURIComponent(e)):""))}},50794:function(e,t,n){"use strict";var o,r;n.d(t,{O:function(){return s}});let c=null!==(r=null===(o=n(49767).env.NEXT_PUBLIC_DEVFLOW_API_KEY)||void 0===o?void 0:o.trim())&&void 0!==r?r:"";function s(){let e=function(){if(c)return c;try{var e;return(null===(e=localStorage.getItem("devflow-api-key"))||void 0===e?void 0:e.trim())||null}catch(e){return null}}();return e?{"x-api-key":e}:{}}},2389:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var o=n(7653);let r=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),c=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((e,t,n)=>!!e&&n.indexOf(e)===t).join(" ")};var s={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=(0,o.forwardRef)((e,t)=>{let{color:n="currentColor",size:r=24,strokeWidth:a=2,absoluteStrokeWidth:l,className:i="",children:d,iconNode:u,...m}=e;return(0,o.createElement)("svg",{ref:t,...s,width:r,height:r,stroke:n,strokeWidth:l?24*Number(a)/Number(r):a,className:c("lucide",i),...m},[...u.map(e=>{let[t,n]=e;return(0,o.createElement)(t,n)}),...Array.isArray(d)?d:[d]])}),l=(e,t)=>{let n=(0,o.forwardRef)((n,s)=>{let{className:l,...i}=n;return(0,o.createElement)(a,{ref:s,iconNode:t,className:c("lucide-".concat(r(e)),l),...i})});return n.displayName="".concat(e),n}},39790:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});let o=(0,n(2389).Z)("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]])},53512:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});let o=(0,n(2389).Z)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},25555:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});let o=(0,n(2389).Z)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]])},90743:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});let o=(0,n(2389).Z)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])}},function(e){e.O(0,[736,806,293,528,744],function(){return e(e.s=90239)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[916],{92613:function(e,t,n){Promise.resolve().then(n.bind(n,53906))},53906:function(e,t,n){"use strict";n.d(t,{ExecutionsView:function(){return h}});var o=n(27573),r=n(31988),c=n(41493),s=n(3806),a=n(7653),l=n(39790);let i=(0,n(2389).Z)("CircleCheckBig",[["path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14",key:"g774vq"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]]);var d=n(53512),u=n(25555),m=n(90743);function g(e){let{rate:t}=e;return(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("div",{className:"w-20 h-2 bg-muted rounded-full overflow-hidden",children:(0,o.jsx)("div",{className:"h-full ".concat(t>=80?"bg-green-500":t>=50?"bg-yellow-500":"bg-red-500"," rounded-full"),style:{width:"".concat(t,"%")}})}),(0,o.jsxs)("span",{className:"text-xs text-muted-foreground",children:[t.toFixed(1),"%"]})]})}function h(){let{t:e}=(0,s.$G)(),[t,n]=(0,a.useState)(null),{data:h,isLoading:x}=(0,r.a)({queryKey:["telemetry","executions"],queryFn:()=>c.h.getExecutions(50),refetchInterval:1e4}),{data:y}=(0,r.a)({queryKey:["telemetry","mcp-compliance"],queryFn:()=>c.h.getMcpCompliance()}),{data:p}=(0,r.a)({queryKey:["telemetry","executions",t,"events"],queryFn:()=>c.h.getExecutionEvents(t),enabled:!!t}),f=null!=h?h:[];return x?(0,o.jsxs)("div",{className:"flex items-center justify-center h-full text-muted-foreground",children:[(0,o.jsx)(l.Z,{className:"h-5 w-5 animate-spin mr-2"}),e("executions.loading")]}):(0,o.jsxs)("div",{className:"h-full overflow-auto p-6",children:[(0,o.jsx)("h2",{className:"text-xl font-bold mb-4",children:e("executions.title")}),y&&(0,o.jsxs)("div",{className:"grid grid-cols-3 gap-4 mb-6",children:[(0,o.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,o.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.overallCompliance")}),(0,o.jsxs)("div",{className:"text-2xl font-bold mt-1",children:[y.overall.toFixed(1),"%"]})]}),(0,o.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,o.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.totalExecutions")}),(0,o.jsx)("div",{className:"text-2xl font-bold mt-1",children:f.length})]}),(0,o.jsxs)("div",{className:"bg-card border border-border rounded-lg p-4",children:[(0,o.jsx)("div",{className:"text-sm text-muted-foreground",children:e("executions.skillsTracked")}),(0,o.jsx)("div",{className:"text-2xl font-bold mt-1",children:Object.keys(y.bySkill).length})]})]}),(0,o.jsx)("div",{className:"bg-card border border-border rounded-lg overflow-hidden",children:(0,o.jsxs)("table",{className:"w-full text-sm",children:[(0,o.jsx)("thead",{className:"bg-muted/50",children:(0,o.jsxs)("tr",{children:[(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.skill")}),(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.status")}),(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.tools")}),(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.mcpRate")}),(0,o.jsx)("th",{className:"text-left px-4 py-2 font-medium",children:e("executions.duration")})]})}),(0,o.jsxs)("tbody",{children:[f.map(e=>{var r,c,s;return(0,o.jsxs)("tr",{className:"border-t border-border cursor-pointer hover:bg-muted/30 ".concat(t===e.executionId?"bg-muted/50":""),onClick:()=>n(e.executionId),children:[(0,o.jsx)("td",{className:"px-4 py-2 font-mono text-xs",children:e.skillName}),(0,o.jsx)("td",{className:"px-4 py-2",children:"completed"===e.status?(0,o.jsx)(i,{className:"h-4 w-4 text-green-500 inline"}):"failed"===e.status?(0,o.jsx)(d.Z,{className:"h-4 w-4 text-red-500 inline"}):(0,o.jsx)(u.Z,{className:"h-4 w-4 text-yellow-500 inline animate-spin"})}),(0,o.jsx)("td",{className:"px-4 py-2",children:e.totalToolCalls}),(0,o.jsx)("td",{className:"px-4 py-2",children:(0,o.jsx)(g,{rate:null!==(r=e.mcpComplianceRate)&&void 0!==r?r:0})}),(0,o.jsx)("td",{className:"px-4 py-2",children:(s=null!==(c=e.totalDuration)&&void 0!==c?c:0)<1e3?"".concat(s,"ms"):"".concat((s/1e3).toFixed(1),"s")})]},e.executionId)}),0===f.length&&(0,o.jsx)("tr",{children:(0,o.jsx)("td",{colSpan:5,className:"px-4 py-8 text-center text-muted-foreground",children:e("executions.empty")})})]})]})}),t&&p&&(0,o.jsxs)("div",{className:"mt-6 bg-card border border-border rounded-lg p-4",children:[(0,o.jsxs)("h3",{className:"font-bold mb-3 flex items-center gap-2",children:[(0,o.jsx)(m.Z,{className:"h-4 w-4"}),e("executions.traceTimeline")]}),(0,o.jsx)("div",{className:"space-y-2",children:(null!=p?p:[]).map(t=>(0,o.jsxs)("div",{className:"flex items-start gap-3 p-2 rounded-md bg-muted/30 text-sm",children:[(0,o.jsx)("span",{className:"text-xs text-muted-foreground w-16 shrink-0",children:new Date(t.timestamp).toLocaleTimeString()}),(0,o.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs font-mono ".concat(t.isMcpTool?"bg-green-500/20 text-green-400":"subagent"===t.toolType?"bg-blue-500/20 text-blue-400":"bg-muted text-muted-foreground"),children:t.toolType}),(0,o.jsx)("span",{className:"font-mono text-xs flex-1",children:t.toolName}),t.blocked&&(0,o.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-red-500/20 text-red-400",children:e("executions.blocked")}),t.mcpEnforced&&(0,o.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-green-500/20 text-green-400",children:"MCP"}),t.mcpFallback&&(0,o.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs bg-yellow-500/20 text-yellow-400",children:e("executions.fallback")})]},t.eventId))})]})]})}},41493:function(e,t,n){"use strict";n.d(t,{h:function(){return a}});var o,r=n(50794);let c=null!==(o=n(53241).env.NEXT_PUBLIC_DEVFLOW_API_URL)&&void 0!==o?o:"http://localhost:13337";async function s(e,t){let n=function(){try{return localStorage.getItem("devflow-active-project-root")}catch(e){return null}}(),o={"Content-Type":"application/json",...(0,r.O)()};n&&(o["x-devflow-project"]=n);let s=await fetch("".concat(c,"/api").concat(e),{...t,headers:{...o,...null==t?void 0:t.headers}});if(!s.ok){let e=await s.text();if(401===s.status)throw Error("API 401: configure NEXT_PUBLIC_DEVFLOW_API_KEY or localStorage['devflow-api-key']");throw Error("API ".concat(s.status,": ").concat(e))}let a=await s.json();return a&&"object"==typeof a&&"ok"in a&&"data"in a?a.data:a}let a={listProjects:()=>s("/projects"),getProject:e=>s("/projects/".concat(e)),createProject:e=>s("/projects",{method:"POST",body:JSON.stringify(e)}),deleteProject:e=>s("/projects/".concat(e),{method:"DELETE"}),connectProject:e=>s("/projects/connect",{method:"POST",body:JSON.stringify({rootPath:e})}),disconnectProject:()=>s("/projects/active",{method:"DELETE"}),getActiveProject:()=>s("/projects/active"),getOnboardingPackByRoot:e=>s("/projects/onboarding-pack?rootPath=".concat(encodeURIComponent(e))),refreshOnboardingPack:e=>s("/projects/onboarding-pack/refresh",{method:"POST",body:JSON.stringify({rootPath:e})}),getContextStatus:()=>s("/context/status"),buildContext:e=>s("/context/build",{method:"POST",body:JSON.stringify(e)}),buildTaskContext:e=>s("/context/build-task",{method:"POST",body:JSON.stringify(e)}),submitFeedback:e=>s("/context/feedback",{method:"POST",body:JSON.stringify(e)}),getFeedbackSummary:()=>s("/context/feedback-summary"),getGraph:()=>s("/graph"),getLayeredGraph:()=>s("/graph?view=layered"),getNode:e=>s("/graph/".concat(e)),expandNode:(e,t,n)=>s("/graph/".concat(e,"/expand?depth=").concat(null!=t?t:2,"&direction=").concat(null!=n?n:"both")),listWorkflows:()=>s("/workflows"),runWorkflow:(e,t)=>s("/workflows/".concat(e,"/run"),{method:"POST",body:JSON.stringify({input:t})}),listRuns:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return s("/workflows/runs?limit=".concat(e,"&offset=").concat(t))},getRun:e=>s("/workflows/runs/".concat(e)),approveRun:e=>s("/workflows/runs/".concat(e,"/approve"),{method:"POST"}),rejectRun:(e,t)=>s("/workflows/runs/".concat(e,"/reject"),{method:"POST",body:JSON.stringify({reason:t})}),getMemory:()=>s("/memory"),addMemory:e=>s("/memory",{method:"POST",body:JSON.stringify(e)}),updateMemoryEntry:(e,t)=>s("/memory/".concat(e),{method:"PUT",body:JSON.stringify(t)}),deleteMemoryEntry:e=>s("/memory/".concat(e),{method:"DELETE"}),getCandidates:()=>s("/memory/candidates"),approveCandidate:e=>s("/memory/candidates/".concat(e,"/approve"),{method:"POST"}),rejectCandidate:e=>s("/memory/candidates/".concat(e,"/reject"),{method:"POST"}),searchMemory:(e,t,n)=>s("/memory/search",{method:"POST",body:JSON.stringify({query:e,limit:t,categories:n})}),updateMemory:(e,t,n)=>s("/memory/".concat(e,"/").concat(t),{method:"PUT",body:JSON.stringify({value:n})}),searchKnowledge:(e,t)=>s("/knowledge/search?q=".concat(encodeURIComponent(e)).concat(t?"&scope=".concat(t):"")),syncKnowledge:e=>s("/knowledge/sync",{method:"POST",body:JSON.stringify({pluginName:e})}),getKnowledgeSources:()=>s("/knowledge/sources"),listTelemetryRuns:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0;return s("/telemetry/runs?limit=".concat(e,"&offset=").concat(t).concat(n?"&source=".concat(n):""))},getTelemetryRun:e=>s("/telemetry/runs/".concat(e)),getTimeline:(e,t)=>s("/telemetry/timeline".concat(e?"?from=".concat(e).concat(t?"&to=".concat(t):""):"")),listSessions:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,o=new URLSearchParams({limit:String(e),offset:String(t)});return n&&o.set("projectRoot",n),s("/telemetry/sessions?".concat(o))},getSession:e=>s("/telemetry/sessions/".concat(e)),getSessionEvents:e=>s("/telemetry/sessions/".concat(e,"/events")),getRunEvents:e=>s("/telemetry/runs/".concat(e,"/events")),getRunStats:e=>s("/telemetry/runs/".concat(e,"/stats")),completeRun:e=>s("/telemetry/runs/".concat(e,"/complete"),{method:"POST"}),getTelemetryStats:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:7;return s("/telemetry/stats?days=".concat(e))},getRoiSummary:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:7;return s("/telemetry/roi-summary?days=".concat(e))},listBenchmarkReports:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:50;return s("/benchmark/reports?limit=".concat(e))},getLatestBenchmarkReport:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"default";return s("/benchmark/reports/latest?suite=".concat(encodeURIComponent(e)))},getBenchmarkReport:e=>s("/benchmark/reports/".concat(encodeURIComponent(e))),cleanupTelemetry:e=>s("/telemetry/cleanup",{method:"POST",body:JSON.stringify({olderThanDays:e})}),getToolMetricsSummary:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:7;return s("/telemetry/tool-metrics/summary?days=".concat(e))},getAccuracyStats:(e,t)=>{let n=new URLSearchParams;e&&n.set("engine",e),t&&n.set("since",String(t));let o=n.toString();return s("/telemetry/accuracy/stats".concat(o?"?".concat(o):""))},getAccuracyQueries:e=>{let t=new URLSearchParams;(null==e?void 0:e.engine)&&t.set("engine",e.engine),(null==e?void 0:e.status)&&t.set("status",e.status),(null==e?void 0:e.limit)&&t.set("limit",String(e.limit)),(null==e?void 0:e.offset)&&t.set("offset",String(e.offset));let n=t.toString();return s("/telemetry/accuracy/queries".concat(n?"?".concat(n):""))},postAccuracyFeedback:e=>s("/telemetry/accuracy/feedback",{method:"POST",body:JSON.stringify(e)}),getAutoCheck:()=>s("/telemetry/auto-check"),getExecutions:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20,t=arguments.length>1?arguments[1]:void 0,n=new URLSearchParams({limit:String(e)});return t&&n.set("skillName",t),s("/telemetry/executions?".concat(n))},getExecutionEvents:e=>s("/telemetry/executions/".concat(e,"/events")),getMcpCompliance:()=>s("/telemetry/mcp-compliance"),getGovernanceRules:()=>s("/governance/rules"),createGovernanceRule:e=>s("/governance/rules",{method:"POST",body:JSON.stringify(e)}),updateGovernanceRule:e=>s("/governance/rules/".concat(encodeURIComponent(e.id)),{method:"PUT",body:JSON.stringify(e)}),deleteGovernanceRule:e=>s("/governance/rules/".concat(encodeURIComponent(e)),{method:"DELETE"}),getGovernanceAudit:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:100,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return s("/governance/audit-chain?limit=".concat(e,"&offset=").concat(t))},listPlugins:(e,t)=>s("/registry/plugins".concat(e?"?search=".concat(encodeURIComponent(e)).concat(t?"&tag=".concat(t):""):t?"?tag=".concat(t):"")),getPlugin:e=>s("/registry/plugins/".concat(e)),publishPlugin:e=>s("/registry/plugins",{method:"POST",body:JSON.stringify(e)}),getPluginEffectiveness:e=>s("/registry/plugins/effectiveness".concat(e?"?rootPath=".concat(encodeURIComponent(e)):""))}},50794:function(e,t,n){"use strict";var o,r;n.d(t,{O:function(){return s}});let c=null!==(r=null===(o=n(53241).env.NEXT_PUBLIC_DEVFLOW_API_KEY)||void 0===o?void 0:o.trim())&&void 0!==r?r:"";function s(){let e=function(){if(c)return c;try{var e;return(null===(e=localStorage.getItem("devflow-api-key"))||void 0===e?void 0:e.trim())||null}catch(e){return null}}();return e?{"x-api-key":e}:{}}},2389:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var o=n(7653);let r=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),c=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.filter((e,t,n)=>!!e&&n.indexOf(e)===t).join(" ")};var s={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let a=(0,o.forwardRef)((e,t)=>{let{color:n="currentColor",size:r=24,strokeWidth:a=2,absoluteStrokeWidth:l,className:i="",children:d,iconNode:u,...m}=e;return(0,o.createElement)("svg",{ref:t,...s,width:r,height:r,stroke:n,strokeWidth:l?24*Number(a)/Number(r):a,className:c("lucide",i),...m},[...u.map(e=>{let[t,n]=e;return(0,o.createElement)(t,n)}),...Array.isArray(d)?d:[d]])}),l=(e,t)=>{let n=(0,o.forwardRef)((n,s)=>{let{className:l,...i}=n;return(0,o.createElement)(a,{ref:s,iconNode:t,className:c("lucide-".concat(r(e)),l),...i})});return n.displayName="".concat(e),n}},39790:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});let o=(0,n(2389).Z)("Activity",[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]])},53512:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});let o=(0,n(2389).Z)("CircleX",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]])},25555:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});let o=(0,n(2389).Z)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]])},90743:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});let o=(0,n(2389).Z)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])}},function(e){e.O(0,[384,806,293,528,744],function(){return e(e.s=92613)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[815],{27279:function(e,t,r){Promise.resolve().then(r.bind(r,58756))},50466:function(e,t,r){"use strict";r.d(t,{z:function(){return s}});var o=r(27573),n=r(7653),l=r(29147);let i=(0,r(49289).j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),s=n.forwardRef((e,t)=>{let{className:r,variant:n,size:s,...a}=e;return(0,o.jsx)("button",{className:(0,l.cn)(i({variant:n,size:s,className:r})),ref:t,...a})});s.displayName="Button"},39134:function(e,t,r){"use strict";r.d(t,{I:function(){return i}});var o=r(27573),n=r(7653),l=r(29147);let i=n.forwardRef((e,t)=>{let{className:r,type:n,...i}=e;return(0,o.jsx)("input",{type:n,className:(0,l.cn)("flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...i})});i.displayName="Input"},58756:function(e,t,r){"use strict";r.d(t,{GraphView:function(){return j}});var o=r(27573),n=r(7653),l=r(39134),i=r(50466),s=r(10535),a=r(15134);r(23867);var d=r(86332),c=r.n(d),u=r(26598);let h={component:"C",hook:"H",api:"A",store:"S",function:"F",class:"CL",interface:"I",enum:"E",type:"T",variable:"V",unknown:"?"};var f=r(57429);let g={graphNode:function(e){var t,r,n,l,i;let{data:s}=e,d=null!==(l=null!==(n=h[s.nodeType])&&void 0!==n?n:null===(r=s.nodeType)||void 0===r?void 0:null===(t=r.charAt(0))||void 0===t?void 0:t.toUpperCase())&&void 0!==l?l:"?",c=null!==(i=s.layerColor)&&void 0!==i?i:"#6b7280",f=void 0!==s.highlighted,g=!0===s.highlighted;return(0,o.jsxs)("div",{className:"px-3 py-2 rounded-lg border-2 text-xs font-medium transition-opacity duration-200",style:{borderColor:c,backgroundColor:"color-mix(in srgb, ".concat(c," 8%, var(--background, #fff))"),boxShadow:g?"0 0 12px ".concat(c,", 0 0 4px ").concat(c):"0 1px 3px rgba(0,0,0,0.12)",opacity:f&&!g?.15:1},children:[(0,o.jsx)(a.HH,{type:"target",position:u.Ly.Top,style:{background:c}}),(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"inline-flex items-center justify-center w-5 h-5 rounded text-[10px] font-bold text-white flex-shrink-0",style:{backgroundColor:c},children:d}),(0,o.jsx)("span",{className:"truncate max-w-[140px]",children:s.label})]}),(0,o.jsx)(a.HH,{type:"source",position:u.Ly.Bottom,style:{background:c}})]})}};function p(e){let{filterMode:t="highlight",searchQuery:r=""}=e;return(0,o.jsx)(a.tV,{children:(0,o.jsx)(m,{filterMode:t,searchQuery:r})})}function m(e){let{filterMode:t,searchQuery:r}=e,{data:l}=(0,f.nO)(),i=(0,s.q)(e=>e.selectNode),{fitView:d}=(0,a._K)(),u=(0,n.useMemo)(()=>{if(!l)return{nodes:[],edges:[]};let e=(null!=r?r:"").toLowerCase().trim(),o="filter"===t&&e?l.nodes.filter(t=>t.name.toLowerCase().includes(e)):l.nodes.slice(0,300),n=e.length>0,i=o.map(t=>{var r,o;return{id:t.id,type:"graphNode",position:{x:0,y:0},data:{label:t.name,nodeType:t.type,layer:null!==(r=t.layer)&&void 0!==r?r:"Other",layerColor:null!==(o=t.layerColor)&&void 0!==o?o:"#6b7280",highlighted:n?t.name.toLowerCase().includes(e):void 0}}}),s=new Set(i.map(e=>e.id));return function(e,t){let r=new(c()).graphlib.Graph;for(let t of(r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"TB",ranksep:80,nodesep:60}),e))r.setNode(t.id,{width:180,height:50});for(let e of t)r.setEdge(e.source,e.target);return c().layout(r),{nodes:e.map(e=>{let t=r.node(e.id);return{...e,position:{x:t.x-90,y:t.y-25}}}),edges:t}}(i,l.edges.filter(e=>s.has(e.from)&&s.has(e.to)).slice(0,500).map((e,t)=>({id:"".concat(e.from,"->").concat(e.to,"-").concat(t),source:e.from,target:e.to,animated:!1,style:{stroke:"#4b5563"}})))},[l,r,t]),[h,p,m]=(0,a.Rr)(u.nodes),[x,v,b]=(0,a.ll)(u.edges);(0,n.useEffect)(()=>{p(u.nodes),v(u.edges)},[u,p,v]),(0,n.useEffect)(()=>{if(r){let e=u.nodes.find(e=>!0===e.data.highlighted);e&&setTimeout(()=>{d({nodes:[e],duration:500,maxZoom:1.5})},100)}},[r,u.nodes,d]);let y=(0,n.useCallback)((e,t)=>{i(t.id)},[i]);return(0,o.jsxs)(a.x$,{nodes:h,edges:x,onNodesChange:m,onEdgesChange:b,onNodeClick:y,nodeTypes:g,fitView:!0,children:[(0,o.jsx)(a.Aq,{}),(0,o.jsx)(a.ZX,{}),(0,o.jsx)(a.a9,{nodeColor:e=>{var t;let r=null===(t=e.data)||void 0===t?void 0:t.layerColor;return null!=r?r:"#6b7280"}})]})}var x=r(3806),v=r(95731),b=r(38333),y=r(57124);function j(){let{t:e}=(0,x.$G)(),t=(0,s.q)(e=>e.searchQuery),r=(0,s.q)(e=>e.setSearchQuery),[a,d]=(0,n.useState)("highlight");return(0,o.jsxs)("div",{className:"flex flex-col h-full",children:[(0,o.jsxs)("div",{className:"p-3 border-b border-border flex items-center gap-2",children:[(0,o.jsxs)("div",{className:"relative flex-1 max-w-sm",children:[(0,o.jsx)(v.Z,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,o.jsx)(l.I,{placeholder:e("graph.searchPlaceholder"),value:t,onChange:e=>r(e.target.value),className:"pl-8"})]}),t&&(0,o.jsx)(i.z,{variant:"ghost",size:"sm",onClick:()=>d(e=>"highlight"===e?"filter":"highlight"),title:e("highlight"===a?"graph.filterOnly":"graph.highlightAll"),className:"flex-shrink-0",children:"highlight"===a?(0,o.jsx)(b.Z,{className:"h-4 w-4"}):(0,o.jsx)(y.Z,{className:"h-4 w-4"})})]}),(0,o.jsx)("div",{className:"flex-1",children:(0,o.jsx)(p,{filterMode:a,searchQuery:t})})]})}},10535:function(e,t,r){"use strict";r.d(t,{q:function(){return a}});var o=r(62052);let n="devflow-project-root",l="devflow-active-project-root";function i(e){try{return localStorage.getItem(e)}catch(e){return null}}function s(e,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch(e){}}let a=(0,o.Ue)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:i(n),activeProjectRoot:i(l),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{s(n,t),e({projectRoot:t})},setActiveProjectRoot:t=>{s(l,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},29147:function(e,t,r){"use strict";r.d(t,{cn:function(){return l}});var o=r(10607),n=r(25579);function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.m6)((0,o.W)(t))}}},function(e){e.O(0,[650,856,736,806,697,221,429,293,528,744],function(){return e(e.s=27279)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[815],{95050:function(e,t,r){Promise.resolve().then(r.bind(r,58756))},50466:function(e,t,r){"use strict";r.d(t,{z:function(){return s}});var o=r(27573),n=r(7653),l=r(29147);let i=(0,r(49289).j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),s=n.forwardRef((e,t)=>{let{className:r,variant:n,size:s,...a}=e;return(0,o.jsx)("button",{className:(0,l.cn)(i({variant:n,size:s,className:r})),ref:t,...a})});s.displayName="Button"},39134:function(e,t,r){"use strict";r.d(t,{I:function(){return i}});var o=r(27573),n=r(7653),l=r(29147);let i=n.forwardRef((e,t)=>{let{className:r,type:n,...i}=e;return(0,o.jsx)("input",{type:n,className:(0,l.cn)("flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...i})});i.displayName="Input"},58756:function(e,t,r){"use strict";r.d(t,{GraphView:function(){return j}});var o=r(27573),n=r(7653),l=r(39134),i=r(50466),s=r(10535),a=r(15134);r(23867);var d=r(86332),c=r.n(d),u=r(26598);let h={component:"C",hook:"H",api:"A",store:"S",function:"F",class:"CL",interface:"I",enum:"E",type:"T",variable:"V",unknown:"?"};var f=r(57429);let g={graphNode:function(e){var t,r,n,l,i;let{data:s}=e,d=null!==(l=null!==(n=h[s.nodeType])&&void 0!==n?n:null===(r=s.nodeType)||void 0===r?void 0:null===(t=r.charAt(0))||void 0===t?void 0:t.toUpperCase())&&void 0!==l?l:"?",c=null!==(i=s.layerColor)&&void 0!==i?i:"#6b7280",f=void 0!==s.highlighted,g=!0===s.highlighted;return(0,o.jsxs)("div",{className:"px-3 py-2 rounded-lg border-2 text-xs font-medium transition-opacity duration-200",style:{borderColor:c,backgroundColor:"color-mix(in srgb, ".concat(c," 8%, var(--background, #fff))"),boxShadow:g?"0 0 12px ".concat(c,", 0 0 4px ").concat(c):"0 1px 3px rgba(0,0,0,0.12)",opacity:f&&!g?.15:1},children:[(0,o.jsx)(a.HH,{type:"target",position:u.Ly.Top,style:{background:c}}),(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"inline-flex items-center justify-center w-5 h-5 rounded text-[10px] font-bold text-white flex-shrink-0",style:{backgroundColor:c},children:d}),(0,o.jsx)("span",{className:"truncate max-w-[140px]",children:s.label})]}),(0,o.jsx)(a.HH,{type:"source",position:u.Ly.Bottom,style:{background:c}})]})}};function p(e){let{filterMode:t="highlight",searchQuery:r=""}=e;return(0,o.jsx)(a.tV,{children:(0,o.jsx)(m,{filterMode:t,searchQuery:r})})}function m(e){let{filterMode:t,searchQuery:r}=e,{data:l}=(0,f.nO)(),i=(0,s.q)(e=>e.selectNode),{fitView:d}=(0,a._K)(),u=(0,n.useMemo)(()=>{if(!l)return{nodes:[],edges:[]};let e=(null!=r?r:"").toLowerCase().trim(),o="filter"===t&&e?l.nodes.filter(t=>t.name.toLowerCase().includes(e)):l.nodes.slice(0,300),n=e.length>0,i=o.map(t=>{var r,o;return{id:t.id,type:"graphNode",position:{x:0,y:0},data:{label:t.name,nodeType:t.type,layer:null!==(r=t.layer)&&void 0!==r?r:"Other",layerColor:null!==(o=t.layerColor)&&void 0!==o?o:"#6b7280",highlighted:n?t.name.toLowerCase().includes(e):void 0}}}),s=new Set(i.map(e=>e.id));return function(e,t){let r=new(c()).graphlib.Graph;for(let t of(r.setDefaultEdgeLabel(()=>({})),r.setGraph({rankdir:"TB",ranksep:80,nodesep:60}),e))r.setNode(t.id,{width:180,height:50});for(let e of t)r.setEdge(e.source,e.target);return c().layout(r),{nodes:e.map(e=>{let t=r.node(e.id);return{...e,position:{x:t.x-90,y:t.y-25}}}),edges:t}}(i,l.edges.filter(e=>s.has(e.from)&&s.has(e.to)).slice(0,500).map((e,t)=>({id:"".concat(e.from,"->").concat(e.to,"-").concat(t),source:e.from,target:e.to,animated:!1,style:{stroke:"#4b5563"}})))},[l,r,t]),[h,p,m]=(0,a.Rr)(u.nodes),[x,v,b]=(0,a.ll)(u.edges);(0,n.useEffect)(()=>{p(u.nodes),v(u.edges)},[u,p,v]),(0,n.useEffect)(()=>{if(r){let e=u.nodes.find(e=>!0===e.data.highlighted);e&&setTimeout(()=>{d({nodes:[e],duration:500,maxZoom:1.5})},100)}},[r,u.nodes,d]);let y=(0,n.useCallback)((e,t)=>{i(t.id)},[i]);return(0,o.jsxs)(a.x$,{nodes:h,edges:x,onNodesChange:m,onEdgesChange:b,onNodeClick:y,nodeTypes:g,fitView:!0,children:[(0,o.jsx)(a.Aq,{}),(0,o.jsx)(a.ZX,{}),(0,o.jsx)(a.a9,{nodeColor:e=>{var t;let r=null===(t=e.data)||void 0===t?void 0:t.layerColor;return null!=r?r:"#6b7280"}})]})}var x=r(3806),v=r(95731),b=r(38333),y=r(57124);function j(){let{t:e}=(0,x.$G)(),t=(0,s.q)(e=>e.searchQuery),r=(0,s.q)(e=>e.setSearchQuery),[a,d]=(0,n.useState)("highlight");return(0,o.jsxs)("div",{className:"flex flex-col h-full",children:[(0,o.jsxs)("div",{className:"p-3 border-b border-border flex items-center gap-2",children:[(0,o.jsxs)("div",{className:"relative flex-1 max-w-sm",children:[(0,o.jsx)(v.Z,{className:"absolute left-2 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"}),(0,o.jsx)(l.I,{placeholder:e("graph.searchPlaceholder"),value:t,onChange:e=>r(e.target.value),className:"pl-8"})]}),t&&(0,o.jsx)(i.z,{variant:"ghost",size:"sm",onClick:()=>d(e=>"highlight"===e?"filter":"highlight"),title:e("highlight"===a?"graph.filterOnly":"graph.highlightAll"),className:"flex-shrink-0",children:"highlight"===a?(0,o.jsx)(b.Z,{className:"h-4 w-4"}):(0,o.jsx)(y.Z,{className:"h-4 w-4"})})]}),(0,o.jsx)("div",{className:"flex-1",children:(0,o.jsx)(p,{filterMode:a,searchQuery:t})})]})}},10535:function(e,t,r){"use strict";r.d(t,{q:function(){return a}});var o=r(62052);let n="devflow-project-root",l="devflow-active-project-root";function i(e){try{return localStorage.getItem(e)}catch(e){return null}}function s(e,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch(e){}}let a=(0,o.Ue)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:i(n),activeProjectRoot:i(l),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{s(n,t),e({projectRoot:t})},setActiveProjectRoot:t=>{s(l,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},29147:function(e,t,r){"use strict";r.d(t,{cn:function(){return l}});var o=r(10607),n=r(25579);function l(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.m6)((0,o.W)(t))}}},function(e){e.O(0,[650,856,384,806,697,221,429,293,528,744],function(){return e(e.s=95050)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[219],{15198:function(e,n,t){Promise.resolve().then(t.bind(t,29504))},50466:function(e,n,t){"use strict";t.d(n,{z:function(){return d}});var r=t(27573),l=t(7653),s=t(29147);let o=(0,t(49289).j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=l.forwardRef((e,n)=>{let{className:t,variant:l,size:d,...i}=e;return(0,r.jsx)("button",{className:(0,s.cn)(o({variant:l,size:d,className:t})),ref:n,...i})});d.displayName="Button"},72196:function(e,n,t){"use strict";t.d(n,{Ol:function(){return d},Zb:function(){return o},aY:function(){return a},ll:function(){return i}});var r=t(27573),l=t(7653),s=t(29147);let o=l.forwardRef((e,n)=>{let{className:t,...l}=e;return(0,r.jsx)("div",{ref:n,className:(0,s.cn)("rounded-lg border border-border bg-card text-card-foreground",t),...l})});o.displayName="Card";let d=l.forwardRef((e,n)=>{let{className:t,...l}=e;return(0,r.jsx)("div",{ref:n,className:(0,s.cn)("flex flex-col space-y-1.5 p-4",t),...l})});d.displayName="CardHeader";let i=l.forwardRef((e,n)=>{let{className:t,...l}=e;return(0,r.jsx)("h3",{ref:n,className:(0,s.cn)("text-sm font-semibold leading-none tracking-tight",t),...l})});i.displayName="CardTitle";let a=l.forwardRef((e,n)=>{let{className:t,...l}=e;return(0,r.jsx)("div",{ref:n,className:(0,s.cn)("p-4 pt-0",t),...l})});a.displayName="CardContent"},39134:function(e,n,t){"use strict";t.d(n,{I:function(){return o}});var r=t(27573),l=t(7653),s=t(29147);let o=l.forwardRef((e,n)=>{let{className:t,type:l,...o}=e;return(0,r.jsx)("input",{type:l,className:(0,s.cn)("flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",t),ref:n,...o})});o.displayName="Input"},29504:function(e,n,t){"use strict";t.d(n,{KnowledgeView:function(){return c}});var r=t(27573),l=t(7653),s=t(57429),o=t(72196),d=t(39134),i=t(50466),a=t(3806);function c(){let{t:e}=(0,a.$G)(),{data:n,isLoading:t}=(0,s.ff)(),c=(0,s.mE)(),[u,f]=(0,l.useState)(""),{data:m}=(0,s.mU)(u);return(0,r.jsxs)("div",{className:"p-6 space-y-4 h-full overflow-y-auto",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-2xl font-bold",children:e("knowledge.title","Knowledge Base")}),(0,r.jsx)(i.z,{onClick:()=>c.mutate(void 0),disabled:c.isPending,children:c.isPending?e("knowledge.syncing","Syncing..."):e("knowledge.syncAll","Sync All")})]}),t?(0,r.jsx)("div",{className:"text-muted-foreground",children:e("knowledge.loading","Loading...")}):n&&n.length>0?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-muted-foreground",children:e("knowledge.sources","Sources")}),n.map(n=>{var t,l,s,d,a,u,f,m;return(0,r.jsx)(o.Zb,{children:(0,r.jsxs)(o.aY,{className:"p-4 flex justify-between items-center",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"font-semibold",children:null!==(a=null===(t=n.source)||void 0===t?void 0:t.name)&&void 0!==a?a:n.name}),(0,r.jsxs)("div",{className:"text-sm text-muted-foreground",children:[null!==(u=n.entryCount)&&void 0!==u?u:0," chunks \xb7 ",null!==(f=null===(s=n.source)||void 0===s?void 0:null===(l=s.urls)||void 0===l?void 0:l.length)&&void 0!==f?f:0," URLs \xb7 ","ready"===n.status?e("knowledge.synced"):e("knowledge.notSynced"),n.lastSyncTime?" \xb7 ".concat(e("knowledge.last"),": ").concat(new Date(n.lastSyncTime).toLocaleDateString()):""]})]}),(0,r.jsx)(i.z,{variant:"outline",size:"sm",onClick:()=>{var e,t;return c.mutate(null!==(t=null===(e=n.source)||void 0===e?void 0:e.name)&&void 0!==t?t:n.name)},disabled:c.isPending,children:e("knowledge.sync")})]})},null!==(m=null===(d=n.source)||void 0===d?void 0:d.name)&&void 0!==m?m:n.name)})]}):(0,r.jsx)(o.Zb,{children:(0,r.jsx)(o.aY,{className:"p-6 text-center text-muted-foreground",children:e("knowledge.noSources","No knowledge sources. Install a plugin and sync docs.")})}),(0,r.jsxs)("div",{className:"space-y-2 pt-4",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-muted-foreground",children:e("knowledge.search","Search")}),(0,r.jsx)("div",{className:"flex gap-2",children:(0,r.jsx)(d.I,{placeholder:e("knowledge.searchPlaceholder","Search knowledge..."),value:u,onChange:e=>f(e.target.value)})}),m&&m.length>0&&(0,r.jsx)("div",{className:"space-y-2",children:m.map((n,t)=>{var l;return(0,r.jsx)(o.Zb,{children:(0,r.jsxs)(o.aY,{className:"p-4",children:[(0,r.jsx)("div",{className:"font-semibold",children:n.title}),(0,r.jsx)("div",{className:"text-sm text-muted-foreground mt-1",children:null===(l=n.content)||void 0===l?void 0:l.slice(0,200)}),void 0!==n.score&&(0,r.jsxs)("div",{className:"text-xs text-muted-foreground mt-1",children:[e("knowledge.score"),": ",n.score.toFixed(2)]})]})},t)})})]})]})}},29147:function(e,n,t){"use strict";t.d(n,{cn:function(){return s}});var r=t(10607),l=t(25579);function s(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];return(0,l.m6)((0,r.W)(n))}},49289:function(e,n,t){"use strict";t.d(n,{j:function(){return o}});var r=t(10607);let l=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,s=r.W,o=(e,n)=>t=>{var r;if((null==n?void 0:n.variants)==null)return s(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:o,defaultVariants:d}=n,i=Object.keys(o).map(e=>{let n=null==t?void 0:t[e],r=null==d?void 0:d[e];if(null===n)return null;let s=l(n)||l(r);return o[e][s]}),a=t&&Object.entries(t).reduce((e,n)=>{let[t,r]=n;return void 0===r||(e[t]=r),e},{});return s(e,i,null==n?void 0:null===(r=n.compoundVariants)||void 0===r?void 0:r.reduce((e,n)=>{let{class:t,className:r,...l}=n;return Object.entries(l).every(e=>{let[n,t]=e;return Array.isArray(t)?t.includes({...d,...a}[n]):({...d,...a})[n]===t})?[...e,t,r]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}}},function(e){e.O(0,[736,806,697,429,293,528,744],function(){return e(e.s=15198)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[219],{99222:function(e,n,t){Promise.resolve().then(t.bind(t,29504))},50466:function(e,n,t){"use strict";t.d(n,{z:function(){return d}});var r=t(27573),l=t(7653),s=t(29147);let o=(0,t(49289).j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),d=l.forwardRef((e,n)=>{let{className:t,variant:l,size:d,...i}=e;return(0,r.jsx)("button",{className:(0,s.cn)(o({variant:l,size:d,className:t})),ref:n,...i})});d.displayName="Button"},72196:function(e,n,t){"use strict";t.d(n,{Ol:function(){return d},Zb:function(){return o},aY:function(){return a},ll:function(){return i}});var r=t(27573),l=t(7653),s=t(29147);let o=l.forwardRef((e,n)=>{let{className:t,...l}=e;return(0,r.jsx)("div",{ref:n,className:(0,s.cn)("rounded-lg border border-border bg-card text-card-foreground",t),...l})});o.displayName="Card";let d=l.forwardRef((e,n)=>{let{className:t,...l}=e;return(0,r.jsx)("div",{ref:n,className:(0,s.cn)("flex flex-col space-y-1.5 p-4",t),...l})});d.displayName="CardHeader";let i=l.forwardRef((e,n)=>{let{className:t,...l}=e;return(0,r.jsx)("h3",{ref:n,className:(0,s.cn)("text-sm font-semibold leading-none tracking-tight",t),...l})});i.displayName="CardTitle";let a=l.forwardRef((e,n)=>{let{className:t,...l}=e;return(0,r.jsx)("div",{ref:n,className:(0,s.cn)("p-4 pt-0",t),...l})});a.displayName="CardContent"},39134:function(e,n,t){"use strict";t.d(n,{I:function(){return o}});var r=t(27573),l=t(7653),s=t(29147);let o=l.forwardRef((e,n)=>{let{className:t,type:l,...o}=e;return(0,r.jsx)("input",{type:l,className:(0,s.cn)("flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",t),ref:n,...o})});o.displayName="Input"},29504:function(e,n,t){"use strict";t.d(n,{KnowledgeView:function(){return c}});var r=t(27573),l=t(7653),s=t(57429),o=t(72196),d=t(39134),i=t(50466),a=t(3806);function c(){let{t:e}=(0,a.$G)(),{data:n,isLoading:t}=(0,s.ff)(),c=(0,s.mE)(),[u,f]=(0,l.useState)(""),{data:m}=(0,s.mU)(u);return(0,r.jsxs)("div",{className:"p-6 space-y-4 h-full overflow-y-auto",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-2xl font-bold",children:e("knowledge.title","Knowledge Base")}),(0,r.jsx)(i.z,{onClick:()=>c.mutate(void 0),disabled:c.isPending,children:c.isPending?e("knowledge.syncing","Syncing..."):e("knowledge.syncAll","Sync All")})]}),t?(0,r.jsx)("div",{className:"text-muted-foreground",children:e("knowledge.loading","Loading...")}):n&&n.length>0?(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-muted-foreground",children:e("knowledge.sources","Sources")}),n.map(n=>{var t,l,s,d,a,u,f,m;return(0,r.jsx)(o.Zb,{children:(0,r.jsxs)(o.aY,{className:"p-4 flex justify-between items-center",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"font-semibold",children:null!==(a=null===(t=n.source)||void 0===t?void 0:t.name)&&void 0!==a?a:n.name}),(0,r.jsxs)("div",{className:"text-sm text-muted-foreground",children:[null!==(u=n.entryCount)&&void 0!==u?u:0," chunks \xb7 ",null!==(f=null===(s=n.source)||void 0===s?void 0:null===(l=s.urls)||void 0===l?void 0:l.length)&&void 0!==f?f:0," URLs \xb7 ","ready"===n.status?e("knowledge.synced"):e("knowledge.notSynced"),n.lastSyncTime?" \xb7 ".concat(e("knowledge.last"),": ").concat(new Date(n.lastSyncTime).toLocaleDateString()):""]})]}),(0,r.jsx)(i.z,{variant:"outline",size:"sm",onClick:()=>{var e,t;return c.mutate(null!==(t=null===(e=n.source)||void 0===e?void 0:e.name)&&void 0!==t?t:n.name)},disabled:c.isPending,children:e("knowledge.sync")})]})},null!==(m=null===(d=n.source)||void 0===d?void 0:d.name)&&void 0!==m?m:n.name)})]}):(0,r.jsx)(o.Zb,{children:(0,r.jsx)(o.aY,{className:"p-6 text-center text-muted-foreground",children:e("knowledge.noSources","No knowledge sources. Install a plugin and sync docs.")})}),(0,r.jsxs)("div",{className:"space-y-2 pt-4",children:[(0,r.jsx)("h3",{className:"text-sm font-semibold text-muted-foreground",children:e("knowledge.search","Search")}),(0,r.jsx)("div",{className:"flex gap-2",children:(0,r.jsx)(d.I,{placeholder:e("knowledge.searchPlaceholder","Search knowledge..."),value:u,onChange:e=>f(e.target.value)})}),m&&m.length>0&&(0,r.jsx)("div",{className:"space-y-2",children:m.map((n,t)=>{var l;return(0,r.jsx)(o.Zb,{children:(0,r.jsxs)(o.aY,{className:"p-4",children:[(0,r.jsx)("div",{className:"font-semibold",children:n.title}),(0,r.jsx)("div",{className:"text-sm text-muted-foreground mt-1",children:null===(l=n.content)||void 0===l?void 0:l.slice(0,200)}),void 0!==n.score&&(0,r.jsxs)("div",{className:"text-xs text-muted-foreground mt-1",children:[e("knowledge.score"),": ",n.score.toFixed(2)]})]})},t)})})]})]})}},29147:function(e,n,t){"use strict";t.d(n,{cn:function(){return s}});var r=t(10607),l=t(25579);function s(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];return(0,l.m6)((0,r.W)(n))}},49289:function(e,n,t){"use strict";t.d(n,{j:function(){return o}});var r=t(10607);let l=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,s=r.W,o=(e,n)=>t=>{var r;if((null==n?void 0:n.variants)==null)return s(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:o,defaultVariants:d}=n,i=Object.keys(o).map(e=>{let n=null==t?void 0:t[e],r=null==d?void 0:d[e];if(null===n)return null;let s=l(n)||l(r);return o[e][s]}),a=t&&Object.entries(t).reduce((e,n)=>{let[t,r]=n;return void 0===r||(e[t]=r),e},{});return s(e,i,null==n?void 0:null===(r=n.compoundVariants)||void 0===r?void 0:r.reduce((e,n)=>{let{class:t,className:r,...l}=n;return Object.entries(l).every(e=>{let[n,t]=e;return Array.isArray(t)?t.includes({...d,...a}[n]):({...d,...a})[n]===t})?[...e,t,r]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}}},function(e){e.O(0,[384,806,697,429,293,528,744],function(){return e(e.s=99222)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{70135:function(e,t,o){Promise.resolve().then(o.bind(o,68762))},68762:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return K}});var n=o(27573);o(72625);var r=o(71628),s=o(77930),l=o(7653);function a(e){let{children:t}=e,[o]=(0,l.useState)(()=>new r.S({defaultOptions:{queries:{staleTime:3e4,retry:1}}}));return(0,n.jsx)(s.aH,{client:o,children:t})}var i=o(81695),c=o(10535),d=o(57429),u=o(29147),m=o(3806);let p={properties:"detail.properties",imports:"detail.imports",history:"detail.history"};function g(){let{t:e}=(0,m.$G)(),t=(0,c.q)(e=>e.selectedNodeId),o=(0,c.q)(e=>e.detailTab),r=(0,c.q)(e=>e.setDetailTab),{data:s}=(0,d.n4)(),l=null==s?void 0:s.nodes.find(e=>e.id===t);return t?(0,n.jsxs)("div",{className:"flex flex-col h-full",children:[(0,n.jsx)("div",{className:"flex border-b border-border",children:Object.keys(p).map(t=>(0,n.jsx)("button",{onClick:()=>r(t),className:(0,u.cn)("flex-1 py-2 text-xs font-medium capitalize",o===t?"border-b-2 border-primary text-primary":"text-muted-foreground"),children:e(p[t])},t))}),(0,n.jsx)("div",{className:"flex-1 p-4 overflow-y-auto",children:l?(0,n.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.name"),":"]})," ",l.name]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.type"),":"]})," ",(0,n.jsx)("span",{className:"capitalize",children:l.type})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.file"),":"]})," ",(0,n.jsx)("span",{className:"font-mono text-xs",children:l.file})]})]}):(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:e("detail.notFound")})})]}):(0,n.jsx)("div",{className:"p-4 text-sm text-muted-foreground",children:e("detail.selectNode")})}var f=o(88146),h=o(83071),v=o(50646),k=o(88497),y=o(61990),x=o(31815),w=o(70548),b=o(41755),R=o(25555),T=o(39790),S=o(84142),j=o(31095),C=o(88623),P=o(46693),N=o(71523),I=o(12198);let D=[{href:"/",labelKey:"nav.overview",icon:h.Z},{href:"/graph",labelKey:"nav.graph",icon:v.Z},{href:"/context",labelKey:"nav.context",icon:k.Z},{href:"/workflows",labelKey:"nav.workflows",icon:y.Z},{href:"/memory",labelKey:"nav.memory",icon:x.Z},{href:"/knowledge",labelKey:"nav.knowledge",icon:w.Z},{href:"/runs",labelKey:"nav.runs",icon:b.Z},{href:"/timeline",labelKey:"nav.timeline",icon:R.Z},{href:"/executions",labelKey:"nav.executions",icon:T.Z},{href:"/tool-metrics",labelKey:"nav.toolMetrics",icon:S.Z},{href:"/accuracy",labelKey:"nav.accuracy",icon:j.Z},{href:"/replay",labelKey:"nav.replay",icon:C.Z},{href:"/benchmark",labelKey:"nav.benchmark",icon:P.Z},{href:"/doctor",labelKey:"nav.doctor",icon:N.Z},{href:"/settings",labelKey:"nav.settings",icon:I.Z}];function M(){let{t:e,i18n:t}=(0,m.$G)(),o=(0,i.usePathname)();return(0,n.jsxs)("nav",{className:"flex h-full min-w-max flex-row gap-1 p-2 md:min-w-0 md:flex-col md:p-3",children:[(0,n.jsx)(f.default,{href:"/",className:"flex h-9 shrink-0 items-center px-2 text-base font-bold text-primary md:mb-2 md:px-3",children:e("nav.title")}),(0,n.jsx)("div",{className:"flex flex-1 gap-1 md:flex-col",children:D.map(t=>{let r="/"===t.href?"/"===o:o===t.href||o.startsWith("".concat(t.href,"/"));return(0,n.jsxs)(f.default,{href:t.href,title:e(t.labelKey),className:(0,u.cn)("flex h-9 shrink-0 items-center gap-3 rounded-md px-2 text-sm transition-colors md:px-3",r?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:[(0,n.jsx)(t.icon,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"hidden md:inline",children:e(t.labelKey)})]},t.href)})}),(0,n.jsx)("div",{className:"shrink-0 border-l border-border pl-2 md:mt-auto md:border-l-0 md:border-t md:pl-0 md:pt-3",children:(0,n.jsx)("button",{onClick:()=>{t.changeLanguage("zh"===t.language?"en":"zh")},className:"h-9 w-full rounded-md px-3 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:e("nav.language")})})]})}function A(e){let{nav:t,main:o,detail:r}=e;return(0,n.jsxs)("div",{className:"flex h-dvh w-full flex-col md:flex-row",children:[(0,n.jsx)("aside",{className:"h-14 shrink-0 overflow-x-auto border-b border-border bg-card md:h-auto md:w-[220px] md:overflow-y-auto md:border-b-0 md:border-r",children:t}),(0,n.jsx)("main",{className:"min-h-0 min-w-0 flex-1 overflow-hidden",children:o}),r?(0,n.jsx)("aside",{className:"hidden w-[340px] shrink-0 overflow-y-auto border-l border-border bg-card xl:block",children:r}):null]})}function F(e){let{children:t}=e,o=(0,i.usePathname)(),[r,s]=(0,l.useState)(!1);return((0,l.useEffect)(()=>s(!0),[]),r)?(0,n.jsx)(A,{nav:(0,n.jsx)(M,{}),main:t,detail:"/graph"===o?(0,n.jsx)(g,{}):void 0}):(0,n.jsx)("div",{className:"flex h-dvh items-center justify-center text-sm text-muted-foreground",children:"Loading..."})}var E=o(98533),_=o(53495),O=JSON.parse('{"nav":{"title":"DevFlow","overview":"Overview","graph":"Graph","context":"Context","workflows":"Workflows","memory":"Memory","benchmark":"Benchmark","knowledge":"Knowledge","runs":"Runs","timeline":"Timeline","executions":"Executions","toolMetrics":"Tool Metrics","accuracy":"Accuracy","replay":"Replay","doctor":"Doctor","settings":"Settings","language":"中文"},"overview":{"title":"Project Overview","project":"Project","noProject":"No project connected","filesIndexed":"Files Indexed","workflows":"Workflows","agentRuns":"Agent Runs","techStack":"Tech Stack","recentRuns":"Recent Agent Runs","noRuns":"No agent runs recorded yet.","agent":"Agent","mode":"Mode","source":"Source","status":"Status","tokens":"Tokens","connectTitle":"Connect Project","connectDescription":"Enter the root path of your project to connect. The server will index and analyze the codebase.","connectPlaceholder":"/path/to/your/project","connecting":"Connecting...","connect":"Connect","connectError":"Failed to connect. Make sure the path exists and is accessible.","architectureLayers":"Architecture Layers","filesCount":"{{count}} files","keyModules":"Key Modules","keyFiles":"Key Files","recommended":"Recommended Next Steps","plugins":"Plugins","queries":"Queries","switchProject":"Switch Project","switchProjectPlaceholder":"Enter project path...","switchProjectConfirm":"Switch","disconnectProject":"Disconnect"},"onboarding":{"title":"Onboarding Pack","empty":"No onboarding pack generated yet","noActiveProject":"No active project","generate":"Generate Onboarding Pack","refresh":"Refresh onboarding pack"},"context":{"title":"Context Builder","placeholder":"Search symbols or ask a question...","build":"Build","building":"Building context...","results":"Results ({{files}} files, ~{{tokens}} tokens)","taskMode":"Task Mode","taskContext":"Task Context","confidenceTokens":"{{confidence}}% confidence \xb7 {{tokens}} tokens","requiredFiles":"Required Files","optionalFiles":"Optional Files","keySymbols":"Key Symbols","riskHints":"Risk Hints","nextActions":"Next Actions","relevanceDirect":"direct","relevanceIndirect":"indirect","levelHigh":"high","levelMedium":"medium","levelLow":"low","wasHelpful":"Was this helpful?","hit":"Hit","partial":"Partial","miss":"Miss","thanks":"Thanks for your feedback!"},"memory":{"title":"Memory","loading":"Loading...","pendingApproval":"Pending Approval","approvedMemories":"Approved Memories","approve":"Approve","reject":"Reject","noMemories":"No memories yet","noMemoriesHint":"Memories help avoid repeating mistakes","confidence":"confidence","original":"Original","yes":"Yes","no":"No","category":{"mcp_correction":"MCP Correction","project_knowledge":"Project Knowledge","failure_lesson":"Failure Lesson"},"searchPlaceholder":"Search memories...","addMemory":"Add Memory","editMemory":"Edit Memory","deleteMemory":"Delete","deleteConfirm":"Delete this memory?","categoryLabel":"Category","content":"Content","scope":"Scope (optional)","cancel":"Cancel","save":"Save"},"workflows":{"title":"Workflow Runs","available":"Available Workflows","steps":"steps","stream":"Stream","closeStream":"Close stream","runHistory":"Run History","runId":"Run ID","started":"Started","noRuns":"No runs yet. Trigger a workflow above."},"benchmark":{"title":"Benchmark","running":"Running...","run":"Run Benchmark","tasks":"tasks","task":"Task","experimentTab":"A/B Benchmark","operationsTab":"Operations","filesTouched":"Files Touched","correctness":"Correctness","regressions":"Regressions Over 10%","baselineCorrectness":"Baseline Correctness","devflowCorrectness":"DevFlow Correctness","baselineTokens":"Baseline Tokens","devflowTokens":"DevFlow Tokens","noReports":"No benchmark reports yet. Run one to get started.","roiTitle":"ROI Dashboard","loading":"Loading...","noData":"No data available. Start using DevFlow to collect telemetry.","overview":"Overview","totalRuns":"Total Runs","completed":"Completed","failed":"Failed","avgDuration":"Avg Duration","avgTokens":"Avg Tokens","firstPassRate":"First Pass Rate","feedbackHitRate":"Feedback Hit Rate","efficiency":"Efficiency","avgTimePerTask":"Avg Time Per Task","avgRetryCount":"Avg Retry Count","tokensSaved":"Tokens Saved","failureBreakdown":"Failure Breakdown","workflowHealth":"Workflow Health","workflow":"Workflow","runs":"Runs","successRate":"Success Rate","pluginEffectiveness":"Plugin Effectiveness","plugin":"Plugin","dailyTrends":"Daily Trends","date":"Date","tokens":"Tokens","failures":"Failures","empty":"No telemetry data yet. Start using DevFlow with an AI agent to collect ROI metrics.","failureCategories":{"context_insufficient":"Context Insufficient","knowledge_missing":"Knowledge Missing","workflow_design_issue":"Workflow Design Issue","tool_error":"Tool Error","agent_override":"Agent Override","unknown":"Unknown"},"seconds":"{{value}}s","period":"{{from}} → {{to}}","experimentSummary":"Experiment Summary","timeSavedRate":"Time Saved","tokenSavedRate":"Token Saved","detailedResults":"Detailed Results","faster":"{{percent}}% faster","baseline":"Baseline","devflow":"DevFlow","noExperimentData":"No experiment data","opsSummary":"Operations Summary","totalRunsCount":"Total Runs","successRatePercent":"Success Rate","avgTokenUsage":"Avg Token Usage","avgDurationTime":"Avg Duration","feedbackHitRatePercent":"Feedback Hit Rate","noOpsData":"No operations data","loadFailed":"Load failed: {{error}}","pluginAnalysis":"Plugin Value Analysis","recommendedInstall":"Recommended to Install","suggestedRemove":"Suggested to Remove","installCount":"Installs","usageRate":"Usage","successRateShort":"Success","tokenImpact":"Token Impact","lastUsed":"Last Used","noPluginData":"No plugin data","recommended":"Recommended","lowEfficiency":"Low Efficiency"},"graph":{"searchPlaceholder":"Search nodes...","filterOnly":"Filter only","highlightAll":"Highlight all"},"detail":{"selectNode":"Select a node to view details","properties":"Properties","imports":"Imports","history":"History","name":"Name","type":"Type","file":"File","notFound":"Node not found"},"knowledge":{"title":"Knowledge Base","sources":"Sources","syncing":"Syncing...","syncAll":"Sync All","loading":"Loading...","noSources":"No knowledge sources. Install a plugin and sync docs.","search":"Search","searchPlaceholder":"Search knowledge...","synced":"Synced","notSynced":"Not synced","last":"Last","sync":"Sync","score":"Score"},"runs":{"title":"Runs","empty":"No runs recorded yet."},"timeline":{"title":"Timeline","runs":"Runs","tokens":"Tokens","llmCalls":"LLM Calls","toolUses":"Tool Uses","completed":"completed","failed":"failed"},"events":{"llmCall":"LLM Call","toolUse":"Tool Use","memoryRead":"Memory Read","memoryWrite":"Memory Write","fileRead":"File Read","fileWrite":"File Write","bashCommand":"Bash","mcpToolCall":"MCP Tool","error":"Error","userInput":"User Input","stepStart":"Step Start","stepEnd":"Step End","empty":"No events recorded for this run.","steps":"Steps","eventCount":"events","selectEvent":"Select an event to view details","eventDetail":"Event Detail","kind":"Kind","step":"Step","duration":"Duration","model":"Model","tokens":"Tokens","tokensInOut":"{{input}} in / {{output}} out","prompt":"Prompt","response":"Response","stdout":"Stdout","stderr":"Stderr","truncated":"Content was truncated"},"runDetail":{"title":"Run Detail","events":"events","llm":"LLM","tokens":"tokens","failureCategory":"Failure Category","failureReason":"Failure Reason","suggestedActions":"Suggested Actions","category":{"context_insufficient":"Context Insufficient","knowledge_missing":"Knowledge Missing","workflow_design_issue":"Workflow Design Issue","tool_error":"Tool Error","agent_override":"Agent Override"}},"plugin":{"title":"Plugin Effectiveness","installCount":"Install Count","activeRate":"Active Rate","successRate":"Success Rate","avgTokenImpact":"Avg Token Impact","recommendInstall":"Recommend Install","recommendOptimize":"Recommend Optimize","recommendRemove":"Recommend Remove"},"executions":{"title":"Skill Executions","loading":"Loading executions...","overallCompliance":"Overall MCP Compliance","totalExecutions":"Total Executions","skillsTracked":"Skills Tracked","skill":"Skill","status":"Status","tools":"Tools","mcpRate":"MCP Rate","duration":"Duration","tokens":"Tokens","empty":"No executions recorded yet","traceTimeline":"Execution Trace","blocked":"Blocked","fallback":"Fallback"},"settings":{"title":"Project Settings","projectInfo":"Project Info","name":"Name","mode":"Mode","plugins":"Plugins","noPlugins":"No plugins installed","telemetry":"Telemetry","totalRuns":"Runs stored","totalTokens":"Total tokens","clearOldRuns":"Clear old runs (30d+)"}}'),L=JSON.parse('{"nav":{"title":"DevFlow","overview":"概览","graph":"图谱","context":"上下文","workflows":"工作流","memory":"记忆","benchmark":"基准测试","knowledge":"知识库","runs":"运行记录","timeline":"时间线","executions":"执行轨迹","toolMetrics":"工具指标","accuracy":"准确率","replay":"回放","doctor":"自检","settings":"设置","language":"EN"},"overview":{"title":"项目概览","project":"项目","noProject":"未连接项目","filesIndexed":"已索引文件","workflows":"工作流","agentRuns":"智能体运行","techStack":"技术栈","recentRuns":"最近运行","noRuns":"暂无运行记录","agent":"智能体","mode":"模式","source":"来源","status":"状态","tokens":"令牌数","connectTitle":"连接项目","connectDescription":"输入项目根路径进行连接。服务端将索引并分析代码库。","connectPlaceholder":"/path/to/your/project","connecting":"连接中...","connect":"连接","connectError":"连接失败,请确认路径存在且可访问。","architectureLayers":"架构分层","filesCount":"{{count}} 个文件","keyModules":"关键模块","keyFiles":"关键文件","recommended":"推荐下一步","plugins":"插件","queries":"推荐查询","switchProject":"切换项目","switchProjectPlaceholder":"输入项目路径...","switchProjectConfirm":"切换","disconnectProject":"断开连接"},"onboarding":{"title":"启动包","empty":"尚未生成启动包","noActiveProject":"未激活项目","generate":"生成启动包","refresh":"刷新启动包"},"context":{"title":"上下文构建器","placeholder":"搜索符号或输入查询...","build":"构建","building":"正在构建上下文...","results":"结果({{files}} 个文件,约 {{tokens}} 个令牌)","taskMode":"任务模式","taskContext":"任务上下文","confidenceTokens":"{{confidence}}% 置信度 \xb7 {{tokens}} 令牌","requiredFiles":"必需文件","optionalFiles":"可选文件","keySymbols":"关键符号","riskHints":"风险提示","nextActions":"下一步操作","relevanceDirect":"直接","relevanceIndirect":"间接","levelHigh":"高","levelMedium":"中","levelLow":"低","wasHelpful":"有帮助吗?","hit":"有用","partial":"部分有用","miss":"无用","thanks":"感谢反馈!"},"memory":{"title":"记忆","loading":"加载中...","pendingApproval":"待审批","approvedMemories":"已批准的记忆","approve":"批准","reject":"拒绝","noMemories":"暂无记忆","noMemoriesHint":"记忆有助于避免重复犯错","confidence":"置信度","original":"原始","yes":"是","no":"否","category":{"mcp_correction":"MCP 纠正","project_knowledge":"项目知识","failure_lesson":"失败教训"},"searchPlaceholder":"搜索记忆...","addMemory":"添加记忆","editMemory":"编辑记忆","deleteMemory":"删除","deleteConfirm":"确定删除这条记忆?","categoryLabel":"分类","content":"内容","scope":"作用域(可选)","cancel":"取消","save":"保存"},"workflows":{"title":"工作流运行","available":"可用工作流","steps":"步骤","stream":"流","closeStream":"关闭流","runHistory":"运行历史","runId":"运行 ID","started":"开始时间","noRuns":"暂无运行,请触发上方工作流"},"benchmark":{"title":"基准测试","running":"运行中...","run":"运行测试","tasks":"任务","task":"任务","experimentTab":"A/B 基准","operationsTab":"运行治理","filesTouched":"涉及文件","correctness":"正确率","regressions":"超过 10% 的回退","baselineCorrectness":"基线正确率","devflowCorrectness":"DevFlow 正确率","baselineTokens":"基线 Token","devflowTokens":"DevFlow Token","noReports":"暂无测试报告,点击运行开始","roiTitle":"ROI 仪表盘","loading":"加载中...","noData":"暂无数据。使用 DevFlow 与 AI Agent 协作以收集 ROI 数据。","overview":"概览","totalRuns":"总运行数","completed":"已完成","failed":"已失败","avgDuration":"平均耗时","avgTokens":"平均令牌","firstPassRate":"首次通过率","feedbackHitRate":"反馈命中率","efficiency":"效率","avgTimePerTask":"平均每任务耗时","avgRetryCount":"平均重试次数","tokensSaved":"节省令牌数","failureBreakdown":"失败分类","workflowHealth":"工作流健康度","workflow":"工作流","runs":"运行数","successRate":"成功率","pluginEffectiveness":"插件有效性","plugin":"插件","dailyTrends":"每日趋势","date":"日期","tokens":"令牌数","failures":"失败数","empty":"暂无遥测数据。使用 DevFlow 与 AI Agent 协作以收集 ROI 指标。","failureCategories":{"context_insufficient":"上下文不足","knowledge_missing":"知识缺失","workflow_design_issue":"工作流设计问题","tool_error":"工具错误","agent_override":"智能体覆盖","unknown":"未知"},"seconds":"{{value}}s","period":"{{from}} → {{to}}","experimentSummary":"实验收益总结","timeSavedRate":"时间节省率","tokenSavedRate":"Token 节省率","detailedResults":"详细结果","faster":"{{percent}}% 更快","baseline":"基线","devflow":"DevFlow","noExperimentData":"暂无实验数据","opsSummary":"运营统计","totalRunsCount":"总运行次数","successRatePercent":"成功率","avgTokenUsage":"平均 Token 使用","avgDurationTime":"平均耗时","feedbackHitRatePercent":"反馈命中率","noOpsData":"暂无运营数据","loadFailed":"加载失败: {{error}}","pluginAnalysis":"插件价值分析","recommendedInstall":"推荐安装","suggestedRemove":"建议移除","installCount":"安装量","usageRate":"使用率","successRateShort":"成功率","tokenImpact":"Token 影响","lastUsed":"最近使用","noPluginData":"暂无插件数据","recommended":"推荐","lowEfficiency":"低效"},"graph":{"searchPlaceholder":"搜索节点...","filterOnly":"仅显示匹配","highlightAll":"高亮全部"},"detail":{"selectNode":"选择一个节点查看详情","properties":"属性","imports":"导入","history":"历史","name":"名称","type":"类型","file":"文件","notFound":"节点未找到"},"knowledge":{"title":"知识库","sources":"数据源","syncing":"同步中...","syncAll":"全部同步","loading":"加载中...","noSources":"暂无知识源,安装插件并同步文档。","search":"搜索","searchPlaceholder":"搜索知识...","synced":"已同步","notSynced":"未同步","last":"最近","sync":"同步","score":"相关性"},"runs":{"title":"运行记录","empty":"暂无运行记录。"},"timeline":{"title":"时间线","runs":"运行数","tokens":"令牌数","llmCalls":"LLM 调用","toolUses":"工具调用","completed":"已完成","failed":"已失败"},"events":{"llmCall":"LLM 调用","toolUse":"工具使用","memoryRead":"读取记忆","memoryWrite":"写入记忆","fileRead":"读取文件","fileWrite":"写入文件","bashCommand":"Bash","mcpToolCall":"MCP 工具","error":"错误","userInput":"用户输入","stepStart":"步骤开始","stepEnd":"步骤结束","empty":"此运行未记录任何事件。","steps":"步骤","eventCount":"个事件","selectEvent":"选择一个事件查看详情","eventDetail":"事件详情","kind":"类型","step":"步骤","duration":"耗时","model":"模型","tokens":"令牌数","tokensInOut":"{{input}} 输入 / {{output}} 输出","prompt":"提示词","response":"响应","stdout":"标准输出","stderr":"标准错误","truncated":"内容已截断"},"runDetail":{"title":"运行详情","events":"个事件","llm":"次 LLM","tokens":"tokens","failureCategory":"失败类别","failureReason":"失败原因","suggestedActions":"建议动作","category":{"context_insufficient":"上下文不足","knowledge_missing":"知识缺失","workflow_design_issue":"工作流设计问题","tool_error":"工具错误","agent_override":"Agent 覆盖"}},"plugin":{"title":"插件效果","installCount":"安装量","activeRate":"活跃率","successRate":"成功率","avgTokenImpact":"平均 Token 影响","recommendInstall":"推荐安装","recommendOptimize":"建议优化","recommendRemove":"建议淘汰"},"executions":{"title":"技能执行记录","loading":"加载执行记录中...","overallCompliance":"总体 MCP 合规率","totalExecutions":"总执行次数","skillsTracked":"追踪技能数","skill":"技能","status":"状态","tools":"工具数","mcpRate":"MCP 比率","duration":"耗时","tokens":"Token","empty":"暂无执行记录","traceTimeline":"执行时间线","blocked":"已拦截","fallback":"降级"},"settings":{"title":"项目设置","projectInfo":"项目信息","name":"名称","mode":"模式","plugins":"插件","noPlugins":"未安装插件","telemetry":"遥测","totalRuns":"运行数","totalTokens":"总令牌数","clearOldRuns":"清理旧记录(30天前)"}}');function K(e){let{children:t}=e;return(0,n.jsx)("html",{lang:"zh",className:"dark",children:(0,n.jsx)("body",{className:"h-dvh overflow-hidden",children:(0,n.jsx)(a,{children:(0,n.jsx)(F,{children:t})})})})}E.ZP.use(_.Z).use(m.Db).init({resources:{en:{translation:O},zh:{translation:L}},fallbackLng:"zh",detection:{order:["localStorage","navigator"],caches:["localStorage"]},interpolation:{escapeValue:!1}})},10535:function(e,t,o){"use strict";o.d(t,{q:function(){return i}});var n=o(62052);let r="devflow-project-root",s="devflow-active-project-root";function l(e){try{return localStorage.getItem(e)}catch(e){return null}}function a(e,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch(e){}}let i=(0,n.Ue)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:l(r),activeProjectRoot:l(s),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{a(r,t),e({projectRoot:t})},setActiveProjectRoot:t=>{a(s,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},29147:function(e,t,o){"use strict";o.d(t,{cn:function(){return s}});var n=o(10607),r=o(25579);function s(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return(0,r.m6)((0,n.W)(t))}},72625:function(){}},function(e){e.O(0,[387,736,806,697,458,249,429,293,528,744],function(){return e(e.s=70135)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[185],{66080:function(e,t,o){Promise.resolve().then(o.bind(o,68762))},68762:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return K}});var n=o(27573);o(72625);var r=o(71628),s=o(77930),l=o(7653);function a(e){let{children:t}=e,[o]=(0,l.useState)(()=>new r.S({defaultOptions:{queries:{staleTime:3e4,retry:1}}}));return(0,n.jsx)(s.aH,{client:o,children:t})}var i=o(81695),c=o(10535),d=o(57429),u=o(29147),m=o(3806);let p={properties:"detail.properties",imports:"detail.imports",history:"detail.history"};function g(){let{t:e}=(0,m.$G)(),t=(0,c.q)(e=>e.selectedNodeId),o=(0,c.q)(e=>e.detailTab),r=(0,c.q)(e=>e.setDetailTab),{data:s}=(0,d.n4)(),l=null==s?void 0:s.nodes.find(e=>e.id===t);return t?(0,n.jsxs)("div",{className:"flex flex-col h-full",children:[(0,n.jsx)("div",{className:"flex border-b border-border",children:Object.keys(p).map(t=>(0,n.jsx)("button",{onClick:()=>r(t),className:(0,u.cn)("flex-1 py-2 text-xs font-medium capitalize",o===t?"border-b-2 border-primary text-primary":"text-muted-foreground"),children:e(p[t])},t))}),(0,n.jsx)("div",{className:"flex-1 p-4 overflow-y-auto",children:l?(0,n.jsxs)("div",{className:"space-y-3 text-sm",children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.name"),":"]})," ",l.name]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.type"),":"]})," ",(0,n.jsx)("span",{className:"capitalize",children:l.type})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("span",{className:"text-muted-foreground",children:[e("detail.file"),":"]})," ",(0,n.jsx)("span",{className:"font-mono text-xs",children:l.file})]})]}):(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:e("detail.notFound")})})]}):(0,n.jsx)("div",{className:"p-4 text-sm text-muted-foreground",children:e("detail.selectNode")})}var f=o(88146),h=o(83071),v=o(50646),k=o(88497),y=o(61990),x=o(31815),w=o(70548),b=o(41755),R=o(25555),T=o(39790),S=o(84142),j=o(31095),C=o(88623),P=o(46693),N=o(71523),I=o(12198);let D=[{href:"/",labelKey:"nav.overview",icon:h.Z},{href:"/graph",labelKey:"nav.graph",icon:v.Z},{href:"/context",labelKey:"nav.context",icon:k.Z},{href:"/workflows",labelKey:"nav.workflows",icon:y.Z},{href:"/memory",labelKey:"nav.memory",icon:x.Z},{href:"/knowledge",labelKey:"nav.knowledge",icon:w.Z},{href:"/runs",labelKey:"nav.runs",icon:b.Z},{href:"/timeline",labelKey:"nav.timeline",icon:R.Z},{href:"/executions",labelKey:"nav.executions",icon:T.Z},{href:"/tool-metrics",labelKey:"nav.toolMetrics",icon:S.Z},{href:"/accuracy",labelKey:"nav.accuracy",icon:j.Z},{href:"/replay",labelKey:"nav.replay",icon:C.Z},{href:"/benchmark",labelKey:"nav.benchmark",icon:P.Z},{href:"/doctor",labelKey:"nav.doctor",icon:N.Z},{href:"/settings",labelKey:"nav.settings",icon:I.Z}];function M(){let{t:e,i18n:t}=(0,m.$G)(),o=(0,i.usePathname)();return(0,n.jsxs)("nav",{className:"flex h-full min-w-max flex-row gap-1 p-2 md:min-w-0 md:flex-col md:p-3",children:[(0,n.jsx)(f.default,{href:"/",className:"flex h-9 shrink-0 items-center px-2 text-base font-bold text-primary md:mb-2 md:px-3",children:e("nav.title")}),(0,n.jsx)("div",{className:"flex flex-1 gap-1 md:flex-col",children:D.map(t=>{let r="/"===t.href?"/"===o:o===t.href||o.startsWith("".concat(t.href,"/"));return(0,n.jsxs)(f.default,{href:t.href,title:e(t.labelKey),className:(0,u.cn)("flex h-9 shrink-0 items-center gap-3 rounded-md px-2 text-sm transition-colors md:px-3",r?"bg-primary/10 text-primary":"text-muted-foreground hover:bg-accent hover:text-foreground"),children:[(0,n.jsx)(t.icon,{className:"h-4 w-4"}),(0,n.jsx)("span",{className:"hidden md:inline",children:e(t.labelKey)})]},t.href)})}),(0,n.jsx)("div",{className:"shrink-0 border-l border-border pl-2 md:mt-auto md:border-l-0 md:border-t md:pl-0 md:pt-3",children:(0,n.jsx)("button",{onClick:()=>{t.changeLanguage("zh"===t.language?"en":"zh")},className:"h-9 w-full rounded-md px-3 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:e("nav.language")})})]})}function A(e){let{nav:t,main:o,detail:r}=e;return(0,n.jsxs)("div",{className:"flex h-dvh w-full flex-col md:flex-row",children:[(0,n.jsx)("aside",{className:"h-14 shrink-0 overflow-x-auto border-b border-border bg-card md:h-auto md:w-[220px] md:overflow-y-auto md:border-b-0 md:border-r",children:t}),(0,n.jsx)("main",{className:"min-h-0 min-w-0 flex-1 overflow-hidden",children:o}),r?(0,n.jsx)("aside",{className:"hidden w-[340px] shrink-0 overflow-y-auto border-l border-border bg-card xl:block",children:r}):null]})}function F(e){let{children:t}=e,o=(0,i.usePathname)(),[r,s]=(0,l.useState)(!1);return((0,l.useEffect)(()=>s(!0),[]),r)?(0,n.jsx)(A,{nav:(0,n.jsx)(M,{}),main:t,detail:"/graph"===o?(0,n.jsx)(g,{}):void 0}):(0,n.jsx)("div",{className:"flex h-dvh items-center justify-center text-sm text-muted-foreground",children:"Loading..."})}var E=o(98533),_=o(53495),O=JSON.parse('{"nav":{"title":"DevFlow","overview":"Overview","graph":"Graph","context":"Context","workflows":"Workflows","memory":"Memory","benchmark":"Benchmark","knowledge":"Knowledge","runs":"Runs","timeline":"Timeline","executions":"Executions","toolMetrics":"Tool Metrics","accuracy":"Accuracy","replay":"Replay","doctor":"Doctor","settings":"Settings","language":"中文"},"overview":{"title":"Project Overview","project":"Project","noProject":"No project connected","filesIndexed":"Files Indexed","workflows":"Workflows","agentRuns":"Agent Runs","techStack":"Tech Stack","recentRuns":"Recent Agent Runs","noRuns":"No agent runs recorded yet.","agent":"Agent","mode":"Mode","source":"Source","status":"Status","tokens":"Tokens","connectTitle":"Connect Project","connectDescription":"Enter the root path of your project to connect. The server will index and analyze the codebase.","connectPlaceholder":"/path/to/your/project","connecting":"Connecting...","connect":"Connect","connectError":"Failed to connect. Make sure the path exists and is accessible.","architectureLayers":"Architecture Layers","filesCount":"{{count}} files","keyModules":"Key Modules","keyFiles":"Key Files","recommended":"Recommended Next Steps","plugins":"Plugins","queries":"Queries","switchProject":"Switch Project","switchProjectPlaceholder":"Enter project path...","switchProjectConfirm":"Switch","disconnectProject":"Disconnect"},"onboarding":{"title":"Onboarding Pack","empty":"No onboarding pack generated yet","noActiveProject":"No active project","generate":"Generate Onboarding Pack","refresh":"Refresh onboarding pack"},"context":{"title":"Context Builder","placeholder":"Search symbols or ask a question...","build":"Build","building":"Building context...","results":"Results ({{files}} files, ~{{tokens}} tokens)","taskMode":"Task Mode","taskContext":"Task Context","confidenceTokens":"{{confidence}}% confidence \xb7 {{tokens}} tokens","requiredFiles":"Required Files","optionalFiles":"Optional Files","keySymbols":"Key Symbols","riskHints":"Risk Hints","nextActions":"Next Actions","relevanceDirect":"direct","relevanceIndirect":"indirect","levelHigh":"high","levelMedium":"medium","levelLow":"low","wasHelpful":"Was this helpful?","hit":"Hit","partial":"Partial","miss":"Miss","thanks":"Thanks for your feedback!"},"memory":{"title":"Memory","loading":"Loading...","pendingApproval":"Pending Approval","approvedMemories":"Approved Memories","approve":"Approve","reject":"Reject","noMemories":"No memories yet","noMemoriesHint":"Memories help avoid repeating mistakes","confidence":"confidence","original":"Original","yes":"Yes","no":"No","category":{"mcp_correction":"MCP Correction","project_knowledge":"Project Knowledge","failure_lesson":"Failure Lesson"},"searchPlaceholder":"Search memories...","addMemory":"Add Memory","editMemory":"Edit Memory","deleteMemory":"Delete","deleteConfirm":"Delete this memory?","categoryLabel":"Category","content":"Content","scope":"Scope (optional)","cancel":"Cancel","save":"Save"},"workflows":{"title":"Workflow Runs","available":"Available Workflows","steps":"steps","stream":"Stream","closeStream":"Close stream","runHistory":"Run History","runId":"Run ID","started":"Started","noRuns":"No runs yet. Trigger a workflow above."},"benchmark":{"title":"Benchmark","running":"Running...","run":"Run Benchmark","tasks":"tasks","task":"Task","experimentTab":"A/B Benchmark","operationsTab":"Operations","filesTouched":"Files Touched","correctness":"Correctness","regressions":"Regressions Over 10%","baselineCorrectness":"Baseline Correctness","devflowCorrectness":"DevFlow Correctness","baselineTokens":"Baseline Tokens","devflowTokens":"DevFlow Tokens","noReports":"No benchmark reports yet. Run one to get started.","roiTitle":"ROI Dashboard","loading":"Loading...","noData":"No data available. Start using DevFlow to collect telemetry.","overview":"Overview","totalRuns":"Total Runs","completed":"Completed","failed":"Failed","avgDuration":"Avg Duration","avgTokens":"Avg Tokens","firstPassRate":"First Pass Rate","feedbackHitRate":"Feedback Hit Rate","efficiency":"Efficiency","avgTimePerTask":"Avg Time Per Task","avgRetryCount":"Avg Retry Count","tokensSaved":"Tokens Saved","failureBreakdown":"Failure Breakdown","workflowHealth":"Workflow Health","workflow":"Workflow","runs":"Runs","successRate":"Success Rate","pluginEffectiveness":"Plugin Effectiveness","plugin":"Plugin","dailyTrends":"Daily Trends","date":"Date","tokens":"Tokens","failures":"Failures","empty":"No telemetry data yet. Start using DevFlow with an AI agent to collect ROI metrics.","failureCategories":{"context_insufficient":"Context Insufficient","knowledge_missing":"Knowledge Missing","workflow_design_issue":"Workflow Design Issue","tool_error":"Tool Error","agent_override":"Agent Override","unknown":"Unknown"},"seconds":"{{value}}s","period":"{{from}} → {{to}}","experimentSummary":"Experiment Summary","timeSavedRate":"Time Saved","tokenSavedRate":"Token Saved","detailedResults":"Detailed Results","faster":"{{percent}}% faster","baseline":"Baseline","devflow":"DevFlow","noExperimentData":"No experiment data","opsSummary":"Operations Summary","totalRunsCount":"Total Runs","successRatePercent":"Success Rate","avgTokenUsage":"Avg Token Usage","avgDurationTime":"Avg Duration","feedbackHitRatePercent":"Feedback Hit Rate","noOpsData":"No operations data","loadFailed":"Load failed: {{error}}","pluginAnalysis":"Plugin Value Analysis","recommendedInstall":"Recommended to Install","suggestedRemove":"Suggested to Remove","installCount":"Installs","usageRate":"Usage","successRateShort":"Success","tokenImpact":"Token Impact","lastUsed":"Last Used","noPluginData":"No plugin data","recommended":"Recommended","lowEfficiency":"Low Efficiency"},"graph":{"searchPlaceholder":"Search nodes...","filterOnly":"Filter only","highlightAll":"Highlight all"},"detail":{"selectNode":"Select a node to view details","properties":"Properties","imports":"Imports","history":"History","name":"Name","type":"Type","file":"File","notFound":"Node not found"},"knowledge":{"title":"Knowledge Base","sources":"Sources","syncing":"Syncing...","syncAll":"Sync All","loading":"Loading...","noSources":"No knowledge sources. Install a plugin and sync docs.","search":"Search","searchPlaceholder":"Search knowledge...","synced":"Synced","notSynced":"Not synced","last":"Last","sync":"Sync","score":"Score"},"runs":{"title":"Runs","empty":"No runs recorded yet."},"timeline":{"title":"Timeline","runs":"Runs","tokens":"Tokens","llmCalls":"LLM Calls","toolUses":"Tool Uses","completed":"completed","failed":"failed"},"events":{"llmCall":"LLM Call","toolUse":"Tool Use","memoryRead":"Memory Read","memoryWrite":"Memory Write","fileRead":"File Read","fileWrite":"File Write","bashCommand":"Bash","mcpToolCall":"MCP Tool","error":"Error","userInput":"User Input","stepStart":"Step Start","stepEnd":"Step End","empty":"No events recorded for this run.","steps":"Steps","eventCount":"events","selectEvent":"Select an event to view details","eventDetail":"Event Detail","kind":"Kind","step":"Step","duration":"Duration","model":"Model","tokens":"Tokens","tokensInOut":"{{input}} in / {{output}} out","prompt":"Prompt","response":"Response","stdout":"Stdout","stderr":"Stderr","truncated":"Content was truncated"},"runDetail":{"title":"Run Detail","events":"events","llm":"LLM","tokens":"tokens","failureCategory":"Failure Category","failureReason":"Failure Reason","suggestedActions":"Suggested Actions","category":{"context_insufficient":"Context Insufficient","knowledge_missing":"Knowledge Missing","workflow_design_issue":"Workflow Design Issue","tool_error":"Tool Error","agent_override":"Agent Override"}},"plugin":{"title":"Plugin Effectiveness","installCount":"Install Count","activeRate":"Active Rate","successRate":"Success Rate","avgTokenImpact":"Avg Token Impact","recommendInstall":"Recommend Install","recommendOptimize":"Recommend Optimize","recommendRemove":"Recommend Remove"},"executions":{"title":"Skill Executions","loading":"Loading executions...","overallCompliance":"Overall MCP Compliance","totalExecutions":"Total Executions","skillsTracked":"Skills Tracked","skill":"Skill","status":"Status","tools":"Tools","mcpRate":"MCP Rate","duration":"Duration","tokens":"Tokens","empty":"No executions recorded yet","traceTimeline":"Execution Trace","blocked":"Blocked","fallback":"Fallback"},"settings":{"title":"Project Settings","projectInfo":"Project Info","name":"Name","mode":"Mode","plugins":"Plugins","noPlugins":"No plugins installed","telemetry":"Telemetry","totalRuns":"Runs stored","totalTokens":"Total tokens","clearOldRuns":"Clear old runs (30d+)"}}'),L=JSON.parse('{"nav":{"title":"DevFlow","overview":"概览","graph":"图谱","context":"上下文","workflows":"工作流","memory":"记忆","benchmark":"基准测试","knowledge":"知识库","runs":"运行记录","timeline":"时间线","executions":"执行轨迹","toolMetrics":"工具指标","accuracy":"准确率","replay":"回放","doctor":"自检","settings":"设置","language":"EN"},"overview":{"title":"项目概览","project":"项目","noProject":"未连接项目","filesIndexed":"已索引文件","workflows":"工作流","agentRuns":"智能体运行","techStack":"技术栈","recentRuns":"最近运行","noRuns":"暂无运行记录","agent":"智能体","mode":"模式","source":"来源","status":"状态","tokens":"令牌数","connectTitle":"连接项目","connectDescription":"输入项目根路径进行连接。服务端将索引并分析代码库。","connectPlaceholder":"/path/to/your/project","connecting":"连接中...","connect":"连接","connectError":"连接失败,请确认路径存在且可访问。","architectureLayers":"架构分层","filesCount":"{{count}} 个文件","keyModules":"关键模块","keyFiles":"关键文件","recommended":"推荐下一步","plugins":"插件","queries":"推荐查询","switchProject":"切换项目","switchProjectPlaceholder":"输入项目路径...","switchProjectConfirm":"切换","disconnectProject":"断开连接"},"onboarding":{"title":"启动包","empty":"尚未生成启动包","noActiveProject":"未激活项目","generate":"生成启动包","refresh":"刷新启动包"},"context":{"title":"上下文构建器","placeholder":"搜索符号或输入查询...","build":"构建","building":"正在构建上下文...","results":"结果({{files}} 个文件,约 {{tokens}} 个令牌)","taskMode":"任务模式","taskContext":"任务上下文","confidenceTokens":"{{confidence}}% 置信度 \xb7 {{tokens}} 令牌","requiredFiles":"必需文件","optionalFiles":"可选文件","keySymbols":"关键符号","riskHints":"风险提示","nextActions":"下一步操作","relevanceDirect":"直接","relevanceIndirect":"间接","levelHigh":"高","levelMedium":"中","levelLow":"低","wasHelpful":"有帮助吗?","hit":"有用","partial":"部分有用","miss":"无用","thanks":"感谢反馈!"},"memory":{"title":"记忆","loading":"加载中...","pendingApproval":"待审批","approvedMemories":"已批准的记忆","approve":"批准","reject":"拒绝","noMemories":"暂无记忆","noMemoriesHint":"记忆有助于避免重复犯错","confidence":"置信度","original":"原始","yes":"是","no":"否","category":{"mcp_correction":"MCP 纠正","project_knowledge":"项目知识","failure_lesson":"失败教训"},"searchPlaceholder":"搜索记忆...","addMemory":"添加记忆","editMemory":"编辑记忆","deleteMemory":"删除","deleteConfirm":"确定删除这条记忆?","categoryLabel":"分类","content":"内容","scope":"作用域(可选)","cancel":"取消","save":"保存"},"workflows":{"title":"工作流运行","available":"可用工作流","steps":"步骤","stream":"流","closeStream":"关闭流","runHistory":"运行历史","runId":"运行 ID","started":"开始时间","noRuns":"暂无运行,请触发上方工作流"},"benchmark":{"title":"基准测试","running":"运行中...","run":"运行测试","tasks":"任务","task":"任务","experimentTab":"A/B 基准","operationsTab":"运行治理","filesTouched":"涉及文件","correctness":"正确率","regressions":"超过 10% 的回退","baselineCorrectness":"基线正确率","devflowCorrectness":"DevFlow 正确率","baselineTokens":"基线 Token","devflowTokens":"DevFlow Token","noReports":"暂无测试报告,点击运行开始","roiTitle":"ROI 仪表盘","loading":"加载中...","noData":"暂无数据。使用 DevFlow 与 AI Agent 协作以收集 ROI 数据。","overview":"概览","totalRuns":"总运行数","completed":"已完成","failed":"已失败","avgDuration":"平均耗时","avgTokens":"平均令牌","firstPassRate":"首次通过率","feedbackHitRate":"反馈命中率","efficiency":"效率","avgTimePerTask":"平均每任务耗时","avgRetryCount":"平均重试次数","tokensSaved":"节省令牌数","failureBreakdown":"失败分类","workflowHealth":"工作流健康度","workflow":"工作流","runs":"运行数","successRate":"成功率","pluginEffectiveness":"插件有效性","plugin":"插件","dailyTrends":"每日趋势","date":"日期","tokens":"令牌数","failures":"失败数","empty":"暂无遥测数据。使用 DevFlow 与 AI Agent 协作以收集 ROI 指标。","failureCategories":{"context_insufficient":"上下文不足","knowledge_missing":"知识缺失","workflow_design_issue":"工作流设计问题","tool_error":"工具错误","agent_override":"智能体覆盖","unknown":"未知"},"seconds":"{{value}}s","period":"{{from}} → {{to}}","experimentSummary":"实验收益总结","timeSavedRate":"时间节省率","tokenSavedRate":"Token 节省率","detailedResults":"详细结果","faster":"{{percent}}% 更快","baseline":"基线","devflow":"DevFlow","noExperimentData":"暂无实验数据","opsSummary":"运营统计","totalRunsCount":"总运行次数","successRatePercent":"成功率","avgTokenUsage":"平均 Token 使用","avgDurationTime":"平均耗时","feedbackHitRatePercent":"反馈命中率","noOpsData":"暂无运营数据","loadFailed":"加载失败: {{error}}","pluginAnalysis":"插件价值分析","recommendedInstall":"推荐安装","suggestedRemove":"建议移除","installCount":"安装量","usageRate":"使用率","successRateShort":"成功率","tokenImpact":"Token 影响","lastUsed":"最近使用","noPluginData":"暂无插件数据","recommended":"推荐","lowEfficiency":"低效"},"graph":{"searchPlaceholder":"搜索节点...","filterOnly":"仅显示匹配","highlightAll":"高亮全部"},"detail":{"selectNode":"选择一个节点查看详情","properties":"属性","imports":"导入","history":"历史","name":"名称","type":"类型","file":"文件","notFound":"节点未找到"},"knowledge":{"title":"知识库","sources":"数据源","syncing":"同步中...","syncAll":"全部同步","loading":"加载中...","noSources":"暂无知识源,安装插件并同步文档。","search":"搜索","searchPlaceholder":"搜索知识...","synced":"已同步","notSynced":"未同步","last":"最近","sync":"同步","score":"相关性"},"runs":{"title":"运行记录","empty":"暂无运行记录。"},"timeline":{"title":"时间线","runs":"运行数","tokens":"令牌数","llmCalls":"LLM 调用","toolUses":"工具调用","completed":"已完成","failed":"已失败"},"events":{"llmCall":"LLM 调用","toolUse":"工具使用","memoryRead":"读取记忆","memoryWrite":"写入记忆","fileRead":"读取文件","fileWrite":"写入文件","bashCommand":"Bash","mcpToolCall":"MCP 工具","error":"错误","userInput":"用户输入","stepStart":"步骤开始","stepEnd":"步骤结束","empty":"此运行未记录任何事件。","steps":"步骤","eventCount":"个事件","selectEvent":"选择一个事件查看详情","eventDetail":"事件详情","kind":"类型","step":"步骤","duration":"耗时","model":"模型","tokens":"令牌数","tokensInOut":"{{input}} 输入 / {{output}} 输出","prompt":"提示词","response":"响应","stdout":"标准输出","stderr":"标准错误","truncated":"内容已截断"},"runDetail":{"title":"运行详情","events":"个事件","llm":"次 LLM","tokens":"tokens","failureCategory":"失败类别","failureReason":"失败原因","suggestedActions":"建议动作","category":{"context_insufficient":"上下文不足","knowledge_missing":"知识缺失","workflow_design_issue":"工作流设计问题","tool_error":"工具错误","agent_override":"Agent 覆盖"}},"plugin":{"title":"插件效果","installCount":"安装量","activeRate":"活跃率","successRate":"成功率","avgTokenImpact":"平均 Token 影响","recommendInstall":"推荐安装","recommendOptimize":"建议优化","recommendRemove":"建议淘汰"},"executions":{"title":"技能执行记录","loading":"加载执行记录中...","overallCompliance":"总体 MCP 合规率","totalExecutions":"总执行次数","skillsTracked":"追踪技能数","skill":"技能","status":"状态","tools":"工具数","mcpRate":"MCP 比率","duration":"耗时","tokens":"Token","empty":"暂无执行记录","traceTimeline":"执行时间线","blocked":"已拦截","fallback":"降级"},"settings":{"title":"项目设置","projectInfo":"项目信息","name":"名称","mode":"模式","plugins":"插件","noPlugins":"未安装插件","telemetry":"遥测","totalRuns":"运行数","totalTokens":"总令牌数","clearOldRuns":"清理旧记录(30天前)"}}');function K(e){let{children:t}=e;return(0,n.jsx)("html",{lang:"zh",className:"dark",children:(0,n.jsx)("body",{className:"h-dvh overflow-hidden",children:(0,n.jsx)(a,{children:(0,n.jsx)(F,{children:t})})})})}E.ZP.use(_.Z).use(m.Db).init({resources:{en:{translation:O},zh:{translation:L}},fallbackLng:"zh",detection:{order:["localStorage","navigator"],caches:["localStorage"]},interpolation:{escapeValue:!1}})},10535:function(e,t,o){"use strict";o.d(t,{q:function(){return i}});var n=o(62052);let r="devflow-project-root",s="devflow-active-project-root";function l(e){try{return localStorage.getItem(e)}catch(e){return null}}function a(e,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch(e){}}let i=(0,n.Ue)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:l(r),activeProjectRoot:l(s),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{a(r,t),e({projectRoot:t})},setActiveProjectRoot:t=>{a(s,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},29147:function(e,t,o){"use strict";o.d(t,{cn:function(){return s}});var n=o(10607),r=o(25579);function s(){for(var e=arguments.length,t=Array(e),o=0;o<e;o++)t[o]=arguments[o];return(0,r.m6)((0,n.W)(t))}},72625:function(){}},function(e){e.O(0,[387,384,806,697,458,249,429,293,528,744],function(){return e(e.s=66080)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[872],{84367:function(e,t,n){Promise.resolve().then(n.bind(n,42302))},50466:function(e,t,n){"use strict";n.d(t,{z:function(){return o}});var r=n(27573),a=n(7653),s=n(29147);let l=(0,n(49289).j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),o=a.forwardRef((e,t)=>{let{className:n,variant:a,size:o,...i}=e;return(0,r.jsx)("button",{className:(0,s.cn)(l({variant:a,size:o,className:n})),ref:t,...i})});o.displayName="Button"},72196:function(e,t,n){"use strict";n.d(t,{Ol:function(){return o},Zb:function(){return l},aY:function(){return d},ll:function(){return i}});var r=n(27573),a=n(7653),s=n(29147);let l=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,s.cn)("rounded-lg border border-border bg-card text-card-foreground",n),...a})});l.displayName="Card";let o=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,s.cn)("flex flex-col space-y-1.5 p-4",n),...a})});o.displayName="CardHeader";let i=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("h3",{ref:t,className:(0,s.cn)("text-sm font-semibold leading-none tracking-tight",n),...a})});i.displayName="CardTitle";let d=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,s.cn)("p-4 pt-0",n),...a})});d.displayName="CardContent"},29324:function(e,t,n){"use strict";n.d(t,{$N:function(){return c},Vq:function(){return s},cZ:function(){return i},fK:function(){return d}});var r=n(27573);n(7653);var a=n(57431);let s=a.fC;a.xz;let l=a.h_;function o(e){let{className:t,...n}=e;return(0,r.jsx)(a.aV,{className:"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 ".concat(null!=t?t:""),...n})}function i(e){let{className:t,children:n,...s}=e;return(0,r.jsxs)(l,{children:[(0,r.jsx)(o,{}),(0,r.jsx)(a.VY,{className:"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg ".concat(null!=t?t:""),...s,children:n})]})}function d(e){let{className:t,...n}=e;return(0,r.jsx)("div",{className:"flex flex-col space-y-1.5 text-center sm:text-left ".concat(null!=t?t:""),...n})}function c(e){let{className:t,...n}=e;return(0,r.jsx)(a.Dx,{className:"text-lg font-semibold leading-none tracking-tight ".concat(null!=t?t:""),...n})}a.x8},39134:function(e,t,n){"use strict";n.d(t,{I:function(){return l}});var r=n(27573),a=n(7653),s=n(29147);let l=a.forwardRef((e,t)=>{let{className:n,type:a,...l}=e;return(0,r.jsx)("input",{type:a,className:(0,s.cn)("flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",n),ref:t,...l})});l.displayName="Input"},42302:function(e,t,n){"use strict";n.d(t,{MemoryPanel:function(){return v}});var r=n(27573),a=n(7653),s=n(6315),l=n(10997),o=n(57429),i=n(72196),d=n(50466),c=n(39134),u=n(3806),m=n(33127),f=n(29324);let x=["semantic","procedural","episodic","failure_lesson"];function p(e){var t,n,s;let{open:l,onOpenChange:i,mode:c,defaultValues:m}=e,{t:p}=(0,u.$G)(),h=(0,o.KA)(),v=(0,o.Af)(),[g,y]=(0,a.useState)(null!==(t=null==m?void 0:m.category)&&void 0!==t?t:"semantic"),[j,b]=(0,a.useState)(null!==(n=null==m?void 0:m.content)&&void 0!==n?n:""),[N,w]=(0,a.useState)(null!==(s=null==m?void 0:m.scope)&&void 0!==s?s:"");(0,a.useEffect)(()=>{if(l){var e,t,n;y(null!==(e=null==m?void 0:m.category)&&void 0!==e?e:"semantic"),b(null!==(t=null==m?void 0:m.content)&&void 0!==t?t:""),w(null!==(n=null==m?void 0:m.scope)&&void 0!==n?n:"")}},[l,m]);let C=e=>{let t="memory.category.".concat(e),n=p(t);return n===t?e:n};return(0,r.jsx)(f.Vq,{open:l,onOpenChange:i,children:(0,r.jsxs)(f.cZ,{children:[(0,r.jsx)(f.fK,{children:(0,r.jsx)(f.$N,{children:"add"===c?p("memory.addMemory"):p("memory.editMemory")})}),(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:p("memory.categoryLabel")}),(0,r.jsx)("select",{className:"w-full mt-1 rounded-md border bg-background px-3 py-2 text-sm",value:g,onChange:e=>y(e.target.value),children:x.map(e=>(0,r.jsx)("option",{value:e,children:C(e)},e))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:p("memory.content")}),(0,r.jsx)("textarea",{className:"w-full mt-1 rounded-md border bg-background px-3 py-2 text-sm min-h-[100px]",value:j,onChange:e=>b(e.target.value)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:p("memory.scope")}),(0,r.jsx)("input",{className:"w-full mt-1 rounded-md border bg-background px-3 py-2 text-sm",value:N,onChange:e=>w(e.target.value)})]}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)(d.z,{variant:"outline",onClick:()=>i(!1),children:p("memory.cancel")}),(0,r.jsx)(d.z,{onClick:()=>{j.trim()&&("add"===c?h.mutate({category:g,content:j.trim(),scope:N.trim()||void 0}):(null==m?void 0:m.id)&&v.mutate({id:m.id,updates:{category:g,content:j.trim(),scope:N.trim()||void 0}}),i(!1))},disabled:!j.trim(),children:p("memory.save")})]})]})]})})}let h=["all","failure_lesson","semantic","procedural","episodic"];function v(){var e,t,n,f,x;(0,m.z)("memory",[["memory"],["memory-candidates"]]);let{t:v}=(0,u.$G)(),{data:g}=(0,o.nq)(),y=(0,o.C)(),j=(0,o.mp)(),b=(0,o.S0)(),N=function(){let{t:e}=(0,u.$G)();return t=>{let n="memory.category.".concat(t),r=e(n);return r===n?t:r}}(),[w,C]=(0,a.useState)(""),{data:k}=(0,o.on)(w),[z,_]=(0,a.useState)(!1),[S,O]=(0,a.useState)(),[M,E]=(0,a.useState)("all"),R=null!==(n=null==g?void 0:null===(e=g.memories)||void 0===e?void 0:e.filter(e=>"approved"===e.status))&&void 0!==n?n:[],A=null!==(f=null==g?void 0:null===(t=g.memories)||void 0===t?void 0:t.filter(e=>"pending"===e.status))&&void 0!==f?f:[],I="all"===M?R:R.filter(e=>e.category===M),V="all"===M?A:A.filter(e=>e.category===M),Z=(0,a.useMemo)(()=>{let e=new Map;for(let n of V){var t;let r=null!==(t=e.get(n.category))&&void 0!==t?t:[];r.push(n),e.set(n.category,r)}return[...e.entries()].sort((e,t)=>{let[n]=e,[r]=t;return"failure_lesson"===n?-1:"failure_lesson"===r?1:n.localeCompare(r)})},[V]),L=w&&k?k:I,P=e=>{var t;O({id:e.id,category:e.category,content:e.content,scope:null!==(t=e.scope)&&void 0!==t?t:""}),_(!0)},T=e=>{window.confirm(v("memory.deleteConfirm"))&&b.mutate(e.id)};return g?(0,r.jsxs)("div",{className:"p-6 space-y-4 h-full overflow-y-auto",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-2xl font-bold",children:v("memory.title")}),(0,r.jsxs)(d.z,{size:"sm",onClick:()=>{O(void 0),_(!0)},children:["+ ",v("memory.addMemory")]})]}),(0,r.jsx)("div",{className:"relative",children:(0,r.jsx)(c.I,{placeholder:v("memory.searchPlaceholder"),value:w,onChange:e=>C(e.target.value)})}),!w&&(0,r.jsx)("div",{className:"flex gap-2 flex-wrap",children:h.map(e=>(0,r.jsx)(d.z,{variant:M===e?"default":"outline",size:"sm",onClick:()=>E(e),children:"all"===e?v("memory.allCategories","All"):N(e)},e))}),!w&&V.length>0&&(0,r.jsxs)(i.Zb,{children:[(0,r.jsx)(i.Ol,{children:(0,r.jsxs)(i.ll,{children:[v("memory.pendingApproval")," (",V.length,")"]})}),(0,r.jsx)(i.aY,{children:(0,r.jsx)("div",{className:"space-y-4",children:Z.map(e=>{let[t,n]=e;return(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground uppercase mb-2",children:N(t)}),(0,r.jsx)("div",{className:"space-y-2",children:n.map(e=>(0,r.jsxs)("div",{className:"flex items-start justify-between p-2 rounded bg-secondary/50",children:[(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("p",{className:"text-sm font-medium truncate",children:e.content}),(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:[v("memory.confidence"),": ",e.confidence]})]}),(0,r.jsxs)("div",{className:"flex gap-1 ml-2",children:[(0,r.jsx)(d.z,{size:"sm",variant:"outline",onClick:()=>y.mutate(e.id),children:v("memory.approve")}),(0,r.jsx)(d.z,{size:"sm",variant:"ghost",onClick:()=>j.mutate(e.id),children:v("memory.reject")})]})]},e.id))})]},t)})})})]}),(0,r.jsxs)(i.Zb,{children:[(0,r.jsx)(i.Ol,{children:(0,r.jsx)(i.ll,{children:w?"".concat(null!==(x=null==k?void 0:k.length)&&void 0!==x?x:0," results"):"".concat(v("memory.approvedMemories")," (").concat(I.length,")")})}),(0,r.jsx)(i.aY,{children:0===L.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 border border-dashed border-border rounded-lg text-center",children:[(0,r.jsx)("p",{className:"text-muted-foreground text-sm font-medium",children:v("memory.noMemories")}),(0,r.jsx)("p",{className:"text-muted-foreground text-xs mt-1",children:v("memory.noMemoriesHint")})]}):(0,r.jsx)("div",{className:"space-y-2",children:L.map(e=>(0,r.jsxs)("div",{className:"p-2 rounded bg-secondary/50 text-sm",children:[(0,r.jsxs)("div",{className:"flex justify-between items-start",children:[(0,r.jsx)("span",{className:"flex-1",children:e.content}),(0,r.jsxs)("div",{className:"flex items-center gap-1 ml-2",children:[(0,r.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:N(e.category)}),(0,r.jsx)(d.z,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:()=>P(e),title:v("memory.editMemory"),children:(0,r.jsx)(s.Z,{className:"h-3.5 w-3.5"})}),(0,r.jsx)(d.z,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 text-destructive",onClick:()=>T(e),title:v("memory.deleteMemory"),children:(0,r.jsx)(l.Z,{className:"h-3.5 w-3.5"})})]})]}),e.originalText&&(0,r.jsxs)("p",{className:"text-xs text-muted-foreground mt-1",children:[v("memory.original"),": ",e.originalText]})]},e.id))})})]}),(0,r.jsx)(p,{open:z,onOpenChange:_,mode:S?"edit":"add",defaultValues:S})]}):(0,r.jsx)("div",{className:"p-6 text-muted-foreground",children:v("memory.loading")})}},33127:function(e,t,n){"use strict";n.d(t,{D:function(){return d},z:function(){return c}});var r,a=n(7653),s=n(77930),l=n(50794);let o=null!==(r=n(49767).env.NEXT_PUBLIC_DEVFLOW_API_URL)&&void 0!==r?r:"http://localhost:13337";async function i(e,t,n){let r=await fetch("".concat(o,"/api").concat(e),{headers:(0,l.O)(),signal:t});if(!r.ok||!r.body)throw Error("SSE ".concat(r.status));let a=r.body.getReader(),s=new TextDecoder,i="";for(;!t.aborted;){var d;let{value:e,done:t}=await a.read();if(t)break;let r=(i+=s.decode(e,{stream:!0})).split("\n\n");for(let e of(i=null!==(d=r.pop())&&void 0!==d?d:"",r)){let t="message",r=[];for(let n of e.split("\n"))n.startsWith("event:")&&(t=n.slice(6).trim()),n.startsWith("data:")&&r.push(n.slice(5).trim());if(0!==r.length)try{n({type:t,data:JSON.parse(r.join("\n"))})}catch(e){}}}}function d(e){let[t,n]=(0,a.useState)([]);return(0,a.useEffect)(()=>{if(!e)return;let t=new AbortController;return i("/workflows/runs/".concat(encodeURIComponent(e),"/stream"),t.signal,e=>n(t=>[...t,e])).catch(()=>void 0),()=>t.abort()},[e]),{events:t,clear:(0,a.useCallback)(()=>n([]),[])}}function c(e,t){let n=(0,s.NL)(),r=JSON.stringify(t);(0,a.useEffect)(()=>{let t=new AbortController,a=JSON.parse(r);return i("/live/stream?channels=".concat(encodeURIComponent(e)),t.signal,t=>{if("refresh"===t.type&&t.data.channel===e)for(let e of a)n.invalidateQueries({queryKey:e})}).catch(()=>void 0),()=>t.abort()},[e,n,r])}},29147:function(e,t,n){"use strict";n.d(t,{cn:function(){return s}});var r=n(10607),a=n(25579);function s(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,a.m6)((0,r.W)(t))}}},function(e){e.O(0,[736,806,697,402,568,429,293,528,744],function(){return e(e.s=84367)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[872],{64856:function(e,t,n){Promise.resolve().then(n.bind(n,42302))},50466:function(e,t,n){"use strict";n.d(t,{z:function(){return o}});var r=n(27573),a=n(7653),s=n(29147);let l=(0,n(49289).j)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground hover:bg-destructive/90",outline:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),o=a.forwardRef((e,t)=>{let{className:n,variant:a,size:o,...i}=e;return(0,r.jsx)("button",{className:(0,s.cn)(l({variant:a,size:o,className:n})),ref:t,...i})});o.displayName="Button"},72196:function(e,t,n){"use strict";n.d(t,{Ol:function(){return o},Zb:function(){return l},aY:function(){return d},ll:function(){return i}});var r=n(27573),a=n(7653),s=n(29147);let l=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,s.cn)("rounded-lg border border-border bg-card text-card-foreground",n),...a})});l.displayName="Card";let o=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,s.cn)("flex flex-col space-y-1.5 p-4",n),...a})});o.displayName="CardHeader";let i=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("h3",{ref:t,className:(0,s.cn)("text-sm font-semibold leading-none tracking-tight",n),...a})});i.displayName="CardTitle";let d=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("div",{ref:t,className:(0,s.cn)("p-4 pt-0",n),...a})});d.displayName="CardContent"},29324:function(e,t,n){"use strict";n.d(t,{$N:function(){return c},Vq:function(){return s},cZ:function(){return i},fK:function(){return d}});var r=n(27573);n(7653);var a=n(57431);let s=a.fC;a.xz;let l=a.h_;function o(e){let{className:t,...n}=e;return(0,r.jsx)(a.aV,{className:"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 ".concat(null!=t?t:""),...n})}function i(e){let{className:t,children:n,...s}=e;return(0,r.jsxs)(l,{children:[(0,r.jsx)(o,{}),(0,r.jsx)(a.VY,{className:"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg ".concat(null!=t?t:""),...s,children:n})]})}function d(e){let{className:t,...n}=e;return(0,r.jsx)("div",{className:"flex flex-col space-y-1.5 text-center sm:text-left ".concat(null!=t?t:""),...n})}function c(e){let{className:t,...n}=e;return(0,r.jsx)(a.Dx,{className:"text-lg font-semibold leading-none tracking-tight ".concat(null!=t?t:""),...n})}a.x8},39134:function(e,t,n){"use strict";n.d(t,{I:function(){return l}});var r=n(27573),a=n(7653),s=n(29147);let l=a.forwardRef((e,t)=>{let{className:n,type:a,...l}=e;return(0,r.jsx)("input",{type:a,className:(0,s.cn)("flex h-9 w-full rounded-md border border-input bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",n),ref:t,...l})});l.displayName="Input"},42302:function(e,t,n){"use strict";n.d(t,{MemoryPanel:function(){return v}});var r=n(27573),a=n(7653),s=n(6315),l=n(10997),o=n(57429),i=n(72196),d=n(50466),c=n(39134),u=n(3806),m=n(33127),f=n(29324);let x=["semantic","procedural","episodic","failure_lesson"];function p(e){var t,n,s;let{open:l,onOpenChange:i,mode:c,defaultValues:m}=e,{t:p}=(0,u.$G)(),h=(0,o.KA)(),v=(0,o.Af)(),[g,y]=(0,a.useState)(null!==(t=null==m?void 0:m.category)&&void 0!==t?t:"semantic"),[j,b]=(0,a.useState)(null!==(n=null==m?void 0:m.content)&&void 0!==n?n:""),[N,w]=(0,a.useState)(null!==(s=null==m?void 0:m.scope)&&void 0!==s?s:"");(0,a.useEffect)(()=>{if(l){var e,t,n;y(null!==(e=null==m?void 0:m.category)&&void 0!==e?e:"semantic"),b(null!==(t=null==m?void 0:m.content)&&void 0!==t?t:""),w(null!==(n=null==m?void 0:m.scope)&&void 0!==n?n:"")}},[l,m]);let C=e=>{let t="memory.category.".concat(e),n=p(t);return n===t?e:n};return(0,r.jsx)(f.Vq,{open:l,onOpenChange:i,children:(0,r.jsxs)(f.cZ,{children:[(0,r.jsx)(f.fK,{children:(0,r.jsx)(f.$N,{children:"add"===c?p("memory.addMemory"):p("memory.editMemory")})}),(0,r.jsxs)("div",{className:"space-y-4",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:p("memory.categoryLabel")}),(0,r.jsx)("select",{className:"w-full mt-1 rounded-md border bg-background px-3 py-2 text-sm",value:g,onChange:e=>y(e.target.value),children:x.map(e=>(0,r.jsx)("option",{value:e,children:C(e)},e))})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:p("memory.content")}),(0,r.jsx)("textarea",{className:"w-full mt-1 rounded-md border bg-background px-3 py-2 text-sm min-h-[100px]",value:j,onChange:e=>b(e.target.value)})]}),(0,r.jsxs)("div",{children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:p("memory.scope")}),(0,r.jsx)("input",{className:"w-full mt-1 rounded-md border bg-background px-3 py-2 text-sm",value:N,onChange:e=>w(e.target.value)})]}),(0,r.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,r.jsx)(d.z,{variant:"outline",onClick:()=>i(!1),children:p("memory.cancel")}),(0,r.jsx)(d.z,{onClick:()=>{j.trim()&&("add"===c?h.mutate({category:g,content:j.trim(),scope:N.trim()||void 0}):(null==m?void 0:m.id)&&v.mutate({id:m.id,updates:{category:g,content:j.trim(),scope:N.trim()||void 0}}),i(!1))},disabled:!j.trim(),children:p("memory.save")})]})]})]})})}let h=["all","failure_lesson","semantic","procedural","episodic"];function v(){var e,t,n,f,x;(0,m.z)("memory",[["memory"],["memory-candidates"]]);let{t:v}=(0,u.$G)(),{data:g}=(0,o.nq)(),y=(0,o.C)(),j=(0,o.mp)(),b=(0,o.S0)(),N=function(){let{t:e}=(0,u.$G)();return t=>{let n="memory.category.".concat(t),r=e(n);return r===n?t:r}}(),[w,C]=(0,a.useState)(""),{data:k}=(0,o.on)(w),[z,_]=(0,a.useState)(!1),[S,O]=(0,a.useState)(),[M,E]=(0,a.useState)("all"),R=null!==(n=null==g?void 0:null===(e=g.memories)||void 0===e?void 0:e.filter(e=>"approved"===e.status))&&void 0!==n?n:[],A=null!==(f=null==g?void 0:null===(t=g.memories)||void 0===t?void 0:t.filter(e=>"pending"===e.status))&&void 0!==f?f:[],I="all"===M?R:R.filter(e=>e.category===M),V="all"===M?A:A.filter(e=>e.category===M),Z=(0,a.useMemo)(()=>{let e=new Map;for(let n of V){var t;let r=null!==(t=e.get(n.category))&&void 0!==t?t:[];r.push(n),e.set(n.category,r)}return[...e.entries()].sort((e,t)=>{let[n]=e,[r]=t;return"failure_lesson"===n?-1:"failure_lesson"===r?1:n.localeCompare(r)})},[V]),L=w&&k?k:I,P=e=>{var t;O({id:e.id,category:e.category,content:e.content,scope:null!==(t=e.scope)&&void 0!==t?t:""}),_(!0)},T=e=>{window.confirm(v("memory.deleteConfirm"))&&b.mutate(e.id)};return g?(0,r.jsxs)("div",{className:"p-6 space-y-4 h-full overflow-y-auto",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsx)("h2",{className:"text-2xl font-bold",children:v("memory.title")}),(0,r.jsxs)(d.z,{size:"sm",onClick:()=>{O(void 0),_(!0)},children:["+ ",v("memory.addMemory")]})]}),(0,r.jsx)("div",{className:"relative",children:(0,r.jsx)(c.I,{placeholder:v("memory.searchPlaceholder"),value:w,onChange:e=>C(e.target.value)})}),!w&&(0,r.jsx)("div",{className:"flex gap-2 flex-wrap",children:h.map(e=>(0,r.jsx)(d.z,{variant:M===e?"default":"outline",size:"sm",onClick:()=>E(e),children:"all"===e?v("memory.allCategories","All"):N(e)},e))}),!w&&V.length>0&&(0,r.jsxs)(i.Zb,{children:[(0,r.jsx)(i.Ol,{children:(0,r.jsxs)(i.ll,{children:[v("memory.pendingApproval")," (",V.length,")"]})}),(0,r.jsx)(i.aY,{children:(0,r.jsx)("div",{className:"space-y-4",children:Z.map(e=>{let[t,n]=e;return(0,r.jsxs)("div",{children:[(0,r.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground uppercase mb-2",children:N(t)}),(0,r.jsx)("div",{className:"space-y-2",children:n.map(e=>(0,r.jsxs)("div",{className:"flex items-start justify-between p-2 rounded bg-secondary/50",children:[(0,r.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,r.jsx)("p",{className:"text-sm font-medium truncate",children:e.content}),(0,r.jsxs)("p",{className:"text-xs text-muted-foreground",children:[v("memory.confidence"),": ",e.confidence]})]}),(0,r.jsxs)("div",{className:"flex gap-1 ml-2",children:[(0,r.jsx)(d.z,{size:"sm",variant:"outline",onClick:()=>y.mutate(e.id),children:v("memory.approve")}),(0,r.jsx)(d.z,{size:"sm",variant:"ghost",onClick:()=>j.mutate(e.id),children:v("memory.reject")})]})]},e.id))})]},t)})})})]}),(0,r.jsxs)(i.Zb,{children:[(0,r.jsx)(i.Ol,{children:(0,r.jsx)(i.ll,{children:w?"".concat(null!==(x=null==k?void 0:k.length)&&void 0!==x?x:0," results"):"".concat(v("memory.approvedMemories")," (").concat(I.length,")")})}),(0,r.jsx)(i.aY,{children:0===L.length?(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center py-8 border border-dashed border-border rounded-lg text-center",children:[(0,r.jsx)("p",{className:"text-muted-foreground text-sm font-medium",children:v("memory.noMemories")}),(0,r.jsx)("p",{className:"text-muted-foreground text-xs mt-1",children:v("memory.noMemoriesHint")})]}):(0,r.jsx)("div",{className:"space-y-2",children:L.map(e=>(0,r.jsxs)("div",{className:"p-2 rounded bg-secondary/50 text-sm",children:[(0,r.jsxs)("div",{className:"flex justify-between items-start",children:[(0,r.jsx)("span",{className:"flex-1",children:e.content}),(0,r.jsxs)("div",{className:"flex items-center gap-1 ml-2",children:[(0,r.jsx)("span",{className:"text-xs text-muted-foreground whitespace-nowrap",children:N(e.category)}),(0,r.jsx)(d.z,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0",onClick:()=>P(e),title:v("memory.editMemory"),children:(0,r.jsx)(s.Z,{className:"h-3.5 w-3.5"})}),(0,r.jsx)(d.z,{size:"sm",variant:"ghost",className:"h-6 w-6 p-0 text-destructive",onClick:()=>T(e),title:v("memory.deleteMemory"),children:(0,r.jsx)(l.Z,{className:"h-3.5 w-3.5"})})]})]}),e.originalText&&(0,r.jsxs)("p",{className:"text-xs text-muted-foreground mt-1",children:[v("memory.original"),": ",e.originalText]})]},e.id))})})]}),(0,r.jsx)(p,{open:z,onOpenChange:_,mode:S?"edit":"add",defaultValues:S})]}):(0,r.jsx)("div",{className:"p-6 text-muted-foreground",children:v("memory.loading")})}},33127:function(e,t,n){"use strict";n.d(t,{D:function(){return d},z:function(){return c}});var r,a=n(7653),s=n(77930),l=n(50794);let o=null!==(r=n(53241).env.NEXT_PUBLIC_DEVFLOW_API_URL)&&void 0!==r?r:"http://localhost:13337";async function i(e,t,n){let r=await fetch("".concat(o,"/api").concat(e),{headers:(0,l.O)(),signal:t});if(!r.ok||!r.body)throw Error("SSE ".concat(r.status));let a=r.body.getReader(),s=new TextDecoder,i="";for(;!t.aborted;){var d;let{value:e,done:t}=await a.read();if(t)break;let r=(i+=s.decode(e,{stream:!0})).split("\n\n");for(let e of(i=null!==(d=r.pop())&&void 0!==d?d:"",r)){let t="message",r=[];for(let n of e.split("\n"))n.startsWith("event:")&&(t=n.slice(6).trim()),n.startsWith("data:")&&r.push(n.slice(5).trim());if(0!==r.length)try{n({type:t,data:JSON.parse(r.join("\n"))})}catch(e){}}}}function d(e){let[t,n]=(0,a.useState)([]);return(0,a.useEffect)(()=>{if(!e)return;let t=new AbortController;return i("/workflows/runs/".concat(encodeURIComponent(e),"/stream"),t.signal,e=>n(t=>[...t,e])).catch(()=>void 0),()=>t.abort()},[e]),{events:t,clear:(0,a.useCallback)(()=>n([]),[])}}function c(e,t){let n=(0,s.NL)(),r=JSON.stringify(t);(0,a.useEffect)(()=>{let t=new AbortController,a=JSON.parse(r);return i("/live/stream?channels=".concat(encodeURIComponent(e)),t.signal,t=>{if("refresh"===t.type&&t.data.channel===e)for(let e of a)n.invalidateQueries({queryKey:e})}).catch(()=>void 0),()=>t.abort()},[e,n,r])}},29147:function(e,t,n){"use strict";n.d(t,{cn:function(){return s}});var r=n(10607),a=n(25579);function s(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return(0,a.m6)((0,r.W)(t))}}},function(e){e.O(0,[384,806,697,402,568,429,293,528,744],function(){return e(e.s=64856)}),_N_E=e.O()}]);
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{82668:function(e,t,r){Promise.resolve().then(r.bind(r,63730))},72196:function(e,t,r){"use strict";r.d(t,{Ol:function(){return c},Zb:function(){return l},aY:function(){return o},ll:function(){return i}});var s=r(27573),n=r(7653),a=r(29147);let l=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("rounded-lg border border-border bg-card text-card-foreground",r),...n})});l.displayName="Card";let c=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-4",r),...n})});c.displayName="CardHeader";let i=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("h3",{ref:t,className:(0,a.cn)("text-sm font-semibold leading-none tracking-tight",r),...n})});i.displayName="CardTitle";let o=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("p-4 pt-0",r),...n})});o.displayName="CardContent"},63730:function(e,t,r){"use strict";r.d(t,{ProjectOverview:function(){return N}});var s=r(27573),n=r(7653),a=r(57429),l=r(10535),c=r(72196),i=r(29147);function o(e){let{className:t,...r}=e;return(0,s.jsx)("div",{className:(0,i.cn)("animate-pulse rounded-md bg-muted",t),...r})}var d=r(2389);let u=(0,d.Z)("Plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]);var h=r(88623);let x=(0,d.Z)("FolderSync",[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5",key:"1dkoa9"}],["path",{d:"M12 10v4h4",key:"1czhmt"}],["path",{d:"m12 14 1.535-1.605a5 5 0 0 1 8 1.5",key:"lvuxfi"}],["path",{d:"M22 22v-4h-4",key:"1ewp4q"}],["path",{d:"m22 18-1.535 1.605a5 5 0 0 1-8-1.5",key:"14ync0"}]]);var m=r(10269);let v=(0,d.Z)("FolderGit2",[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["path",{d:"M18 19c-2.8 0-5-2.2-5-5v8",key:"pkpw2h"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]),f=(0,d.Z)("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]),p=(0,d.Z)("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);var j=r(90743);let g=(0,d.Z)("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]),b=(0,d.Z)("Box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);var y=r(77329),w=r(3806);function N(){var e;let{t}=(0,w.$G)(),{data:r}=(0,a.fC)(),i=(0,l.q)(e=>e.projectRoot),d=(0,l.q)(e=>e.setProjectRoot),N=(0,l.q)(e=>e.activeProjectRoot),P=(0,l.q)(e=>e.setActiveProjectRoot),[Z,S]=(0,n.useState)(""),[C,E]=(0,n.useState)(""),[M,R]=(0,n.useState)(!1),O=(0,a.FU)(),A=(0,a.X0)(),T=(0,a.Tr)();(0,n.useEffect)(()=>{(null==r?void 0:r.rootPath)&&r.rootPath!==N&&(d(r.rootPath),P(r.rootPath))},[r,d,P,N]);let[q,I]=(0,n.useState)(!1);(0,n.useEffect)(()=>{q||(null==r?void 0:r.rootPath)||!N||O.isPending||(I(!0),O.mutate(N))},[null==r?void 0:r.rootPath,N,O.isPending,q]);let{data:L}=(0,a.Z0)(),{data:D}=(0,a.hI)(),{data:Y}=(0,a.D)(),{data:F}=(0,a.dL)(10,0),{data:V,isLoading:z}=(0,a.G2)(N),W=null==L?void 0:L.find(e=>e.rootPath===N),H=()=>{if((null==W?void 0:W.stack)&&W.stack.length>0)return W.stack;if(null==V?void 0:V.stack){let e=[...V.stack.languages,...V.stack.frameworks,...V.stack.buildTools,...V.stack.testTools];if(e.length>0)return e}return[]},_=()=>{Z.trim()&&O.mutate(Z.trim(),{onSuccess:e=>{d(e.rootPath),P(e.rootPath)}})},U=()=>{C.trim()&&O.mutate(C.trim(),{onSuccess:e=>{d(e.rootPath),P(e.rootPath),R(!1),E("")}})};return i?(0,s.jsxs)("div",{className:"p-6 space-y-6 overflow-y-auto h-full",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("h2",{className:"text-2xl font-bold",children:t("overview.title")}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"hidden max-w-[40vw] truncate rounded bg-secondary px-2 py-1 font-mono text-xs text-muted-foreground sm:block",children:i}),(0,s.jsx)("button",{onClick:()=>N&&T.mutate(N),disabled:!N||T.isPending,className:"icon-button",title:t("onboarding.refresh"),"aria-label":t("onboarding.refresh"),children:(0,s.jsx)(h.Z,{className:"h-4 w-4 ".concat(T.isPending?"animate-spin":"")})}),(0,s.jsx)("button",{onClick:()=>R(!M),className:"icon-button",title:t("overview.switchProject"),"aria-label":t("overview.switchProject"),children:(0,s.jsx)(x,{className:"h-4 w-4"})}),(0,s.jsx)("button",{onClick:()=>{A.mutate(void 0,{onSuccess:()=>{d(null),P(null)}})},className:"icon-button",title:t("overview.disconnectProject"),"aria-label":t("overview.disconnectProject"),children:(0,s.jsx)(m.Z,{className:"h-4 w-4"})})]})]}),M&&(0,s.jsxs)("div",{className:"flex items-center gap-2 p-3 rounded-lg border bg-card",children:[(0,s.jsx)("input",{type:"text",value:C,onChange:e=>E(e.target.value),onKeyDown:e=>{"Enter"===e.key&&U(),"Escape"===e.key&&(R(!1),E(""))},placeholder:t("overview.switchProjectPlaceholder"),className:"flex-1 px-3 py-1.5 rounded-md border border-border bg-background text-sm"}),(0,s.jsx)("button",{onClick:U,disabled:O.isPending||!C.trim(),className:"px-3 py-1.5 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",children:O.isPending?t("overview.connecting"):t("overview.switchProjectConfirm")})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,s.jsx)(k,{icon:(0,s.jsx)(v,{className:"h-5 w-5"}),label:t("overview.project"),value:(null==W?void 0:W.name)?W.name:(null==V?void 0:V.projectName)?V.projectName:N&&null!==(e=N.split("/").pop())&&void 0!==e?e:"Unknown Project"}),(0,s.jsx)(k,{icon:(0,s.jsx)(f,{className:"h-5 w-5"}),label:t("overview.filesIndexed"),value:D?String(D.totalFiles):"--"}),(0,s.jsx)(k,{icon:(0,s.jsx)(p,{className:"h-5 w-5"}),label:t("overview.workflows"),value:Y?String(Y.length):"--"}),(0,s.jsx)(k,{icon:(0,s.jsx)(j.Z,{className:"h-5 w-5"}),label:t("overview.agentRuns"),value:F?String(F.length):"--"})]}),H().length>0&&(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsx)(c.ll,{children:t("overview.techStack")})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:H().map(e=>(0,s.jsx)("span",{className:"px-2 py-1 rounded-md bg-secondary text-secondary-foreground text-xs",children:e},e))})})]}),z?(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(g,{className:"h-4 w-4"}),t("onboarding.title")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)(o,{className:"h-32 w-full"})})]}):V?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(g,{className:"h-4 w-4"}),t("overview.architectureLayers")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)("div",{className:"space-y-2",children:V.architectureLayers.map(e=>(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm font-medium",children:e.name}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground bg-secondary px-2 py-0.5 rounded",children:t("overview.filesCount",{count:e.files})})]},e.name))})})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-2",children:[(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(b,{className:"h-4 w-4"}),t("overview.keyModules")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)("div",{className:"space-y-2",children:V.keyModules.slice(0,6).map(e=>(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm font-mono text-primary",children:e.name}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:e.reason})]},e.name))})})]}),(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(f,{className:"h-4 w-4"}),t("overview.keyFiles")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)("div",{className:"space-y-2",children:V.keyFiles.slice(0,6).map(e=>(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm font-mono truncate",children:e.path}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:e.reason})]},e.path))})})]})]}),(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(y.Z,{className:"h-4 w-4"}),t("overview.recommended")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:t("overview.plugins")}),(0,s.jsx)("div",{className:"flex flex-wrap gap-1",children:V.recommendedPlugins.map(e=>(0,s.jsx)("span",{className:"px-2 py-0.5 rounded bg-green-100 text-green-800 text-xs",children:e},e))})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:t("overview.workflows")}),(0,s.jsx)("div",{className:"flex flex-wrap gap-1",children:V.recommendedWorkflows.map(e=>(0,s.jsx)("span",{className:"px-2 py-0.5 rounded bg-blue-100 text-blue-800 text-xs",children:e},e))})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:t("overview.queries")}),(0,s.jsx)("div",{className:"space-y-1",children:V.recommendedQueries.slice(0,3).map(e=>(0,s.jsxs)("div",{className:"text-xs text-muted-foreground",children:['"',e,'"']},e))})]})]})})]})]}):(0,s.jsx)(c.Zb,{children:(0,s.jsx)(c.aY,{className:"py-8 text-center text-muted-foreground",children:t("onboarding.empty")})}),(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsx)(c.ll,{children:t("overview.recentRuns")})}),(0,s.jsx)(c.aY,{children:F&&F.length>0?(0,s.jsxs)("table",{className:"w-full text-sm",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"text-left text-muted-foreground",children:[(0,s.jsx)("th",{children:t("overview.label")}),(0,s.jsx)("th",{children:t("overview.status")}),(0,s.jsx)("th",{children:t("overview.toolCalls")}),(0,s.jsx)("th",{children:t("overview.duration")})]})}),(0,s.jsx)("tbody",{children:F.slice(0,5).map(e=>(0,s.jsxs)("tr",{className:"border-t border-border",children:[(0,s.jsx)("td",{className:"py-1",children:e.label||e.projectRoot}),(0,s.jsx)("td",{children:(0,s.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs ".concat("closed"===e.status?"bg-green-100 text-green-700":"bg-yellow-100 text-yellow-700"),children:e.status})}),(0,s.jsxs)("td",{children:[e.totalToolCalls," (",e.mcpToolCalls," MCP)"]}),(0,s.jsx)("td",{children:e.durationMs>0?"".concat((e.durationMs/1e3).toFixed(1),"s"):"--"})]},e.id))})]}):(0,s.jsx)("p",{className:"text-muted-foreground text-sm",children:t("overview.noRuns")})})]})]}):(0,s.jsx)("div",{className:"p-6 flex items-center justify-center h-full",children:(0,s.jsxs)(c.Zb,{className:"w-full max-w-md",children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(u,{className:"h-5 w-5"}),t("overview.connectTitle")]})}),(0,s.jsxs)(c.aY,{className:"space-y-4",children:[(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:t("overview.connectDescription")}),(0,s.jsx)("input",{type:"text",value:Z,onChange:e=>S(e.target.value),onKeyDown:e=>"Enter"===e.key&&_(),placeholder:t("overview.connectPlaceholder"),className:"w-full px-3 py-2 rounded-md border border-border bg-background text-sm"}),(0,s.jsx)("button",{onClick:_,disabled:O.isPending||!Z.trim(),className:"w-full px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm font-medium disabled:opacity-50",children:O.isPending?t("overview.connecting"):t("overview.connect")}),O.isError&&(0,s.jsx)("p",{className:"text-sm text-red-500",children:t("overview.connectError")})]})]})})}function k(e){let{icon:t,label:r,value:n}=e;return(0,s.jsx)(c.Zb,{children:(0,s.jsxs)(c.aY,{className:"p-4 flex items-center gap-3",children:[(0,s.jsx)("div",{className:"text-primary",children:t}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:r}),(0,s.jsx)("div",{className:"font-bold text-lg",children:n})]})]})})}},10535:function(e,t,r){"use strict";r.d(t,{q:function(){return i}});var s=r(62052);let n="devflow-project-root",a="devflow-active-project-root";function l(e){try{return localStorage.getItem(e)}catch(e){return null}}function c(e,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch(e){}}let i=(0,s.Ue)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:l(n),activeProjectRoot:l(a),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{c(n,t),e({projectRoot:t})},setActiveProjectRoot:t=>{c(a,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},29147:function(e,t,r){"use strict";r.d(t,{cn:function(){return a}});var s=r(10607),n=r(25579);function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.m6)((0,s.W)(t))}},2389:function(e,t,r){"use strict";r.d(t,{Z:function(){return i}});var s=r(7653);let n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),a=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&r.indexOf(e)===t).join(" ")};var l={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let c=(0,s.forwardRef)((e,t)=>{let{color:r="currentColor",size:n=24,strokeWidth:c=2,absoluteStrokeWidth:i,className:o="",children:d,iconNode:u,...h}=e;return(0,s.createElement)("svg",{ref:t,...l,width:n,height:n,stroke:r,strokeWidth:i?24*Number(c)/Number(n):c,className:a("lucide",o),...h},[...u.map(e=>{let[t,r]=e;return(0,s.createElement)(t,r)}),...Array.isArray(d)?d:[d]])}),i=(e,t)=>{let r=(0,s.forwardRef)((r,l)=>{let{className:i,...o}=r;return(0,s.createElement)(c,{ref:l,iconNode:t,className:a("lucide-".concat(n(e)),i),...o})});return r.displayName="".concat(e),r}},77329:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});let s=(0,r(2389).Z)("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]])},88623:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});let s=(0,r(2389).Z)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},10269:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});let s=(0,r(2389).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},90743:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});let s=(0,r(2389).Z)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},38475:function(e,t,r){"use strict";var s=r(7653),n=r(96250),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},l=n.useSyncExternalStore,c=s.useRef,i=s.useEffect,o=s.useMemo,d=s.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,r,s,n){var u=c(null);if(null===u.current){var h={hasValue:!1,value:null};u.current=h}else h=u.current;var x=l(e,(u=o(function(){function e(e){if(!i){if(i=!0,l=e,e=s(e),void 0!==n&&h.hasValue){var t=h.value;if(n(t,e))return c=t}return c=e}if(t=c,a(l,e))return t;var r=s(e);return void 0!==n&&n(t,r)?(l=e,t):(l=e,c=r)}var l,c,i=!1,o=void 0===r?null:r;return[function(){return e(t())},null===o?void 0:function(){return e(o())}]},[t,r,s,n]))[0],u[1]);return i(function(){h.hasValue=!0,h.value=x},[x]),d(x),x}},18678:function(e,t,r){"use strict";e.exports=r(38475)},62052:function(e,t,r){"use strict";r.d(t,{Ue:function(){return u}});var s=r(19730),n=r(7653),a=r(18678);let{useDebugValue:l}=n,{useSyncExternalStoreWithSelector:c}=a,i=!1,o=e=>e,d=e=>{"function"!=typeof e&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let t="function"==typeof e?(0,s.M)(e):e,r=(e,r)=>(function(e,t=o,r){r&&!i&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),i=!0);let s=c(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,r);return l(s),s})(t,e,r);return Object.assign(r,t),r},u=e=>e?d(e):d},19730:function(e,t,r){"use strict";r.d(t,{M:function(){return n}});let s=e=>{let t;let r=new Set,s=(e,s)=>{let n="function"==typeof e?e(t):e;if(!Object.is(n,t)){let e=t;t=(null!=s?s:"object"!=typeof n||null===n)?n:Object.assign({},t,n),r.forEach(r=>r(t,e))}},n=()=>t,a={setState:s,getState:n,getInitialState:()=>l,subscribe:e=>(r.add(e),()=>r.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},l=t=e(s,n,a);return a},n=e=>e?s(e):s}},function(e){e.O(0,[736,806,697,429,293,528,744],function(){return e(e.s=82668)}),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[931],{51367:function(e,t,r){Promise.resolve().then(r.bind(r,63730))},72196:function(e,t,r){"use strict";r.d(t,{Ol:function(){return c},Zb:function(){return l},aY:function(){return o},ll:function(){return i}});var s=r(27573),n=r(7653),a=r(29147);let l=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("rounded-lg border border-border bg-card text-card-foreground",r),...n})});l.displayName="Card";let c=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("flex flex-col space-y-1.5 p-4",r),...n})});c.displayName="CardHeader";let i=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("h3",{ref:t,className:(0,a.cn)("text-sm font-semibold leading-none tracking-tight",r),...n})});i.displayName="CardTitle";let o=n.forwardRef((e,t)=>{let{className:r,...n}=e;return(0,s.jsx)("div",{ref:t,className:(0,a.cn)("p-4 pt-0",r),...n})});o.displayName="CardContent"},63730:function(e,t,r){"use strict";r.d(t,{ProjectOverview:function(){return N}});var s=r(27573),n=r(7653),a=r(57429),l=r(10535),c=r(72196),i=r(29147);function o(e){let{className:t,...r}=e;return(0,s.jsx)("div",{className:(0,i.cn)("animate-pulse rounded-md bg-muted",t),...r})}var d=r(2389);let u=(0,d.Z)("Plug",[["path",{d:"M12 22v-5",key:"1ega77"}],["path",{d:"M9 8V2",key:"14iosj"}],["path",{d:"M15 8V2",key:"18g5xt"}],["path",{d:"M18 8v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4V8Z",key:"osxo6l"}]]);var h=r(88623);let x=(0,d.Z)("FolderSync",[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v.5",key:"1dkoa9"}],["path",{d:"M12 10v4h4",key:"1czhmt"}],["path",{d:"m12 14 1.535-1.605a5 5 0 0 1 8 1.5",key:"lvuxfi"}],["path",{d:"M22 22v-4h-4",key:"1ewp4q"}],["path",{d:"m22 18-1.535 1.605a5 5 0 0 1-8-1.5",key:"14ync0"}]]);var m=r(10269);let v=(0,d.Z)("FolderGit2",[["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["path",{d:"M18 19c-2.8 0-5-2.2-5-5v8",key:"pkpw2h"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]),f=(0,d.Z)("CodeXml",[["path",{d:"m18 16 4-4-4-4",key:"1inbqp"}],["path",{d:"m6 8-4 4 4 4",key:"15zrgr"}],["path",{d:"m14.5 4-5 16",key:"e7oirm"}]]),p=(0,d.Z)("Workflow",[["rect",{width:"8",height:"8",x:"3",y:"3",rx:"2",key:"by2w9f"}],["path",{d:"M7 11v4a2 2 0 0 0 2 2h4",key:"xkn7yn"}],["rect",{width:"8",height:"8",x:"13",y:"13",rx:"2",key:"1cgmvn"}]]);var j=r(90743);let g=(0,d.Z)("Layers",[["path",{d:"m12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83Z",key:"8b97xw"}],["path",{d:"m22 17.65-9.17 4.16a2 2 0 0 1-1.66 0L2 17.65",key:"dd6zsq"}],["path",{d:"m22 12.65-9.17 4.16a2 2 0 0 1-1.66 0L2 12.65",key:"ep9fru"}]]),b=(0,d.Z)("Box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]]);var y=r(77329),w=r(3806);function N(){var e;let{t}=(0,w.$G)(),{data:r}=(0,a.fC)(),i=(0,l.q)(e=>e.projectRoot),d=(0,l.q)(e=>e.setProjectRoot),N=(0,l.q)(e=>e.activeProjectRoot),P=(0,l.q)(e=>e.setActiveProjectRoot),[Z,S]=(0,n.useState)(""),[C,E]=(0,n.useState)(""),[M,R]=(0,n.useState)(!1),O=(0,a.FU)(),A=(0,a.X0)(),T=(0,a.Tr)();(0,n.useEffect)(()=>{(null==r?void 0:r.rootPath)&&r.rootPath!==N&&(d(r.rootPath),P(r.rootPath))},[r,d,P,N]);let[q,I]=(0,n.useState)(!1);(0,n.useEffect)(()=>{q||(null==r?void 0:r.rootPath)||!N||O.isPending||(I(!0),O.mutate(N))},[null==r?void 0:r.rootPath,N,O.isPending,q]);let{data:L}=(0,a.Z0)(),{data:D}=(0,a.hI)(),{data:Y}=(0,a.D)(),{data:F}=(0,a.dL)(10,0),{data:V,isLoading:z}=(0,a.G2)(N),W=null==L?void 0:L.find(e=>e.rootPath===N),H=()=>{if((null==W?void 0:W.stack)&&W.stack.length>0)return W.stack;if(null==V?void 0:V.stack){let e=[...V.stack.languages,...V.stack.frameworks,...V.stack.buildTools,...V.stack.testTools];if(e.length>0)return e}return[]},_=()=>{Z.trim()&&O.mutate(Z.trim(),{onSuccess:e=>{d(e.rootPath),P(e.rootPath)}})},U=()=>{C.trim()&&O.mutate(C.trim(),{onSuccess:e=>{d(e.rootPath),P(e.rootPath),R(!1),E("")}})};return i?(0,s.jsxs)("div",{className:"p-6 space-y-6 overflow-y-auto h-full",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("h2",{className:"text-2xl font-bold",children:t("overview.title")}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("span",{className:"hidden max-w-[40vw] truncate rounded bg-secondary px-2 py-1 font-mono text-xs text-muted-foreground sm:block",children:i}),(0,s.jsx)("button",{onClick:()=>N&&T.mutate(N),disabled:!N||T.isPending,className:"icon-button",title:t("onboarding.refresh"),"aria-label":t("onboarding.refresh"),children:(0,s.jsx)(h.Z,{className:"h-4 w-4 ".concat(T.isPending?"animate-spin":"")})}),(0,s.jsx)("button",{onClick:()=>R(!M),className:"icon-button",title:t("overview.switchProject"),"aria-label":t("overview.switchProject"),children:(0,s.jsx)(x,{className:"h-4 w-4"})}),(0,s.jsx)("button",{onClick:()=>{A.mutate(void 0,{onSuccess:()=>{d(null),P(null)}})},className:"icon-button",title:t("overview.disconnectProject"),"aria-label":t("overview.disconnectProject"),children:(0,s.jsx)(m.Z,{className:"h-4 w-4"})})]})]}),M&&(0,s.jsxs)("div",{className:"flex items-center gap-2 p-3 rounded-lg border bg-card",children:[(0,s.jsx)("input",{type:"text",value:C,onChange:e=>E(e.target.value),onKeyDown:e=>{"Enter"===e.key&&U(),"Escape"===e.key&&(R(!1),E(""))},placeholder:t("overview.switchProjectPlaceholder"),className:"flex-1 px-3 py-1.5 rounded-md border border-border bg-background text-sm"}),(0,s.jsx)("button",{onClick:U,disabled:O.isPending||!C.trim(),className:"px-3 py-1.5 rounded-md bg-primary text-primary-foreground text-sm disabled:opacity-50",children:O.isPending?t("overview.connecting"):t("overview.switchProjectConfirm")})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-4 sm:grid-cols-2",children:[(0,s.jsx)(k,{icon:(0,s.jsx)(v,{className:"h-5 w-5"}),label:t("overview.project"),value:(null==W?void 0:W.name)?W.name:(null==V?void 0:V.projectName)?V.projectName:N&&null!==(e=N.split("/").pop())&&void 0!==e?e:"Unknown Project"}),(0,s.jsx)(k,{icon:(0,s.jsx)(f,{className:"h-5 w-5"}),label:t("overview.filesIndexed"),value:D?String(D.totalFiles):"--"}),(0,s.jsx)(k,{icon:(0,s.jsx)(p,{className:"h-5 w-5"}),label:t("overview.workflows"),value:Y?String(Y.length):"--"}),(0,s.jsx)(k,{icon:(0,s.jsx)(j.Z,{className:"h-5 w-5"}),label:t("overview.agentRuns"),value:F?String(F.length):"--"})]}),H().length>0&&(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsx)(c.ll,{children:t("overview.techStack")})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)("div",{className:"flex flex-wrap gap-2",children:H().map(e=>(0,s.jsx)("span",{className:"px-2 py-1 rounded-md bg-secondary text-secondary-foreground text-xs",children:e},e))})})]}),z?(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(g,{className:"h-4 w-4"}),t("onboarding.title")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)(o,{className:"h-32 w-full"})})]}):V?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(g,{className:"h-4 w-4"}),t("overview.architectureLayers")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)("div",{className:"space-y-2",children:V.architectureLayers.map(e=>(0,s.jsxs)("div",{className:"flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-sm font-medium",children:e.name}),(0,s.jsx)("span",{className:"text-xs text-muted-foreground bg-secondary px-2 py-0.5 rounded",children:t("overview.filesCount",{count:e.files})})]},e.name))})})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-4 lg:grid-cols-2",children:[(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(b,{className:"h-4 w-4"}),t("overview.keyModules")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)("div",{className:"space-y-2",children:V.keyModules.slice(0,6).map(e=>(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm font-mono text-primary",children:e.name}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:e.reason})]},e.name))})})]}),(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(f,{className:"h-4 w-4"}),t("overview.keyFiles")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsx)("div",{className:"space-y-2",children:V.keyFiles.slice(0,6).map(e=>(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-sm font-mono truncate",children:e.path}),(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:e.reason})]},e.path))})})]})]}),(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(y.Z,{className:"h-4 w-4"}),t("overview.recommended")]})}),(0,s.jsx)(c.aY,{children:(0,s.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:t("overview.plugins")}),(0,s.jsx)("div",{className:"flex flex-wrap gap-1",children:V.recommendedPlugins.map(e=>(0,s.jsx)("span",{className:"px-2 py-0.5 rounded bg-green-100 text-green-800 text-xs",children:e},e))})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:t("overview.workflows")}),(0,s.jsx)("div",{className:"flex flex-wrap gap-1",children:V.recommendedWorkflows.map(e=>(0,s.jsx)("span",{className:"px-2 py-0.5 rounded bg-blue-100 text-blue-800 text-xs",children:e},e))})]}),(0,s.jsxs)("div",{children:[(0,s.jsx)("h4",{className:"text-xs font-semibold text-muted-foreground mb-2 uppercase",children:t("overview.queries")}),(0,s.jsx)("div",{className:"space-y-1",children:V.recommendedQueries.slice(0,3).map(e=>(0,s.jsxs)("div",{className:"text-xs text-muted-foreground",children:['"',e,'"']},e))})]})]})})]})]}):(0,s.jsx)(c.Zb,{children:(0,s.jsx)(c.aY,{className:"py-8 text-center text-muted-foreground",children:t("onboarding.empty")})}),(0,s.jsxs)(c.Zb,{children:[(0,s.jsx)(c.Ol,{children:(0,s.jsx)(c.ll,{children:t("overview.recentRuns")})}),(0,s.jsx)(c.aY,{children:F&&F.length>0?(0,s.jsxs)("table",{className:"w-full text-sm",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"text-left text-muted-foreground",children:[(0,s.jsx)("th",{children:t("overview.label")}),(0,s.jsx)("th",{children:t("overview.status")}),(0,s.jsx)("th",{children:t("overview.toolCalls")}),(0,s.jsx)("th",{children:t("overview.duration")})]})}),(0,s.jsx)("tbody",{children:F.slice(0,5).map(e=>(0,s.jsxs)("tr",{className:"border-t border-border",children:[(0,s.jsx)("td",{className:"py-1",children:e.label||e.projectRoot}),(0,s.jsx)("td",{children:(0,s.jsx)("span",{className:"px-1.5 py-0.5 rounded text-xs ".concat("closed"===e.status?"bg-green-100 text-green-700":"bg-yellow-100 text-yellow-700"),children:e.status})}),(0,s.jsxs)("td",{children:[e.totalToolCalls," (",e.mcpToolCalls," MCP)"]}),(0,s.jsx)("td",{children:e.durationMs>0?"".concat((e.durationMs/1e3).toFixed(1),"s"):"--"})]},e.id))})]}):(0,s.jsx)("p",{className:"text-muted-foreground text-sm",children:t("overview.noRuns")})})]})]}):(0,s.jsx)("div",{className:"p-6 flex items-center justify-center h-full",children:(0,s.jsxs)(c.Zb,{className:"w-full max-w-md",children:[(0,s.jsx)(c.Ol,{children:(0,s.jsxs)(c.ll,{className:"flex items-center gap-2",children:[(0,s.jsx)(u,{className:"h-5 w-5"}),t("overview.connectTitle")]})}),(0,s.jsxs)(c.aY,{className:"space-y-4",children:[(0,s.jsx)("p",{className:"text-sm text-muted-foreground",children:t("overview.connectDescription")}),(0,s.jsx)("input",{type:"text",value:Z,onChange:e=>S(e.target.value),onKeyDown:e=>"Enter"===e.key&&_(),placeholder:t("overview.connectPlaceholder"),className:"w-full px-3 py-2 rounded-md border border-border bg-background text-sm"}),(0,s.jsx)("button",{onClick:_,disabled:O.isPending||!Z.trim(),className:"w-full px-4 py-2 rounded-md bg-primary text-primary-foreground text-sm font-medium disabled:opacity-50",children:O.isPending?t("overview.connecting"):t("overview.connect")}),O.isError&&(0,s.jsx)("p",{className:"text-sm text-red-500",children:t("overview.connectError")})]})]})})}function k(e){let{icon:t,label:r,value:n}=e;return(0,s.jsx)(c.Zb,{children:(0,s.jsxs)(c.aY,{className:"p-4 flex items-center gap-3",children:[(0,s.jsx)("div",{className:"text-primary",children:t}),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"text-xs text-muted-foreground",children:r}),(0,s.jsx)("div",{className:"font-bold text-lg",children:n})]})]})})}},10535:function(e,t,r){"use strict";r.d(t,{q:function(){return i}});var s=r(62052);let n="devflow-project-root",a="devflow-active-project-root";function l(e){try{return localStorage.getItem(e)}catch(e){return null}}function c(e,t){try{null===t?localStorage.removeItem(e):localStorage.setItem(e,t)}catch(e){}}let i=(0,s.Ue)(e=>({selectedNodeId:null,detailTab:"properties",searchQuery:"",projectRoot:l(n),activeProjectRoot:l(a),selectedRunId:null,selectNode:t=>e({selectedNodeId:t}),setDetailTab:t=>e({detailTab:t}),setSearchQuery:t=>e({searchQuery:t}),setProjectRoot:t=>{c(n,t),e({projectRoot:t})},setActiveProjectRoot:t=>{c(a,t),e({activeProjectRoot:t})},setSelectedRunId:t=>e({selectedRunId:t})}))},29147:function(e,t,r){"use strict";r.d(t,{cn:function(){return a}});var s=r(10607),n=r(25579);function a(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,n.m6)((0,s.W)(t))}},2389:function(e,t,r){"use strict";r.d(t,{Z:function(){return i}});var s=r(7653);let n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),a=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.filter((e,t,r)=>!!e&&r.indexOf(e)===t).join(" ")};var l={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let c=(0,s.forwardRef)((e,t)=>{let{color:r="currentColor",size:n=24,strokeWidth:c=2,absoluteStrokeWidth:i,className:o="",children:d,iconNode:u,...h}=e;return(0,s.createElement)("svg",{ref:t,...l,width:n,height:n,stroke:r,strokeWidth:i?24*Number(c)/Number(n):c,className:a("lucide",o),...h},[...u.map(e=>{let[t,r]=e;return(0,s.createElement)(t,r)}),...Array.isArray(d)?d:[d]])}),i=(e,t)=>{let r=(0,s.forwardRef)((r,l)=>{let{className:i,...o}=r;return(0,s.createElement)(c,{ref:l,iconNode:t,className:a("lucide-".concat(n(e)),i),...o})});return r.displayName="".concat(e),r}},77329:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});let s=(0,r(2389).Z)("Lightbulb",[["path",{d:"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5",key:"1gvzjb"}],["path",{d:"M9 18h6",key:"x1upvd"}],["path",{d:"M10 22h4",key:"ceow96"}]])},88623:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});let s=(0,r(2389).Z)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},10269:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});let s=(0,r(2389).Z)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},90743:function(e,t,r){"use strict";r.d(t,{Z:function(){return s}});let s=(0,r(2389).Z)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},38475:function(e,t,r){"use strict";var s=r(7653),n=r(96250),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},l=n.useSyncExternalStore,c=s.useRef,i=s.useEffect,o=s.useMemo,d=s.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,r,s,n){var u=c(null);if(null===u.current){var h={hasValue:!1,value:null};u.current=h}else h=u.current;var x=l(e,(u=o(function(){function e(e){if(!i){if(i=!0,l=e,e=s(e),void 0!==n&&h.hasValue){var t=h.value;if(n(t,e))return c=t}return c=e}if(t=c,a(l,e))return t;var r=s(e);return void 0!==n&&n(t,r)?(l=e,t):(l=e,c=r)}var l,c,i=!1,o=void 0===r?null:r;return[function(){return e(t())},null===o?void 0:function(){return e(o())}]},[t,r,s,n]))[0],u[1]);return i(function(){h.hasValue=!0,h.value=x},[x]),d(x),x}},18678:function(e,t,r){"use strict";e.exports=r(38475)},62052:function(e,t,r){"use strict";r.d(t,{Ue:function(){return u}});var s=r(19730),n=r(7653),a=r(18678);let{useDebugValue:l}=n,{useSyncExternalStoreWithSelector:c}=a,i=!1,o=e=>e,d=e=>{"function"!=typeof e&&console.warn("[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.");let t="function"==typeof e?(0,s.M)(e):e,r=(e,r)=>(function(e,t=o,r){r&&!i&&(console.warn("[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937"),i=!0);let s=c(e.subscribe,e.getState,e.getServerState||e.getInitialState,t,r);return l(s),s})(t,e,r);return Object.assign(r,t),r},u=e=>e?d(e):d},19730:function(e,t,r){"use strict";r.d(t,{M:function(){return n}});let s=e=>{let t;let r=new Set,s=(e,s)=>{let n="function"==typeof e?e(t):e;if(!Object.is(n,t)){let e=t;t=(null!=s?s:"object"!=typeof n||null===n)?n:Object.assign({},t,n),r.forEach(r=>r(t,e))}},n=()=>t,a={setState:s,getState:n,getInitialState:()=>l,subscribe:e=>(r.add(e),()=>r.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),r.clear()}},l=t=e(s,n,a);return a},n=e=>e?s(e):s}},function(e){e.O(0,[384,806,697,429,293,528,744],function(){return e(e.s=51367)}),_N_E=e.O()}]);