reflex-agent 0.2.2 → 0.2.3

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 (158) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +103 -103
  3. package/.next/app-path-routes-manifest.json +9 -9
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +3 -51
  6. package/.next/react-loadable-manifest.json +1 -1
  7. package/.next/server/app/_not-found/page.js +1 -1
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_not-found.html +1 -1
  10. package/.next/server/app/_not-found.rsc +3 -3
  11. package/.next/server/app/agents/[agentId]/page.js +1 -1
  12. package/.next/server/app/agents/[agentId]/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/agents/[agentId]/respond/route.js +1 -1
  14. package/.next/server/app/api/agents/[agentId]/respond/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/images/[rootId]/[file]/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/oauth/callback/route.js +2 -2
  17. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/oauth/start/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/roots/[id]/attachments/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route.js +1 -1
  21. package/.next/server/app/api/roots/[id]/chat/[topicId]/send/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route.js +1 -1
  23. package/.next/server/app/api/roots/[id]/chat/[topicId]/stop/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route.js +2 -2
  25. package/.next/server/app/api/roots/[id]/chat/[topicId]/stream/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/roots/[id]/dashboard/route.js +1 -1
  27. package/.next/server/app/api/roots/[id]/dashboard/route.js.nft.json +1 -1
  28. package/.next/server/app/api/roots/[id]/dashboard/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/roots/[id]/suggestions/route.js +1 -1
  30. package/.next/server/app/api/roots/[id]/suggestions/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/utilities/[scope]/[id]/bundle.js/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/utilities/[scope]/[id]/host/route.js +1 -1
  33. package/.next/server/app/api/utilities/[scope]/[id]/host/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/utilities/[scope]/[id]/host-api.mjs/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/utilities/[scope]/[id]/host-ui.mjs/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/utilities/[scope]/[id]/iframe/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/utilities/[scope]/[id]/style.css/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/audit/page.js +1 -1
  39. package/.next/server/app/audit/page.js.nft.json +1 -1
  40. package/.next/server/app/audit/page_client-reference-manifest.js +1 -1
  41. package/.next/server/app/index.html +1 -1
  42. package/.next/server/app/index.rsc +3 -3
  43. package/.next/server/app/onboarding/page.js +2 -2
  44. package/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  45. package/.next/server/app/page.js +2 -2
  46. package/.next/server/app/page.js.nft.json +1 -1
  47. package/.next/server/app/page_client-reference-manifest.js +1 -1
  48. package/.next/server/app/roots/[id]/chat/[topicId]/page.js +3 -3
  49. package/.next/server/app/roots/[id]/chat/[topicId]/page.js.nft.json +1 -1
  50. package/.next/server/app/roots/[id]/chat/[topicId]/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/roots/[id]/kb/[...slug]/page.js +3 -3
  52. package/.next/server/app/roots/[id]/kb/[...slug]/page.js.nft.json +1 -1
  53. package/.next/server/app/roots/[id]/kb/[...slug]/page_client-reference-manifest.js +1 -1
  54. package/.next/server/app/roots/[id]/page.js +2 -2
  55. package/.next/server/app/roots/[id]/page.js.nft.json +1 -1
  56. package/.next/server/app/roots/[id]/page_client-reference-manifest.js +1 -1
  57. package/.next/server/app/roots/[id]/workflows/[wfId]/page.js +2 -2
  58. package/.next/server/app/roots/[id]/workflows/[wfId]/page_client-reference-manifest.js +1 -1
  59. package/.next/server/app/roots/[id]/workflows/page.js +1 -1
  60. package/.next/server/app/roots/[id]/workflows/page.js.nft.json +1 -1
  61. package/.next/server/app/roots/[id]/workflows/page_client-reference-manifest.js +1 -1
  62. package/.next/server/app/roots/new/page.js +2 -2
  63. package/.next/server/app/roots/new/page_client-reference-manifest.js +1 -1
  64. package/.next/server/app/settings/page.js +4 -4
  65. package/.next/server/app/settings/page.js.nft.json +1 -1
  66. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  67. package/.next/server/app/share/[id]/file/page.js +2 -2
  68. package/.next/server/app/share/[id]/file/page_client-reference-manifest.js +1 -1
  69. package/.next/server/app/share/[id]/page.js +2 -2
  70. package/.next/server/app/share/[id]/page.js.nft.json +1 -1
  71. package/.next/server/app/share/[id]/page_client-reference-manifest.js +1 -1
  72. package/.next/server/app/utilities/[scope]/[id]/page.js +2 -2
  73. package/.next/server/app/utilities/[scope]/[id]/page.js.nft.json +1 -1
  74. package/.next/server/app/utilities/[scope]/[id]/page_client-reference-manifest.js +1 -1
  75. package/.next/server/app/utilities/page.js +4 -4
  76. package/.next/server/app/utilities/page_client-reference-manifest.js +1 -1
  77. package/.next/server/app-paths-manifest.json +9 -9
  78. package/.next/server/chunks/133.js +6 -6
  79. package/.next/server/chunks/1960.js +1 -1
  80. package/.next/server/chunks/1986.js +1 -1
  81. package/.next/server/chunks/2528.js +4 -0
  82. package/.next/server/chunks/3332.js +1 -1
  83. package/.next/server/chunks/4031.js +1 -1
  84. package/.next/server/chunks/4065.js +1 -0
  85. package/.next/server/chunks/6909.js +3 -3
  86. package/.next/server/chunks/{2977.js → 6981.js} +1 -1
  87. package/.next/server/chunks/7017.js +3 -0
  88. package/.next/server/chunks/7800.js +1 -0
  89. package/.next/server/chunks/8494.js +1 -0
  90. package/.next/server/chunks/9098.js +1 -1
  91. package/.next/server/chunks/9328.js +1 -1
  92. package/.next/server/chunks/{4567.js → 9423.js} +2 -2
  93. package/.next/server/chunks/9455.js +1 -0
  94. package/.next/server/chunks/9579.js +1 -1
  95. package/.next/server/functions-config-manifest.json +1 -1
  96. package/.next/server/middleware-build-manifest.js +1 -1
  97. package/.next/server/middleware-manifest.json +5 -5
  98. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  99. package/.next/server/pages/404.html +1 -1
  100. package/.next/server/pages/500.html +1 -1
  101. package/.next/server/server-reference-manifest.js +1 -1
  102. package/.next/server/server-reference-manifest.json +1 -1
  103. package/.next/static/chunks/{1521-747af538ca131a44.js → 1384-d28fb6c6c058876f.js} +1 -1
  104. package/.next/static/chunks/2718-78fee2c0de782178.js +1 -0
  105. package/.next/static/chunks/4108.1ef6b5e7679b56ac.js +1 -0
  106. package/.next/static/chunks/7238-11701befb3ca3e41.js +1 -0
  107. package/.next/static/chunks/7951-590bf2004d7935b5.js +1 -0
  108. package/.next/static/chunks/8423-ffded33a21b27360.js +1 -0
  109. package/.next/static/chunks/app/layout-4fbf9f91ad45e221.js +1 -0
  110. package/.next/static/chunks/app/onboarding/{page-21cb4c231aa388b2.js → page-532b193d1c4b0dee.js} +1 -1
  111. package/.next/static/chunks/app/page-e3ec0990b78ce7c7.js +1 -0
  112. package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-11aad9a40def2e0d.js +1 -0
  113. package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-d8757a85e873dfa1.js +1 -0
  114. package/.next/static/chunks/app/roots/[id]/page-76216026efb90ae0.js +1 -0
  115. package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-c4b6e3825f8626f5.js +1 -0
  116. package/.next/static/chunks/app/roots/new/page-53ea8d2787e79425.js +1 -0
  117. package/.next/static/chunks/app/settings/page-7ebaf2b62f256538.js +1 -0
  118. package/.next/static/chunks/app/share/[id]/page-d5bbbb7e454d1375.js +1 -0
  119. package/.next/static/chunks/app/utilities/[scope]/[id]/page-e2f928a37483d113.js +1 -0
  120. package/.next/static/chunks/app/utilities/page-839262ff726a52a2.js +1 -0
  121. package/.next/static/chunks/{webpack-5a9c11af9261dd8a.js → webpack-87b4bb79fdc48563.js} +1 -1
  122. package/.next/trace +46 -46
  123. package/dist/bin/preload.js +12 -4
  124. package/dist/bin/preload.js.map +1 -1
  125. package/dist/lib/reflex/commands/start.js +33 -0
  126. package/dist/lib/reflex/commands/start.js.map +1 -1
  127. package/lib/server/utilities/worker-bootstrap.js +87 -0
  128. package/package.json +2 -1
  129. package/.next/server/app/roots/new.html +0 -1
  130. package/.next/server/app/roots/new.meta +0 -7
  131. package/.next/server/app/roots/new.rsc +0 -21
  132. package/.next/server/app/settings.html +0 -1
  133. package/.next/server/app/settings.meta +0 -7
  134. package/.next/server/app/settings.rsc +0 -22
  135. package/.next/server/chunks/1455.js +0 -1
  136. package/.next/server/chunks/3076.js +0 -1
  137. package/.next/server/chunks/3610.js +0 -1
  138. package/.next/server/chunks/6809.js +0 -3
  139. package/.next/server/chunks/9731.js +0 -4
  140. package/.next/server/chunks/9905.js +0 -1
  141. package/.next/static/chunks/2641-a7e626d59cd967e8.js +0 -1
  142. package/.next/static/chunks/2994-8b82d24eeb6d4a3d.js +0 -1
  143. package/.next/static/chunks/4108.610ef39d7984f25f.js +0 -1
  144. package/.next/static/chunks/6330-d46c4ceb6e522567.js +0 -1
  145. package/.next/static/chunks/9837-49687140bc7ce084.js +0 -1
  146. package/.next/static/chunks/app/layout-e51afdc17d552d1a.js +0 -1
  147. package/.next/static/chunks/app/page-1fa224b4a5160227.js +0 -1
  148. package/.next/static/chunks/app/roots/[id]/chat/[topicId]/page-495551937b420b76.js +0 -1
  149. package/.next/static/chunks/app/roots/[id]/kb/[...slug]/page-1b67558878e2cc43.js +0 -1
  150. package/.next/static/chunks/app/roots/[id]/page-0431ab3465b742f1.js +0 -1
  151. package/.next/static/chunks/app/roots/[id]/workflows/[wfId]/page-62fa8cfbf3c85457.js +0 -1
  152. package/.next/static/chunks/app/roots/new/page-918f809668694de6.js +0 -1
  153. package/.next/static/chunks/app/settings/page-9cf2f101424ec84c.js +0 -1
  154. package/.next/static/chunks/app/share/[id]/page-325593b9c70ca17c.js +0 -1
  155. package/.next/static/chunks/app/utilities/[scope]/[id]/page-fe0e445961d83cc2.js +0 -1
  156. package/.next/static/chunks/app/utilities/page-a1359423e5a9e7de.js +0 -1
  157. /package/.next/static/{6-mOMrzbiPmI97utKVIuW → vTfQfQnAWV_hFVZjWEYvZ}/_buildManifest.js +0 -0
  158. /package/.next/static/{6-mOMrzbiPmI97utKVIuW → vTfQfQnAWV_hFVZjWEYvZ}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[310],{3989:(e,t,s)=>{"use strict";s.d(t,{ChatView:()=>ec});var n=s(4624),r=s(99356),a=s(23506),i=s(1646),o=s(3239),l=s(95265),d=s(8096),c=s(56221),m=s(28310),u=s(19379),x=s(63602),p=s(90437),h=s(63514),g=s(69709),f=s(69205),v=s(49623),b=s(51587),j=s(76479),N=s(53296),w=s(43863),y=s(9923),k=s(94494),A=s(13506);function S(e){let{name:t,input:s,result:a,pending:i}=e,[l,d]=(0,r.useState)(!1),c=function(e){let t=e.toLowerCase();return"read"===t?v.A:"write"===t||"edit"===t?b.A:"bash"===t||"shell"===t?j.A:"glob"===t?N.A:"grep"===t||"search"===t?w.A:"ls"===t?y.A:k.A}(t),m=function(e,t){if(!t||"object"!=typeof t)return"";let s=e.toLowerCase();if(("read"===s||"write"===s||"edit"===s)&&"string"==typeof t.file_path)return t.file_path;if("bash"===s&&"string"==typeof t.command)return t.command.length>80?t.command.slice(0,77)+"…":t.command;if("glob"===s&&"string"==typeof t.pattern)return t.pattern;if("grep"===s){let e=[];return"string"==typeof t.pattern&&e.push(t.pattern),"string"==typeof t.path&&e.push("in ".concat(t.path)),e.join(" ")}return"ls"===s&&"string"==typeof t.path?t.path:""}(t,s);return(0,n.jsxs)("div",{className:(0,A.cn)("rounded-lg border my-2 text-sm overflow-hidden",(null==a?void 0:a.isError)?"border-destructive/40 bg-destructive/5":"bg-muted/30"),children:[(0,n.jsxs)("button",{type:"button",onClick:()=>d(e=>!e),className:"w-full flex items-center gap-2 px-3 py-2 text-left hover:bg-accent/40 transition-colors",children:[l?(0,n.jsx)(g.A,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}):(0,n.jsx)(f.A,{className:"h-3.5 w-3.5 text-muted-foreground shrink-0"}),(0,n.jsx)(c,{className:"h-4 w-4 text-muted-foreground shrink-0"}),(0,n.jsx)("span",{className:"font-mono text-xs font-medium",children:t}),m&&(0,n.jsx)("span",{className:"text-xs text-muted-foreground truncate",children:m}),(0,n.jsx)("span",{className:"ml-auto text-[10px] uppercase tracking-wider text-muted-foreground shrink-0",children:i?(0,n.jsxs)("span",{className:"inline-flex items-center gap-1",children:[(0,n.jsx)(o.A,{className:"h-3 w-3 animate-spin"})," работает"]}):(null==a?void 0:a.isError)?(0,n.jsx)("span",{className:"text-destructive",children:"ошибка"}):a?(0,n.jsx)("span",{children:"готово"}):(0,n.jsx)("span",{children:"—"})})]}),l&&(0,n.jsxs)("div",{className:"px-3 pb-3 space-y-2",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground mb-1",children:"input"}),(0,n.jsx)("pre",{className:"text-[11px] font-mono bg-background/60 rounded p-2 overflow-x-auto whitespace-pre-wrap break-all",children:function(e){try{return JSON.stringify(e,null,2)}catch(t){return String(e)}}(s)})]}),a&&(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground mb-1",children:"output"}),(0,n.jsx)("pre",{className:(0,A.cn)("text-[11px] font-mono rounded p-2 overflow-x-auto whitespace-pre-wrap max-h-64 overflow-y-auto",a.isError?"bg-destructive/10 text-destructive-foreground":"bg-background/60"),children:a.content||"(empty)"})]})]})]})}var I=s(3024),C=s(86295),P=s(13561),T=s(43153),R=s(59145),q=s(35687),z=s(39783),O=s(65714),E=s(85253),$=s(15523),U=s(78825),L=s(66459);function M(e){let{perm:t}=e,[s,a]=(0,r.useTransition)(),i=t.resolved,l=(e,s)=>{a(async()=>{let n=await fetch("/api/agents/".concat(t.agentId,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:"permission",requestId:t.requestId,decision:e,...s?{scope:s}:{},...t.tool?{tool:t.tool}:{}})});if(!n.ok){var r;let e=await n.json().catch(()=>({}));c.oR.error(null!=(r=e.error)?r:"HTTP ".concat(n.status))}})};return(0,n.jsx)("div",{className:(0,A.cn)("rounded-lg border-2 my-2 p-4 reflex-gradient",i&&"opacity-60"),children:(0,n.jsxs)("div",{className:"rounded-md bg-background/95 backdrop-blur p-4",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 mb-2 text-[11px] uppercase tracking-wider text-muted-foreground",children:[(0,n.jsx)(I.A,{className:"h-3.5 w-3.5"}),(0,n.jsx)("span",{children:"Запрос разрешения"}),t.tool&&(0,n.jsx)("span",{className:"font-mono normal-case tracking-normal",children:t.tool}),(0,n.jsx)("span",{className:"ml-auto font-mono normal-case tracking-normal",children:t.requestId})]}),t.description&&(0,n.jsx)("p",{className:"text-sm mb-2",children:t.description}),void 0!==t.input&&(0,n.jsx)("pre",{className:"text-[11px] font-mono bg-muted/40 rounded p-2 overflow-x-auto whitespace-pre-wrap max-h-40 overflow-y-auto mb-3",children:_(t.input)}),i?(0,n.jsx)("div",{className:"flex items-center gap-2 text-sm",children:"allow"===i.decision?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(C.A,{className:"h-4 w-4 text-emerald-600"}),(0,n.jsxs)("span",{children:["Разрешено",i.scope?" (".concat(i.scope,")"):""]})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(P.A,{className:"h-4 w-4 text-destructive"}),(0,n.jsx)("span",{children:"Отклонено"})]})}):(0,n.jsxs)("div",{className:"flex flex-wrap gap-2",children:[(0,n.jsxs)(E.$,{size:"sm",onClick:()=>l("allow","once"),disabled:s,children:[s?(0,n.jsx)(o.A,{className:"mr-2 h-3.5 w-3.5 animate-spin"}):(0,n.jsx)(T.A,{className:"mr-2 h-3.5 w-3.5"}),"Разрешить"]}),(0,n.jsxs)(E.$,{size:"sm",variant:"secondary",onClick:()=>l("allow","always"),disabled:s,children:[(0,n.jsx)(C.A,{className:"mr-2 h-3.5 w-3.5"}),"Разрешать всегда"]}),(0,n.jsxs)(E.$,{size:"sm",variant:"destructive",onClick:()=>l("deny"),disabled:s,children:[(0,n.jsx)(P.A,{className:"mr-2 h-3.5 w-3.5"}),"Отклонить"]})]})]})})}function J(e){var t;let{question:s}=e,[a,i]=(0,r.useState)(""),[l,d]=(0,r.useState)(new Set),[m,u]=(0,r.useTransition)(),x=s.resolved,p=s.options&&s.options.length>0?s.options:(null!=(t=s.choices)?t:[]).map(e=>({label:e})),h=e=>{e.trim()&&u(async()=>{let t=await fetch("/api/agents/".concat(s.agentId,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:"answer",questionId:s.questionId,answer:e.trim()})});if(t.ok)i(""),d(new Set);else{var n;let e=await t.json().catch(()=>({}));c.oR.error(null!=(n=e.error)?n:"HTTP ".concat(t.status))}})};return(0,n.jsx)("div",{className:(0,A.cn)("rounded-lg border-2 my-2 p-4 reflex-gradient",x&&"opacity-60"),children:(0,n.jsxs)("div",{className:"rounded-md bg-background/95 backdrop-blur p-4",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 mb-2 text-[11px] uppercase tracking-wider text-muted-foreground flex-wrap",children:[(0,n.jsx)(R.A,{className:"h-3.5 w-3.5"}),(0,n.jsx)("span",{children:"Вопрос от агента"}),s.header&&(0,n.jsx)("span",{className:"rounded bg-violet-100 dark:bg-violet-950/60 text-violet-900 dark:text-violet-200 px-1.5 py-0.5 text-[10px] uppercase font-mono",children:s.header}),s.multiSelect&&(0,n.jsx)("span",{className:"text-[10px] normal-case tracking-normal italic",children:"можно выбрать несколько"}),(0,n.jsx)("span",{className:"ml-auto font-mono normal-case tracking-normal",children:s.questionId})]}),(0,n.jsx)("p",{className:"text-sm font-medium mb-3",children:s.prompt}),x?(0,n.jsxs)("p",{className:"text-sm text-muted-foreground",children:["Ответ:"," ",(0,n.jsx)("span",{className:"text-foreground",children:function(e){if(!e.startsWith("["))return e;try{let t=JSON.parse(e);if(Array.isArray(t)&&t.every(e=>"string"==typeof e))return t.join(", ")}catch(e){}return e}(x.answer)})]}):(0,n.jsxs)("div",{className:"space-y-2",children:[p.length>0&&(0,n.jsx)("div",{className:"flex flex-col gap-1.5",children:p.map(e=>{let t=l.has(e.label);return s.multiSelect?(0,n.jsxs)("button",{type:"button",onClick:()=>{var t;return t=e.label,void d(e=>{let s=new Set(e);return s.has(t)?s.delete(t):s.add(t),s})},disabled:m,className:(0,A.cn)("flex items-start gap-2 text-left rounded-md border p-2.5 transition",t?"border-violet-500 bg-violet-50 dark:bg-violet-950/30":"border-input hover:bg-accent/40",m&&"opacity-50"),children:[(0,n.jsx)("span",{className:(0,A.cn)("mt-0.5 h-3.5 w-3.5 shrink-0 rounded border flex items-center justify-center",t?"bg-violet-600 border-violet-600 text-white":"border-muted-foreground/40"),children:t&&(0,n.jsx)(T.A,{className:"h-2.5 w-2.5"})}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:e.label}),e.description&&(0,n.jsx)("div",{className:"text-xs text-muted-foreground mt-0.5 leading-snug",children:e.description})]})]},e.label):(0,n.jsx)("button",{type:"button",onClick:()=>h(e.label),disabled:m,className:(0,A.cn)("flex items-start gap-2 text-left rounded-md border p-2.5 transition","border-input hover:bg-accent/60 hover:border-violet-400",m&&"opacity-50"),children:(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:e.label}),e.description&&(0,n.jsx)("div",{className:"text-xs text-muted-foreground mt-0.5 leading-snug",children:e.description})]})},e.label)})}),s.multiSelect&&p.length>0&&(0,n.jsxs)("div",{className:"flex items-center justify-end gap-2 pt-1",children:[(0,n.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:["выбрано: ",l.size]}),(0,n.jsxs)(E.$,{type:"button",size:"sm",onClick:()=>{0!==l.size&&h(JSON.stringify([...l]))},disabled:m||0===l.size,children:[m?(0,n.jsx)(o.A,{className:"mr-2 h-3.5 w-3.5 animate-spin"}):(0,n.jsx)(T.A,{className:"mr-2 h-3.5 w-3.5"}),"Отправить"]})]}),(0,n.jsxs)("form",{className:"flex gap-2",onSubmit:e=>{e.preventDefault(),h(a)},children:[(0,n.jsx)($.p,{value:a,onChange:e=>i(e.target.value),placeholder:"Свой ответ…",disabled:m,className:"h-9 text-sm"}),(0,n.jsxs)(E.$,{type:"submit",size:"sm",disabled:m||!a.trim(),children:[m?(0,n.jsx)(o.A,{className:"mr-2 h-3.5 w-3.5 animate-spin"}):(0,n.jsx)(T.A,{className:"mr-2 h-3.5 w-3.5"}),"Отправить"]})]})]})]})})}function H(e){let{entry:t}=e,[s,a]=(0,r.useTransition)(),[i,l]=(0,r.useState)({}),d=t.resolved,m=e=>{if("approve"===e){var s,n;for(let e of null!=(s=t.secrets)?s:[])if(!e.oauth&&e.required&&!(null==(n=i[e.envKey])?void 0:n.trim()))return void c.oR.error("".concat(e.label||e.envKey," обязателен"))}a(async()=>{let s=await fetch("/api/agents/".concat(t.agentId,"/respond"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({kind:"mcp-add",requestId:t.requestId,decision:e,..."approve"===e?{secretValues:i}:{}})});if(!s.ok){var n;let e=await s.json().catch(()=>({}));c.oR.error(null!=(n=e.error)?n:"HTTP ".concat(s.status))}})};return(0,n.jsx)("div",{className:(0,A.cn)("rounded-lg border-2 my-2 p-4 reflex-gradient",d&&"opacity-60"),children:(0,n.jsxs)("div",{className:"rounded-md bg-background/95 backdrop-blur p-4",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 mb-2 text-[11px] uppercase tracking-wider text-muted-foreground",children:[(0,n.jsx)(q.A,{className:"h-3.5 w-3.5"}),(0,n.jsx)("span",{children:"Регистрация MCP-сервера"}),(0,n.jsx)("span",{className:"font-mono normal-case tracking-normal",children:t.server}),(0,n.jsx)("span",{className:"ml-auto font-mono normal-case tracking-normal",children:t.requestId})]}),(0,n.jsx)("div",{className:"text-sm font-medium",children:t.label}),t.description&&(0,n.jsx)("p",{className:"text-xs text-muted-foreground mt-1",children:t.description}),(0,n.jsx)("pre",{className:"text-[11px] font-mono bg-muted/40 rounded p-2 overflow-x-auto whitespace-pre-wrap max-h-40 overflow-y-auto my-3",children:_(t.config)}),t.secrets&&t.secrets.length>0&&!d&&(0,n.jsxs)("div",{className:"space-y-2 mb-3",children:[(0,n.jsx)("div",{className:"text-[11px] uppercase tracking-wider text-muted-foreground",children:"Заполни секреты"}),t.secrets.map(e=>{var t;return e.oauth?(0,n.jsx)(K,{slot:e},e.envKey):(0,n.jsxs)("div",{className:"space-y-1",children:[(0,n.jsxs)("label",{className:"text-xs flex items-center gap-2",children:[(0,n.jsx)("span",{className:"font-mono",children:e.envKey}),(0,n.jsx)("span",{className:"text-muted-foreground",children:e.label}),e.required&&(0,n.jsx)("span",{className:"text-destructive text-[10px]",children:"*"})]}),e.description&&(0,n.jsx)("p",{className:"text-[11px] text-muted-foreground",children:e.description}),(0,n.jsx)($.p,{type:"password",value:null!=(t=i[e.envKey])?t:"",onChange:t=>l(s=>({...s,[e.envKey]:t.target.value})),placeholder:e.required?"обязательно":"опционально",className:"font-mono text-xs h-8"})]},e.envKey)})]}),d?(0,n.jsx)("div",{className:"flex items-center gap-2 text-sm",children:"approve"===d.decision?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(T.A,{className:"h-4 w-4 text-emerald-600"}),(0,n.jsx)("span",{children:"Зарегистрирован"})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(P.A,{className:"h-4 w-4 text-destructive"}),(0,n.jsx)("span",{children:"Отклонено"})]})}):(0,n.jsxs)("div",{className:"flex gap-2 flex-wrap",children:[(0,n.jsxs)(E.$,{type:"button",variant:"default",size:"sm",onClick:()=>m("approve"),disabled:s,children:[s&&(0,n.jsx)(o.A,{className:"mr-1 h-3.5 w-3.5 animate-spin"}),(0,n.jsx)(T.A,{className:"h-3.5 w-3.5 mr-1"})," Зарегистрировать"]}),(0,n.jsxs)(E.$,{type:"button",variant:"outline",size:"sm",onClick:()=>m("reject"),disabled:s,children:[(0,n.jsx)(P.A,{className:"h-3.5 w-3.5 mr-1"})," Отклонить"]})]})]})})}function K(e){let{slot:t}=e,[a,i]=(0,r.useState)(null),[l,d]=(0,r.useState)(null),[m,u]=(0,r.useState)(""),[x,p]=(0,r.useState)(""),[h,f]=(0,r.useState)(!1),[v,b]=(0,r.useState)(!1),[j,N]=(0,r.useTransition)(),[w,y]=(0,r.useTransition)(),k=async()=>{if(!t.oauth)return;let{listOAuthStatusesAction:e,getOAuthClientAction:n}=await s.e(4108).then(s.bind(s,94108)),[r,a]=await Promise.all([e(),n(t.oauth)]);if(r.ok){let e=r.statuses.find(e=>e.id===t.oauth);e&&i({hasClient:e.hasClient,hasTokens:e.hasTokens})}if(a.ok){var o;d({setupHint:a.setupHint,consoleUrl:a.consoleUrl,needsClientSecret:a.needsClientSecret,setupSteps:null!=(o=a.setupSteps)?o:[]}),a.client?(u(a.client.clientId),f(a.client.hasSecret)):(u(""),f(!1))}};(0,r.useEffect)(()=>{k()},[t.oauth]);let A=!(null==a?void 0:a.hasClient);return(0,n.jsxs)("div",{className:"space-y-2 rounded border border-violet-200 bg-violet-50/30 p-2",children:[(0,n.jsxs)("label",{className:"text-xs flex items-center gap-2",children:[(0,n.jsx)("span",{className:"font-mono",children:t.envKey}),(0,n.jsx)("span",{className:"text-muted-foreground",children:t.label}),(0,n.jsxs)("span",{className:"text-[10px] uppercase tracking-wider text-violet-700 ml-auto",children:["OAuth \xb7 ",t.oauth]})]}),t.description&&(0,n.jsx)("p",{className:"text-[11px] text-muted-foreground",children:t.description}),(0,n.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(null==a?void 0:a.hasTokens)?(0,n.jsxs)("span",{className:"text-xs text-emerald-700 flex items-center gap-1",children:[(0,n.jsx)(T.A,{className:"h-3 w-3"})," Авторизован"]}):(null==a?void 0:a.hasClient)?(0,n.jsxs)(E.$,{type:"button",size:"sm",variant:"outline",onClick:()=>{t.oauth&&N(async()=>{let{beginOAuthAction:e,listOAuthStatusesAction:n}=await s.e(4108).then(s.bind(s,94108)),r=await e(t.oauth);if(!r.ok)return void c.oR.error(r.error);window.open(r.authorizeUrl,"reflex-oauth","width=600,height=720,noopener=no");let a=Date.now(),o=async()=>{if(Date.now()-a>3e5)return void c.oR.error("Authorization timed out");let e=await n();if(e.ok){let s=e.statuses.find(e=>e.id===t.oauth);if(null==s?void 0:s.hasTokens){c.oR.success("".concat(t.oauth," authorized")),i({hasClient:s.hasClient,hasTokens:s.hasTokens});return}}setTimeout(()=>void o(),1500)};o()})},disabled:j,className:"h-7 text-xs",children:[j&&(0,n.jsx)(o.A,{className:"mr-1 h-3 w-3 animate-spin"}),"Authorize via ",t.oauth]}):(0,n.jsx)("span",{className:"text-xs text-amber-700",children:"client_id не настроен — заполни ниже"}),!A&&(0,n.jsxs)(E.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>b(e=>!e),className:"h-7 text-xs text-muted-foreground gap-1",children:[(0,n.jsx)(g.A,{className:"h-3 w-3 transition-transform ".concat(v?"rotate-180":"")}),v?"Скрыть client":"Изменить client"]}),(0,n.jsx)(E.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>void k(),className:"h-7 text-xs text-muted-foreground ml-auto",children:"Обновить"})]}),(v||A)&&l&&(0,n.jsxs)("div",{className:"space-y-2 border-t border-violet-200 pt-2 mt-2",children:[l.setupHint&&(0,n.jsx)("div",{className:"rounded border border-amber-200 bg-amber-50 px-2 py-1.5 text-[10px] text-amber-900 leading-snug",children:l.setupHint}),(0,n.jsxs)("a",{href:l.consoleUrl,target:"_blank",rel:"noopener noreferrer",className:"text-[11px] text-violet-700 hover:underline inline-flex items-center gap-1",children:[(0,n.jsx)(z.A,{className:"h-3 w-3"}),"Открыть консоль провайдера"]}),l.setupSteps.length>0&&(0,n.jsxs)("div",{className:"rounded border border-violet-200 bg-white/60 p-2",children:[(0,n.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground mb-1.5",children:"Пошагово"}),(0,n.jsx)(L.O,{steps:l.setupSteps})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)(U.J,{className:"text-[10px]",children:"Client ID"}),(0,n.jsx)($.p,{value:m,onChange:e=>u(e.target.value),placeholder:"123…apps.googleusercontent.com",className:"font-mono text-xs h-7"})]}),l.needsClientSecret&&(0,n.jsxs)("div",{children:[(0,n.jsxs)(U.J,{className:"text-[10px]",children:["Client secret"," ",h&&(0,n.jsx)("span",{className:"text-muted-foreground",children:"(сохранён, пусто — не менять)"})]}),(0,n.jsx)($.p,{type:"password",value:x,onChange:e=>p(e.target.value),placeholder:h?"••••":"GOCSPX-…",className:"font-mono text-xs h-7"})]}),(0,n.jsx)("div",{className:"flex justify-end",children:(0,n.jsxs)(E.$,{type:"button",size:"sm",onClick:()=>{if(t.oauth){if(!m.trim())return void c.oR.error("client_id обязателен");y(async()=>{let{saveOAuthClientAction:e}=await s.e(4108).then(s.bind(s,94108)),n=await e({provider:t.oauth,clientId:m.trim(),...x?{clientSecret:x}:{}});if(!n.ok)return void c.oR.error(n.error);c.oR.success("Client сохранён"),p(""),await k()})}},disabled:w||!m.trim(),className:"h-7 text-xs",children:[w?(0,n.jsx)(o.A,{className:"mr-1 h-3 w-3 animate-spin"}):(0,n.jsx)(O.A,{className:"mr-1 h-3 w-3"}),"Сохранить client"]})})]})]})}function _(e){try{return JSON.stringify(e,null,2)}catch(t){return String(e)}}var F=s(54400),D=s.n(F),W=s(7293),G=s(86515),Z=s(16329),B=s(40805),V=s(8583),X=s(35994);function Y(e){let{rootId:t,entry:s}=e,r=function(e){let t=e.toLowerCase();return"task"===t||"tasks"===t?G.A:"meeting"===t||"meetings"===t?Z.A:"product"===t||"products"===t?B.A:"fact"===t||"facts"===t?V.A:X.A}(s.kind),a="/roots/".concat(t,"?file=").concat(encodeURIComponent(s.relPath));return(0,n.jsx)(D(),{href:a,className:"my-2 block rounded-lg border-2 p-[2px] reflex-gradient hover:shadow-md transition-shadow",children:(0,n.jsxs)("div",{className:"rounded-md bg-background/95 backdrop-blur p-3 flex items-center gap-3",children:[(0,n.jsx)("div",{className:"reflex-gradient h-9 w-9 rounded-md flex items-center justify-center text-white shrink-0",children:(0,n.jsx)(r,{className:"h-4 w-4"})}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsxs)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground flex items-center gap-1",children:[(0,n.jsx)(d.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:"Записано в базу знаний"}),(0,n.jsx)("span",{className:"font-mono normal-case tracking-normal",children:s.kind})]}),(0,n.jsx)("div",{className:"text-sm font-medium truncate",children:s.title}),(0,n.jsx)("div",{className:"text-[11px] font-mono text-muted-foreground truncate",children:s.relPath})]}),(0,n.jsx)(W.A,{className:"h-4 w-4 text-muted-foreground shrink-0"})]})})}var Q=s(39624);function ee(e){let{utility:t,rootId:s}=e,r="project"===t.scope&&s?"?rootId=".concat(encodeURIComponent(s)):"",a="/utilities/".concat(t.scope,"/").concat(t.id).concat(r);return(0,n.jsx)(D(),{href:a,className:"my-2 block rounded-lg border-2 p-[2px] reflex-gradient hover:shadow-md transition-shadow",children:(0,n.jsxs)("div",{className:"rounded-md bg-background/95 backdrop-blur p-3 flex items-center gap-3",children:[(0,n.jsx)("div",{className:"reflex-gradient h-9 w-9 rounded-md flex items-center justify-center text-white shrink-0",children:(0,n.jsx)(Q.A,{className:"h-4 w-4"})}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsxs)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground flex items-center gap-1",children:[(0,n.jsx)(d.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:"Утилита установлена"}),(0,n.jsx)("span",{className:"font-mono normal-case tracking-normal",children:t.scope})]}),(0,n.jsx)("div",{className:"text-sm font-medium truncate",children:t.name}),(0,n.jsxs)("div",{className:"text-[11px] font-mono text-muted-foreground truncate",children:[t.id," \xb7 v",t.version]})]})]})})}var et=s(94870),es=s(56380),en=s(76974),er=s(48340),ea=s(56738);function ei(e){let{rootId:t,widget:s}=e,[a,i]=(0,r.useState)(!1),[o,l]=(0,r.useTransition)();return(0,n.jsxs)("div",{className:"my-3 rounded-lg border border-violet-200 bg-violet-50/40 dark:border-violet-900/40 dark:bg-violet-950/20 overflow-hidden",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-violet-200 dark:border-violet-900/40 bg-violet-100/40 dark:bg-violet-900/20 text-xs",children:[(0,n.jsx)(d.A,{className:"h-3 w-3 text-violet-600"}),(0,n.jsx)("span",{className:"font-medium text-violet-900 dark:text-violet-200",children:"create"===s.op?"Виджет создан":"Виджет обновлён"}),(0,n.jsx)(m.E,{variant:"outline",className:"text-[10px] font-mono",children:s.widgetKind}),(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground font-mono ml-1",children:s.widgetId}),a?(0,n.jsxs)("span",{className:"ml-auto inline-flex items-center gap-1 text-[10px] text-emerald-700",children:[(0,n.jsx)(T.A,{className:"h-3 w-3"}),"На дашборде"]}):(0,n.jsxs)("button",{type:"button",onClick:()=>{l(async()=>{let e=await (0,ea.t)(t,s.widgetId);e.ok?(i(!0),c.oR.success("Закреплено на дашборде")):c.oR.error(e.error)})},disabled:o,className:"ml-auto inline-flex items-center gap-1 text-[10px] text-violet-700 hover:underline disabled:opacity-50",title:"Закрепить виджет на дашборде",children:[(0,n.jsx)(et.A,{className:"h-3 w-3"}),o?"...":"Закрепить на дашборде"]}),(0,n.jsx)(D(),{href:"/roots/".concat(t),className:"inline-flex items-center gap-1 text-[10px] text-muted-foreground hover:text-violet-700",title:"Открыть дашборд",children:(0,n.jsx)(es.A,{className:"h-3 w-3"})})]}),(0,n.jsxs)("div",{className:"p-3 space-y-2 bg-card",children:[(0,n.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("h4",{className:"text-sm font-medium",children:s.title}),s.description&&(0,n.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:s.description})]}),(0,n.jsxs)("span",{className:"text-[10px] text-muted-foreground inline-flex items-center gap-0.5",title:"Чтобы обновить — пиши тут же в чате",children:[(0,n.jsx)(en.A,{className:"h-2.5 w-2.5"}),"редактируй через чат"]})]}),(0,n.jsx)("div",{className:"pt-1",children:(0,er.v)(t,s.widgetKind,s.data,{readonly:!0})})]})]})}var eo=s(27474),el=s(54207);function ed(e){let{rootId:t,workflow:s}=e;return(0,n.jsxs)("div",{className:"my-3 rounded-lg border border-violet-200 bg-violet-50/40 dark:border-violet-900/40 dark:bg-violet-950/20 overflow-hidden",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 px-3 py-1.5 border-b border-violet-200 dark:border-violet-900/40 bg-violet-100/40 dark:bg-violet-900/20 text-xs",children:[(0,n.jsx)(d.A,{className:"h-3 w-3 text-violet-600"}),(0,n.jsx)("span",{className:"font-medium text-violet-900 dark:text-violet-200",children:"Workflow создан"}),(0,n.jsx)(m.E,{variant:"outline",className:"text-[10px] font-mono",children:s.trigger}),(0,n.jsx)("span",{className:"text-[10px] text-muted-foreground font-mono ml-1",children:s.workflowId})]}),(0,n.jsxs)("div",{className:"p-3 space-y-2 bg-card",children:[(0,n.jsxs)("div",{className:"flex items-start gap-2",children:[(0,n.jsx)(eo.A,{className:"h-4 w-4 text-violet-600 mt-0.5 shrink-0"}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsx)("h4",{className:"text-sm font-medium",children:s.label}),s.description&&(0,n.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:s.description}),(0,n.jsxs)("p",{className:"text-[10px] text-muted-foreground mt-1",children:[s.stepCount," шагов \xb7 триггер"," ",(0,n.jsx)("code",{className:"font-mono",children:s.trigger})]})]})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 pt-1 text-xs",children:[(0,n.jsxs)(D(),{href:"/roots/".concat(t,"/workflows/").concat(s.workflowId),className:"inline-flex items-center gap-1 rounded px-2 py-1 bg-violet-600 text-white hover:bg-violet-700",children:[(0,n.jsx)(el.A,{className:"h-3 w-3"}),"Открыть в редакторе"]}),(0,n.jsxs)("span",{className:"text-[10px] text-muted-foreground inline-flex items-center gap-1",children:[(0,n.jsx)(en.A,{className:"h-2.5 w-2.5"}),"редактируй здесь же через чат"]})]})]})]})}function ec(e){let{rootId:t,topicId:s,initialEvents:d,initialActive:u}=e,[g,f]=(0,r.useState)(d),[v,b]=(0,r.useState)(u),[j,N]=(0,r.useState)(!1),w=(0,r.useRef)(d.length>0?d[d.length-1].seq:-1),y=(0,r.useRef)(null),k=(0,r.useMemo)(()=>(function(e){let t=[],s=new Map,n=null,r=null,a=e=>{var a;let i=s.get(e),o={kind:"assistant",agentId:e,agentLabel:null!=(a=null==i?void 0:i.label)?a:"assistant",...(null==i?void 0:i.model)?{agentModel:i.model}:{},...(null==i?void 0:i.role)?{agentRole:i.role}:{},segments:[],pending:!0};return t.push(o),n=o,r=null,o},i=(e,t)=>{let s=n;s&&(s.pending=!1,"failed"===e&&t&&(s.error=t),n=null,r=null)};for(let l of e){if("agent-start"===l.type){s.set(l.agentId,l.meta);continue}if("turn-start"===l.type){a(l.agentId);continue}if("turn-end"===l.type||"agent-end"===l.type){i(l.status,l.error);continue}if("user-message"===l.type){t.push({kind:"user",body:l.text});continue}if("system"===l.type){l.subtype&&l.subtype.startsWith("reflex.")&&t.push({kind:"system",body:l.text,systemSubtype:l.subtype});continue}if("assistant-delta"===l.type){let e=n;if(e||(e=a(l.agentId)),!e)continue;let t=e.segments;if(r&&"text"===r.kind)r.text+=l.text;else{let e={kind:"text",text:l.text};t.push(e),r=e}continue}if("tool-use"===l.type){let e=n;if(e||(e=a(l.agentId)),!e)continue;let t=e.segments,s={kind:"tool",tool:{toolUseId:l.toolUseId,name:l.name,input:l.input}};t.push(s),r=s;continue}if("tool-result"===l.type){var o;let e=n;if(!e)continue;let t=null!=(o=e.segments)?o:[];for(let e=t.length-1;e>=0;e--){let s=t[e];if("tool"===s.kind&&s.tool.toolUseId===l.toolUseId){s.tool.result={content:l.content,...l.isError?{isError:!0}:{}};break}}continue}if("error"===l.type){let e=n;e&&(e.error=l.message);continue}if("permission-request"===l.type){let e=null!=n?n:a(l.agentId);if(!e)continue;e.segments.push({kind:"permission",perm:{requestId:l.requestId,agentId:l.agentId,...l.tool?{tool:l.tool}:{},...l.action?{action:l.action}:{},...void 0!==l.input?{input:l.input}:{},...l.description?{description:l.description}:{}}}),r=e.segments[e.segments.length-1];continue}if("permission-response"===l.type){for(let e of t)if("assistant"===e.kind&&e.segments)for(let t of e.segments)"permission"===t.kind&&t.perm.requestId===l.requestId&&(t.perm.resolved={decision:l.decision,...l.scope?{scope:l.scope}:{}});continue}if("question"===l.type){let e=null!=n?n:a(l.agentId);if(!e)continue;e.segments.push({kind:"question",question:{questionId:l.questionId,agentId:l.agentId,prompt:l.prompt,...l.header?{header:l.header}:{},...l.multiSelect?{multiSelect:!0}:{},...l.choices?{choices:l.choices}:{},...l.options?{options:l.options}:{}}}),r=e.segments[e.segments.length-1];continue}if("answer"===l.type){for(let e of t)if("assistant"===e.kind&&e.segments)for(let t of e.segments)"question"===t.kind&&t.question.questionId===l.questionId&&(t.question.resolved={answer:l.answer});continue}if("mcp-add-request"===l.type){let e=null!=n?n:a(l.agentId);if(!e)continue;e.segments.push({kind:"mcp-add",entry:{requestId:l.requestId,agentId:l.agentId,server:l.server,label:l.label,...l.description?{description:l.description}:{},config:l.config,...l.secrets?{secrets:l.secrets}:{}}}),r=e.segments[e.segments.length-1];continue}if("mcp-add-response"===l.type){for(let e of t)if("assistant"===e.kind&&e.segments)for(let t of e.segments)"mcp-add"===t.kind&&t.entry.requestId===l.requestId&&(t.entry.resolved={decision:l.decision});continue}if("kb-write"===l.type){let e=null!=n?n:a(l.agentId);if(!e)continue;e.segments.push({kind:"kb",kb:{kind:l.kind,title:l.title,relPath:l.relPath}}),r=e.segments[e.segments.length-1];continue}if("utility-installed"===l.type){let e=null!=n?n:a(l.agentId);if(!e)continue;e.segments.push({kind:"utility",utility:{id:l.utilityId,name:l.name,scope:l.scope,version:l.version}}),r=e.segments[e.segments.length-1];continue}if("utility-error"===l.type){let e=null!=n?n:a(l.agentId);e&&(e.error=l.message);continue}if("widget-event"===l.type){let e=null!=n?n:a(l.agentId);if(!e)continue;e.segments.push({kind:"widget",widget:{op:l.op,widgetId:l.widgetId,title:l.title,...l.description?{description:l.description}:{},widgetKind:l.kind,data:l.data,...l.sourceTopicId?{sourceTopicId:l.sourceTopicId}:{}}}),r=e.segments[e.segments.length-1];continue}if("widget-error"===l.type){let e=null!=n?n:a(l.agentId);e&&(e.error=l.message);continue}if("workflow-event"===l.type){let e=null!=n?n:a(l.agentId);if(!e)continue;e.segments.push({kind:"workflow",workflow:{workflowId:l.workflowId,label:l.label,...l.description?{description:l.description}:{},trigger:l.trigger,stepCount:l.stepCount}}),r=e.segments[e.segments.length-1];continue}if("workflow-error"===l.type){let e=null!=n?n:a(l.agentId);e&&(e.error=l.message);continue}}return t})(g),[g]),A=(0,r.useCallback)(()=>{let e=y.current;e&&(e.scrollTop=e.scrollHeight)},[]);(0,r.useEffect)(()=>{A()},[k,A]),(0,r.useEffect)(()=>{let e=new AbortController,n="/api/roots/".concat(t,"/chat/").concat(s,"/stream?since=").concat(w.current),r=!1;return(async()=>{try{let a=await fetch(n,{signal:e.signal});if(!a.ok||!a.body)return void N(!1);N(!0);let i=a.body.getReader(),o=new TextDecoder,l="";for(;!r;){let{done:e,value:n}=await i.read();if(e)break;for(let e of(l+=o.decode(n,{stream:!0}),function(e){let t=[];for(;;){let s=e.indexOf("\n\n");if(s<0)break;let n=e.slice(0,s);e=e.slice(s+2);let r="message",a="";for(let e of n.split(/\r?\n/))!e.startsWith(":")&&(e.startsWith("event:")?r=e.slice(6).trim():e.startsWith("data:")&&(a+=e.slice(5).trimStart()));let i=null;try{i=a?JSON.parse(a):null}catch(e){i=null}t.push({event:r,data:i,rest:e})}return t}(l)))if(l=e.rest,"event"===e.event&&e.data){let t=e.data;S(t)}else if("error"===e.event){var t,s;c.oR.error(String(null!=(s=null==(t=e.data)?void 0:t.message)?s:"stream"))}}}catch(e){r||N(!1)}finally{N(!1)}})(),()=>{r=!0,e.abort()}},[s,t]);let S=(0,r.useCallback)(e=>{e.seq<=w.current||(w.current=e.seq,f(t=>[...t,e]),"turn-start"===e.type?b(!0):"agent-start"===e.type&&"orchestrator"===e.meta.role&&b(!0),("turn-end"===e.type||"agent-end"===e.type)&&(b(!1),(0,h.$d)(h.Zi.topicsChanged(t))),"kb-write"===e.type&&(0,h.$d)(h.Zi.kbChanged(t)))},[t]),I=(0,r.useCallback)(async()=>{try{let n=await fetch("/api/roots/".concat(t,"/chat/").concat(s,"/stop"),{method:"POST"});if(!n.ok){var e;let t=await n.json().catch(()=>({}));c.oR.error(null!=(e=t.error)?e:"HTTP ".concat(n.status));return}b(!1)}catch(e){c.oR.error(e instanceof Error?e.message:String(e))}},[t,s]),C=(0,r.useCallback)(async(e,n)=>{let r=e.trim();if(!r&&0===n.length)return!1;try{let e=await fetch("/api/roots/".concat(t,"/chat/").concat(s,"/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:r,attachments:n})});if(409===e.status)return c.oR.error("Дождись окончания текущего ответа"),!1;if(!e.ok){var a;let t=await e.json().catch(()=>({}));return c.oR.error(null!=(a=t.error)?a:"HTTP ".concat(e.status)),!1}return!0}catch(e){return c.oR.error(e instanceof Error?e.message:String(e)),!1}},[t,s]);return(0,n.jsxs)("div",{className:"flex-1 flex flex-col min-h-0",children:[(0,n.jsxs)("div",{className:"border-b px-6 py-2 flex items-center gap-3 text-xs",children:[(0,n.jsx)("span",{className:"text-muted-foreground inline-flex items-center gap-1",children:j?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.A,{className:"h-3 w-3 text-emerald-600"})," подключён к стриму"]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{className:"h-3 w-3 text-muted-foreground"})," офлайн"]})}),v&&(0,n.jsxs)(m.E,{variant:"default",className:"gap-1 bg-emerald-600",children:[(0,n.jsx)(o.A,{className:"h-3 w-3 animate-spin"})," агент работает"]}),(0,n.jsxs)("span",{className:"ml-auto text-[10px] text-muted-foreground font-mono",children:["seq: ",w.current]})]}),(0,n.jsx)("div",{ref:y,className:"flex-1 overflow-y-auto",children:(0,n.jsx)("div",{className:"mx-auto max-w-3xl px-6 py-6 space-y-4",children:0===k.length?(0,n.jsx)("p",{className:"text-sm text-muted-foreground italic",children:"Пока пусто."}):k.map((e,r)=>(0,n.jsx)(em,{turn:e,rootId:t,topicId:s},r))})}),(0,n.jsx)(x.E,{label:"Ответ в этом топике",children:(0,n.jsx)(p.L,{rootId:t,topicId:s,placeholder:"Напиши сообщение в этот топик…",submitLabel:"Отправить",pendingLabel:"Стрим",SubmitIcon:l.A,active:v,onStop:I,onSubmit:e=>{let{message:t,attachments:s}=e;return C(t,s)}})})]})}function em(e){var t,s,r,a;let{turn:i,rootId:l,topicId:m}=e,x=(e,t)=>{let s="Контекст — выжимка YouTube-видео (".concat(t,"), сделанная Gemini:\n\n").concat(e,"\n\nИспользуй её для следующего шага.");fetch("/api/roots/".concat(l,"/chat/").concat(m,"/send"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:s,attachments:[]})}).then(async e=>{if(!e.ok){var t;let s=await e.json().catch(()=>({}));c.oR.error(null!=(t=s.error)?t:"HTTP ".concat(e.status));return}c.oR.success("Выжимка отправлена в чат")}).catch(e=>{c.oR.error(e instanceof Error?e.message:String(e))})};if("system"===i.kind)return(0,n.jsx)(ex,{body:null!=(s=i.body)?s:"",subtype:i.systemSubtype});if("user"===i.kind){let e=null!=(r=i.body)?r:"",t=function(e){let t=e.trimStart(),s=/^\[MCP setup wizard\]\s*([^\n]*)/.exec(t);if(s)return{badge:"MCP setup",summary:s[1].trim()||"Установка MCP-сервера",details:e};let n=/^\[Reflex\]\s+Answer for question\s+\S+:\s+([\s\S]*?)(?:\s*\.?\s*Continue\.\s*)?$/.exec(t);if(n)return{badge:"Ответ",summary:n[1].trim(),details:e};let r=/^\[Reflex\]\s+(Allowed|Denied|User (allowed|denied))[\s\S]*?:\s*([\s\S]*?)(?:\s*\.?\s*Continue\.\s*)?$/.exec(t);if(r){var a,i;return{badge:"Permission",summary:(null!=(i=null!=(a=r[3])?a:r[1])?i:"").trim()||"Решение пользователя",details:e}}if(/^\[Reflex\]\s+(MCP server|User rejected|Failed to register)[\s\S]*?$/.exec(t))return{badge:"MCP",summary:t.split("\n",1)[0].replace(/^\[Reflex\]\s+/,"").slice(0,200),details:e};if(/^\[Reflex \/goal\]\s+([\s\S]*)/.exec(t))return{badge:"/goal",summary:"Auto-continue (goal mode)",details:e};let o=/^\[Reflex[^\]]*\]\s*([\s\S]*)/.exec(t);return o?{badge:"system",summary:o[1].split("\n",1)[0].trim().slice(0,200)||"Системное сообщение",details:e}:null}(e);return t?(0,n.jsx)(ep,{system:t}):(0,n.jsxs)("div",{className:"rounded-lg border bg-muted/40 p-4",children:[(0,n.jsx)("div",{className:"text-[11px] uppercase tracking-wide text-muted-foreground mb-2",children:"user"}),(0,n.jsx)(u.p,{source:e,onSendToChat:x})]})}let p="subagent"===i.agentRole;return(0,n.jsx)(eu,{isSubAgent:p,turn:i,children:(0,n.jsxs)("div",{className:p?"rounded-md border border-dashed bg-muted/30 px-3 py-2":"rounded-lg border bg-background p-4",children:[(0,n.jsxs)("div",{className:"text-[11px] uppercase tracking-wide text-muted-foreground mb-2 flex items-center gap-2",children:[(0,n.jsx)(d.A,{className:"h-3 w-3"}),(0,n.jsx)("span",{children:null!=(a=i.agentLabel)?a:"assistant"}),p&&(0,n.jsx)("span",{className:"text-[10px] normal-case px-1.5 py-0.5 rounded bg-violet-100 text-violet-800 tracking-normal",children:"sub-agent"}),i.agentModel&&(0,n.jsx)("span",{className:"font-mono text-[10px] normal-case tracking-normal",children:i.agentModel}),i.pending&&(0,n.jsx)(o.A,{className:"h-3 w-3 animate-spin"}),i.error&&(0,n.jsxs)("span",{className:"text-destructive text-xs normal-case",children:["ошибка: ",i.error]})]}),null==(t=i.segments)?void 0:t.map((e,t)=>{if("text"===e.kind){let s=function(e){let t=e;for(let e of["permission","question","kb","utility","dispatch","mcp-add","youtube-summary","widget-create","widget-update","workflow-create","image-gen"]){let s=RegExp("<{1,2}reflex:".concat(e,">{1,2}[\\s\\S]*?<{1,2}\\/reflex:").concat(e,">{1,2}"),"g");t=t.replace(s,"")}return t}(e.text);return s.trim()?(0,n.jsx)(u.p,{source:s,onSendToChat:x},t):null}return"tool"===e.kind?(0,n.jsx)(S,{name:e.tool.name,input:e.tool.input,...e.tool.result?{result:e.tool.result}:{},pending:!e.tool.result},t):"permission"===e.kind?(0,n.jsx)(M,{perm:e.perm},t):"question"===e.kind?(0,n.jsx)(J,{question:e.question},t):"kb"===e.kind?(0,n.jsx)(Y,{rootId:l,entry:e.kb},t):"mcp-add"===e.kind?(0,n.jsx)(H,{entry:e.entry},t):"utility"===e.kind?(0,n.jsx)(ee,{utility:e.utility,rootId:l},t):"widget"===e.kind?(0,n.jsx)(ei,{rootId:l,widget:e.widget},t):"workflow"===e.kind?(0,n.jsx)(ed,{rootId:l,workflow:e.workflow},t):null}),i.pending&&(!i.segments||0===i.segments.length)&&(0,n.jsx)("p",{className:"text-sm text-muted-foreground",children:"thinking…"})]})})}function eu(e){var t;let{isSubAgent:s,turn:r,children:a}=e;if(!s)return(0,n.jsx)(n.Fragment,{children:a});let i=[null!=(t=r.agentLabel)?t:"sub-agent",r.pending?"работает…":r.error?"ошибка":"готово"].join(" \xb7 ");return(0,n.jsxs)("details",{className:"group",open:r.pending,children:[(0,n.jsxs)("summary",{className:"cursor-pointer list-none flex items-center gap-2 text-xs text-muted-foreground border-l-2 border-violet-300 pl-2 py-1 hover:text-foreground select-none",children:[(0,n.jsx)("span",{className:"inline-block h-3 w-3 text-center transition-transform group-open:rotate-90",children:"▸"}),(0,n.jsx)(d.A,{className:"h-3 w-3 text-violet-500"}),(0,n.jsx)("span",{children:i}),r.pending&&(0,n.jsx)(o.A,{className:"h-3 w-3 animate-spin"})]}),(0,n.jsx)("div",{className:"mt-1 pl-4",children:a})]})}function ex(e){let{body:t,subtype:s}=e;return(0,n.jsxs)("div",{className:["rounded-md border px-3 py-2 text-xs flex items-start gap-2","reflex.preflight"===s?"border-violet-200 bg-violet-50/60 text-violet-900":"border-dashed bg-muted/30 text-muted-foreground"].join(" "),children:[(0,n.jsx)(d.A,{className:"h-3.5 w-3.5 mt-0.5 shrink-0 text-violet-600"}),(0,n.jsx)("div",{className:"whitespace-pre-wrap leading-relaxed flex-1 min-w-0",children:t})]})}function ep(e){let{system:t}=e;return(0,n.jsxs)("details",{className:"group rounded-md border border-dashed bg-muted/20 px-3 py-1.5 text-xs",children:[(0,n.jsxs)("summary",{className:"cursor-pointer list-none flex items-center gap-2 select-none",children:[(0,n.jsx)("span",{className:"inline-block h-3 w-3 text-center text-muted-foreground transition-transform group-open:rotate-90",children:"▸"}),(0,n.jsx)("span",{className:"rounded bg-muted-foreground/10 text-[10px] uppercase tracking-wider text-muted-foreground px-1.5 py-0.5 font-mono",children:t.badge}),(0,n.jsx)("span",{className:"truncate text-foreground/80",children:t.summary})]}),(0,n.jsx)("pre",{className:"mt-2 pl-5 text-[11px] whitespace-pre-wrap font-mono text-muted-foreground/90",children:t.details})]})}},16225:(e,t,s)=>{"use strict";s.d(t,{DeleteTopicButton:()=>u});var n=s(4624),r=s(99356),a=s(69285),i=s(3239),o=s(46972),l=s(56221),d=s(85253),c=s(58224),m=s(63514);function u(e){let{rootId:t,topicId:s,topicTitle:u}=e,[x,p]=(0,r.useTransition)(),h=(0,a.useRouter)();return(0,n.jsxs)(d.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>{confirm("Удалить топик \xab".concat(u,"\xbb? Это действие необратимо — диалог и все его события будут удалены."))&&p(async()=>{let e=await (0,c.L)(t,s);if(!e.ok){var n;l.oR.error(null!=(n=e.error)?n:"Не удалось удалить");return}l.oR.success("Топик удалён"),(0,m.$d)(m.Zi.topicsChanged(t)),h.push("/roots/".concat(t))})},disabled:x,className:"gap-1 h-8 text-muted-foreground hover:text-destructive",title:"Удалить топик",children:[x?(0,n.jsx)(i.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,n.jsx)(o.A,{className:"h-3.5 w-3.5"}),(0,n.jsx)("span",{className:"text-xs",children:"Удалить"})]})}},25342:(e,t,s)=>{Promise.resolve().then(s.bind(s,3989)),Promise.resolve().then(s.bind(s,16225)),Promise.resolve().then(s.bind(s,38659)),Promise.resolve().then(s.bind(s,91074)),Promise.resolve().then(s.bind(s,96253)),Promise.resolve().then(s.bind(s,28050)),Promise.resolve().then(s.bind(s,94904)),Promise.resolve().then(s.bind(s,13270)),Promise.resolve().then(s.bind(s,99730)),Promise.resolve().then(s.bind(s,89146)),Promise.resolve().then(s.bind(s,19078)),Promise.resolve().then(s.bind(s,67854)),Promise.resolve().then(s.bind(s,69050)),Promise.resolve().then(s.bind(s,63739)),Promise.resolve().then(s.bind(s,33976)),Promise.resolve().then(s.bind(s,12537)),Promise.resolve().then(s.bind(s,97485)),Promise.resolve().then(s.bind(s,41923)),Promise.resolve().then(s.bind(s,73868)),Promise.resolve().then(s.bind(s,53511)),Promise.resolve().then(s.bind(s,2018)),Promise.resolve().then(s.bind(s,18487)),Promise.resolve().then(s.bind(s,98346)),Promise.resolve().then(s.bind(s,14884)),Promise.resolve().then(s.bind(s,85314)),Promise.resolve().then(s.bind(s,17280)),Promise.resolve().then(s.bind(s,8855)),Promise.resolve().then(s.bind(s,86631)),Promise.resolve().then(s.bind(s,2604)),Promise.resolve().then(s.bind(s,27237)),Promise.resolve().then(s.bind(s,49455)),Promise.resolve().then(s.bind(s,39211)),Promise.resolve().then(s.bind(s,56360)),Promise.resolve().then(s.t.bind(s,54400,23))},38659:(e,t,s)=>{"use strict";s.d(t,{GoalBadge:()=>h});var n=s(4624),r=s(99356),a=s(13561),i=s(58726),o=s(5270),l=s(41234),d=s(56221),c=s(85253),m=s(28310),u=s(13506),x=s(7911);let p=(0,x.createServerReference)("601e5ecc4d1b3d9209b0dac76091d76fd29fc06a98",x.callServer,void 0,x.findSourceMapURL,"clearTopicGoalAction");function h(e){var t;let{rootId:s,topicId:x,goal:h,status:g,iterations:f}=e,[v,b]=(0,r.useTransition)(),j="completed"===(t=g)?i.A:"abandoned"===t?o.A:l.A;return(0,n.jsxs)("div",{className:(0,u.cn)("flex items-center gap-2 rounded-md border px-3 py-1.5 text-xs","active"===g&&"reflex-gradient text-foreground border-transparent","completed"===g&&"border-emerald-500/40 bg-emerald-50","abandoned"===g&&"border-destructive/40 bg-destructive/5"),children:[(0,n.jsx)(j,{className:"h-3.5 w-3.5 shrink-0"}),(0,n.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,n.jsxs)("div",{className:"text-[10px] uppercase tracking-wider opacity-80",children:["/goal \xb7 ",g," ","active"===g&&f>0&&(0,n.jsxs)("span",{className:"font-mono",children:["(",f,")"]})]}),(0,n.jsx)("div",{className:"truncate font-medium",title:h,children:h})]}),"active"===g&&(0,n.jsxs)(c.$,{type:"button",size:"sm",variant:"ghost",className:"h-7 shrink-0",disabled:v,onClick:()=>{confirm("Остановить выполнение цели?")&&b(async()=>{var e;let t=await p(s,x);t.ok?d.oR.success("Цель снята с активного режима"):d.oR.error(null!=(e=t.error)?e:"Не удалось остановить")})},children:[(0,n.jsx)(a.A,{className:"mr-1 h-3 w-3"})," остановить"]}),("completed"===g||"abandoned"===g)&&(0,n.jsx)(m.E,{variant:"outline",className:"shrink-0 capitalize",children:g})]})}},58224:(e,t,s)=>{"use strict";s.d(t,{L:()=>r});var n=s(7911);let r=(0,n.createServerReference)("60631140bafb5ef89c5bbeb7ea6a5348f410a85f82",n.callServer,void 0,n.findSourceMapURL,"deleteTopicAction")},66459:(e,t,s)=>{"use strict";s.d(t,{O:()=>d});var n=s(4624),r=s(99356),a=s(43153),i=s(9598),o=s(56221),l=s(85253);function d(e){let{steps:t}=e;return t&&0!==t.length?(0,n.jsx)("ol",{className:"space-y-2 text-xs",children:t.map((e,t)=>(0,n.jsxs)("li",{className:"flex gap-2",children:[(0,n.jsxs)("span",{className:"font-mono text-muted-foreground shrink-0 w-5 text-right",children:[t+1,"."]}),(0,n.jsxs)("div",{className:"space-y-1 flex-1 min-w-0",children:[(0,n.jsx)("div",{children:e.title}),e.choice&&(0,n.jsxs)("div",{className:"text-[11px]",children:[(0,n.jsx)("span",{className:"text-muted-foreground",children:"Выбери: "}),(0,n.jsx)("span",{className:"font-medium bg-muted/60 rounded px-1.5 py-0.5",children:e.choice})]}),e.body&&(0,n.jsx)("p",{className:"text-[11px] text-muted-foreground",children:e.body}),e.copy&&(0,n.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[e.field&&(0,n.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:[e.field,":"]}),(0,n.jsx)("code",{className:"font-mono text-[11px] bg-muted/60 rounded px-1.5 py-0.5 break-all flex-1 min-w-0",children:e.copy}),(0,n.jsx)(c,{value:e.copy})]})]})]},t))}):null}function c(e){let{value:t}=e,[s,d]=(0,r.useState)(!1);return(0,n.jsx)(l.$,{type:"button",size:"icon",variant:"ghost",className:"h-6 w-6 shrink-0",onClick:async()=>{try{await navigator.clipboard.writeText(t),d(!0),o.oR.success("Скопировано"),setTimeout(()=>d(!1),1200)}catch(e){o.oR.error("Не удалось скопировать")}},title:"Скопировать",children:s?(0,n.jsx)(a.A,{className:"h-3 w-3 text-emerald-600"}):(0,n.jsx)(i.A,{className:"h-3 w-3"})})}}},e=>{e.O(0,[4400,1217,3335,5097,3954,8775,6568,7238,8423,7951,4933,146,7358],()=>e(e.s=25342)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[532],{2046:(e,t,s)=>{Promise.resolve().then(s.bind(s,69950)),Promise.resolve().then(s.bind(s,33672)),Promise.resolve().then(s.bind(s,53658)),Promise.resolve().then(s.bind(s,91074)),Promise.resolve().then(s.bind(s,96253)),Promise.resolve().then(s.bind(s,28050)),Promise.resolve().then(s.bind(s,94904)),Promise.resolve().then(s.bind(s,13270)),Promise.resolve().then(s.bind(s,99730)),Promise.resolve().then(s.bind(s,89146)),Promise.resolve().then(s.bind(s,19078)),Promise.resolve().then(s.bind(s,67854)),Promise.resolve().then(s.bind(s,69050)),Promise.resolve().then(s.bind(s,63739)),Promise.resolve().then(s.bind(s,33976)),Promise.resolve().then(s.bind(s,12537)),Promise.resolve().then(s.bind(s,97485)),Promise.resolve().then(s.bind(s,41923)),Promise.resolve().then(s.bind(s,73868)),Promise.resolve().then(s.bind(s,53511)),Promise.resolve().then(s.bind(s,2018)),Promise.resolve().then(s.bind(s,18487)),Promise.resolve().then(s.bind(s,98346)),Promise.resolve().then(s.bind(s,14884)),Promise.resolve().then(s.bind(s,85314)),Promise.resolve().then(s.bind(s,17280)),Promise.resolve().then(s.bind(s,8855)),Promise.resolve().then(s.bind(s,86631)),Promise.resolve().then(s.bind(s,2604)),Promise.resolve().then(s.bind(s,27237)),Promise.resolve().then(s.bind(s,49455)),Promise.resolve().then(s.bind(s,39211)),Promise.resolve().then(s.bind(s,56360)),Promise.resolve().then(s.t.bind(s,54400,23))},5270:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(45804).A)("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"}]])},16329:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(45804).A)("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]])},23262:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(45804).A)("Upload",[["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["polyline",{points:"17 8 12 3 7 8",key:"t8dd8p"}],["line",{x1:"12",x2:"12",y1:"3",y2:"15",key:"widbto"}]])},30441:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(45804).A)("Share2",[["circle",{cx:"18",cy:"5",r:"3",key:"gq8acd"}],["circle",{cx:"6",cy:"12",r:"3",key:"w7nqdw"}],["circle",{cx:"18",cy:"19",r:"3",key:"1xt0gg"}],["line",{x1:"8.59",x2:"15.42",y1:"13.51",y2:"17.49",key:"47mynk"}],["line",{x1:"15.41",x2:"8.59",y1:"6.51",y2:"10.49",key:"1n3mei"}]])},39160:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(45804).A)("Image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]])},53658:(e,t,s)=>{"use strict";s.d(t,{RootViewer:()=>O});var r=s(4624),n=s(99356),a=s(69285),i=s(56221),l=s(80192),c=s(43504),o=s(28310),d=s(19379),m=s(7911);let x=(0,m.createServerReference)("60d327b1e66f7ff5d8a97a93274da18e1603c5aa91",m.callServer,void 0,m.findSourceMapURL,"readKbFileAction");var u=s(8190),h=s(45804);let p=(0,h.A)("CircleDot",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}]]);var y=s(16329);let v=(0,h.A)("User",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),f=(0,h.A)("Tag",[["path",{d:"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z",key:"vktsd0"}],["circle",{cx:"7.5",cy:"7.5",r:".5",fill:"currentColor",key:"kqv944"}]]),g=(0,h.A)("Users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["path",{d:"M16 3.13a4 4 0 0 1 0 7.75",key:"1da9ce"}]]),j=(0,h.A)("Hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]);var b=s(39783),k=s(58726),N=s(72691),w=s(5270);let P=(0,h.A)("Pause",[["rect",{x:"14",y:"4",width:"4",height:"16",rx:"1",key:"zuxfzm"}],["rect",{x:"6",y:"4",width:"4",height:"16",rx:"1",key:"1okwgv"}]]);var A=s(13506);function E(e){let{kind:t,data:s}=e,n=(null!=t?t:"").toLowerCase();return"task"===n?(0,r.jsx)(M,{data:s}):"meeting"===n?(0,r.jsx)(_,{data:s}):"product"===n?(0,r.jsx)(z,{data:s}):"fact"===n?(0,r.jsx)(I,{data:s}):(0,r.jsx)(S,{data:s})}let C=new Set(["title","version","date","kind"]);function S(e){let{data:t}=e,s=Object.entries(t).filter(e=>{let[t]=e;return!C.has(t)});return 0===s.length?null:(0,r.jsx)("div",{className:"flex flex-wrap items-center gap-1.5",children:s.map(e=>{let[t,s]=e;return(0,r.jsxs)(o.E,{variant:"outline",className:"font-mono text-[10px]",children:[(0,r.jsxs)("span",{className:"text-muted-foreground mr-1",children:[t,":"]}),(0,r.jsx)("span",{className:"truncate max-w-[16rem]",children:function e(t){if(null==t)return"";if("string"==typeof t)return t;if("number"==typeof t||"boolean"==typeof t)return String(t);if(Array.isArray(t))return t.map(t=>e(t)).join(", ");try{return JSON.stringify(t)}catch(e){return String(t)}}(s)})]},t)})})}function M(e){var t;let{data:s}=e,n=U(s.status),a=U(s.priority),i=null!=(t=U(s.due))?t:U(s.due_date),l=U(s.assignee),c=q(s.tags);return(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[n&&(0,r.jsxs)(o.E,{className:(0,A.cn)("gap-1 capitalize",function(e){let t=e.toLowerCase();return"done"===t?"bg-emerald-600 text-white":"doing"===t||"in_progress"===t?"bg-blue-600 text-white":"blocked"===t||"cancelled"===t?"bg-destructive text-destructive-foreground":"paused"===t?"bg-amber-600 text-white":"bg-secondary text-secondary-foreground"}(n)),children:[(0,r.jsx)(R,{status:n}),n]}),a&&(0,r.jsxs)(o.E,{variant:"outline",className:(0,A.cn)("gap-1 capitalize",function(e){let t=e.toLowerCase();return"high"===t||"p0"===t||"urgent"===t?"border-destructive text-destructive":"med"===t||"medium"===t||"p1"===t?"border-amber-600 text-amber-700":"border-muted-foreground text-muted-foreground"}(a)),children:[(0,r.jsx)(p,{className:"h-3 w-3"}),a]}),i&&(0,r.jsxs)(o.E,{variant:"secondary",className:"gap-1",children:[(0,r.jsx)(y.A,{className:"h-3 w-3"}),"до ",i]}),l&&(0,r.jsxs)(o.E,{variant:"outline",className:"gap-1",children:[(0,r.jsx)(v,{className:"h-3 w-3"}),l]}),null==c?void 0:c.map(e=>(0,r.jsxs)(o.E,{variant:"secondary",className:"gap-1",children:[(0,r.jsx)(f,{className:"h-3 w-3"}),e]},e))]})}function _(e){var t;let{data:s}=e,n=q(s.attendees),a=q(s.decisions),i=null!=(t=q(s.action_items))?t:q(s.actionItems);return(0,r.jsxs)("div",{className:"space-y-2",children:[n&&n.length>0&&(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[(0,r.jsx)(g,{className:"h-3.5 w-3.5 text-muted-foreground"}),n.map(e=>(0,r.jsxs)(o.E,{variant:"outline",className:"gap-1",children:[(0,r.jsx)(v,{className:"h-3 w-3"})," ",e]},e))]}),a&&a.length>0&&(0,r.jsx)(L,{title:"Решения",items:a}),i&&i.length>0&&(0,r.jsx)(L,{title:"Action items",items:i})]})}function z(e){var t;let{data:s}=e,n=U(s.sku),a=s.price,i=U(s.currency),l=U(s.vendor),c=U(s.url),d=q(s.tags);return(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[null!=a&&""!==a&&(0,r.jsxs)(o.E,{className:"bg-emerald-600 text-white",children:["number"==typeof(t=a)?t.toLocaleString():"string"==typeof t?t:String(t),i?" ".concat(i):""]}),n&&(0,r.jsxs)(o.E,{variant:"outline",className:"gap-1 font-mono",children:[(0,r.jsx)(j,{className:"h-3 w-3"})," ",n]}),l&&(0,r.jsx)(o.E,{variant:"secondary",className:"gap-1",children:l}),c&&(0,r.jsxs)("a",{href:c,target:"_blank",rel:"noreferrer",className:"inline-flex items-center gap-1 text-xs text-primary underline-offset-2 hover:underline",children:[(0,r.jsx)(b.A,{className:"h-3 w-3"}),"открыть"]}),null==d?void 0:d.map(e=>(0,r.jsxs)(o.E,{variant:"outline",className:"gap-1",children:[(0,r.jsx)(f,{className:"h-3 w-3"})," ",e]},e))]})}function I(e){let{data:t}=e,s=q(t.tags),n=U(t.source);return(0,r.jsxs)("div",{className:"flex flex-wrap items-center gap-1.5",children:[null==s?void 0:s.map(e=>(0,r.jsxs)(o.E,{variant:"secondary",className:"gap-1",children:[(0,r.jsx)(f,{className:"h-3 w-3"})," ",e]},e)),n&&(0,r.jsxs)(o.E,{variant:"outline",className:"gap-1 max-w-[24rem]",children:[(0,r.jsx)("span",{className:"text-muted-foreground",children:"источник:"}),(0,r.jsx)("span",{className:"truncate",children:n})]})]})}function L(e){let{title:t,items:s}=e;return(0,r.jsxs)("div",{className:"rounded-md border bg-muted/30 p-2",children:[(0,r.jsx)("div",{className:"text-[10px] uppercase tracking-wider text-muted-foreground mb-1",children:t}),(0,r.jsx)("ul",{className:"space-y-0.5 text-sm",children:s.map((e,t)=>(0,r.jsxs)("li",{className:"leading-snug",children:["• ",e]},t))})]})}function R(e){let{status:t}=e,s=t.toLowerCase();return"done"===s?(0,r.jsx)(k.A,{className:"h-3 w-3"}):"doing"===s||"in_progress"===s?(0,r.jsx)(N.A,{className:"h-3 w-3"}):"blocked"===s||"cancelled"===s?(0,r.jsx)(w.A,{className:"h-3 w-3"}):"paused"===s?(0,r.jsx)(P,{className:"h-3 w-3"}):(0,r.jsx)(p,{className:"h-3 w-3"})}function U(e){return"string"==typeof e&&e.trim()?e:"number"==typeof e?String(e):void 0}function q(e){if(!Array.isArray(e))return;let t=e.map(e=>"string"==typeof e?e:null==e?"":String(e)).filter(e=>e.trim());return t.length>0?t:void 0}var H=s(43387);function O(e){var t,s;let{files:o,rootId:m,rootPath:h,initialFile:p}=e,y=(()=>{let e=new Map;for(let t of o)e.set(t.rel,t);return e})(),v=null!=(s=p&&y.has(p)?p:y.has("INDEX.md")?"INDEX.md":null==(t=o[0])?void 0:t.rel)?s:null,[f,g]=(0,n.useState)(v),[j,b]=(0,n.useState)(""),[k,N]=(0,n.useState)(null),[w,P]=(0,n.useTransition)(),A=(0,a.useRouter)();return(0,n.useEffect)(()=>{p&&y.has(p)&&g(p)},[p]),(0,n.useEffect)(()=>{f&&P(async()=>{let e=await x(m,f);if(e.ok)b(e.content),N(e.meta);else{var t;b("# Error\n\n".concat(null!=(t=e.error)?t:"")),N(null)}})},[f,m]),(0,r.jsxs)("div",{className:"flex-1 flex flex-col min-h-0",children:[(0,r.jsx)(l.F,{className:"flex-1 min-h-0",children:(0,r.jsxs)("article",{className:"mx-auto max-w-3xl px-8 py-10",children:[f?w?(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)(c.E,{className:"h-8 w-3/5"}),(0,r.jsx)(c.E,{className:"h-4 w-full"}),(0,r.jsx)(c.E,{className:"h-4 w-11/12"}),(0,r.jsx)(c.E,{className:"h-4 w-4/5"})]}):(0,r.jsxs)(r.Fragment,{children:[k&&(0,r.jsx)(F,{meta:k,filename:f}),(0,r.jsx)(d.p,{source:function(e){if(!e.startsWith("---"))return e;let t=e.indexOf("\n---",3);return t<0?e:e.slice(t+4).replace(/^\r?\n/,"")}(j),onSendToChat:(e,t)=>{(async()=>{let s="Контекст — выжимка YouTube-видео (".concat(t,"), сделанная Gemini:\n\n").concat(e,"\n\nДавай продолжим работу с этим материалом."),r=await (0,H.g)(m,s);if(!r.ok)return i.oR.error(r.error);A.push("/roots/".concat(m,"/chat/").concat(r.topicId))})()}})]}):(0,r.jsx)("p",{className:"text-muted-foreground",children:"Выбери файл в боковой панели слева."}),(0,r.jsxs)("div",{className:"mt-10 text-[11px] text-muted-foreground font-mono truncate",children:[h,"/.reflex/"]})]})}),(0,r.jsx)(u.CommandBar,{rootId:m,focusFile:null!=f?f:void 0})]})}function F(e){var t;let{meta:s,filename:n}=e;return s.title||void 0!==s.version||s.date||s.kind?(0,r.jsxs)("header",{className:"mb-6 pb-4 border-b space-y-2",children:[(0,r.jsxs)("div",{className:"flex items-baseline gap-3 flex-wrap",children:[(0,r.jsx)("h1",{className:"text-2xl font-semibold tracking-tight",children:null!=(t=s.title)?t:n}),(0,r.jsxs)("div",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[s.kind&&(0,r.jsx)(o.E,{variant:"default",className:"capitalize",children:s.kind}),void 0!==s.version&&(0,r.jsxs)(o.E,{variant:"outline",children:["v",s.version]}),s.date&&(0,r.jsx)("span",{className:"font-mono",children:s.date})]})]}),(0,r.jsx)(T,{createdBy:s.data.createdBy}),(0,r.jsx)(E,{kind:s.kind,data:s.data}),(0,r.jsx)("div",{className:"text-[11px] text-muted-foreground font-mono",children:n})]}):null}function T(e){let{createdBy:t}=e;if("string"!=typeof t||!t)return null;let[s,n]=t.split(":",2);if(!s||!n)return null;let[a,i]=n.split("@",2),l=(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full border bg-violet-50 dark:bg-violet-950/30 px-2 py-0.5 text-[10px] text-violet-700 dark:text-violet-300",children:[(0,r.jsx)("span",{className:"text-[9px] uppercase tracking-wider text-muted-foreground",children:"создано"}),(0,r.jsx)("span",{children:"utility"===s?"мини-приложение":"workflow"===s?"рецепт":"agent"===s?"агент":s}),(0,r.jsx)("code",{className:"font-mono",children:a}),i&&(0,r.jsxs)("span",{className:"font-mono text-muted-foreground",children:["v",i]})]});return"utility"===s&&a?(0,r.jsx)("a",{href:"/utilities/project/".concat(encodeURIComponent(a)),className:"inline-block hover:opacity-80",title:"Открыть мини-приложение",children:l}):l}},58726:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(45804).A)("CircleCheck",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]])},59728:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(45804).A)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])},72691:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(45804).A)("Clock",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["polyline",{points:"12 6 12 12 16 14",key:"68esgv"}]])}},e=>{e.O(0,[4400,1217,3335,5097,3954,8775,7238,8423,2718,4933,146,7358],()=>e(e.s=2046)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8138],{1097:(e,t,s)=>{"use strict";s.d(t,{RunInitButton:()=>x});var r=s(4624),a=s(99356),n=s(3239),i=s(67805),l=s(56221),o=s(85253),c=s(7911);let d=(0,c.createServerReference)("70af54b3e276a869acf56530a3b1dd39a97f7ba9c7",c.callServer,void 0,c.findSourceMapURL,"runInitAction");var m=s(63514);function x(e){let{rootPath:t,rootId:s}=e,[c,x]=(0,a.useTransition)();return(0,r.jsx)(o.$,{onClick:()=>x(async()=>{let e=l.oR.loading("Running agent — this can take a minute or two…"),r=await d(t,s,!1);if(l.oR.dismiss(e),r.ok)l.oR.success("Init complete"),(0,m.$d)(m.Zi.kbChanged(s)),(0,m.$d)(m.Zi.rootsChanged);else{var a;l.oR.error(null!=(a=r.error)?a:"Init failed")}}),disabled:c,children:c?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.A,{className:"mr-2 h-4 w-4 animate-spin"})," Running…"]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.A,{className:"mr-2 h-4 w-4"})," Run init"]})})}},4959:(e,t,s)=>{"use strict";s.d(t,{BT:()=>o,Wu:()=>c,ZB:()=>l,Zp:()=>n,aR:()=>i,wL:()=>d});var r=s(4624);s(99356);var a=s(13506);function n(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card",className:(0,a.cn)("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",t),...s})}function i(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...s})}function l(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",t),...s})}function o(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",t),...s})}function c(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",t),...s})}function d(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-footer",className:(0,a.cn)("flex items-center px-6 [.border-t]:pt-6",t),...s})}},35984:(e,t,s)=>{Promise.resolve().then(s.bind(s,69950)),Promise.resolve().then(s.bind(s,33672)),Promise.resolve().then(s.bind(s,79811)),Promise.resolve().then(s.bind(s,8190)),Promise.resolve().then(s.bind(s,84133)),Promise.resolve().then(s.bind(s,1097)),Promise.resolve().then(s.bind(s,91074)),Promise.resolve().then(s.bind(s,96253)),Promise.resolve().then(s.bind(s,28050)),Promise.resolve().then(s.bind(s,94904)),Promise.resolve().then(s.bind(s,13270)),Promise.resolve().then(s.bind(s,99730)),Promise.resolve().then(s.bind(s,89146)),Promise.resolve().then(s.bind(s,19078)),Promise.resolve().then(s.bind(s,67854)),Promise.resolve().then(s.bind(s,69050)),Promise.resolve().then(s.bind(s,63739)),Promise.resolve().then(s.bind(s,33976)),Promise.resolve().then(s.bind(s,12537)),Promise.resolve().then(s.bind(s,97485)),Promise.resolve().then(s.bind(s,41923)),Promise.resolve().then(s.bind(s,73868)),Promise.resolve().then(s.bind(s,53511)),Promise.resolve().then(s.bind(s,2018)),Promise.resolve().then(s.bind(s,18487)),Promise.resolve().then(s.bind(s,98346)),Promise.resolve().then(s.bind(s,14884)),Promise.resolve().then(s.bind(s,85314)),Promise.resolve().then(s.bind(s,17280)),Promise.resolve().then(s.bind(s,8855)),Promise.resolve().then(s.bind(s,86631)),Promise.resolve().then(s.bind(s,2604)),Promise.resolve().then(s.bind(s,27237)),Promise.resolve().then(s.bind(s,49455)),Promise.resolve().then(s.bind(s,39211)),Promise.resolve().then(s.bind(s,56360)),Promise.resolve().then(s.t.bind(s,54400,23))},53808:(e,t,s)=>{"use strict";s.d(t,{g:()=>a});var r=s(7911);let a=(0,r.createServerReference)("40adb597bf039141d38b7b4d3bf37e6a1a127b35b3",r.callServer,void 0,r.findSourceMapURL,"installCuratedAction")},60287:(e,t,s)=>{"use strict";s.d(t,{B:()=>a});var r=s(7911);let a=(0,r.createServerReference)("0013f92e98a6be32b43c42ddfcff6fd11255934a84",r.callServer,void 0,r.findSourceMapURL,"listCuratedAction")},69068:(e,t,s)=>{"use strict";s.d(t,{j:()=>a});var r=s(7911);let a=(0,r.createServerReference)("70d05ab73c507cbb9c111f9268044697412f0469a9",r.callServer,void 0,r.findSourceMapURL,"removeUtilityAction")},79811:(e,t,s)=>{"use strict";s.d(t,{AddUtilityButton:()=>A});var r=s(4624),a=s(99356),n=s(54400),i=s.n(n),l=s(69285),o=s(39624),c=s(36059),d=s(13561),m=s(3239),x=s(39783),u=s(46972),h=s(43153),p=s(57751),f=s(56221),g=s(85253),v=s(60287),b=s(7911);let j=(0,b.createServerReference)("401016b95440d8ae14e7e617782a46f907759413b9",b.callServer,void 0,b.findSourceMapURL,"checkUtilityUpdatesAction"),N=(0,b.createServerReference)("40e0f560dd1bd5c4d1f3d6a8c4cb77aa85112a7684",b.callServer,void 0,b.findSourceMapURL,"applyUtilityUpdateAction");var w=s(53808),y=s(69068),k=s(63514);function A(e){let{rootId:t,installed:s}=e,[n,b]=(0,a.useState)(!1),[A,R]=(0,a.useState)([]),[S,C]=(0,a.useState)(!1),[D,P]=(0,a.useState)(null),[I,E]=(0,a.useTransition)(),[M,T]=(0,a.useState)([]),U=(0,a.useRef)(null),L=(0,l.useRouter)(),Z=new Set(s.map(e=>e.id)),$=s.filter(e=>"project"===e.scope),z=new Map(M.map(e=>[e.id,e]));return(0,a.useEffect)(()=>{if(!n)return;let e=e=>{var t;(null==(t=U.current)?void 0:t.contains(e.target))||b(!1)};return document.addEventListener("mousedown",e),()=>document.removeEventListener("mousedown",e)},[n]),(0,a.useEffect)(()=>{!n||A.length>0||S||(C(!0),(async()=>{try{let e=await (0,v.B)();R(e.items)}catch(e){f.oR.error("Не удалось загрузить каталог")}finally{C(!1)}})())},[n,A.length,S]),(0,a.useEffect)(()=>{n&&0!==s.length&&(async()=>{let e=await j({rootId:t});e.ok&&T(e.updates)})()},[n,s.length,t]),(0,r.jsxs)("div",{className:"relative",ref:U,children:[(0,r.jsxs)(g.$,{type:"button",variant:"ghost",size:"sm",className:"gap-1",onClick:()=>b(e=>!e),title:"Установленные + каталог",children:[(0,r.jsx)(o.A,{className:"h-4 w-4"}),"Утилиты",$.length>0&&(0,r.jsx)("span",{className:"ml-1 text-[10px] rounded-full bg-violet-100 text-violet-700 px-1.5",children:$.length}),M.length>0&&(0,r.jsxs)("span",{className:"ml-0.5 text-[10px] rounded-full bg-amber-100 text-amber-800 px-1.5 inline-flex items-center gap-0.5",title:"Обновлений: ".concat(M.length),children:[(0,r.jsx)(c.A,{className:"h-2.5 w-2.5"}),M.length]})]}),n&&(0,r.jsxs)("div",{className:"absolute right-0 top-full mt-1 z-30 w-[440px] max-h-[75vh] overflow-y-auto rounded-lg border bg-popover shadow-lg",children:[(0,r.jsxs)("div",{className:"sticky top-0 bg-popover flex items-center gap-2 px-3 py-2 border-b",children:[(0,r.jsx)(o.A,{className:"h-3.5 w-3.5 text-violet-600"}),(0,r.jsx)("span",{className:"text-xs font-medium",children:"Мини-приложения"}),(0,r.jsx)("button",{type:"button",onClick:()=>b(!1),className:"ml-auto p-0.5 rounded hover:bg-accent",children:(0,r.jsx)(d.A,{className:"h-3 w-3"})})]}),$.length>0&&(0,r.jsxs)("section",{className:"p-2 border-b",children:[(0,r.jsx)("div",{className:"px-1 text-[10px] uppercase tracking-wider text-muted-foreground mb-1.5",children:"Установлены в этом проекте"}),(0,r.jsx)("ul",{className:"space-y-1",children:$.map(e=>{let s=z.get(e.id);return(0,r.jsxs)("li",{className:"flex items-center gap-1.5 rounded-md border bg-card px-2 py-1.5 text-xs",children:[(0,r.jsxs)("span",{className:"flex-1 min-w-0",children:[(0,r.jsx)("div",{className:"truncate font-medium",children:e.name}),s&&(0,r.jsxs)("div",{className:"text-[10px] text-amber-700 inline-flex items-center gap-0.5",children:[(0,r.jsx)(c.A,{className:"h-2.5 w-2.5"}),s.currentVersion," → ",s.latestVersion]})]}),s&&(0,r.jsxs)("button",{type:"button",onClick:()=>{P(s.id),E(async()=>{let e=await N({...s,rootId:t});if(P(null),!e.ok)return void f.oR.error(e.error);f.oR.success("\xab".concat(s.name,"\xbb обновлено: ").concat(s.currentVersion," → ").concat(e.newVersion)),T(e=>e.filter(e=>e.id!==s.id)),(0,k.$d)(k.Zi.kbChanged(t)),L.refresh()})},disabled:I&&D===e.id,className:"text-[11px] rounded bg-amber-600 px-2 py-1 text-white hover:bg-amber-700 disabled:opacity-50 inline-flex items-center gap-0.5",title:"Применить обновление",children:[I&&D===e.id?(0,r.jsx)(m.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(c.A,{className:"h-3 w-3"}),"Обновить"]}),(0,r.jsx)(i(),{href:"/utilities/".concat(e.scope,"/").concat(e.id,"?rootId=").concat(encodeURIComponent(t)),className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground",title:"Открыть",children:(0,r.jsx)(x.A,{className:"h-3 w-3"})}),(0,r.jsx)("button",{type:"button",onClick:()=>{confirm("Удалить \xab".concat(e.name,"\xbb? Виджет-карточка пропадёт, данные в KB останутся."))&&(P(e.id),E(async()=>{let s=await (0,y.j)(e.scope,e.id,"project"===e.scope?t:void 0);if(P(null),!s.ok){var r;f.oR.error(null!=(r=s.error)?r:"Не удалось удалить");return}f.oR.success("\xab".concat(e.name,"\xbb удалено")),(0,k.$d)(k.Zi.kbChanged(t)),L.refresh()}))},disabled:I&&D===e.id,className:"p-1 rounded hover:bg-destructive/15 text-muted-foreground hover:text-destructive disabled:opacity-50",title:"Удалить из проекта",children:I&&D===e.id?(0,r.jsx)(m.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(u.A,{className:"h-3 w-3"})})]},e.id)})})]}),(0,r.jsxs)("section",{className:"p-2",children:[(0,r.jsx)("div",{className:"px-1 text-[10px] uppercase tracking-wider text-muted-foreground mb-1.5",children:"Каталог"}),S?(0,r.jsxs)("div",{className:"px-2 py-4 text-xs text-muted-foreground flex items-center gap-1.5",children:[(0,r.jsx)(m.A,{className:"h-3 w-3 animate-spin"}),"Загружаю…"]}):0===A.length?(0,r.jsx)("p",{className:"px-2 py-4 text-xs text-muted-foreground",children:"Каталог пуст."}):(0,r.jsx)("ul",{className:"space-y-1",children:A.map(e=>{let s=Z.has(e.id),a=D===e.id&&I;return(0,r.jsx)("li",{className:"rounded-md border bg-card px-2 py-2",children:(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[(0,r.jsx)("span",{className:"text-xl leading-none",children:e.emoji}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("div",{className:"font-medium text-sm",children:e.name}),(0,r.jsx)("p",{className:"text-[11px] text-muted-foreground leading-snug",children:e.description})]}),s?(0,r.jsxs)("span",{className:"text-[10px] text-emerald-700 inline-flex items-center gap-0.5",children:[(0,r.jsx)(h.A,{className:"h-3 w-3"})," уже"]}):(0,r.jsxs)("button",{type:"button",onClick:()=>{P(e.id),E(async()=>{var s;let r=null!=(s=e.suggestedScope)?s:"global",a=await (0,w.g)({github:e.github,scope:r,..."project"===r?{rootId:t}:{}});if(P(null),!a.ok)return void f.oR.error(a.error);f.oR.success("\xab".concat(e.name,"\xbb установлено в проект")),(0,k.$d)(k.Zi.kbChanged(t)),L.refresh()})},disabled:a||I,className:"text-[11px] rounded bg-violet-600 px-2 py-1 text-white hover:bg-violet-700 disabled:opacity-50 inline-flex items-center gap-0.5",children:[a?(0,r.jsx)(m.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(p.A,{className:"h-3 w-3"}),"Добавить"]})]})},e.id)})})]})]})]})}},84133:(e,t,s)=>{"use strict";s.d(t,{Dashboard:()=>eh});var r=s(4624),a=s(99356),n=s(3747),i=s(56221),l=s(85253),o=s(63514),c=s(54400),d=s.n(c),m=s(41234),x=s(3239),u=s(86790),h=s(28310),p=s(4959);function f(e){let{rootId:t,activeGoals:s,runningAgents:a}=e,n=s.length+a.length;return(0,r.jsxs)(p.Zp,{children:[(0,r.jsxs)(p.aR,{className:"pb-2 flex flex-row items-center justify-between space-y-0",children:[(0,r.jsxs)(p.ZB,{className:"text-sm flex items-center gap-2",children:[(0,r.jsx)(m.A,{className:"h-4 w-4 text-violet-600"}),"Active goals & running agents"]}),n>0&&(0,r.jsx)(h.E,{variant:"secondary",className:"text-[10px]",children:n})]}),(0,r.jsxs)(p.Wu,{className:"space-y-2",children:[0===n&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Нет активных целей и работающих агентов."}),s.map(e=>(0,r.jsx)(d(),{href:"/roots/".concat(t,"/chat/").concat(e.topicId),className:"block rounded-md border bg-card hover:bg-accent/40 transition px-3 py-2",children:(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[(0,r.jsx)(m.A,{className:"h-3.5 w-3.5 text-violet-600 mt-0.5 shrink-0"}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"text-sm font-medium truncate flex-1 min-w-0",children:e.topicTitle}),e.running&&(0,r.jsx)(x.A,{className:"h-3 w-3 animate-spin text-violet-600 shrink-0"})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:e.goal}),(0,r.jsxs)("div",{className:"flex items-center gap-2 mt-1 text-[10px] text-muted-foreground",children:[(0,r.jsxs)("span",{children:["итерация ",e.goalIterations]}),(0,r.jsx)("span",{children:"\xb7"}),(0,r.jsxs)("span",{children:["обновлено ",function(e){let t=Date.now()-Date.parse(e);if(!Number.isFinite(t)||t<0)return"только что";let s=Math.floor(t/6e4);if(s<1)return"только что";if(s<60)return"".concat(s," мин назад");let r=Math.floor(s/60);if(r<24)return"".concat(r," ч назад");let a=Math.floor(r/24);return"".concat(a," дн назад")}(e.updatedAt)]})]})]})]})},e.topicId)),a.map(e=>(0,r.jsx)(d(),{href:"/roots/".concat(t,"/chat/").concat(e.topicId),className:"block rounded-md border bg-card hover:bg-accent/40 transition px-3 py-2",children:(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[(0,r.jsx)(u.A,{className:"h-3.5 w-3.5 text-amber-600 mt-0.5 shrink-0"}),(0,r.jsxs)("div",{className:"min-w-0 flex-1 flex items-center gap-2",children:[(0,r.jsx)("span",{className:"text-sm font-medium truncate flex-1 min-w-0",children:e.topicTitle}),(0,r.jsx)(x.A,{className:"h-3 w-3 animate-spin text-amber-600 shrink-0"}),(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground",children:"агент работает"})]})]})},e.topicId))]})]})}var g=s(85924),v=s(3024),b=s(59145),j=s(31108);function N(e){let{rootId:t,items:s}=e;return(0,r.jsxs)(p.Zp,{children:[(0,r.jsxs)(p.aR,{className:"pb-2 flex flex-row items-center justify-between space-y-0",children:[(0,r.jsxs)(p.ZB,{className:"text-sm flex items-center gap-2",children:[(0,r.jsx)(g.A,{className:"h-4 w-4 text-amber-600"}),"Ждут реакции"]}),s.length>0&&(0,r.jsx)(h.E,{variant:"secondary",className:"text-[10px]",children:s.length})]}),(0,r.jsxs)(p.Wu,{className:"space-y-2",children:[0===s.length&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Ничего не висит — все вопросы и одобрения отвечены."}),s.map(e=>{var s;return(0,r.jsx)(d(),{href:"/roots/".concat(t,"/chat/").concat(e.topicId),className:"block rounded-md border bg-card hover:bg-accent/40 transition px-3 py-2",children:(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[(0,r.jsx)(w,{kind:e.kind}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"text-sm font-medium truncate flex-1 min-w-0",children:e.summary}),(0,r.jsx)(h.E,{variant:"outline",className:"text-[10px] shrink-0",children:"permission"===(s=e.kind)?"permission":"question"===s?"question":"mcp-add"})]}),e.details&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:e.details}),(0,r.jsxs)("div",{className:"text-[10px] text-muted-foreground mt-1",children:["topic ",e.topicId.slice(0,12)," \xb7 ",function(e){let t=Date.now()-Date.parse(e);if(!Number.isFinite(t)||t<0)return"только что";let s=Math.floor(t/6e4);if(s<1)return"только что";if(s<60)return"".concat(s," мин назад");let r=Math.floor(s/60);if(r<24)return"".concat(r," ч назад");let a=Math.floor(r/24);return"".concat(a," дн назад")}(e.ts)]})]})]})},"".concat(e.kind,":").concat(e.requestId))})]})]})}function w(e){let{kind:t}=e,s="h-3.5 w-3.5 mt-0.5 shrink-0";return"permission"===t?(0,r.jsx)(v.A,{className:"".concat(s," text-rose-600")}):"question"===t?(0,r.jsx)(b.A,{className:"".concat(s," text-sky-600")}):(0,r.jsx)(j.A,{className:"".concat(s," text-emerald-600")})}var y=s(49623),k=s(7911);let A=(0,k.createServerReference)("609c6452ac4a46b36b920495b51ebf7cf104e2602b",k.callServer,void 0,k.findSourceMapURL,"readKbPreviewAction");function R(e){let{rootId:t,items:s}=e,[n,i]=(0,a.useState)({});return(0,a.useEffect)(()=>{let e=!1;return(async()=>{for(let r of s){if(n[r.rel])continue;let s=await A(t,r.rel);if(e)return;s.ok&&i(e=>({...e,[r.rel]:s.preview}))}})(),()=>{e=!0}},[t,s]),(0,r.jsxs)(p.Zp,{children:[(0,r.jsxs)(p.aR,{className:"pb-2 flex flex-row items-center justify-between space-y-0",children:[(0,r.jsxs)(p.ZB,{className:"text-sm flex items-center gap-2",children:[(0,r.jsx)(y.A,{className:"h-4 w-4 text-emerald-700"}),"Свежее в KB"]}),s.length>0&&(0,r.jsx)(h.E,{variant:"secondary",className:"text-[10px]",children:s.length})]}),(0,r.jsxs)(p.Wu,{className:"space-y-2",children:[0===s.length&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"За последние 72 часа никто не писал в KB."}),s.map(e=>{var s;return(0,r.jsx)(d(),{href:"/roots/".concat(t,"/kb/").concat(e.rel.split("/").map(encodeURIComponent).join("/")),className:"block rounded-md border bg-card hover:bg-accent/40 transition px-3 py-2",children:(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[(0,r.jsx)(y.A,{className:"h-3.5 w-3.5 mt-0.5 shrink-0 text-emerald-700"}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)("span",{className:"text-sm font-medium truncate flex-1 min-w-0",children:e.title}),e.kind&&(0,r.jsx)(h.E,{variant:"outline",className:"text-[10px] shrink-0",children:e.kind})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:null!=(s=n[e.rel])?s:e.rel}),(0,r.jsxs)("div",{className:"text-[10px] text-muted-foreground mt-1",children:[function(e){let t=Date.now()-Date.parse(e);if(!Number.isFinite(t)||t<0)return"только что";let s=Math.floor(t/6e4);if(s<1)return"только что";if(s<60)return"".concat(s," мин назад");let r=Math.floor(s/60);if(r<24)return"".concat(r," ч назад");let a=Math.floor(r/24);return"".concat(a," дн назад")}(e.modifiedAt)," \xb7 ",(0,r.jsx)("span",{className:"font-mono",children:e.rel})]})]})]})},e.rel)})]})]})}var S=s(69285),C=s(95046),D=s(8096),P=s(54207),I=s(95265),E=s(43387);function M(e){let{rootId:t,cache:s}=e,[o,c]=(0,a.useState)(s),[d,m]=(0,a.useTransition)(),u=(0,S.useRouter)(),f=o&&Date.now()-Date.parse(o.generatedAt)>864e5;return(0,r.jsxs)(p.Zp,{className:"lg:col-span-2",children:[(0,r.jsxs)(p.aR,{className:"pb-2 flex flex-row items-center justify-between space-y-0",children:[(0,r.jsxs)(p.ZB,{className:"text-sm flex items-center gap-2",children:[(0,r.jsx)(C.A,{className:"h-4 w-4 text-amber-500"}),"Что дальше — предложения Reflex",f&&(0,r.jsx)(h.E,{variant:"outline",className:"text-[10px]",children:"устарело"})]}),(0,r.jsxs)(l.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>{m(async()=>{try{let s=await fetch("/api/roots/".concat(t,"/suggestions"),{method:"POST",cache:"no-store"}),r=await s.json();if(!r.ok){var e;i.oR.error(null!=(e=r.error)?e:"Не удалось перегенерировать");return}r.cache&&c(r.cache)}catch(e){i.oR.error(e instanceof Error?e.message:String(e))}})},disabled:d,className:"gap-1 h-7 text-xs",children:[d?(0,r.jsx)(x.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(n.A,{className:"h-3 w-3"}),"Пересчитать"]})]}),(0,r.jsxs)(p.Wu,{className:"space-y-2",children:[!o&&!d&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Нажми \xabПересчитать\xbb, чтобы получить 2-4 идеи о том, что стоит сделать в проекте дальше. Использует quick-модель из Settings."}),o&&0===o.items.length&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Модель не нашла ничего срочного — попробуй позже."}),(0,r.jsx)("div",{className:"grid gap-2 md:grid-cols-2",children:null==o?void 0:o.items.map((e,s)=>(0,r.jsxs)("div",{className:"rounded-md border bg-card p-3 space-y-1.5",children:[(0,r.jsxs)("div",{className:"flex items-start gap-2",children:[(0,r.jsx)(D.A,{className:"h-3.5 w-3.5 text-amber-500 mt-0.5 shrink-0"}),(0,r.jsx)("p",{className:"text-sm font-medium leading-snug flex-1",children:e.title})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground leading-relaxed",children:e.why}),(0,r.jsx)(T,{rootId:t,item:e,router:u})]},s))}),o&&(0,r.jsxs)("p",{className:"text-[10px] text-muted-foreground pt-1",children:["Сгенерировано ",function(e){let t=Date.now()-Date.parse(e);if(!Number.isFinite(t)||t<0)return"только что";let s=Math.floor(t/6e4);if(s<1)return"только что";if(s<60)return"".concat(s," мин назад");let r=Math.floor(s/60);if(r<24)return"".concat(r," ч назад");let a=Math.floor(r/24);return"".concat(a," дн назад")}(o.generatedAt)," \xb7 модель"," ",(0,r.jsx)("code",{className:"font-mono",children:o.model})]})]})]})}function T(e){let{rootId:t,item:s,router:n}=e,[c,m]=(0,a.useTransition)(),{action:u}=s;if("none"===u.kind)return null;if("open-topic"===u.kind&&u.target)return(0,r.jsx)(l.$,{asChild:!0,size:"sm",variant:"outline",className:"h-7 text-xs gap-1",children:(0,r.jsxs)(d(),{href:"/roots/".concat(t,"/chat/").concat(u.target),children:[(0,r.jsx)(P.A,{className:"h-3 w-3"}),u.label]})});if("open-kb"===u.kind&&u.target){let e=u.target.split("/").map(encodeURIComponent).join("/");return(0,r.jsx)(l.$,{asChild:!0,size:"sm",variant:"outline",className:"h-7 text-xs gap-1",children:(0,r.jsxs)(d(),{href:"/roots/".concat(t,"/kb/").concat(e),children:[(0,r.jsx)(P.A,{className:"h-3 w-3"}),u.label]})})}return"send-message"===u.kind&&u.target?(0,r.jsxs)(l.$,{type:"button",size:"sm",variant:"outline",className:"h-7 text-xs gap-1",onClick:()=>{m(async()=>{try{let s=await (0,E.g)(t,u.target,[],void 0);if(!s.ok){var e;i.oR.error(null!=(e=s.error)?e:"Не удалось отправить");return}(0,o.$d)(o.Zi.topicsChanged(t)),n.push("/roots/".concat(t,"/chat/").concat(s.topicId))}catch(e){i.oR.error(e instanceof Error?e.message:String(e))}})},disabled:c,children:[c?(0,r.jsx)(x.A,{className:"h-3 w-3 animate-spin"}):(0,r.jsx)(I.A,{className:"h-3 w-3"}),u.label]}):null}var U=s(93305),L=s(41379);let Z=(0,k.createServerReference)("60afbe9218598a025910716350b7da3d1f25dc8551",k.callServer,void 0,k.findSourceMapURL,"saveWidgetOrderAction"),$=(0,k.createServerReference)("605362b2e26a2d673b1e77eeecd985018e93c84767",k.callServer,void 0,k.findSourceMapURL,"hideWidgetAction"),z={sm:2,md:3,wide:6},B=["sys:active-goals","sys:pending","sys:recent-kb","sys:ai-suggestions"],W=[{id:"sys:active-goals",title:"Active goals & running agents",description:"Темы с активным /goal и работающим оркестратором."},{id:"sys:pending",title:"Ждут реакции",description:"Карточки permission / question / mcp-add без ответа."},{id:"sys:recent-kb",title:"Свежее в KB",description:"KB-файлы, изменённые за последние 72 часа."},{id:"sys:ai-suggestions",title:"Что дальше — предложения Reflex",description:"Gemini-анализ состояния проекта с действиями."}],O=(0,k.createServerReference)("7007940b2ad4a7d018bd4fe10ab92fe11356b5c6ab",k.callServer,void 0,k.findSourceMapURL,"setWidgetSizeAction"),F=[{mode:"sm",label:"S",title:"Маленький — 3 в ряд"},{mode:"md",label:"M",title:"Средний — 2 в ряд"},{mode:"wide",label:"W",title:"Широкий — на всю строку"}];function _(e){let{rootId:t,widgetId:s,mode:n,onChanged:l}=e,[o,c]=(0,a.useTransition)();return(0,r.jsx)("div",{role:"radiogroup","aria-label":"Размер виджета",className:"inline-flex items-center rounded border bg-background/80 backdrop-blur overflow-hidden text-[10px] leading-none",children:F.map(e=>{let a=e.mode===n;return(0,r.jsx)("button",{type:"button",role:"radio","aria-checked":a,"aria-label":e.title,title:e.title,onClick:()=>{var r;(r=e.mode)!==n&&c(async()=>{let e=await O(t,s,r);if(!e.ok){var a;i.oR.error(null!=(a=e.error)?a:"Не удалось");return}l()})},disabled:o,className:["px-1.5 py-0.5 font-mono transition-colors disabled:opacity-50",a?"bg-violet-600 text-white":"text-muted-foreground hover:bg-accent hover:text-foreground"].join(" "),children:e.label},e.mode)})})}function q(e){let t=z[e];return 2===t?"lg:col-span-2":3===t?"lg:col-span-3":"lg:col-span-6"}var K=s(73600),V=s(76974),G=s(13561),H=s(72691),J=s(22841),X=s(48340);let Q=(0,k.createServerReference)("7865232a93a5724d9735c8c8d82014d823148c1f13",k.callServer,void 0,k.findSourceMapURL,"patchWidgetDataAction"),Y=(0,k.createServerReference)("7034bda2b43709756a11264aaeafd27c401249a315",k.callServer,void 0,k.findSourceMapURL,"setWidgetRefreshAction"),ee=(0,k.createServerReference)("60686b42d43e51bc24e3a97d81e12606a7988f52ef",k.callServer,void 0,k.findSourceMapURL,"refreshWidgetNowAction");function et(e){let{rootId:t,widget:s,mode:n,onHide:l,hiding:o,onLayoutChanged:c,dnd:m}=e,[x,u]=(0,a.useTransition)(),f=m.dragging===s.id,g=m.dropTarget===s.id&&!f,v=q(n);return(0,r.jsxs)(p.Zp,{draggable:!0,onDragStart:e=>{e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",s.id),m.onDragStart(s.id)},onDragOver:e=>{e.preventDefault(),e.dataTransfer.dropEffect="move",m.dropTarget!==s.id&&m.onDragOver(s.id)},onDrop:e=>{e.preventDefault(),m.onDrop(s.id)},onDragEnd:()=>m.onDragEnd(),className:[v,"transition-all",f?"opacity-50":"",g?"ring-2 ring-violet-400 ring-offset-2 ring-offset-background":""].join(" "),children:[(0,r.jsxs)(p.aR,{className:"pb-2 flex flex-row items-start gap-2 space-y-0",children:[(0,r.jsx)(K.A,{className:"h-3.5 w-3.5 text-muted-foreground/60 cursor-grab active:cursor-grabbing mt-1 shrink-0","aria-label":"Перетащить"}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)(p.ZB,{className:"text-sm flex items-center gap-2 flex-wrap",children:[(0,r.jsx)("span",{className:"truncate",children:s.title}),(0,r.jsx)(h.E,{variant:"outline",className:"text-[10px] font-mono shrink-0",children:s.kind})]}),s.description&&(0,r.jsx)("p",{className:"text-[11px] text-muted-foreground mt-0.5 line-clamp-2",children:s.description})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1 -mt-0.5 shrink-0",children:[(0,r.jsx)(_,{rootId:t,widgetId:s.id,mode:n,onChanged:c}),s.sourceTopicId&&(0,r.jsx)(d(),{href:"/roots/".concat(t,"/chat/").concat(s.sourceTopicId),className:"p-1 rounded hover:bg-accent text-muted-foreground hover:text-foreground","aria-label":"Редактировать через топик",title:"Открыть исходный топик для редактирования",children:(0,r.jsx)(V.A,{className:"h-3.5 w-3.5"})}),(0,r.jsx)("button",{type:"button",onClick:()=>u(async()=>{await Promise.resolve(),l(s.id)}),disabled:x||o,"aria-label":"Скрыть",title:"Скрыть (восстановишь из меню \xabбиблиотека виджетов\xbb)",className:"p-1 rounded hover:bg-destructive/15 text-muted-foreground hover:text-destructive",children:(0,r.jsx)(G.A,{className:"h-3.5 w-3.5"})})]})]}),(0,r.jsxs)(p.Wu,{className:"space-y-3",children:[(0,X.v)(t,s.kind,s.data,{onPatch:async e=>{let r=await Q(t,s.id,e);if(!r.ok){var a,n;throw i.oR.error(null!=(a=r.error)?a:"Не удалось сохранить"),Error(null!=(n=r.error)?n:"patch failed")}}}),(0,r.jsx)(es,{rootId:t,widget:s})]})]})}function es(e){var t,s;let{rootId:l,widget:o}=e,[c,d]=(0,a.useTransition)(),[m,x]=(0,a.useTransition)(),u=null!=(t=o.refresh)?t:"manual",h=null!=(s=o.lastRefreshAt)?s:o.updatedAt;return o.sourceTopicId?(0,r.jsxs)("div",{className:"flex items-center gap-2 pt-2 border-t text-[11px] text-muted-foreground",children:[(0,r.jsx)(H.A,{className:"h-3 w-3 shrink-0"}),(0,r.jsxs)("span",{className:"shrink-0",children:["обновлено ",function(e){let t=Date.now()-Date.parse(e);if(!Number.isFinite(t)||t<0)return"только что";let s=Math.floor(t/6e4);if(s<1)return"только что";if(s<60)return"".concat(s," мин назад");let r=Math.floor(s/60);if(r<24)return"".concat(r," ч назад");let a=Math.floor(r/24);return"".concat(a," дн назад")}(h)]}),(0,r.jsxs)("div",{className:"ml-auto flex items-center gap-1.5 shrink-0",children:[(0,r.jsxs)(J.l6,{value:u,onValueChange:e=>{x(async()=>{var t,s;let r=await Y(l,o.id,e);r.ok?i.oR.success("manual"===e?"Авто-обновление выключено":"Обновление: ".concat("hourly"===(s=e)?"раз в час":"daily"===s?"раз в день":"weekly"===s?"раз в неделю":"вручную")):i.oR.error(null!=(t=r.error)?t:"Не удалось")})},disabled:m,children:[(0,r.jsx)(J.bq,{className:"h-6 text-[10px] gap-1 px-1.5 w-auto min-w-[110px]",children:(0,r.jsx)(J.yv,{})}),(0,r.jsxs)(J.gC,{children:[(0,r.jsx)(J.eb,{value:"manual",children:"Вручную"}),(0,r.jsx)(J.eb,{value:"hourly",children:"Раз в час"}),(0,r.jsx)(J.eb,{value:"daily",children:"Раз в день"}),(0,r.jsx)(J.eb,{value:"weekly",children:"Раз в неделю"})]})]}),(0,r.jsxs)("button",{type:"button",onClick:()=>{d(async()=>{var e;let t=await ee(l,o.id);t.ok?i.oR.success("Запустил обновление — следи за исходным топиком"):i.oR.error(null!=(e=t.error)?e:"Не удалось")})},disabled:c,className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 hover:bg-accent text-foreground/80 hover:text-foreground",title:"Обновить сейчас (запустит исходный топик)",children:[(0,r.jsx)(n.A,{className:"h-3 w-3 ".concat(c?"animate-spin":"")}),"Обновить"]})]})]}):null}var er=s(84784),ea=s(41280),en=s(46972),ei=s(80192),el=s(56738);let eo=(0,k.createServerReference)("60bb023fd42492be923e052af2ff941201b645d49c",k.callServer,void 0,k.findSourceMapURL,"deleteWidgetAction");function ec(e){let{rootId:t,open:s,onOpenChange:n,widgets:i,layout:o,onChanged:c}=e;if((0,a.useEffect)(()=>{if(!s)return;let e=e=>{"Escape"===e.key&&n(!1)};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[s,n]),!s)return null;let d=new Set(o.hidden);return(0,r.jsxs)("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4",onClick:e=>{e.target===e.currentTarget&&n(!1)},children:[(0,r.jsx)("div",{"aria-hidden":!0,className:"absolute inset-0 bg-background/80 backdrop-blur-sm",onClick:()=>n(!1)}),(0,r.jsxs)("div",{className:"relative bg-card border rounded-lg shadow-xl w-full max-w-2xl max-h-[80vh] flex flex-col",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 px-4 py-3 border-b",children:[(0,r.jsx)(U.A,{className:"h-4 w-4 text-violet-600"}),(0,r.jsx)("h2",{className:"text-sm font-medium flex-1",children:"Библиотека виджетов"}),(0,r.jsx)(l.$,{type:"button",size:"icon",variant:"ghost",className:"h-7 w-7",onClick:()=>n(!1),children:(0,r.jsx)(G.A,{className:"h-4 w-4"})})]}),(0,r.jsx)(ei.F,{className:"flex-1 min-h-0",children:(0,r.jsxs)("div",{className:"p-4 space-y-4",children:[(0,r.jsxs)("section",{className:"space-y-2",children:[(0,r.jsx)("h3",{className:"text-[11px] uppercase tracking-wider text-muted-foreground",children:"Системные виджеты"}),W.map(e=>(0,r.jsx)(ed,{rootId:t,id:e.id,title:e.title,description:e.description,badge:"system",badgeVariant:"default",hidden:d.has(e.id),canDelete:!1,onChanged:c},e.id))]}),(0,r.jsxs)("section",{className:"space-y-2",children:[(0,r.jsxs)("h3",{className:"text-[11px] uppercase tracking-wider text-muted-foreground",children:["Виджеты пользователя (",i.length,")"]}),0===i.length&&(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:"Пока нет ни одного — попроси агента в чате что-то создать."}),i.map(e=>{var s;return(0,r.jsx)(ed,{rootId:t,id:e.id,title:e.title,description:null!=(s=e.description)?s:"kind: ".concat(e.kind),badge:e.kind,badgeVariant:"outline",hidden:d.has(e.id),canDelete:!0,onChanged:c},e.id)})]})]})})]})]})}function ed(e){let{rootId:t,id:s,title:n,description:o,badge:c,badgeVariant:d,hidden:m,canDelete:x,onChanged:u}=e,[p,f]=(0,a.useTransition)();return(0,r.jsxs)("div",{className:"flex items-start gap-3 rounded-md border bg-card px-3 py-2",children:[(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,r.jsx)("span",{className:"text-sm font-medium truncate",children:n}),(0,r.jsx)(h.E,{variant:d,className:"text-[10px] font-mono",children:c}),m&&(0,r.jsx)(h.E,{variant:"secondary",className:"text-[10px]",children:"скрыт"})]}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5 line-clamp-2",children:o})]}),(0,r.jsxs)("div",{className:"flex items-center gap-1 shrink-0",children:[(0,r.jsx)(l.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>{f(async()=>{let e=m?await (0,el.t)(t,s):await $(t,s);if(!e.ok)return void i.oR.error(e.error);u()})},disabled:p,className:"gap-1 h-7 text-xs",children:m?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(er.A,{className:"h-3 w-3"}),"Показать"]}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(ea.A,{className:"h-3 w-3"}),"Скрыть"]})}),x&&(0,r.jsx)(l.$,{type:"button",size:"icon",variant:"ghost",onClick:()=>{confirm("Удалить виджет \xab".concat(n,"\xbb? Восстановить будет нельзя."))&&f(async()=>{let e=await eo(t,s);if(!e.ok)return void i.oR.error(e.error);u()})},disabled:p,className:"h-7 w-7 text-muted-foreground hover:text-destructive",title:"Удалить навсегда",children:(0,r.jsx)(en.A,{className:"h-3.5 w-3.5"})})]})]})}function em(e){let{rootId:t,widgets:s,layout:n,systemRenderers:o,snapshot:c,onLayoutChanged:d}=e,m=(0,a.useMemo)(()=>{let e=new Map;for(let t of s)e.set(t.id,t);return e},[s]),[x,u]=(0,a.useState)(n.order),[h,p]=(0,a.useState)(n.hidden),[,f]=(0,a.useTransition)(),[g,v]=(0,a.useState)(null),[b,j]=(0,a.useState)(null),[N,w]=(0,a.useState)(!1);eu(n.order,u),eu(n.hidden,p);let y=(0,a.useCallback)(e=>{u(e),f(async()=>{let s=await Z(t,e);s.ok?(u(s.layout.order),p(s.layout.hidden),d()):i.oR.error(s.error)})},[t,d]),k=(0,a.useCallback)(e=>{u(x.filter(t=>t!==e)),p(t=>[...new Set([e,...t])]),f(async()=>{let s=await $(t,e);if(!s.ok)return void i.oR.error(s.error);u(s.layout.order),p(s.layout.hidden),d()})},[t,x,d]),A={onDragStart:e=>v(e),onDragOver:e=>j(e),onDrop:e=>{if(v(null),j(null),!g||g===e)return;let t=[...x],s=t.indexOf(g),r=t.indexOf(e);s<0||r<0||(t.splice(s,1),t.splice(r,0,g),y(t))},onDragEnd:()=>{v(null),j(null)},dragging:g,dropTarget:b};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h2",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:"Виджеты проекта"}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Перетаскивай для сортировки. Скрытые можно вернуть из библиотеки."})]}),(0,r.jsxs)(l.$,{type:"button",size:"sm",variant:"outline",onClick:()=>w(!0),className:"gap-1 h-8",children:[(0,r.jsx)(U.A,{className:"h-3.5 w-3.5"}),"Библиотека (",h.length," скрытых)"]})]}),0===x.length&&(0,r.jsxs)("div",{className:"rounded-md border border-dashed bg-muted/20 p-6 text-center space-y-2",children:[(0,r.jsxs)("p",{className:"text-sm text-muted-foreground",children:["На дашборде ничего не закреплено. Попроси агента в чате создать виджет — например"," ",(0,r.jsx)("em",{children:"\xabсделай сводку новостей по теме X\xbb"}),"."]}),(0,r.jsxs)(l.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>w(!0),className:"gap-1",children:[(0,r.jsx)(L.A,{className:"h-3 w-3"}),"Восстановить системные"]})]}),(0,r.jsx)("div",{className:"grid grid-cols-1 lg:grid-cols-6 gap-4",children:x.map(e=>{var s,a;let i=m.get(e),l=null==(s=n.sizes)?void 0:s[e],c=null!=l?l:(null==(a=null==i?void 0:i.size)?void 0:a.mode)?a.mode:(null==a?void 0:a.cols)===1?"sm":(null==a?void 0:a.cols)===2?"md":(null==a?void 0:a.cols)===3?"wide":"md";return B.includes(e)?(0,r.jsx)(ex,{rootId:t,id:e,node:o[e],onHide:k,dnd:A,mode:c,onLayoutChanged:d},e):i?(0,r.jsx)(et,{rootId:t,widget:i,mode:c,onHide:k,hiding:!1,dnd:A,onLayoutChanged:d},e):null})}),(0,r.jsx)(ec,{open:N,onOpenChange:w,rootId:t,widgets:s,layout:{order:x,hidden:h},onChanged:()=>{d()}})]})}function ex(e){let{rootId:t,id:s,node:a,onHide:n,dnd:i,mode:l,onLayoutChanged:o}=e,c=i.dragging===s,d=i.dropTarget===s&&!c,m=q(l);return(0,r.jsxs)("div",{draggable:!0,onDragStart:e=>{e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",s),i.onDragStart(s)},onDragOver:e=>{e.preventDefault(),e.dataTransfer.dropEffect="move",i.dropTarget!==s&&i.onDragOver(s)},onDrop:e=>{e.preventDefault(),i.onDrop(s)},onDragEnd:()=>i.onDragEnd(),className:[m,"relative group/sys transition-all",c?"opacity-50":"",d?"ring-2 ring-violet-400 ring-offset-2 ring-offset-background rounded-lg":""].join(" "),children:[a,(0,r.jsxs)("div",{className:"absolute top-2 right-2 opacity-0 group-hover/sys:opacity-100 transition-opacity flex items-center gap-1 bg-background/85 backdrop-blur rounded p-0.5",children:[(0,r.jsx)(_,{rootId:t,widgetId:s,mode:l,onChanged:o}),(0,r.jsx)("button",{type:"button",onClick:()=>n(s),"aria-label":"Скрыть",title:"Скрыть (восстановишь из библиотеки)",className:"p-1 rounded hover:bg-destructive/15 text-muted-foreground hover:text-destructive",children:"\xd7"})]})]})}function eu(e,t){(0,a.useMemo)(()=>{t(e)},[JSON.stringify(e)])}function eh(e){let{rootId:t,initialSnapshot:s}=e,[c,d]=(0,a.useState)(s),[m,x]=(0,a.useTransition)(),u=(0,a.useCallback)(()=>{x(async()=>{try{let s=await fetch("/api/roots/".concat(t,"/dashboard"),{cache:"no-store"}),r=await s.json();if(!r.ok||!r.snapshot){var e;i.oR.error(null!=(e=r.error)?e:"Не удалось обновить дашборд");return}d(r.snapshot)}catch(e){i.oR.error(e instanceof Error?e.message:String(e))}})},[t]);(0,o.S9)(o.Zi.topicsChanged(t),u),(0,o.S9)(o.Zi.kbChanged(t),u),(0,a.useEffect)(()=>{let e=window.setInterval(()=>{"visible"===document.visibilityState&&u()},3e4);return()=>window.clearInterval(e)},[u]);let h={"sys:active-goals":(0,r.jsx)(f,{rootId:t,activeGoals:c.activeGoals,runningAgents:c.runningAgents}),"sys:pending":(0,r.jsx)(N,{rootId:t,items:c.pendingApprovals}),"sys:recent-kb":(0,r.jsx)(R,{rootId:t,items:c.recentKb}),"sys:ai-suggestions":(0,r.jsx)(M,{rootId:t,cache:c.suggestions})};return(0,r.jsx)("div",{className:"flex-1 min-h-0 overflow-y-auto",children:(0,r.jsxs)("div",{className:"p-6 space-y-5 max-w-6xl mx-auto",children:[(0,r.jsxs)("div",{className:"flex items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsx)("h2",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:"Обзор проекта"}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground mt-0.5",children:"Перетаскивай блоки. Скрытые возвращаются из библиотеки. Виджеты создаются и обновляются через чат с агентом."})]}),(0,r.jsxs)(l.$,{type:"button",size:"sm",variant:"ghost",onClick:u,disabled:m,className:"gap-1 h-8",children:[(0,r.jsx)(n.A,{className:"h-3.5 w-3.5 ".concat(m?"animate-spin":"")}),"Обновить"]})]}),(0,r.jsx)(em,{rootId:t,widgets:c.widgets,layout:c.layout,systemRenderers:h,snapshot:c,onLayoutChanged:u})]})})}}},e=>{e.O(0,[4400,1217,3335,5097,3954,8775,8566,7238,8423,7951,2718,4933,146,7358],()=>e(e.s=35984)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6388],{13506:(e,t,s)=>{"use strict";s.d(t,{cn:()=>i});var a=s(47989),r=s(55701);function i(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,r.QP)((0,a.$)(t))}},15523:(e,t,s)=>{"use strict";s.d(t,{p:()=>i});var a=s(4624);s(99356);var r=s(13506);function i(e){let{className:t,type:s,...i}=e;return(0,a.jsx)("input",{type:s,"data-slot":"input",className:(0,r.cn)("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",t),...i})}},22841:(e,t,s)=>{"use strict";s.d(t,{bq:()=>u,eb:()=>m,gC:()=>p,l6:()=>d,yv:()=>c});var a=s(4624);s(99356);var r=s(69709),i=s(43153),n=s(59728),l=s(85314),o=s(13506);function d(e){let{...t}=e;return(0,a.jsx)(l.Root,{"data-slot":"select",...t})}function c(e){let{...t}=e;return(0,a.jsx)(l.Value,{"data-slot":"select-value",...t})}function u(e){let{className:t,size:s="default",children:i,...n}=e;return(0,a.jsxs)(l.Trigger,{"data-slot":"select-trigger","data-size":s,className:(0,o.cn)("flex w-fit items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[placeholder]:text-muted-foreground data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",t),...n,children:[i,(0,a.jsx)(l.Icon,{asChild:!0,children:(0,a.jsx)(r.A,{className:"size-4 opacity-50"})})]})}function p(e){let{className:t,children:s,position:r="item-aligned",align:i="center",...n}=e;return(0,a.jsx)(l.Portal,{children:(0,a.jsxs)(l.Content,{"data-slot":"select-content",className:(0,o.cn)("relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95","popper"===r&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:r,align:i,...n,children:[(0,a.jsx)(h,{}),(0,a.jsx)(l.Viewport,{className:(0,o.cn)("p-1","popper"===r&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:s}),(0,a.jsx)(x,{})]})})}function m(e){let{className:t,children:s,...r}=e;return(0,a.jsxs)(l.Item,{"data-slot":"select-item",className:(0,o.cn)("relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...r,children:[(0,a.jsx)("span",{"data-slot":"select-item-indicator",className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(l.ItemIndicator,{children:(0,a.jsx)(i.A,{className:"size-4"})})}),(0,a.jsx)(l.ItemText,{children:s})]})}function h(e){let{className:t,...s}=e;return(0,a.jsx)(l.ScrollUpButton,{"data-slot":"select-scroll-up-button",className:(0,o.cn)("flex cursor-default items-center justify-center py-1",t),...s,children:(0,a.jsx)(n.A,{className:"size-4"})})}function x(e){let{className:t,...s}=e;return(0,a.jsx)(l.ScrollDownButton,{"data-slot":"select-scroll-down-button",className:(0,o.cn)("flex cursor-default items-center justify-center py-1",t),...s,children:(0,a.jsx)(r.A,{className:"size-4"})})}},28310:(e,t,s)=>{"use strict";s.d(t,{E:()=>o});var a=s(4624);s(99356);var r=s(60621),i=s(50362),n=s(13506);let l=(0,r.F)("inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3",{variants:{variant:{default:"bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"bg-destructive text-white focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40 [a&]:hover:bg-destructive/90",outline:"border-border text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",ghost:"[a&]:hover:bg-accent [a&]:hover:text-accent-foreground",link:"text-primary underline-offset-4 [a&]:hover:underline"}},defaultVariants:{variant:"default"}});function o(e){let{className:t,variant:s="default",asChild:r=!1,...o}=e,d=r?i.bL:"span";return(0,a.jsx)(d,{"data-slot":"badge","data-variant":s,className:(0,n.cn)(l({variant:s}),t),...o})}},41379:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(45804).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},43153:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(45804).A)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},46972:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(45804).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},52515:(e,t,s)=>{Promise.resolve().then(s.bind(s,76190)),Promise.resolve().then(s.bind(s,91074)),Promise.resolve().then(s.bind(s,96253)),Promise.resolve().then(s.bind(s,28050)),Promise.resolve().then(s.bind(s,94904)),Promise.resolve().then(s.bind(s,13270)),Promise.resolve().then(s.bind(s,99730)),Promise.resolve().then(s.bind(s,89146)),Promise.resolve().then(s.bind(s,19078)),Promise.resolve().then(s.bind(s,67854)),Promise.resolve().then(s.bind(s,69050)),Promise.resolve().then(s.bind(s,63739)),Promise.resolve().then(s.bind(s,33976)),Promise.resolve().then(s.bind(s,12537)),Promise.resolve().then(s.bind(s,97485)),Promise.resolve().then(s.bind(s,41923)),Promise.resolve().then(s.bind(s,73868)),Promise.resolve().then(s.bind(s,53511)),Promise.resolve().then(s.bind(s,2018)),Promise.resolve().then(s.bind(s,18487)),Promise.resolve().then(s.bind(s,98346)),Promise.resolve().then(s.bind(s,14884)),Promise.resolve().then(s.bind(s,85314)),Promise.resolve().then(s.bind(s,17280)),Promise.resolve().then(s.bind(s,8855)),Promise.resolve().then(s.bind(s,86631)),Promise.resolve().then(s.bind(s,2604)),Promise.resolve().then(s.bind(s,27237)),Promise.resolve().then(s.bind(s,49455)),Promise.resolve().then(s.bind(s,39211)),Promise.resolve().then(s.bind(s,56360)),Promise.resolve().then(s.t.bind(s,54400,23))},59728:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(45804).A)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])},60621:(e,t,s)=>{"use strict";s.d(t,{F:()=>n});var a=s(47989);let r=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,i=a.$,n=(e,t)=>s=>{var a;if((null==t?void 0:t.variants)==null)return i(e,null==s?void 0:s.class,null==s?void 0:s.className);let{variants:n,defaultVariants:l}=t,o=Object.keys(n).map(e=>{let t=null==s?void 0:s[e],a=null==l?void 0:l[e];if(null===t)return null;let i=r(t)||r(a);return n[e][i]}),d=s&&Object.entries(s).reduce((e,t)=>{let[s,a]=t;return void 0===a||(e[s]=a),e},{});return i(e,o,null==t||null==(a=t.compoundVariants)?void 0:a.reduce((e,t)=>{let{class:s,className:a,...r}=t;return Object.entries(r).every(e=>{let[t,s]=e;return Array.isArray(s)?s.includes({...l,...d}[t]):({...l,...d})[t]===s})?[...e,s,a]:e},[]),null==s?void 0:s.class,null==s?void 0:s.className)}},65714:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(45804).A)("Save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]])},67805:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(45804).A)("Play",[["polygon",{points:"6 3 20 12 6 21 6 3",key:"1oa8hb"}]])},69285:(e,t,s)=>{"use strict";var a=s(48849);s.o(a,"usePathname")&&s.d(t,{usePathname:function(){return a.usePathname}}),s.o(a,"useRouter")&&s.d(t,{useRouter:function(){return a.useRouter}})},69709:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(45804).A)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},71651:(e,t,s)=>{"use strict";s.d(t,{T:()=>i});var a=s(4624);s(99356);var r=s(13506);function i(e){let{className:t,...s}=e;return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,r.cn)("flex field-sizing-content min-h-16 w-full rounded-md border border-input bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:aria-invalid:ring-destructive/40",t),...s})}},76190:(e,t,s)=>{"use strict";s.d(t,{WorkflowEditor:()=>C});var a=s(4624),r=s(99356),i=s(69285),n=s(3239),l=s(46972),o=s(67805),d=s(41379),c=s(59728),u=s(69709),p=s(76974),m=s(65714),h=s(54400),x=s.n(h),v=s(56221),b=s(28310),f=s(85253),g=s(15523),y=s(71651),j=s(22841),k=s(7911);let N=(0,k.createServerReference)("6018a4c69e6b0fe349d5152bc050d9013307b93c18",k.callServer,void 0,k.findSourceMapURL,"saveWorkflowAction"),w=(0,k.createServerReference)("609613bce619f95a565b3616b9187bfced1c3c11b1",k.callServer,void 0,k.findSourceMapURL,"listRunsAction"),P=(0,k.createServerReference)("70f8a1f57f8cc5bf547f966047ee124732e11af05e",k.callServer,void 0,k.findSourceMapURL,"runWorkflowAction"),z=(0,k.createServerReference)("60a31e39dc8091a0fe18868a2154b6a1e823d3e384",k.callServer,void 0,k.findSourceMapURL,"deleteWorkflowAction"),A=[{kind:"text-template",label:"Шаблон текста",description:"Собирает текст из шаблона с подстановками из предыдущих шагов. Используй как \xabсклейку\xbb данных перед следующим шагом.",defaultParams:{template:"Hello {{prev}}"},fields:[{key:"template",label:"Шаблон",type:"text",hint:"Подстановки: {{prev}}, {{steps.<id>.output}}, {{input.<field>}}",placeholder:"Сводка: {{prev}}"}]},{kind:"http-request",label:"HTTP-запрос",description:"Делает HTTP-запрос (GET по умолчанию). Тело ответа кладёт в output как строку или JSON, если application/json.",defaultParams:{url:"https://api.example.com/",method:"GET"},fields:[{key:"url",label:"URL",type:"url",placeholder:"https://…"},{key:"method",label:"Метод",type:"select",options:["GET","POST","PUT","PATCH","DELETE"]},{key:"headers",label:"Headers (JSON)",type:"json",hint:'Например: {"Authorization":"Bearer …"}'},{key:"body",label:"Body",type:"text",hint:"Пусто для GET"}]},{kind:"web-fetch",label:"Скачать страницу",description:"Запрашивает URL и возвращает текстовое содержимое. Удобно для парсинга страниц без боли HTTP-настроек.",defaultParams:{url:"https://example.com"},fields:[{key:"url",label:"URL",type:"url",placeholder:"https://…"}]},{kind:"ask-agent",label:"Спросить агента",description:"Запустить headless orchestrator-агента с указанным вопросом. Output — ответ агента (полный текст ассистента).",defaultParams:{prompt:"Кратко суммаризируй: {{prev}}"},fields:[{key:"prompt",label:"Вопрос агенту",type:"text",placeholder:"Используй {{prev}} чтобы передать вход"}]},{kind:"kb-write",label:"Записать в KB",description:"Сохраняет в базу знаний как Markdown-файл с frontmatter (kind, title, body). Используй output предыдущего шага как `body`.",defaultParams:{kind:"note",title:"Из workflow {{workflow.label}}",body:"{{prev}}"},fields:[{key:"kind",label:"Kind",type:"string",placeholder:"note"},{key:"title",label:"Title",type:"string",placeholder:"{{workflow.label}}"},{key:"body",label:"Body (Markdown)",type:"text",placeholder:"{{prev}}"}]},{kind:"utility-call",label:"Вызвать мини-приложение",description:"Запускает named server-action установленной утилиты с переданными args. Output = результат action. utility-call позволяет workflow'у пользоваться функциями мини-приложений как библиотекой.",defaultParams:{utilityId:"",utilityScope:"global",actionName:"",args:"{}"},fields:[{key:"utilityId",label:"Утилита (id)",type:"string",placeholder:"my-utility"},{key:"utilityScope",label:"Scope",type:"select",options:["global","project"]},{key:"actionName",label:"Действие",type:"string",placeholder:"имя из manifest.serverActions"},{key:"args",label:"Аргументы (JSON)",type:"json",hint:"Передаются как первый аргумент action. Подстановки {{prev}} работают внутри строк JSON."}]},{kind:"image-generate",label:"Сгенерировать картинку",description:"Генерирует картинку через Gemini Nano Banana или Codex `$imagegen`. Output: {url, sha, mime, provider} — `url` можно вставить в kb-write body как `![]({{steps.<id>.output.url}})`.",defaultParams:{prompt:"симпатичный енот в скафандре, акварель",provider:"gemini",aspectRatio:"1:1"},fields:[{key:"prompt",label:"Промпт",type:"text",placeholder:"Описание картинки"},{key:"provider",label:"Провайдер",type:"select",options:["gemini","codex"]},{key:"aspectRatio",label:"Соотношение",type:"select",options:["1:1","16:9","9:16","4:3","3:4","21:9"]},{key:"size",label:"Размер (опц.)",type:"string",placeholder:"1024x1024"}]},{kind:"image-search",label:"Найти картинки в сети",description:"Ищет готовые изображения по запросу (Unsplash по умолчанию, Pexels как fallback). Output: {results: [{url, thumb, attribution}…]}.",defaultParams:{query:"mountains sunrise",provider:"unsplash",count:6},fields:[{key:"query",label:"Запрос",type:"string",placeholder:"mountains sunrise"},{key:"provider",label:"Провайдер",type:"select",options:["unsplash","pexels","brave"]},{key:"count",label:"Сколько результатов",type:"string",placeholder:"6"}]}];function S(e){var t;return null!=(t=A.find(t=>t.kind===e))?t:null}function C(e){var t;let{rootId:s,initial:c,initialRuns:u}=e,p=(0,i.useRouter)(),[m,h]=(0,r.useState)(c),[b,y]=(0,r.useState)(u),[k,C]=(0,r.useState)(null),[O,_]=(0,r.useState)("closed"),[M,E]=(0,r.useTransition)(),[I,$]=(0,r.useTransition)(),L=e=>{h(e),$(async()=>{var t;let a=await N(s,e);a.ok||v.oR.error(null!=(t=a.error)?t:"Не удалось сохранить")})},U=async()=>{let e=await w(s,m.id);e.ok&&y(e.runs)},V=(e,t)=>{let s=e+t;if(s<0||s>=m.steps.length)return;let a=[...m.steps],r=a[e],i=a[s];a[e]=i,a[s]=r,L({...m,steps:a,updatedAt:new Date().toISOString()})};return(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"rounded-md border bg-card p-4 space-y-3",children:[(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:"Название"}),(0,a.jsx)(g.p,{value:m.label,onChange:e=>L({...m,label:e.target.value}),className:"text-sm"})]}),(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:"Описание"}),(0,a.jsx)(g.p,{value:null!=(t=m.description)?t:"",onChange:e=>L({...m,description:e.target.value}),className:"text-sm",placeholder:"Что делает workflow"})]}),(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsx)("label",{className:"text-xs font-medium text-muted-foreground",children:"Триггер"}),(0,a.jsxs)(j.l6,{value:m.trigger,onValueChange:e=>L({...m,trigger:e}),children:[(0,a.jsx)(j.bq,{className:"h-8 w-32",children:(0,a.jsx)(j.yv,{})}),(0,a.jsxs)(j.gC,{children:[(0,a.jsx)(j.eb,{value:"manual",children:"Вручную"}),(0,a.jsx)(j.eb,{value:"hourly",children:"Раз в час"}),(0,a.jsx)(j.eb,{value:"daily",children:"Раз в день"}),(0,a.jsx)(j.eb,{value:"weekly",children:"Раз в неделю"})]})]})]}),m.sourceTopicId&&(0,a.jsx)(x(),{href:"/roots/".concat(s,"/chat/").concat(m.sourceTopicId),className:"text-xs text-muted-foreground hover:underline self-end pb-2",children:"Редактировать через топик →"}),(0,a.jsxs)("div",{className:"ml-auto flex items-center gap-2 self-end pb-1",children:[I&&(0,a.jsxs)("span",{className:"text-[11px] text-muted-foreground",children:[(0,a.jsx)(n.A,{className:"h-3 w-3 animate-spin inline mr-1"}),"сохранение…"]}),(0,a.jsxs)(f.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>{confirm("Удалить workflow \xab".concat(m.label,"\xbb? Это необратимо."))&&$(async()=>{let e=await z(s,m.id);if(!e.ok)return void v.oR.error(e.error);p.push("/roots/".concat(s,"/workflows"))})},disabled:I,className:"text-muted-foreground hover:text-destructive",children:[(0,a.jsx)(l.A,{className:"h-3.5 w-3.5 mr-1"}),"Удалить"]}),(0,a.jsxs)(f.$,{type:"button",size:"sm",onClick:()=>{E(async()=>{let e=await P(s,m.id);if(!e.ok)return void v.oR.error(e.error);"completed"===e.run.status?v.oR.success("Workflow выполнен"):"failed"===e.run.status&&v.oR.error("Workflow упал — детали в run history"),U()})},disabled:M||0===m.steps.length,className:"gap-1",children:[M?(0,a.jsx)(n.A,{className:"h-3.5 w-3.5 animate-spin"}):(0,a.jsx)(o.A,{className:"h-3.5 w-3.5"}),"Запустить"]})]})]})]}),(0,a.jsxs)("section",{className:"space-y-2",children:[(0,a.jsxs)("h2",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:["Шаги (",m.steps.length,")"]}),m.steps.map((e,t)=>(0,a.jsx)(R,{step:e,idx:t,total:m.steps.length,editing:k===e.id,onToggleEdit:()=>C(k===e.id?null:e.id),onMoveUp:()=>V(t,-1),onMoveDown:()=>V(t,1),onRemove:()=>(e=>{let t=m.steps.filter((t,s)=>s!==e);L({...m,steps:t,updatedAt:new Date().toISOString()})})(t),onChange:e=>((e,t)=>{let s=m.steps.map((s,a)=>a===e?{...s,...t}:s);L({...m,steps:s,updatedAt:new Date().toISOString()})})(t,e)},e.id)),"open"===O?(0,a.jsxs)("div",{className:"rounded-md border bg-card p-3 space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("h3",{className:"text-xs font-medium",children:"Выбери тип шага"}),(0,a.jsx)(f.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>_("closed"),className:"h-6 text-xs",children:"Отмена"})]}),(0,a.jsx)("div",{className:"grid gap-1.5",children:A.map(e=>(0,a.jsxs)("button",{type:"button",onClick:()=>(e=>{let t=S(e);if(!t)return;let s=function(e,t){let s=t.replace(/[^a-z0-9]/gi,"-"),a=1;for(;e.some(e=>e.id==="".concat(s,"-").concat(a));)a+=1;return"".concat(s,"-").concat(a)}(m.steps,e);L({...m,steps:[...m.steps,{id:s,kind:e,label:t.label,params:{...t.defaultParams}}],updatedAt:new Date().toISOString()}),_("closed"),C(s)})(e.kind),className:"text-left rounded-md border px-3 py-2 hover:bg-accent/60 transition",children:[(0,a.jsx)("div",{className:"text-sm font-medium",children:e.label}),(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground mt-0.5",children:e.description})]},e.kind))})]}):(0,a.jsxs)(f.$,{type:"button",variant:"outline",size:"sm",onClick:()=>_("open"),className:"w-full gap-1 border-dashed",children:[(0,a.jsx)(d.A,{className:"h-3.5 w-3.5"}),"Добавить шаг"]})]}),(0,a.jsx)(T,{runs:b,onRefresh:U})]})}function R(e){let{step:t,idx:s,total:r,editing:i,onToggleEdit:n,onMoveUp:o,onMoveDown:d,onRemove:h,onChange:x}=e,v=S(t.kind);return(0,a.jsxs)("div",{className:"rounded-md border bg-card overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 group",children:[(0,a.jsx)("span",{className:"text-[10px] font-mono text-muted-foreground w-6 text-center shrink-0",children:s+1}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap",children:[(0,a.jsx)("span",{className:"text-sm font-medium truncate",children:t.label}),(0,a.jsx)(b.E,{variant:"outline",className:"text-[10px] font-mono",children:t.kind})]}),v&&(0,a.jsx)("p",{className:"text-[11px] text-muted-foreground line-clamp-1 mt-0.5",children:v.description})]}),(0,a.jsxs)("div",{className:"flex items-center gap-0.5 shrink-0",children:[(0,a.jsx)(f.$,{type:"button",size:"icon",variant:"ghost",onClick:o,disabled:0===s,className:"h-7 w-7",children:(0,a.jsx)(c.A,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(f.$,{type:"button",size:"icon",variant:"ghost",onClick:d,disabled:s===r-1,className:"h-7 w-7",children:(0,a.jsx)(u.A,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(f.$,{type:"button",size:"icon",variant:"ghost",onClick:n,className:"h-7 w-7",children:(0,a.jsx)(p.A,{className:"h-3.5 w-3.5"})}),(0,a.jsx)(f.$,{type:"button",size:"icon",variant:"ghost",onClick:h,className:"h-7 w-7 text-muted-foreground hover:text-destructive",children:(0,a.jsx)(l.A,{className:"h-3.5 w-3.5"})})]})]}),i&&(0,a.jsxs)("div",{className:"border-t bg-muted/30 px-3 py-3 space-y-2.5",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",children:"Label"}),(0,a.jsx)(g.p,{value:t.label,onChange:e=>x({label:e.target.value}),className:"h-8 text-sm"})]}),null==v?void 0:v.fields.map(e=>{var s;let r=null!=(s=t.params[e.key])?s:"";return(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)("label",{className:"text-[11px] font-medium text-muted-foreground",children:e.label}),"select"===e.type&&e.options?(0,a.jsxs)(j.l6,{value:String(r||e.options[0]),onValueChange:s=>x({params:{...t.params,[e.key]:s}}),children:[(0,a.jsx)(j.bq,{className:"h-8 text-sm",children:(0,a.jsx)(j.yv,{})}),(0,a.jsx)(j.gC,{children:e.options.map(e=>(0,a.jsx)(j.eb,{value:e,children:e},e))})]}):"text"===e.type||"json"===e.type?(0,a.jsx)(y.T,{value:String(r),onChange:s=>x({params:{...t.params,[e.key]:s.target.value}}),placeholder:e.placeholder,rows:3,className:"text-sm font-mono"}):(0,a.jsx)(g.p,{value:String(r),onChange:s=>x({params:{...t.params,[e.key]:s.target.value}}),placeholder:e.placeholder,className:"h-8 text-sm font-mono"}),e.hint&&(0,a.jsx)("p",{className:"text-[10px] text-muted-foreground",children:e.hint})]},e.key)}),(0,a.jsx)("div",{className:"flex justify-end",children:(0,a.jsxs)(f.$,{type:"button",size:"sm",variant:"ghost",onClick:n,className:"h-7 text-xs gap-1",children:[(0,a.jsx)(m.A,{className:"h-3 w-3"}),"Готово"]})})]})]})}function T(e){let{runs:t,onRefresh:s}=e,[i,l]=(0,r.useTransition)();return 0===t.length?(0,a.jsxs)("section",{className:"space-y-2",children:[(0,a.jsx)("h2",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:"История запусков"}),(0,a.jsx)("p",{className:"text-xs text-muted-foreground",children:"Пока пусто."})]}):(0,a.jsxs)("section",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("h2",{className:"text-sm font-medium text-muted-foreground uppercase tracking-wider",children:"История запусков"}),(0,a.jsx)(f.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>l(async()=>s()),disabled:i,className:"h-7 text-xs",children:i?(0,a.jsx)(n.A,{className:"h-3 w-3 animate-spin"}):"Обновить"})]}),(0,a.jsx)("ul",{className:"space-y-1.5",children:t.map(e=>(0,a.jsx)("li",{children:(0,a.jsxs)("details",{className:"rounded-md border bg-card",children:[(0,a.jsxs)("summary",{className:"cursor-pointer list-none flex items-center gap-2 px-3 py-2",children:[(0,a.jsx)(b.E,{variant:"completed"===e.status?"secondary":"failed"===e.status?"destructive":"outline",className:"text-[10px]",children:e.status}),(0,a.jsx)("span",{className:"text-xs font-mono truncate",children:e.id}),(0,a.jsx)("span",{className:"text-[10px] text-muted-foreground ml-auto",children:new Date(e.startedAt).toLocaleString()})]}),(0,a.jsx)("div",{className:"px-3 pb-3 space-y-1.5",children:e.steps.map(e=>(0,a.jsxs)("div",{className:"text-xs rounded border bg-muted/30 px-2 py-1.5",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(b.E,{variant:"completed"===e.status?"secondary":"failed"===e.status?"destructive":"outline",className:"text-[10px]",children:e.status}),(0,a.jsx)("span",{className:"font-mono",children:e.stepId})]}),e.error&&(0,a.jsx)("pre",{className:"mt-1 text-[10px] text-destructive whitespace-pre-wrap",children:e.error}),void 0!==e.output&&(0,a.jsx)("pre",{className:"mt-1 text-[10px] text-muted-foreground whitespace-pre-wrap max-h-32 overflow-y-auto font-mono",children:function(e){try{if("string"==typeof e)return e.length>800?e.slice(0,800)+"…":e;let t=JSON.stringify(e,null,2);return t.length>800?t.slice(0,800)+"…":t}catch(t){return String(e)}}(e.output)})]},e.stepId))})]})},e.id))})]})}},76974:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(45804).A)("Pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])},85253:(e,t,s)=>{"use strict";s.d(t,{$:()=>o});var a=s(4624);s(99356);var r=s(60621),i=s(50362),n=s(13506);let l=(0,r.F)("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function o(e){let{className:t,variant:s="default",size:r="default",asChild:o=!1,...d}=e,c=o?i.bL:"button";return(0,a.jsx)(c,{"data-slot":"button","data-variant":s,"data-size":r,className:(0,n.cn)(l({variant:s,size:r,className:t})),...d})}},91074:(e,t,s)=>{"use strict";s.d(t,{Separator:()=>n});var a=s(4624);s(99356);var r=s(44188),i=s(13506);function n(e){let{className:t,orientation:s="horizontal",decorative:n=!0,...l}=e;return(0,a.jsx)(r.b,{"data-slot":"separator",decorative:n,orientation:s,className:(0,i.cn)("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t),...l})}}},e=>{e.O(0,[4400,1217,3335,5097,4933,146,7358],()=>e(e.s=52515)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9429],{3747:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(45804).A)("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"}]])},4959:(e,t,r)=>{"use strict";r.d(t,{BT:()=>l,Wu:()=>d,ZB:()=>o,Zp:()=>n,aR:()=>i,wL:()=>c});var s=r(4624);r(99356);var a=r(13506);function n(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card",className:(0,a.cn)("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm",t),...r})}function i(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-2 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...r})}function o(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",t),...r})}function l(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",t),...r})}function d(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",t),...r})}function c(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-footer",className:(0,a.cn)("flex items-center px-6 [.border-t]:pt-6",t),...r})}},9923:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(45804).A)("Folder",[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},13506:(e,t,r)=>{"use strict";r.d(t,{cn:()=>n});var s=r(47989),a=r(55701);function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,s.$)(t))}},13561:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(45804).A)("X",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},15523:(e,t,r)=>{"use strict";r.d(t,{p:()=>n});var s=r(4624);r(99356);var a=r(13506);function n(e){let{className:t,type:r,...n}=e;return(0,s.jsx)("input",{type:r,"data-slot":"input",className:(0,a.cn)("h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm dark:bg-input/30","focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50","aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",t),...n})}},32740:(e,t,r)=>{Promise.resolve().then(r.bind(r,73381)),Promise.resolve().then(r.bind(r,96253)),Promise.resolve().then(r.bind(r,28050)),Promise.resolve().then(r.bind(r,94904)),Promise.resolve().then(r.bind(r,13270)),Promise.resolve().then(r.bind(r,99730)),Promise.resolve().then(r.bind(r,89146)),Promise.resolve().then(r.bind(r,19078)),Promise.resolve().then(r.bind(r,67854)),Promise.resolve().then(r.bind(r,69050)),Promise.resolve().then(r.bind(r,63739)),Promise.resolve().then(r.bind(r,33976)),Promise.resolve().then(r.bind(r,12537)),Promise.resolve().then(r.bind(r,97485)),Promise.resolve().then(r.bind(r,41923)),Promise.resolve().then(r.bind(r,73868)),Promise.resolve().then(r.bind(r,53511)),Promise.resolve().then(r.bind(r,2018)),Promise.resolve().then(r.bind(r,18487)),Promise.resolve().then(r.bind(r,98346)),Promise.resolve().then(r.bind(r,14884)),Promise.resolve().then(r.bind(r,85314)),Promise.resolve().then(r.bind(r,17280)),Promise.resolve().then(r.bind(r,8855)),Promise.resolve().then(r.bind(r,86631)),Promise.resolve().then(r.bind(r,2604)),Promise.resolve().then(r.bind(r,27237)),Promise.resolve().then(r.bind(r,49455)),Promise.resolve().then(r.bind(r,39211)),Promise.resolve().then(r.bind(r,56360)),Promise.resolve().then(r.t.bind(r,54400,23))},42146:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(45804).A)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 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.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]])},59728:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(45804).A)("ChevronUp",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])},60621:(e,t,r)=>{"use strict";r.d(t,{F:()=>i});var s=r(47989);let a=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,n=s.$,i=(e,t)=>r=>{var s;if((null==t?void 0:t.variants)==null)return n(e,null==r?void 0:r.class,null==r?void 0:r.className);let{variants:i,defaultVariants:o}=t,l=Object.keys(i).map(e=>{let t=null==r?void 0:r[e],s=null==o?void 0:o[e];if(null===t)return null;let n=a(t)||a(s);return i[e][n]}),d=r&&Object.entries(r).reduce((e,t)=>{let[r,s]=t;return void 0===s||(e[r]=s),e},{});return n(e,l,null==t||null==(s=t.compoundVariants)?void 0:s.reduce((e,t)=>{let{class:r,className:s,...a}=t;return Object.entries(a).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...o,...d}[t]):({...o,...d})[t]===r})?[...e,r,s]:e},[]),null==r?void 0:r.class,null==r?void 0:r.className)}},63514:(e,t,r)=>{"use strict";r.d(t,{$d:()=>n,S9:()=>i,Zi:()=>a});var s=r(99356);let a={rootsChanged:"reflex:roots-changed",topicsChanged:e=>"reflex:topics-changed:".concat(e),kbChanged:e=>"reflex:kb-changed:".concat(e)};function n(e,t){window.dispatchEvent(new CustomEvent(e,{detail:t}))}function i(e,t){(0,s.useEffect)(()=>{let r=e=>t(e.detail);return window.addEventListener(e,r),()=>window.removeEventListener(e,r)},[e,t])}},69205:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(45804).A)("ChevronRight",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},69285:(e,t,r)=>{"use strict";var s=r(48849);r.o(s,"usePathname")&&r.d(t,{usePathname:function(){return s.usePathname}}),r.o(s,"useRouter")&&r.d(t,{useRouter:function(){return s.useRouter}})},69709:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(45804).A)("ChevronDown",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},72754:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(45804).A)("FolderPlus",[["path",{d:"M12 10v6",key:"1bos4e"}],["path",{d:"M9 13h6",key:"1uhe8q"}],["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]])},73381:(e,t,r)=>{"use strict";r.d(t,{DirectoryPicker:()=>S});var s=r(4624),a=r(99356),n=r(69285);let i=(0,r(45804).A)("House",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]);var o=r(3747),l=r(59728),d=r(42146),c=r(72754),u=r(3239),h=r(13561),m=r(69709),x=r(69205),v=r(9923),p=r(56221),f=r(85253),b=r(4959),g=r(15523),j=r(80192),y=r(91074),w=r(7911);let k=(0,w.createServerReference)("4036f6a7f10afef6aa91f8638db1fff8e557adf59a",w.callServer,void 0,w.findSourceMapURL,"addRootAction");var N=r(63514);let P=(0,w.createServerReference)("40f4d9c48acd9193bb190e7b6ad761435300ecdfe9",w.callServer,void 0,w.findSourceMapURL,"browseAction"),A=(0,w.createServerReference)("6082957f0ed603aad2f13da699fe263070da99b519",w.callServer,void 0,w.findSourceMapURL,"createDirectoryAction");function S(e){let{initialPath:t}=e,[r,m]=(0,a.useState)(t),[x,v]=(0,a.useState)(t),[w,S]=(0,a.useState)(null),[C,D]=(0,a.useState)([]),[$,_]=(0,a.useState)(t),[F,E]=(0,a.useState)(!1),[H,T]=(0,a.useTransition)(),[Z,O]=(0,a.useTransition)(),[V,B]=(0,a.useState)(!1),[U,q]=(0,a.useState)(""),[W,K]=(0,a.useTransition)(),Q=(0,n.useRouter)();(0,a.useEffect)(()=>{X(t)},[]);let X=e=>{T(async()=>{let t=await P(e);if(!t.ok){var r;p.oR.error(null!=(r=t.error)?r:"Failed to browse");return}m(t.path),v(t.path),S(t.parent),_(t.path),D(t.entries.filter(e=>e.isDir).map(e=>R(e.name,e.absPath,e.hidden)))})},G=async e=>{let t=function e(t,r){for(let s of t){if(s.absPath===r)return s;if(s.expanded){let t=e(s.children,r);if(t)return t}}return null}(C,e);if(!t)return;if(t.expanded)return void D(t=>L(t,e,e=>({...e,expanded:!1})));if(t.loaded)return void D(t=>L(t,e,e=>({...e,expanded:!0})));D(t=>L(t,e,e=>({...e,loading:!0})));let r=await P(e);if(!r.ok){var s;p.oR.error(null!=(s=r.error)?s:"Failed to browse"),D(t=>L(t,e,e=>({...e,loading:!1})));return}let a=r.entries.filter(e=>e.isDir).map(e=>R(e.name,e.absPath,e.hidden));D(t=>L(t,e,e=>({...e,loading:!1,loaded:!0,expanded:!0,children:a})))},I=async e=>{if(e===r){let t=await P(e);t.ok&&D(t.entries.filter(e=>e.isDir).map(e=>R(e.name,e.absPath,e.hidden)));return}let t=await P(e);if(!t.ok)return;let s=t.entries.filter(e=>e.isDir).map(e=>R(e.name,e.absPath,e.hidden));D(t=>L(t,e,e=>({...e,children:s,loaded:!0,expanded:!0})))};return(0,s.jsxs)(b.Zp,{children:[(0,s.jsxs)(b.aR,{children:[(0,s.jsxs)(b.ZB,{className:"flex items-center justify-between gap-4",children:[(0,s.jsx)("span",{children:"Browse"}),(0,s.jsxs)(f.$,{variant:"ghost",size:"sm",onClick:()=>X(t),disabled:H,children:[(0,s.jsx)(i,{className:"mr-1 h-4 w-4"})," Home"]})]}),(0,s.jsxs)("form",{className:"flex gap-2 mt-2",onSubmit:e=>{e.preventDefault(),X(x)},children:[(0,s.jsx)(g.p,{value:x,onChange:e=>v(e.target.value),placeholder:"/absolute/path",className:"font-mono text-xs"}),(0,s.jsx)(f.$,{type:"submit",variant:"secondary",disabled:H,children:(0,s.jsx)(o.A,{className:"h-4 w-4 ".concat(H?"animate-spin":"")})})]})]}),(0,s.jsx)(y.Separator,{}),(0,s.jsx)(b.Wu,{className:"px-2 py-2",children:(0,s.jsxs)(j.F,{className:"h-[460px]",children:[(0,s.jsxs)("div",{className:"px-2 py-1 flex items-center gap-2",children:[(0,s.jsxs)(f.$,{variant:"ghost",size:"sm",disabled:!w||H,onClick:()=>w&&X(w),className:"h-8",children:[(0,s.jsx)(l.A,{className:"mr-1 h-4 w-4"})," Up"]}),(0,s.jsxs)("button",{type:"button",onClick:()=>_(r),className:"flex-1 flex items-center gap-2 px-2 py-1 text-sm rounded-md hover:bg-accent ".concat($===r?"bg-accent":""),title:r,children:[(0,s.jsx)(d.A,{className:"h-4 w-4 text-muted-foreground shrink-0"}),(0,s.jsx)("span",{className:"truncate font-mono text-xs",children:"."}),(0,s.jsxs)("span",{className:"text-muted-foreground text-[11px] truncate",children:["(",M(r),")"]})]}),(0,s.jsxs)(f.$,{variant:"ghost",size:"sm",disabled:H||W,onClick:()=>{B(e=>!e),q("")},className:"h-8",title:"Создать папку в ".concat(M($)),children:[(0,s.jsx)(c.A,{className:"mr-1 h-4 w-4"})," Создать"]}),(0,s.jsxs)("label",{className:"flex items-center gap-1 text-xs text-muted-foreground select-none",children:[(0,s.jsx)("input",{type:"checkbox",checked:F,onChange:e=>E(e.target.checked)}),"hidden"]})]}),V&&(0,s.jsxs)("form",{className:"px-2 pb-2 flex items-center gap-2",onSubmit:e=>{e.preventDefault();let t=U.trim();t&&K(async()=>{let e=await A($,t);if(!e.ok){var r;p.oR.error(null!=(r=e.error)?r:"Не удалось создать папку");return}p.oR.success("Папка создана"),B(!1),q(""),await I($),_(e.path)})},children:[(0,s.jsxs)("span",{className:"text-[11px] text-muted-foreground font-mono truncate max-w-[40%]",children:[$,"/"]}),(0,s.jsx)(g.p,{autoFocus:!0,value:U,onChange:e=>q(e.target.value),placeholder:"имя новой папки",className:"h-8 text-sm flex-1",disabled:W,onKeyDown:e=>{"Escape"===e.key&&(e.preventDefault(),B(!1),q(""))}}),(0,s.jsxs)(f.$,{type:"submit",size:"sm",disabled:W||!U.trim(),className:"h-8",children:[W?(0,s.jsx)(u.A,{className:"mr-1 h-3.5 w-3.5 animate-spin"}):(0,s.jsx)(c.A,{className:"mr-1 h-3.5 w-3.5"}),"Создать"]}),(0,s.jsx)(f.$,{type:"button",size:"sm",variant:"ghost",onClick:()=>{B(!1),q("")},className:"h-8",children:(0,s.jsx)(h.A,{className:"h-3.5 w-3.5"})})]}),(0,s.jsx)(y.Separator,{className:"my-1"}),H?(0,s.jsxs)("div",{className:"flex items-center justify-center py-10 text-sm text-muted-foreground",children:[(0,s.jsx)(u.A,{className:"mr-2 h-4 w-4 animate-spin"})," Loading…"]}):0===C.length?(0,s.jsx)("div",{className:"px-4 py-10 text-center text-sm text-muted-foreground",children:"No subdirectories."}):(0,s.jsx)(z,{nodes:C,selected:$,onSelect:_,onToggle:G,showHidden:F,depth:0})]})}),(0,s.jsx)(y.Separator,{}),(0,s.jsxs)(b.wL,{className:"flex items-center justify-between gap-4",children:[(0,s.jsxs)("div",{className:"text-xs text-muted-foreground font-mono truncate",children:["Selected: ",$]}),(0,s.jsx)(f.$,{onClick:()=>{O(async()=>{let e=await k($);if(!e.ok){var t;p.oR.error(null!=(t=e.error)?t:"Failed to add");return}p.oR.success("Directory added"),(0,N.$d)(N.Zi.rootsChanged),Q.push("/roots/".concat(e.id))})},disabled:Z||H,children:Z?(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(u.A,{className:"mr-2 h-4 w-4 animate-spin"})," Adding…"]}):"Add this directory"})]})]})}function z(e){let{nodes:t,selected:r,onSelect:a,onToggle:n,showHidden:i,depth:o}=e;return(0,s.jsx)("ul",{children:t.filter(e=>i||!e.hidden).map(e=>(0,s.jsxs)("li",{children:[(0,s.jsx)(C,{node:e,depth:o,selected:r,onSelect:a,onToggle:n}),e.expanded&&e.children.length>0&&(0,s.jsx)(z,{nodes:e.children,selected:r,onSelect:a,onToggle:n,showHidden:i,depth:o+1}),e.expanded&&e.loaded&&0===e.children.length&&(0,s.jsx)("div",{className:"text-xs text-muted-foreground italic px-2 py-1",style:{paddingLeft:16*o+44},children:"(empty)"})]},e.absPath))})}function C(e){let{node:t,depth:r,selected:a,onSelect:n,onToggle:i}=e,o=a===t.absPath;return(0,s.jsxs)("div",{className:"group flex items-center gap-1 pr-2 py-1 rounded-md hover:bg-accent/60 ".concat(o?"bg-accent":""),style:{paddingLeft:16*r+4},children:[(0,s.jsx)("button",{type:"button",onClick:()=>i(t.absPath),className:"h-6 w-6 flex items-center justify-center text-muted-foreground hover:text-foreground shrink-0","aria-label":t.expanded?"Collapse":"Expand",children:t.loading?(0,s.jsx)(u.A,{className:"h-3.5 w-3.5 animate-spin"}):t.expanded?(0,s.jsx)(m.A,{className:"h-3.5 w-3.5"}):(0,s.jsx)(x.A,{className:"h-3.5 w-3.5"})}),(0,s.jsxs)("button",{type:"button",onClick:()=>n(t.absPath),onDoubleClick:()=>i(t.absPath),className:"flex-1 min-w-0 flex items-center gap-2 text-left text-sm",children:[t.expanded?(0,s.jsx)(d.A,{className:"h-4 w-4 text-muted-foreground shrink-0"}):(0,s.jsx)(v.A,{className:"h-4 w-4 text-muted-foreground shrink-0"}),(0,s.jsx)("span",{className:"truncate ".concat(t.hidden?"opacity-60":""),children:t.name})]})]})}function R(e,t,r){return{name:e,absPath:t,hidden:r,loaded:!1,loading:!1,expanded:!1,children:[]}}function L(e,t,r){return e.map(e=>e.absPath===t?r(e):e.children.length>0?{...e,children:L(e.children,t,r)}:e)}function M(e){var t;let r=e.split("/").filter(Boolean);return null!=(t=r[r.length-1])?t:e}},80192:(e,t,r)=>{"use strict";r.d(t,{F:()=>i});var s=r(4624);r(99356);var a=r(14884),n=r(13506);function i(e){let{className:t,children:r,...i}=e;return(0,s.jsxs)(a.Root,{"data-slot":"scroll-area",className:(0,n.cn)("relative",t),...i,children:[(0,s.jsx)(a.Viewport,{"data-slot":"scroll-area-viewport",className:"size-full rounded-[inherit] transition-[color,box-shadow] outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1",children:r}),(0,s.jsx)(o,{}),(0,s.jsx)(a.Corner,{})]})}function o(e){let{className:t,orientation:r="vertical",...i}=e;return(0,s.jsx)(a.ScrollAreaScrollbar,{"data-slot":"scroll-area-scrollbar",orientation:r,className:(0,n.cn)("flex touch-none p-px transition-colors select-none","vertical"===r&&"h-full w-2.5 border-l border-l-transparent","horizontal"===r&&"h-2.5 flex-col border-t border-t-transparent",t),...i,children:(0,s.jsx)(a.ScrollAreaThumb,{"data-slot":"scroll-area-thumb",className:"relative flex-1 rounded-full bg-border"})})}},85253:(e,t,r)=>{"use strict";r.d(t,{$:()=>l});var s=r(4624);r(99356);var a=r(60621),n=r(50362),i=r(13506);let o=(0,a.F)("inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",{variants:{variant:{default:"bg-primary text-primary-foreground hover:bg-primary/90",destructive:"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",xs:"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3",sm:"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9","icon-xs":"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3","icon-sm":"size-8","icon-lg":"size-10"}},defaultVariants:{variant:"default",size:"default"}});function l(e){let{className:t,variant:r="default",size:a="default",asChild:l=!1,...d}=e,c=l?n.bL:"button";return(0,s.jsx)(c,{"data-slot":"button","data-variant":r,"data-size":a,className:(0,i.cn)(o({variant:r,size:a,className:t})),...d})}},91074:(e,t,r)=>{"use strict";r.d(t,{Separator:()=>i});var s=r(4624);r(99356);var a=r(44188),n=r(13506);function i(e){let{className:t,orientation:r="horizontal",decorative:i=!0,...o}=e;return(0,s.jsx)(a.b,{"data-slot":"separator",decorative:i,orientation:r,className:(0,n.cn)("shrink-0 bg-border data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t),...o})}}},e=>{e.O(0,[4400,1217,3335,5097,4933,146,7358],()=>e(e.s=32740)),_N_E=e.O()}]);