@flexkit/studio 0.2.32 → 0.2.33

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 (153) hide show
  1. package/dist/activity-nav-button-ZHQOZBCC.js +2 -0
  2. package/dist/{activity-nav-button-E4I4YC3X.js.map → activity-nav-button-ZHQOZBCC.js.map} +1 -1
  3. package/dist/astro.js +1 -1
  4. package/dist/chat-page-LR7XC2US.js +4 -0
  5. package/dist/{chat-page-7UB3BMBF.js.map → chat-page-LR7XC2US.js.map} +1 -1
  6. package/dist/chunk-2MVQXXY7.js +4 -0
  7. package/dist/{chunk-R2O4WC3H.js.map → chunk-2MVQXXY7.js.map} +1 -1
  8. package/dist/{chunk-ERCVR23U.js → chunk-36DLIVZF.js} +2 -2
  9. package/dist/{chunk-ERCVR23U.js.map → chunk-36DLIVZF.js.map} +1 -1
  10. package/dist/chunk-3SY46ERM.js +2 -0
  11. package/dist/chunk-3SY46ERM.js.map +1 -0
  12. package/dist/chunk-4ZWQ44NZ.js +2 -0
  13. package/dist/{chunk-2NXQF2F7.js.map → chunk-4ZWQ44NZ.js.map} +1 -1
  14. package/dist/chunk-5JUG4BEF.js +2 -0
  15. package/dist/chunk-5JUG4BEF.js.map +1 -0
  16. package/dist/chunk-6I7D2JBA.js +3 -0
  17. package/dist/chunk-6I7D2JBA.js.map +1 -0
  18. package/dist/chunk-7ODGH7G2.js +2 -0
  19. package/dist/{chunk-5LGIALCK.js.map → chunk-7ODGH7G2.js.map} +1 -1
  20. package/dist/{chunk-SZEGGBOC.js → chunk-A4DPLZZF.js} +2 -2
  21. package/dist/{chunk-SZEGGBOC.js.map → chunk-A4DPLZZF.js.map} +1 -1
  22. package/dist/{chunk-C4XLDODU.js → chunk-C2KPTRYM.js} +3 -1
  23. package/dist/chunk-C3OHXPJV.js +2 -0
  24. package/dist/chunk-C3OHXPJV.js.map +1 -0
  25. package/dist/{chunk-KR27GOH6.js → chunk-CFYO546Y.js} +3 -3
  26. package/dist/{chunk-KR27GOH6.js.map → chunk-CFYO546Y.js.map} +1 -1
  27. package/dist/chunk-DHE6PO3V.js +2 -0
  28. package/dist/{chunk-5AJXR47U.js.map → chunk-DHE6PO3V.js.map} +1 -1
  29. package/dist/{chunk-V7C4EHK3.js → chunk-DSLPTDZX.js} +2 -2
  30. package/dist/{chunk-V7C4EHK3.js.map → chunk-DSLPTDZX.js.map} +1 -1
  31. package/dist/chunk-HSGUVQXU.js +10 -0
  32. package/dist/{chunk-JAPZBEBZ.js.map → chunk-HSGUVQXU.js.map} +1 -1
  33. package/dist/{chunk-EMFHKTAV.js → chunk-K3HW6YWS.js} +2 -2
  34. package/dist/{chunk-EMFHKTAV.js.map → chunk-K3HW6YWS.js.map} +1 -1
  35. package/dist/chunk-L5T56MRH.js +7 -0
  36. package/dist/chunk-L5T56MRH.js.map +1 -0
  37. package/dist/chunk-MBBE4RND.js +3 -0
  38. package/dist/chunk-MBBE4RND.js.map +1 -0
  39. package/dist/{chunk-USNXQOMJ.js → chunk-N33S7BSG.js} +2 -2
  40. package/dist/{chunk-USNXQOMJ.js.map → chunk-N33S7BSG.js.map} +1 -1
  41. package/dist/{chunk-KN7OJFEX.js → chunk-N52JTYBJ.js} +2 -2
  42. package/dist/{chunk-KN7OJFEX.js.map → chunk-N52JTYBJ.js.map} +1 -1
  43. package/dist/{chunk-AY2RXJWS.js → chunk-NFEQBTIW.js} +2 -2
  44. package/dist/{chunk-AY2RXJWS.js.map → chunk-NFEQBTIW.js.map} +1 -1
  45. package/dist/chunk-RFUMT6ZR.js +2 -0
  46. package/dist/{chunk-JWJJZVP3.js.map → chunk-RFUMT6ZR.js.map} +1 -1
  47. package/dist/{chunk-GSGPULRL.js → chunk-RLVHUIFC.js} +2 -2
  48. package/dist/{chunk-GSGPULRL.js.map → chunk-RLVHUIFC.js.map} +1 -1
  49. package/dist/chunk-S26WK6RF.js +2 -0
  50. package/dist/{chunk-54AXLGAK.js.map → chunk-S26WK6RF.js.map} +1 -1
  51. package/dist/{chunk-ONB3FWK5.js → chunk-S7VNSSIK.js} +2 -2
  52. package/dist/{chunk-ONB3FWK5.js.map → chunk-S7VNSSIK.js.map} +1 -1
  53. package/dist/chunk-S7Z6KKIN.js +2 -0
  54. package/dist/chunk-S7Z6KKIN.js.map +1 -0
  55. package/dist/{chunk-2NQ2RZ2M.js → chunk-U5XZWEPO.js} +3 -3
  56. package/dist/{chunk-2NQ2RZ2M.js.map → chunk-U5XZWEPO.js.map} +1 -1
  57. package/dist/chunk-UB22GYFK.js +2 -0
  58. package/dist/{chunk-MRHZN4G4.js.map → chunk-UB22GYFK.js.map} +1 -1
  59. package/dist/chunk-VUZ7GHSO.js +7 -0
  60. package/dist/{chunk-NNISUDZX.js.map → chunk-VUZ7GHSO.js.map} +1 -1
  61. package/dist/chunk-X3SHNHHM.js +2 -0
  62. package/dist/chunk-X3SHNHHM.js.map +1 -0
  63. package/dist/{chunk-XV7U33XQ.js → chunk-YKM3FUGK.js} +3 -3
  64. package/dist/{chunk-XV7U33XQ.js.map → chunk-YKM3FUGK.js.map} +1 -1
  65. package/dist/electron.js +1 -1
  66. package/dist/{entry-CA2QAEHN.js → entry-ROTT3ZDN.js} +2 -2
  67. package/dist/{entry-CA2QAEHN.js.map → entry-ROTT3ZDN.js.map} +1 -1
  68. package/dist/index.d.ts +10 -1
  69. package/dist/index.js +7 -7
  70. package/dist/index.js.map +1 -1
  71. package/dist/list-N4E3VXM5.js +3 -0
  72. package/dist/{list-Q2KAEJ26.js.map → list-N4E3VXM5.js.map} +1 -1
  73. package/dist/list-RCTHBJOK.js +2 -0
  74. package/dist/{list-UMMVRYVD.js.map → list-RCTHBJOK.js.map} +1 -1
  75. package/dist/nextjs.js +1 -1
  76. package/dist/pages-XUJGIHQI.js +5 -0
  77. package/dist/{pages-KZ66JVNU.js.map → pages-XUJGIHQI.js.map} +1 -1
  78. package/dist/plugin-pages-FEQILAQR.js +2 -0
  79. package/dist/{plugin-pages-SR2WSUKZ.js.map → plugin-pages-FEQILAQR.js.map} +1 -1
  80. package/dist/project-selector-U64ROZ5D.js +2 -0
  81. package/dist/project-selector-U64ROZ5D.js.map +1 -0
  82. package/dist/record-links-HO4SEHOA.js +2 -0
  83. package/dist/{record-links-3WZGSVFU.js.map → record-links-HO4SEHOA.js.map} +1 -1
  84. package/dist/root-BUXIQKA5.js +14 -0
  85. package/dist/{root-LFJ5BQSY.js.map → root-BUXIQKA5.js.map} +1 -1
  86. package/dist/root-CCUROZVR.js +2 -0
  87. package/dist/{root-6QTQUYK4.js.map → root-CCUROZVR.js.map} +1 -1
  88. package/dist/root-GQL3P63Z.js +31 -0
  89. package/dist/{root-7BUVDOMV.js.map → root-GQL3P63Z.js.map} +1 -1
  90. package/dist/root-KXY4A6DW.js +2 -0
  91. package/dist/{root-2VBLPRG7.js.map → root-KXY4A6DW.js.map} +1 -1
  92. package/dist/root-MLEJUEMJ.js +23 -0
  93. package/dist/{root-FZLKYL5W.js.map → root-MLEJUEMJ.js.map} +1 -1
  94. package/dist/root-VA3E6HEY.js +2 -0
  95. package/dist/{root-OXS3QQX6.js.map → root-VA3E6HEY.js.map} +1 -1
  96. package/dist/search-YY4GQQRM.js +2 -0
  97. package/dist/{search-AZK3Q2KX.js.map → search-YY4GQQRM.js.map} +1 -1
  98. package/dist/skills-pages-SAOZTUOH.js +2 -0
  99. package/dist/{skills-pages-7IYBJ4QI.js.map → skills-pages-SAOZTUOH.js.map} +1 -1
  100. package/dist/source-2S24MZ5D.js +2 -0
  101. package/dist/{source-4BP5PJ2N.js.map → source-2S24MZ5D.js.map} +1 -1
  102. package/dist/spec-renderer-ZSIVMKVE.js +2 -0
  103. package/dist/{spec-renderer-3GAVSV52.js.map → spec-renderer-ZSIVMKVE.js.map} +1 -1
  104. package/dist/tanstack-start.js +1 -1
  105. package/dist/ui.js +1 -1
  106. package/dist/user-nav-ZH63YHX7.js +2 -0
  107. package/dist/{user-nav-OWTTAXZS.js.map → user-nav-ZH63YHX7.js.map} +1 -1
  108. package/package.json +4 -4
  109. package/dist/activity-nav-button-E4I4YC3X.js +0 -2
  110. package/dist/chat-page-7UB3BMBF.js +0 -4
  111. package/dist/chunk-2NXQF2F7.js +0 -2
  112. package/dist/chunk-32ZU4MLE.js +0 -2
  113. package/dist/chunk-32ZU4MLE.js.map +0 -1
  114. package/dist/chunk-54AXLGAK.js +0 -2
  115. package/dist/chunk-5AJXR47U.js +0 -2
  116. package/dist/chunk-5LGIALCK.js +0 -2
  117. package/dist/chunk-6NRQMG26.js +0 -2
  118. package/dist/chunk-6NRQMG26.js.map +0 -1
  119. package/dist/chunk-AKQ6ELDX.js +0 -2
  120. package/dist/chunk-AKQ6ELDX.js.map +0 -1
  121. package/dist/chunk-DGIY4SKN.js +0 -7
  122. package/dist/chunk-DGIY4SKN.js.map +0 -1
  123. package/dist/chunk-HDOIOXMP.js +0 -2
  124. package/dist/chunk-HDOIOXMP.js.map +0 -1
  125. package/dist/chunk-HZOD2HOF.js +0 -3
  126. package/dist/chunk-HZOD2HOF.js.map +0 -1
  127. package/dist/chunk-JAPZBEBZ.js +0 -10
  128. package/dist/chunk-JWJJZVP3.js +0 -2
  129. package/dist/chunk-MRHZN4G4.js +0 -2
  130. package/dist/chunk-NNISUDZX.js +0 -7
  131. package/dist/chunk-O2QMYUPS.js +0 -2
  132. package/dist/chunk-O2QMYUPS.js.map +0 -1
  133. package/dist/chunk-R2O4WC3H.js +0 -4
  134. package/dist/chunk-WPCPL2TQ.js +0 -3
  135. package/dist/chunk-WPCPL2TQ.js.map +0 -1
  136. package/dist/list-Q2KAEJ26.js +0 -3
  137. package/dist/list-UMMVRYVD.js +0 -2
  138. package/dist/pages-KZ66JVNU.js +0 -5
  139. package/dist/plugin-pages-SR2WSUKZ.js +0 -2
  140. package/dist/project-selector-72VM6SUI.js +0 -2
  141. package/dist/project-selector-72VM6SUI.js.map +0 -1
  142. package/dist/record-links-3WZGSVFU.js +0 -2
  143. package/dist/root-2VBLPRG7.js +0 -2
  144. package/dist/root-6QTQUYK4.js +0 -2
  145. package/dist/root-7BUVDOMV.js +0 -31
  146. package/dist/root-FZLKYL5W.js +0 -23
  147. package/dist/root-LFJ5BQSY.js +0 -14
  148. package/dist/root-OXS3QQX6.js +0 -2
  149. package/dist/search-AZK3Q2KX.js +0 -2
  150. package/dist/skills-pages-7IYBJ4QI.js +0 -2
  151. package/dist/source-4BP5PJ2N.js +0 -2
  152. package/dist/spec-renderer-3GAVSV52.js +0 -2
  153. package/dist/user-nav-OWTTAXZS.js +0 -2
@@ -0,0 +1,2 @@
1
+ import'./index.css';export{b as ActivityNavButton,a as useActivitySummary}from'./chunk-36DLIVZF.js';import'./chunk-U6VZY3V2.js';import'./chunk-7KLXWCDS.js';import'./chunk-HKN6BX5U.js';import'./chunk-5CVDMZUI.js';import'./chunk-N33S7BSG.js';import'./chunk-X3SHNHHM.js';//# sourceMappingURL=activity-nav-button-ZHQOZBCC.js.map
2
+ //# sourceMappingURL=activity-nav-button-ZHQOZBCC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"activity-nav-button-E4I4YC3X.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"activity-nav-button-ZHQOZBCC.js"}
package/dist/astro.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  handleFlexkitRequest
3
- } from "./chunk-C4XLDODU.js";
3
+ } from "./chunk-C2KPTRYM.js";
4
4
 
5
5
  // src/auth/astro-api.ts
6
6
  function resultToResponse(result) {
@@ -0,0 +1,4 @@
1
+ import'./index.css';import {a}from'./chunk-RFUMT6ZR.js';import {f as f$2,b,c,g as g$1,a as a$1,e as e$1,d}from'./chunk-CSUHZFEP.js';import {x,A,u,t,H,o,m,l as l$1,n,p,y,r,s,w,v,k,e as e$2,G,D,B,g as g$2,j,h,f as f$3,z,F,I,E,q}from'./chunk-HSGUVQXU.js';import {a as a$2,c as c$2,b as b$2}from'./chunk-ELOJGLAR.js';import'./chunk-QSTWBKPN.js';import {c as c$4}from'./chunk-7ODGH7G2.js';import {g,f as f$1,a as a$4}from'./chunk-U6VZY3V2.js';import'./chunk-RLVHUIFC.js';import'./chunk-4ZWQ44NZ.js';import'./chunk-DSLPTDZX.js';import'./chunk-7KLXWCDS.js';import'./chunk-HKN6BX5U.js';import {f}from'./chunk-6I7D2JBA.js';import'./chunk-MBBE4RND.js';import'./chunk-5CVDMZUI.js';import {Pb,M,Nb,_a,$a,bb,Vb,Yb,Wb,Xb,Zb,_b,ac,bc,cc,Tb,fc,gc,jc,hc,ic,Ic,ec}from'./chunk-L5T56MRH.js';import'./chunk-A4DPLZZF.js';import'./chunk-3SY46ERM.js';import {l}from'./chunk-5JUG4BEF.js';import'./chunk-S7Z6KKIN.js';import'./chunk-U45E5X3H.js';import {b as b$1,c as c$1,e}from'./chunk-N33S7BSG.js';import {a as a$3,c as c$3}from'./chunk-X3SHNHHM.js';import {useRef,useMemo,useState,useEffect,useLayoutEffect}from'react';import {LoaderCircle,CornerDownRightIcon,CheckIcon,CopyIcon,PencilIcon}from'lucide-react';import {useParams,useNavigate}from'react-router-dom';import ie,{useSWRConfig}from'swr';import {jsx,jsxs}from'react/jsx-runtime';function jt(e,t){let r=Date.parse(e.createdAt)-Date.parse(t.createdAt);return Number.isFinite(r)&&r!==0?r:e.createdAt!==t.createdAt?e.createdAt<t.createdAt?-1:1:e.id===t.id?0:e.id<t.id?-1:1}function le(e){return [...new Map(e.map(r=>[r.id,r])).values()].sort(jt)}function ke(e,t){if(!t)return e;if(!e)return t;let r=new Set(t.messages.map(c=>c.id)),a=t.messages[t.messages.length-1],s=e.messages.filter(c=>!r.has(c.id)&&(!a||jt(c,a)>0));return s.length===0?t:{...t,messages:le([...t.messages,...s])}}function an(e){return e==="pending"||e==="streaming"||e==="awaiting_approval"}function Qt(e){return e==="queued"||e==="steering"}function Ce(e){for(let t=e.length-1;t>=0;t--){let r=e[t];if(r.role==="assistant"){if(!an(r.status))break;return {after:e.slice(t+1),before:e.slice(0,t),live:r}}}return {after:[],before:e,live:null}}function _e(e){return e==="steering"?"Picked up at the next step":e==="queued"?"Sends when this turn ends":null}function Ot(e){let t=new Set;for(let r of e)if(!(r.role!=="assistant"||!Array.isArray(r.parts)))for(let a of r.parts){let s=a.type==="data-mid-turn-message"?a.data?.messageId:null;typeof s=="string"&&t.add(s);}return t}function ve(e){return e.find(t=>t.role==="user"&&t.status==="queued"&&t.kind!=="monitor_event")??null}function $t(e){return e.streaming&&!e.hasDraft?"stop":"send"}var mn=6e4,qt=15e3;function hn(e){if(!e)return 0;if(Ce(e.messages).live||ve(e.messages))return y;if(!e.messages.some(a=>a.role==="assistant"&&a.status==="complete"))return (e.monitors?.length??0)>0?qt:0;let r=new Date(e.chat.lastMessageAt??e.chat.updatedAt).getTime();return Date.now()-r<mn?y:(e.monitors?.length??0)>0?qt:0}function An(e,t,r){return {chat:{createdAt:r,id:e,lastMessageAt:r,modelId:t,title:null,updatedAt:r},messages:[],pendingApproval:null}}function Xt(e,t,r,a,s,c){return e||(t?{chat:t,messages:[],pendingApproval:null}:r||An(a,s,c))}function zt(e,t){let r=new Set([t.userMessage.id,t.assistantMessage.id]);return {...e,messages:le([...e.messages.filter(a=>!r.has(a.id)),t.userMessage,t.assistantMessage])}}function kn(e,t){return {...e,messages:le([...e.messages.filter(r=>r.id!==t.id),t])}}function Cn(e,t,r){return t?ke(e[t],r):r}function vn(e){return e==="awaiting_approval"?"awaiting_approval":e==="complete"?"success":e==="failed"?"failed":"running"}function Le({attachments:e$1=[],label:t,text:r}){let{textInput:a}=Nb(),[s,c]=useState(false),u=r.trim().length>0;async function C(){await navigator.clipboard.writeText(r),c(true),setTimeout(()=>c(false),1500);}return jsxs("div",{className:"fk:group fk:ml-auto fk:flex fk:w-fit fk:max-w-[70%] fk:flex-col fk:items-end fk:gap-1",children:[jsx(q,{attachments:e$1}),u?jsx("div",{className:"fk:whitespace-pre-wrap fk:rounded-xl fk:bg-muted fk:dark:bg-white/20 fk:px-3.5 fk:py-2 fk:text-base fk:corner-squircle",children:r}):null,t?jsxs("span",{className:"fk:inline-flex fk:items-center fk:gap-1 fk:text-xs fk:text-muted-foreground",children:[jsx(CornerDownRightIcon,{className:"fk:size-3 fk:shrink-0"}),t]}):null,jsxs("div",{className:u?"fk:flex fk:gap-0.5 fk:opacity-0 fk:transition-opacity fk:group-hover:opacity-100":"fk:hidden",children:[jsxs(b$1,{children:[jsx(c$1,{asChild:true,children:jsx(c$3,{"aria-label":"Copy prompt",className:"fk:size-6 fk:text-muted-foreground",size:"icon",variant:"ghost",onClick:()=>{C();},children:s?jsx(CheckIcon,{className:"fk:size-3.5"}):jsx(CopyIcon,{className:"fk:size-3.5"})})}),jsx(e,{children:"Copy"})]}),jsxs(b$1,{children:[jsx(c$1,{asChild:true,children:jsx(c$3,{"aria-label":"Edit prompt",className:"fk:size-6 fk:text-muted-foreground",size:"icon",variant:"ghost",onClick:()=>a.setInput(r),children:jsx(PencilIcon,{className:"fk:size-3.5"})})}),jsx(e,{children:"Edit"})]})]})]})}function Wt(e){let r=e.find(a=>a.type==="data-suggested-prompt")?.data?.prompt;return typeof r=="string"&&r.trim()?r:null}function Vt({prompt:e}){let{textInput:t}=Nb();return jsx("div",{className:"fk:flex fk:justify-start",children:jsxs("button",{className:"fk:inline-flex fk:max-w-full fk:items-center fk:gap-1.5 fk:rounded-full fk:border fk:border-border/70 fk:bg-muted/40 fk:px-3 fk:py-1.5 fk:text-left fk:text-sm fk:text-muted-foreground fk:transition-colors fk:hover:border-border fk:hover:bg-muted fk:hover:ext-foreground fk:corner-squircle",title:"Use as your next message",type:"button",onClick:()=>t.setInput(e),children:[jsx(CornerDownRightIcon,{className:"fk:size-3 fk:shrink-0"}),jsx("span",{className:"fk:truncate",children:e})]})})}function yn({api:e,part:t,partIndex:r,parts:a}){return t.type.startsWith("tool-")?t.state==="output-error"?jsx(G,{message:t.errorText??"The tool call failed."}):null:jsx(F,{api:e,part:t,partIndex:r,parts:a})}function Gt({api:e,message:t,showSuggestion:r$1=false}){if(t.kind==="monitor_event"){let u=r(t);return u?jsx(s,{data:u,error:t.error}):null}if(t.kind==="plugin_connected"){let u=w(t.parts);return u?jsx(v,{data:u,error:t.error,label:_e(t.status)}):null}if(t.role==="user")return jsx(Le,{attachments:k(t.parts),label:_e(t.status),text:t.textContent});let a=(Array.isArray(t.parts)?t.parts:[]).filter(u=>!e$2(u)&&!(u.type.startsWith("tool-")&&u.state!=="output-error")),s$1=a.some(u=>u.type==="data-turn-error"),c=r$1&&!t.error?Wt(a):null;return a.length===0&&!t.error?null:jsxs("div",{className:"fk:w-full fk:min-w-0 fk:space-y-8",children:[a.map((u,C)=>jsx(yn,{api:e,part:u,partIndex:C,parts:a},u.toolCallId??`${t.id}-${C.toString()}`)),t.error&&!s$1?jsx(G,{message:t.error}):null,c?jsx(Vt,{prompt:c}):null]})}function Sn({api:e,chatId:t,detail:r,message:a,onMidTurnDelivered:s,onStatusChange:c,onTurnUpdated:u,questionAnsweredSignal:C}){let $=vn(a.status),y=a.workflowRunId?e.getAgentChatStreamUrl(t,a.workflowRunId):"",[H,x]=useState(0),[p,A]=useState(false),[S,R]=useState({}),B$1=useRef(null),{message:m,status:M}=D(y,{decidedApprovals:S,recordStatus:$,resumeToken:H,suppressApprovalPause:p}),D$1=useMemo(()=>m?[{...m,parts:m.parts.filter(d=>!e$2(d))}]:[],[m]),q=B(D$1),j$1=useRef(u);j$1.current=u;let X=useRef(c);X.current=c;let N=useMemo(()=>({answerQuestion:async(d,O)=>{let{question:K}=await e.answerAgentChatQuestion(t,d,O);return A(true),x(V=>V+1),j$1.current(),K??null},onApprovalDecided:(d,O)=>{d&&O&&O!=="pending"&&R(K=>({...K,[d]:O})),!(d&&B$1.current===d)&&(d&&(B$1.current=d),A(true),x(K=>K+1),j$1.current());}}),[e,t]);useEffect(()=>{x(0),A(false),B$1.current=null,R({});},[a.id]);let f=useRef(C);useEffect(()=>{C!==f.current&&(f.current=C,C?.messageId===a.id&&(A(true),x(d=>d+1)));},[a.id,C]),useEffect(()=>{p&&a.status==="streaming"&&A(false);},[a.status,p]),useEffect(()=>{(M==="finished"||M==="paused")&&j$1.current();},[M]);let _=(m?.parts??[]).filter(d=>d.type==="data-mid-turn-message").map(d=>String(d.data?.messageId??"")).join(`
2
+ `),W=useRef(s);W.current=s,useEffect(()=>{_&&W.current(_.split(`
3
+ `));},[_]);let i=!p&&a.status!=="streaming"&&(a.status==="awaiting_approval"||M==="paused"||g$2(m)||j(m)),Q=useMemo(()=>new Set(h(m)),[m]),U=r.pendingApproval&&!Q.has(r.pendingApproval.id)?r.pendingApproval:null,J=m?.parts[m.parts.length-1],b=J?.type==="text"&&J.state==="streaming",Z=j(m)?"Waiting for your answer":"Awaiting approval",L=i?Z:f$3(m)??"Thinking",I$1=i?M!=="finished"&&M!=="error":M==="streaming"&&!b;useEffect(()=>{X.current({label:L,visible:I$1});},[L,I$1]);let ee=!!U&&i,oe=M==="finished"?Wt(q.flatMap(d=>d.parts)):null;return q.length===0&&!ee?jsx(z.Provider,{value:N,children:null}):jsx(z.Provider,{value:N,children:jsxs("div",{className:"fk:w-full fk:min-w-0 fk:space-y-8",children:[q.map(d=>jsx("div",{className:"fk:space-y-8 fk:min-w-0",children:d.parts.map((O,K)=>jsx(F,{api:e,part:O,partIndex:K,parts:d.parts},K))},d.id)),U&&ee?jsx(I,{api:e,message:E(U)}):null,oe?jsx(Vt,{prompt:oe}):null]})})}function Mn({draftKey:e}){let{textInput:t}=Nb(),{setInput:r,value:a}=t,s=useRef(null);return useLayoutEffect(()=>{if(s.current===e){c$2(e,a);return}s.current=e;let c=b$2(e);c!==a&&r(c);},[e,r,a]),null}function wn({api:e,effort:t,modelKey:r,modelPending:a,models:s,onEffortChange:c$1,onError:u,onModelChange:C,onSend:$,onStop:y,placeholder:H,sending:x,streaming:p$1}){let{attachments:A,textInput:S}=Nb(),R=o(e,u),{currentProjectId:B}=f(),{data:m$1,error:M}=ie(B?`/api/flexkit/${B}/plugins`:null,f$1),D=useRef(false),q=s.filter(i=>!i.deprecated||b(i)===r),j=c(s,r),X=e$1(j),N=d(j,t),f$2=S.value.trim().length>0||A.files.length>0,_=$t({hasDraft:f$2,streaming:p$1}),W=f$2&&!R.isUploading&&!x&&!a;return jsxs(Vb,{accept:n,className:"fk:mx-auto fk:max-w-4xl",maxFileSize:l$1,maxFiles:m,multiple:true,onError:i=>u(i.message),onSubmit:({text:i})=>{let Q=i?.trim()??"",U=R.getUploaded(A.files.map(b=>b.id));if(!Q&&U.length===0||R.isUploading||x||D.current||a||!m$1&&!M&&B)return Promise.reject(new Error("The message cannot be sent right now."));let J=c$4(Q,m$1?.plugins??[]);return J?(S.setInput(J.tokens.reduce((b,Z)=>b.split(Z).join(""),i)),u(`That looks like a ${J.label}. It was removed from your message: connect ${J.plugin.name} from its connect card or AI \u2192 Plugins instead, where it is stored encrypted and never shown to the agent.`),Promise.reject(new Error("The message contains a plugin token."))):(D.current=true,S.clear(),$(Q,U).catch(b=>{throw S.setInput(i),b}).finally(()=>{D.current=false;}))},children:[A.files.length>0?jsx(Yb,{children:jsx(p,{uploads:R})}):null,jsx(Wb,{children:jsx(Xb,{disabled:x,placeholder:H})}),jsxs(Zb,{children:[jsxs(_b,{children:[jsxs(ac,{children:[jsx(bc,{"aria-label":"Add attachments",className:"fk:border-0 fk:bg-border fk:corner-round",disabled:x,tooltip:"Add photos or files"}),jsx(cc,{children:jsx(Tb,{})})]}),q.length>0?jsxs(fc,{value:r??void 0,onValueChange:C,children:[jsx(gc,{"aria-label":"Model",className:"fk:min-w-44",children:jsx(jc,{placeholder:"Model"})}),jsx(hc,{children:q.map(i=>jsx(ic,{value:b(i),children:i.name},b(i)))})]}):null,X.length>1&&N?jsxs(fc,{value:N,onValueChange:c$1,children:[jsx(gc,{"aria-label":"Reasoning effort",className:"fk:min-w-28",children:jsx(jc,{placeholder:"Effort"})}),jsx(hc,{children:X.map(i=>jsx(ic,{value:i.value,children:i.label},i.value))})]}):null]}),jsxs("div",{className:"fk:flex fk:items-center fk:gap-3",children:[jsx(Ic,{disabled:x,onAudioRecorded:async(i,Q)=>{let{text:U}=await e.transcribeAgentAudio(i,Q);return U},onError:i=>u(i.message),onTranscriptionChange:i=>{u(null),S.setInput(a$4(S.value,i));}}),jsx(ec,{className:"fk:corner-round",disabled:_==="stop"?false:!W,status:_==="stop"?"streaming":void 0,onStop:()=>{y();}})]})]})]})}var Ue={chatId:null,error:null,loading:false,older:[],page:null},In=3e3;function Pn({api:e,chatId:t,projectId:r,pendingFollowUp:a,pendingMessage:s,questionAnsweredSignal:c,resolveDetail:u}){let{data:C,mutate:$}=ie(t?g(r).agentChat(t):null,f$1,{refreshInterval:0}),y=u(C),[H$1,x]=useState(Ue),p=H$1.chatId===t?H$1:Ue,A=useRef(t);A.current=t;let S=(o,v)=>x(w=>{if(w.chatId!==o&&A.current!==o)return w;let F=w.chatId===o?w:{...Ue,chatId:o};return {...F,...v(F)}}),R=useRef({chatId:null,messages:[]}),B=y?.messages;useEffect(()=>{let o=R.current,v=B??[];if(R.current={chatId:t,messages:v},!t||o.chatId!==t)return;let w=new Set(v.map(k=>k.id)),F=o.messages.filter(k=>!w.has(k.id));F.length>0&&S(t,k=>({older:le([...k.older,...F])}));},[t,B]);let m=new Set(y?.messages.map(o=>o.id)??[]),M=[...p.older.filter(o=>!m.has(o.id)),...y?.messages??[]],D=useRef(y);D.current=y;let q=useRef(void 0);ie(t?`${g(r).agentChat(t)}?view=status`:null,f$1,{refreshInterval:()=>hn(D.current),onSuccess:o=>{let v=JSON.stringify(o),w=q.current;q.current=v;let{current:F}=D,k=F?[...F.messages].reverse().find(te=>te.role==="assistant"):void 0;(w&&w!==v||k&&o.latestMessage&&(k.id!==o.latestMessage.id||k.status!==o.latestMessage.status||k.workflowRunId!==o.latestMessage.workflowRunId||F?.chat.updatedAt!==o.chat.updatedAt))&&$();}});let j=async()=>{let o=p.page?.cursor??y?.nextCursor;if(!t||!o||p.loading)return;let v=t;S(v,()=>({error:null,loading:true}));try{let w=await f$1(`${g(r).agentChat(v)}?before=${encodeURIComponent(o)}`);S(v,F=>({loading:!1,older:le([...w.messages,...F.older]),page:{cursor:w.nextCursor??null,hasMore:w.hasMore??!1}}));}catch{S(v,()=>({error:"Could not load earlier messages. Try again.",loading:false}));}},{after:X,before:N,live:f}=Ce(M),[_,W]=useState({ids:[],messageId:""}),i=Ot(M);for(let o of f&&_.messageId===f.id?_.ids:[])i.add(o);let Q=X.filter(o=>Qt(o.status)&&!i.has(o.id)),U=N.filter(o=>!i.has(o.id)),b=(!f&&!s?ve(M):null)?.id??null,[Z,L]=useState(0),I=useRef(null);useEffect(()=>{if(!t||!b||I.current===b)return;I.current=b;let o=false,v=null;return e.startQueuedAgentChatMessage(t,b).then(()=>{},()=>{v=setTimeout(()=>{o||L(w=>w+1);},In);}).finally(()=>{I.current=null,$();}),()=>{o=true,v&&clearTimeout(v);}},[e,t,$,b,Z]);let[ee,oe]=useState(null),d=f&&ee?.messageId===f.id?ee.status:null;if(t&&!y&&!s)return jsxs("div",{className:"fk:flex fk:flex-1 fk:items-center fk:justify-center fk:gap-2 fk:text-sm fk:text-muted-foreground",children:[jsx(LoaderCircle,{className:"fk:size-4 fk:animate-spin"}),"Loading chat..."]});let O=!!s||!!f,K=[...U].reverse().find(o=>o.role==="assistant")?.id??null,V=f?d?.label??"Thinking":"Sending",se=f?d?.visible??true:true;return jsxs(_a,{className:"fk:h-0 fk:min-h-0 fk:flex-1",children:[jsx($a,{className:"fk:gap-0 fk:p-0",children:jsxs("div",{className:"fk:mx-auto fk:w-full fk:max-w-4xl fk:space-y-5 fk:pb-6 fk:pr-4",children:[p.page?.hasMore??y?.hasMore?jsx(c$3,{variant:"ghost",disabled:p.loading,onClick:()=>{j();},children:p.loading?"Loading\u2026":"Load earlier messages"}):null,p.error?jsx("p",{role:"alert",children:p.error}):null,U.map(o=>jsx(Gt,{api:e,message:o,showSuggestion:!O&&o.id===K},o.id)),f&&t&&y?jsx(Sn,{api:e,chatId:t,detail:y,message:f,onMidTurnDelivered:o=>W({ids:o,messageId:f.id}),onStatusChange:o=>oe({messageId:f.id,status:o}),onTurnUpdated:()=>{$();},questionAnsweredSignal:c}):null,s&&!f?jsx(Le,{attachments:s.attachments,text:s.text}):null,O?jsx(H,{label:V,visible:se}):null,Q.map(o=>jsx(Gt,{api:e,message:o},o.id)),a&&f?jsx(Le,{attachments:a.attachments,text:a.text}):null]})}),jsx(bb,{})]})}var Jt=["Where should we begin?","Ready when you are","What\u2019s on the agenda today?","What\u2019s on your mind today?"];function Tn(e){return [`How can I help, ${e}?`,`Good to see you, ${e}.`,`Hey, ${e}. Ready to dive in?`]}function xn(e){let t=e?[...Jt,...Tn(e)]:Jt;return t[Math.floor(Math.random()*t.length)]??"How can I help?"}var Zt="flexkit-ai:lastModelId",Ke="flexkit-ai:lastEffort";function bn(){if(typeof localStorage>"u")return null;try{let e=localStorage.getItem(Zt);return e?{effort:localStorage.getItem(Ke),modelKey:e}:null}catch{return null}}function En(e){return e.selectedModelKey?{effort:e.selectedEffort,modelKey:e.selectedModelKey}:e.awaitingChatModel?{effort:null,modelKey:null}:e.chatSelection?{effort:e.selectedEffort??e.chatSelection.effort,modelKey:e.chatSelection.modelKey}:e.lastUsed?{effort:e.selectedEffort??e.lastUsed.effort,modelKey:e.lastUsed.modelKey}:{effort:e.selectedEffort,modelKey:e.defaultModelKey}}function Rn(e){if(!(typeof localStorage>"u"))try{localStorage.setItem(Zt,e.modelKey),e.effort?localStorage.setItem(Ke,e.effort):localStorage.removeItem(Ke);}catch{}}function Dn({projectId:e}){let{data:t,isLoading:r}=ie(g(e).agentProfile(),f$1),a=useMemo(()=>r?null:xn(t?.preferredName??null),[t,r]);return jsx("div",{className:"fk:flex fk:flex-col fk:items-center fk:pb-2 fk:text-center",children:jsx("h2",{className:"fk:text-2xl fk:font-semibold",children:a??"\xA0"})})}function er(){let{api:e$1,projectId:t$1}=x(),{currentProject:r,projectSummaries:a$4}=f(),{chatId:s}=useParams(),c$2=useNavigate(),u$1=a(),{mutate:C}=useSWRConfig(),{data:$}=ie(t$1?g(t$1).tools():null,f$1),{data:y}=ie(t$1&&s?g(t$1).agentChat(s):null,f$1),H=useRef({});function x$1(l){return Cn(H.current,s,l)}let p=x$1(y),A$1=useMemo(()=>$?.tools.models??[],[$]),[S,R]=useState(null),[B,m]=useState(null),M$1=useRef(null),[D,q]=useState(bn),[j,X]=useState(false),N=useRef(false),[f$3,_]=useState(null),W=f$3&&f$3.chatId===s?f$3:void 0,[i,Q]=useState(null),[U,J]=useState(null),b$2=i&&i.chatId===s?i:void 0,[Z,L]=useState(null),I=p?.chat.modelId??null,ee=!!s&&p===void 0,oe=useMemo(()=>f$2(I,A$1)??(I?{effort:null,modelKey:I}:null),[I,A$1]),d=useMemo(()=>{let l=A$1.find(h=>!h.deprecated);return l?b(l):null},[A$1]),O=useMemo(()=>{let l=c(A$1,D?.modelKey??null);return D&&l&&!l.deprecated?D:null},[A$1,D]),{effort:K,modelKey:V}=En({awaitingChatModel:ee,chatSelection:oe,defaultModelKey:d,lastUsed:O,selectedEffort:B,selectedModelKey:S}),se=V?g$1({effort:K,modelKey:V},A$1):null,o=ee&&!S;useEffect(()=>{M$1.current=null,R(null),m(null),L(null);},[s]),useEffect(()=>{S===a$1&&I&&I!==a$1&&I!==M$1.current&&(R(null),m(null));},[I,S]);function v(l){q(l),Rn(l);}function w(l){M$1.current=l===a$1?I:null,R(l),m(null),v({effort:null,modelKey:l});}function F(l){m(l),V&&v({effort:l,modelKey:V});}if(!t$1||!e$1)return jsx("div",{className:"fk:flex fk:h-full fk:items-center fk:justify-center fk:text-sm fk:text-muted-foreground",children:"Select a project to chat with the agent."});let k=e$1,te=t$1,en=r?.title??a$4.find(l=>l.id===t$1)?.name??"your project",Fe=!s&&!W,ce=!!(p&&Ce(p.messages).live);async function tn(l,h,z){Q({attachments:z,chatId:l,text:h});try{let P=await k.sendAgentChatFollowUp(l,{attachments:z,content:h,modelId:se});if("question"in P){J({messageId:P.question.chatMessageId}),await C(g(te).agentChat(l));return}await He(l,P);}finally{Q(null);}}async function He(l,h){await C(g(te).agentChat(l),z=>{let P=Xt(ke(H.current[l],z),null,y,l,se,"turn"in h?h.turn.userMessage.createdAt:h.followUp.message.createdAt),ae="turn"in h?zt(P,h.turn):kn(P,h.followUp.message);return H.current[l]=ae,ae},{revalidate:false});}let nn={onConnected:async l=>{if(!s)return;let h=s;try{await He(h,await k.announcePluginConnected(h,l));}catch(z){L(z instanceof Error?z.message:"The agent could not continue after the connection.");}}};async function Be(l,h){if(N.current)throw new Error("A message is already being sent.");if(o)throw new Error("This chat is still loading.");N.current=true,X(true),L(null);let z=p?ve(p.messages):null;if(s&&(ce||z)){try{!ce&&z&&await k.startQueuedAgentChatMessage(s,z.id).catch(()=>{}),await tn(s,l,h);}catch(P){throw L(P instanceof Error?P.message:"Failed to send the message."),P}finally{N.current=false,X(false);}return}_({attachments:h,chatId:s,text:l});try{let P=s?{chat:null,turn:await k.sendAgentChatMessage(s,{attachments:h,content:l,modelId:se})}:await k.startAgentChat({attachments:h,content:l,modelId:se}),{chat:ae,turn:je}=P,fe=s??ae.id;await C(g(te).agentChat(fe),sn=>{let Qe=zt(Xt(ke(H.current[fe],sn),ae,y,fe,se,je.userMessage.createdAt),je);return H.current[fe]=Qe,Qe},{revalidate:!1}),ae&&c$2(`${u$1}/chats/${ae.id}`),_(null);}catch(P){throw _(null),L(P instanceof Error?P.message:"Failed to send the message."),P}finally{N.current=false,X(false);}}async function rn(){if(s)try{await k.stopAgentChat(s);}catch(l){L(l instanceof Error?l.message:"Failed to stop the turn.");}finally{await C(g(te).agentChat(s));}}return jsxs(Pb,{children:[jsx(Mn,{draftKey:a$2(te,s)}),jsxs("div",{className:"fk:flex fk:h-full fk:min-h-0 fk:flex-col fk:gap-2",children:[jsxs("div",{className:"fk:mb-2 fk:flex fk:shrink-0 fk:items-start fk:gap-2",children:[jsxs(b$1,{children:[jsx(c$1,{asChild:true,children:jsx(M,{className:"fk:-ml-1 fk:h-4 fk:w-4"})}),jsx(e,{children:"Toggle Sidebar"})]}),jsx(l,{orientation:"vertical",className:"fk:mt-1 fk:h-4"}),jsx("div",{className:"fk:flex fk:flex-1 fk:items-center fk:gap-2",children:jsx("h1",{className:"fk:truncate fk:text-lg fk:font-semibold fk:leading-none fk:tracking-tight",children:s?p?.chat.title?.trim()??"Chat":"Agent"})})]}),jsx("div",{className:"fk:flex fk:min-h-0 fk:flex-1 fk:gap-4",children:jsxs("div",{className:a$3("fk:flex fk:min-h-0 fk:min-w-0 fk:flex-1 fk:flex-col fk:gap-3",Fe&&"fk:justify-center fk:pb-[12vh]"),children:[Fe?jsx(Dn,{projectId:te}):jsx(A.Provider,{value:true,children:jsx(u.Provider,{value:nn,children:jsx(Pn,{api:k,chatId:s??null,pendingFollowUp:b$2,pendingMessage:W,projectId:t$1,questionAnsweredSignal:U,resolveDetail:x$1})})}),jsxs("div",{className:"fk:shrink-0 fk:pb-3",children:[s?jsx(t,{api:k,chatId:s,projectId:t$1,sending:j||o,onTurnIntoAutomation:l=>{N.current||o||Be(`Turn the monitor \u201C${l.description}\u201D into an automation.`,[]).catch(h=>L(h instanceof Error?h.message:"Failed to send the message."));}}):null,Z?jsx("p",{className:"fk:mx-auto fk:mb-2 fk:max-w-4xl fk:text-xs fk:text-destructive",children:Z}):null,jsx(wn,{api:k,effort:K,modelKey:V,modelPending:o,models:A$1,sending:j,streaming:ce,onEffortChange:F,onError:L,onModelChange:w,onSend:Be,onStop:rn,placeholder:ce?"Add context or steer the agent...":`Ask Flexkit anything about ${en}...`})]})]})})]})]})}export{er as AgentChatPage};//# sourceMappingURL=chat-page-LR7XC2US.js.map
4
+ //# sourceMappingURL=chat-page-LR7XC2US.js.map