@flexkit/studio 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat-page-H6I3XOKS.js +2 -0
- package/dist/chat-page-H6I3XOKS.js.map +1 -0
- package/dist/{chunk-OUSEULBR.js → chunk-2IRKGO2B.js} +4 -4
- package/dist/{chunk-OUSEULBR.js.map → chunk-2IRKGO2B.js.map} +1 -1
- package/dist/{chunk-3CPWATOI.js → chunk-5TQF5UQQ.js} +2 -2
- package/dist/{chunk-3CPWATOI.js.map → chunk-5TQF5UQQ.js.map} +1 -1
- package/dist/chunk-ANVO5P65.js +4 -0
- package/dist/{chunk-YINI2YKQ.js.map → chunk-ANVO5P65.js.map} +1 -1
- package/dist/chunk-BURKG2UC.js +6 -0
- package/dist/chunk-BURKG2UC.js.map +1 -0
- package/dist/chunk-GM5OZTHL.js +2 -0
- package/dist/{chunk-GZIMMYLK.js.map → chunk-GM5OZTHL.js.map} +1 -1
- package/dist/{chunk-7PDYCDX6.js → chunk-JYHZU2UZ.js} +2 -2
- package/dist/{chunk-7PDYCDX6.js.map → chunk-JYHZU2UZ.js.map} +1 -1
- package/dist/chunk-LQVZWFM2.js +2 -0
- package/dist/{chunk-QQUNCDUB.js.map → chunk-LQVZWFM2.js.map} +1 -1
- package/dist/{chunk-6LYEDKFY.js → chunk-QHDL6CA2.js} +3 -3
- package/dist/{chunk-6LYEDKFY.js.map → chunk-QHDL6CA2.js.map} +1 -1
- package/dist/{chunk-G4PYYHI3.js → chunk-S7M5CQ5S.js} +2 -2
- package/dist/{chunk-G4PYYHI3.js.map → chunk-S7M5CQ5S.js.map} +1 -1
- package/dist/chunk-ZBI744KS.js +3 -0
- package/dist/chunk-ZBI744KS.js.map +1 -0
- package/dist/index.css +6 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -4
- package/dist/list-ZQJ6NHKQ.js +2 -0
- package/dist/{list-SQCN7HA3.js.map → list-ZQJ6NHKQ.js.map} +1 -1
- package/dist/pages-2GQVTLL2.js +3 -0
- package/dist/pages-2GQVTLL2.js.map +1 -0
- package/dist/plugin-pages-E5TUDDT5.js +2 -0
- package/dist/{plugin-pages-AHOA6YJE.js.map → plugin-pages-E5TUDDT5.js.map} +1 -1
- package/dist/{root-IIILTOJI.js → root-BD4VN3RD.js} +3 -3
- package/dist/{root-IIILTOJI.js.map → root-BD4VN3RD.js.map} +1 -1
- package/dist/root-HC5QZ2JM.js +2 -0
- package/dist/{root-5ZW536V7.js.map → root-HC5QZ2JM.js.map} +1 -1
- package/dist/{root-QPQQ3DFJ.js → root-P6CVZ5ZB.js} +2 -2
- package/dist/{root-QPQQ3DFJ.js.map → root-P6CVZ5ZB.js.map} +1 -1
- package/dist/root-TXKDRPOK.js +23 -0
- package/dist/{root-4FGNRGCD.js.map → root-TXKDRPOK.js.map} +1 -1
- package/dist/{search-2K2BU4UU.js → search-PVXTPIYJ.js} +2 -2
- package/dist/{search-2K2BU4UU.js.map → search-PVXTPIYJ.js.map} +1 -1
- package/dist/{skills-pages-PSBRTFGK.js → skills-pages-N5KDEHLT.js} +2 -2
- package/dist/{skills-pages-PSBRTFGK.js.map → skills-pages-N5KDEHLT.js.map} +1 -1
- package/dist/spec-renderer-ZZ3GPVKU.js +2 -0
- package/dist/spec-renderer-ZZ3GPVKU.js.map +1 -0
- package/dist/ui.js +1 -1
- package/package.json +4 -4
- package/dist/chat-page-NWMI4XOE.js +0 -2
- package/dist/chat-page-NWMI4XOE.js.map +0 -1
- package/dist/chunk-GZIMMYLK.js +0 -2
- package/dist/chunk-NSYO57O3.js +0 -5
- package/dist/chunk-NSYO57O3.js.map +0 -1
- package/dist/chunk-QQUNCDUB.js +0 -2
- package/dist/chunk-W2EBZZAY.js +0 -3
- package/dist/chunk-W2EBZZAY.js.map +0 -1
- package/dist/chunk-YINI2YKQ.js +0 -4
- package/dist/list-SQCN7HA3.js +0 -2
- package/dist/pages-OIAPASPF.js +0 -3
- package/dist/pages-OIAPASPF.js.map +0 -1
- package/dist/plugin-pages-AHOA6YJE.js +0 -2
- package/dist/root-4FGNRGCD.js +0 -23
- package/dist/root-5ZW536V7.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';import {t,u,v as v$1}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import'./index.css';import {t,u,v as v$1}from'./chunk-QHDL6CA2.js';import {v,b,m,o,p,q,r,t as t$1,s}from'./chunk-ODORXGGY.js';import {d}from'./chunk-5DHOBLAE.js';import {a}from'./chunk-O2QMYUPS.js';import {CirclePlus,Check}from'lucide-react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function w({column:s$1,title:i,options:d$1}){let r$1=new Set(s$1?.getFilterValue());return jsxs(t,{children:[jsx(u,{asChild:true,children:jsxs(d,{variant:"outline",size:"sm",className:"fk:h-8 fk:border-dashed",children:[jsx(CirclePlus,{className:"fk:mr-2 fk:h-4 fk:w-4"}),i,r$1?.size>0&&jsxs(Fragment,{children:[jsx(v,{orientation:"vertical",className:"fk:mx-2 fk:h-4"}),jsx(b,{variant:"secondary",className:"fk:rounded-xs fk:px-1 fk:font-normal fk:lg:hidden fk:corner-squircle",children:r$1.size}),jsx("div",{className:"fk:space-x-1 fk:lg:flex",children:r$1.size>2?jsxs(b,{variant:"secondary",className:"fk:rounded-xs fk:px-1 fk:font-normal fk:corner-squircle",children:[r$1.size," selected"]}):d$1.filter(a=>r$1.has(a.value)).map(a=>jsx(b,{variant:"secondary",className:"fk:rounded-xs fk:px-1 fk:font-normal fk:corner-squircle",children:a.label},a.value))})]})]})}),jsx(v$1,{className:"fk:w-50 fk:p-0",align:"start",children:jsxs(m,{children:[jsx(o,{placeholder:i}),jsxs(p,{children:[jsx(q,{children:"No results found."}),jsx(r,{children:d$1.map(a$1=>{let m=r$1.has(a$1.value);return jsxs(t$1,{onSelect:()=>{m?r$1.delete(a$1.value):r$1.add(a$1.value);let c=Array.from(r$1);s$1?.setFilterValue(c.length?c:void 0);},children:[jsx("div",{className:a("fk:mr-2 fk:flex fk:h-4 fk:w-4 fk:items-center fk:justify-center fk:rounded-xs fk:border fk:border-primary fk:corner-squircle",m?"fk:bg-primary fk:text-primary-foreground":"fk:opacity-50 fk:[&_svg]:invisible"),children:jsx(Check,{className:a("fk:size-3.5",m?"fk:text-primary-foreground":"fk:text-muted-foreground")})}),a$1.icon&&jsx(a$1.icon,{className:"fk:mr-2 fk:h-4 fk:w-4 fk:text-muted-foreground"}),jsx("span",{children:a$1.label})]},a$1.value)})}),r$1.size>0&&jsxs(Fragment,{children:[jsx(s,{}),jsx(r,{children:jsx(t$1,{onSelect:()=>s$1?.setFilterValue(void 0),className:"fk:justify-center fk:text-center",children:"Clear filters"})})]})]})]})})]})}export{w as a};//# sourceMappingURL=chunk-S7M5CQ5S.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-S7M5CQ5S.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data-grid/data-table-faceted-filter.tsx"],"names":["DataTableFacetedFilter","column","title","options","selectedValues","jsxs","Popover","jsx","PopoverTrigger","Button","CirclePlusIcon","Fragment","Separator","Badge","option","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","isSelected","CommandItem","filterValues","cn","CheckIcon","CommandSeparator"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/data-grid/data-table-faceted-filter.tsx"],"names":["DataTableFacetedFilter","column","title","options","selectedValues","jsxs","Popover","jsx","PopoverTrigger","Button","CirclePlusIcon","Fragment","Separator","Badge","option","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","isSelected","CommandItem","filterValues","cn","CheckIcon","CommandSeparator"],"mappings":"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","file":"chunk-S7M5CQ5S.js","sourcesContent":["import * as React from 'react';\nimport { Check as CheckIcon, CirclePlus as CirclePlusIcon } from 'lucide-react';\nimport { Column } from '@tanstack/react-table';\nimport { cn } from '../ui/lib/utils';\nimport { Badge } from '../ui/primitives/badge';\nimport { Button } from '../ui/primitives/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from '../ui/primitives/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/primitives/popover';\nimport { Separator } from '../ui/primitives/separator';\n\ninterface DataTableFacetedFilterProps<TData, TValue> {\n column?: Column<TData, TValue>;\n title?: string;\n options: {\n label: string;\n value: string;\n icon?: React.ComponentType<{ className?: string }>;\n }[];\n}\n\nexport function DataTableFacetedFilter<TData, TValue>({\n column,\n title,\n options,\n}: DataTableFacetedFilterProps<TData, TValue>) {\n const selectedValues = new Set(column?.getFilterValue() as string[]);\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"fk:h-8 fk:border-dashed\">\n <CirclePlusIcon className=\"fk:mr-2 fk:h-4 fk:w-4\" />\n {title}\n {selectedValues?.size > 0 && (\n <>\n <Separator orientation=\"vertical\" className=\"fk:mx-2 fk:h-4\" />\n <Badge variant=\"secondary\" className=\"fk:rounded-xs fk:px-1 fk:font-normal fk:lg:hidden fk:corner-squircle\">\n {selectedValues.size}\n </Badge>\n <div className=\"fk:space-x-1 fk:lg:flex\">\n {selectedValues.size > 2 ? (\n <Badge variant=\"secondary\" className=\"fk:rounded-xs fk:px-1 fk:font-normal fk:corner-squircle\">\n {selectedValues.size} selected\n </Badge>\n ) : (\n options\n .filter((option) => selectedValues.has(option.value))\n .map((option) => (\n <Badge variant=\"secondary\" key={option.value} className=\"fk:rounded-xs fk:px-1 fk:font-normal fk:corner-squircle\">\n {option.label}\n </Badge>\n ))\n )}\n </div>\n </>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"fk:w-50 fk:p-0\" align=\"start\">\n <Command>\n <CommandInput placeholder={title} />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n <CommandGroup>\n {options.map((option) => {\n const isSelected = selectedValues.has(option.value);\n return (\n <CommandItem\n key={option.value}\n onSelect={() => {\n if (isSelected) {\n selectedValues.delete(option.value);\n } else {\n selectedValues.add(option.value);\n }\n const filterValues = Array.from(selectedValues);\n column?.setFilterValue(filterValues.length ? filterValues : undefined);\n }}\n >\n <div\n className={cn(\n 'fk:mr-2 fk:flex fk:h-4 fk:w-4 fk:items-center fk:justify-center fk:rounded-xs fk:border fk:border-primary fk:corner-squircle',\n isSelected ? 'fk:bg-primary fk:text-primary-foreground' : 'fk:opacity-50 fk:[&_svg]:invisible'\n )}\n >\n <CheckIcon\n className={cn(\n 'fk:size-3.5',\n isSelected ? 'fk:text-primary-foreground' : 'fk:text-muted-foreground'\n )}\n />\n </div>\n {option.icon && <option.icon className=\"fk:mr-2 fk:h-4 fk:w-4 fk:text-muted-foreground\" />}\n <span>{option.label}</span>\n </CommandItem>\n );\n })}\n </CommandGroup>\n {selectedValues.size > 0 && (\n <>\n <CommandSeparator />\n <CommandGroup>\n <CommandItem\n onSelect={() => column?.setFilterValue(undefined)}\n className=\"fk:justify-center fk:text-center\"\n >\n Clear filters\n </CommandItem>\n </CommandGroup>\n </>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import'./index.css';import {h,e}from'./chunk-NNA4MLFC.js';import {b as b$1}from'./chunk-5DHOBLAE.js';import {createContext,lazy,Suspense,useMemo,useContext}from'react';import {Navigate,useParams}from'react-router-dom';import {Layout,FileStack,SquarePlay,Bot}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';import C,{mutate}from'swr';var d={name:"_asset",plural:"_assets",display:"originalFilename",menu:{hidden:true},attributes:[{name:"path",label:"Asset",scope:"global",options:{size:140},dataType:"string",inputType:"text",previewType:"assetPreviewField",defaultValue:""},{name:"originalFilename",label:"Filename",scope:"global",options:{size:320},dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"size",label:"Size",scope:"global",options:{size:120},dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"width",label:"Width",scope:"global",options:{size:90},dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"height",label:"Height",scope:"global",options:{size:100},dataType:"int",inputType:"text",previewType:"text",defaultValue:""},{name:"mimeType",label:"Mime Type",scope:"global",options:{size:160},dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"lqip",label:"lqip",scope:"global",hidden:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"url",label:"URL",scope:"global",hidden:true,readOnly:true,dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"_updatedAt",label:"Updated At",scope:"global",options:{size:220},readOnly:true,hidden:true,dataType:"datetime",inputType:"datetime",previewType:"datetime",defaultValue:""},{name:"tags",label:"Tags",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",previewType:"tags",options:{size:300},relationship:{mode:"multiple",field:"name",entity:"_tag"}}]};var f={name:"_tag",plural:"_tags",display:"name",menu:{hidden:true},attributes:[{name:"name",label:"Tag Name",scope:"global",options:{size:220},dataType:"string",inputType:"text",previewType:"text",defaultValue:""},{name:"_updatedAt",label:"Updated At",scope:"global",options:{size:220},readOnly:true,hidden:true,dataType:"datetime",inputType:"datetime",previewType:"datetime",defaultValue:""},{name:"assets",label:"Assets",scope:"relationship",dataType:"string",inputType:"relationship",defaultValue:"",relationship:{mode:"multiple",field:"originalFilename",entity:"_asset"}}]};function T(){let{resolvedTheme:e}=b$1();return jsx("div",{className:"fk:flex fk:w-full fk:h-full fk:justify-center fk:items-center fk:bg-background",children:jsxs("div",{className:"fk:flex fk:flex-col fk:items-center",children:[e==="dark"?jsxs("svg",{className:"fk:h-8 fk:w-8 fk:animate-bounce",fill:"none",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M7 8H41V40H7V8Z",fill:"#020817"}),jsx("path",{d:"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z",fill:"white"})]}):jsxs("svg",{className:"fk:h-8 fk:w-8 fk:animate-bounce",fill:"none",viewBox:"0 0 48 48",xmlns:"http://www.w3.org/2000/svg",children:[jsx("path",{d:"M7 8H41V40H7V8Z",fill:"white"}),jsx("path",{d:"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z",fill:"#020817"})]}),jsx("div",{className:"fk:text-foreground fk:text-center fk:mt-4 fk:animate-pulse",children:"Loading..."})]})})}var _=Navigate;function a(e){let t=lazy(e);return jsx(Suspense,{fallback:jsx(T,{}),children:jsx(t,{})})}var B=a(()=>import('./root-HC5QZ2JM.js').then(e=>({default:e.Root}))),J=a(()=>import('./list-ZQJ6NHKQ.js').then(e=>({default:e.List}))),W=a(()=>import('./edit-entity-PVT34FD7.js').then(e=>({default:e.EditEntity}))),X=a(()=>import('./root-TXKDRPOK.js').then(e=>({default:e.Root}))),q=a(()=>import('./root-BD4VN3RD.js').then(e=>({default:e.Root}))),K=a(()=>import('./root-P6CVZ5ZB.js').then(e=>({default:e.Root}))),$=a(()=>import('./plugin-pages-E5TUDDT5.js').then(e=>({default:e.PluginsPage}))),G=a(()=>import('./plugin-pages-E5TUDDT5.js').then(e=>({default:e.InstalledPluginsPage}))),Q=a(()=>import('./plugin-pages-E5TUDDT5.js').then(e=>({default:e.PluginDetailPage}))),v=a(()=>import('./chat-page-H6I3XOKS.js').then(e=>({default:e.AgentChatPage}))),Y=a(()=>import('./pages-2GQVTLL2.js').then(e=>({default:e.AutomationsPage}))),ee=a(()=>import('./pages-2GQVTLL2.js').then(e=>({default:e.RunHistoryPage}))),te=a(()=>import('./pages-2GQVTLL2.js').then(e=>({default:e.ApprovalsPage}))),oe=a(()=>import('./pages-2GQVTLL2.js').then(e=>({default:e.CreateAutomationPage}))),ae=a(()=>import('./pages-2GQVTLL2.js').then(e=>({default:e.AutomationDetailPage}))),ne=a(()=>import('./pages-2GQVTLL2.js').then(e=>({default:e.RunsPage}))),ie=a(()=>import('./pages-2GQVTLL2.js').then(e=>({default:e.RunDetailPage}))),re=a(()=>import('./skills-pages-N5KDEHLT.js').then(e=>({default:e.SkillsPage}))),se=a(()=>import('./skills-pages-N5KDEHLT.js').then(e=>({default:e.CreateSkillPage}))),pe=a(()=>import('./skills-pages-N5KDEHLT.js').then(e=>({default:e.SkillDetailPage}))),l=[{name:"desk",icon:jsx(Layout,{strokeWidth:1.5}),title:"Desk",component:B,routes:[{path:"list/:entity",component:J,children:[{path:"edit/:id",component:W}]}]},{name:"asset-manager",icon:jsx(FileStack,{strokeWidth:1.5}),title:"Asset Manager",component:X,routes:[]},{name:"explorer",icon:jsx(SquarePlay,{strokeWidth:1.5}),title:"Explorer",component:q,routes:[]},{name:"ai",icon:jsx(Bot,{strokeWidth:1.5}),title:"AI",component:K,routes:[{path:"plugins",component:$},{path:"plugins/installed",component:G},{path:"plugins/:pluginId",component:Q},{component:jsx(_,{replace:true,to:"agent"}),path:""},{component:v,path:"agent"},{component:v,path:"agent/chats/:chatId"},{component:Y,path:"automations"},{component:ee,path:"runs"},{component:te,path:"approvals"},{component:oe,path:"automations/new"},{component:ae,path:"automations/:automationId"},{component:ne,path:"automations/:automationId/runs"},{component:ie,path:"automations/:automationId/runs/:runId"},{component:re,path:"skills"},{component:se,path:"skills/new"},{component:pe,path:"skills/:skillId"}]}];async function b(e$1){try{let t=await fetch(e(e$1).schema,{credentials:"include",mode:"cors"});if(!t.ok){let n=t.statusText||`Request failed with status ${String(t.status)}`;try{let i=await t.json();n=i.error??i.message??n;}catch{}return {ok:!1,projectId:e$1,error:{status:t.status,message:n}}}let o=await t.json();return {ok:!0,project:{...o,projectId:o.projectId||e$1}}}catch(t){return {ok:false,projectId:e$1,error:{status:0,message:t instanceof Error?t.message:"Network error"}}}}function w(e,t){let o=[],n={};for(let i of e??[])i.ok?o.push(i.project):n[i.projectId]=i.error;return {projects:o,errors:n,isLoading:t}}function L(e,t){let o=t&&e.length>0?["project-schemas",t,...e]:null,{data:n,isLoading:i}=C(o,()=>Promise.all(e.map(s=>b(s))),{revalidateOnFocus:false,revalidateOnReconnect:false});return w(n,!!o&&(i||n===void 0))}function le(e,t){return w(e?[e]:void 0,t)}function A(e,t){let o=t&&e?["project-schema",t,e]:null,{data:n,isLoading:i}=C(o,()=>b(e??""),{revalidateOnFocus:false,revalidateOnReconnect:false});return le(n,!!o&&(i||n===void 0))}function me(e,t){return Array.isArray(e)&&(e[0]==="project-schema"||e[0]==="project-schemas")&&e.slice(2).includes(t)}function Ee(e){return mutate(t=>me(t,e))}var R=createContext({mode:"projects",apps:l,contributions:{apps:l},currentProjectId:void 0,currentProject:void 0,currentProjectSchema:[],projects:[],projectIds:[],projectSummaries:[],schemaErrors:{},isLoadingSchemas:false});function ge(e){return [...e.filter(o=>o.name!==d.name&&o.name!==f.name),d,f]}function Ue({projectIds:e,projectSummaries:t=[],mode:o="projects",userId:n,children:i}){let{projectId:s}=useParams(),[,I]=h(),h$1=I.user?.id??n,V=L(o==="projects"?e:[],h$1),O=A(o==="hosted"&&s&&e.includes(s)?s:void 0,h$1),{projects:y,errors:P,isLoading:S}=o==="hosted"?O:V,m=useMemo(()=>e.map(r=>y.find(u=>u.projectId===r)).filter(r=>r!==void 0).map(r=>({...r,schema:ge(r.schema)})),[y,e]),H=useMemo(()=>{let r=m.find(u=>u.projectId===s);return {mode:o,apps:l,contributions:{apps:l},currentProjectId:s,currentProject:r,currentProjectSchema:r?.schema??[],projects:m,projectIds:e,projectSummaries:t,schemaErrors:P,isLoadingSchemas:S}},[s,P,S,o,e,t,m]);return jsx(R.Provider,{value:H,children:i})}function Ne(){return useContext(R)}
|
|
2
|
+
export{T as a,d as b,f as c,Ee as d,l as e,Ue as f,Ne as g};//# sourceMappingURL=chunk-ZBI744KS.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-ZBI744KS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/entities/assets-schema.ts","../src/entities/tags-schema.ts","../src/ui/components/loading.tsx","../src/core/apps/built-in-apps.tsx","../src/core/config/use-project-schemas.ts","../src/core/config/config-context.tsx"],"names":["assetSchema","tagSchema","Loading","resolvedTheme","useTheme","jsx","jsxs","NavigateCompat","Navigate","lazyElement","loader","Component","lazy","Suspense","deskRoot","m","deskList","deskEditEntity","assetManagerRoot","explorerRoot","aiRoot","aiPluginsPage","aiInstalledPluginsPage","aiPluginDetailPage","aiAgentChatPage","aiAutomationsPage","aiRunHistoryPage","aiApprovalsPage","aiCreateAutomationPage","aiAutomationDetailPage","aiRunsPage","aiRunDetailPage","aiSkillsPage","aiCreateSkillPage","aiSkillDetailPage","builtInApps","LayoutIcon","FileStackIcon","SquarePlayIcon","BotIcon","fetchProjectSchema","projectId","response","apiPaths","message","body","project","error","toProjectSchemasState","outcomes","isLoading","projects","errors","outcome","useProjectSchemas","projectIds","userId","key","data","useSWR","toProjectSchemaState","useProjectSchema","isProjectSchemaKey","revalidateProjectSchema","mutate","ConfigContext","createContext","upsertReservedEntities","schema","entity","ConfigProvider","projectSummaries","mode","children","currentProjectId","useParams","auth","useAuth","schemaUserId","allSchemas","currentSchema","loadedProjects","useMemo","value","currentProject","useConfig","useContext"],"mappings":"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","file":"chunk-ZBI744KS.js","sourcesContent":["import type { Entity } from '../core/types';\n\nexport const assetSchema: Entity = {\n name: '_asset',\n plural: '_assets',\n display: 'originalFilename',\n menu: {\n hidden: true,\n },\n attributes: [\n {\n name: 'path',\n label: 'Asset',\n scope: 'global',\n options: {\n size: 140,\n },\n dataType: 'string',\n inputType: 'text',\n previewType: 'assetPreviewField',\n defaultValue: '',\n },\n {\n name: 'originalFilename',\n label: 'Filename',\n scope: 'global',\n options: {\n size: 320,\n },\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'size',\n label: 'Size',\n scope: 'global',\n options: {\n size: 120,\n },\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'width',\n label: 'Width',\n scope: 'global',\n options: {\n size: 90,\n },\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'height',\n label: 'Height',\n scope: 'global',\n options: {\n size: 100,\n },\n dataType: 'int',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'mimeType',\n label: 'Mime Type',\n scope: 'global',\n options: {\n size: 160,\n },\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'lqip',\n label: 'lqip',\n scope: 'global',\n hidden: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: 'url',\n label: 'URL',\n scope: 'global',\n hidden: true,\n readOnly: true,\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: '_updatedAt',\n label: 'Updated At',\n scope: 'global',\n options: {\n size: 220,\n },\n readOnly: true,\n hidden: true,\n dataType: 'datetime',\n inputType: 'datetime',\n previewType: 'datetime',\n defaultValue: '',\n },\n {\n name: 'tags',\n label: 'Tags',\n scope: 'relationship',\n dataType: 'string',\n inputType: 'relationship',\n defaultValue: '',\n previewType: 'tags',\n options: {\n size: 300,\n },\n relationship: {\n mode: 'multiple',\n field: 'name',\n entity: '_tag',\n },\n },\n ],\n};\n","import type { Entity } from '../core/types';\n\nexport const tagSchema: Entity = {\n name: '_tag',\n plural: '_tags',\n display: 'name',\n menu: {\n hidden: true,\n },\n attributes: [\n {\n name: 'name',\n label: 'Tag Name',\n scope: 'global',\n options: {\n size: 220,\n },\n dataType: 'string',\n inputType: 'text',\n previewType: 'text',\n defaultValue: '',\n },\n {\n name: '_updatedAt',\n label: 'Updated At',\n scope: 'global',\n options: {\n size: 220,\n },\n readOnly: true,\n hidden: true,\n dataType: 'datetime',\n inputType: 'datetime',\n previewType: 'datetime',\n defaultValue: '',\n },\n {\n name: 'assets',\n label: 'Assets',\n scope: 'relationship',\n dataType: 'string',\n inputType: 'relationship',\n defaultValue: '',\n relationship: {\n mode: 'multiple',\n field: 'originalFilename',\n entity: '_asset',\n },\n },\n ],\n};\n","import type { JSX } from 'react';\nimport { useTheme } from '../theme-context';\n\nexport function Loading(): JSX.Element {\n const { resolvedTheme } = useTheme();\n\n return (\n <div className=\"fk:flex fk:w-full fk:h-full fk:justify-center fk:items-center fk:bg-background\">\n <div className=\"fk:flex fk:flex-col fk:items-center\">\n {resolvedTheme === 'dark' ? (\n <svg\n className=\"fk:h-8 fk:w-8 fk:animate-bounce\"\n fill=\"none\"\n viewBox=\"0 0 48 48\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M7 8H41V40H7V8Z\" fill=\"#020817\" />\n <path\n d=\"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z\"\n fill=\"white\"\n />\n </svg>\n ) : (\n <svg\n className=\"fk:h-8 fk:w-8 fk:animate-bounce\"\n fill=\"none\"\n viewBox=\"0 0 48 48\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M7 8H41V40H7V8Z\" fill=\"white\" />\n <path\n d=\"M24 0C42 0 48 6 48 24C48 42 42 48 24 48C6 48 0 42 0 24C0 6 6 0 24 0ZM17.7494 9.52381H8.7619L19.2833 23.8313L8.7619 38.7078H17.7494L21.0499 33.6639V14.2549L17.7494 9.52381ZM38.9577 9.52381H29.9542L26.2857 14.8229V33.0406L29.9542 38.7078H38.9577L28.3908 23.8313L38.9577 9.52381Z\"\n fill=\"#020817\"\n />\n </svg>\n )}\n <div className=\"fk:text-foreground fk:text-center fk:mt-4 fk:animate-pulse\">Loading...</div>\n </div>\n </div>\n );\n}\n","import { lazy, Suspense } from 'react';\nimport type { ComponentType, JSX } from 'react';\nimport {\n Bot as BotIcon,\n FileStack as FileStackIcon,\n Layout as LayoutIcon,\n SquarePlay as SquarePlayIcon,\n} from 'lucide-react';\nimport { Navigate } from 'react-router-dom';\nimport { Loading } from '../../ui/components/loading';\nimport type { AppOptions } from '../config/types';\n\nconst NavigateCompat = Navigate as unknown as ComponentType<{\n replace?: boolean;\n to: string;\n}>;\n\n/**\n * Wraps a lazily imported component in Suspense so each built-in app (and each of its routes)\n * is only downloaded when it is first rendered.\n */\nfunction lazyElement(loader: () => Promise<{ default: ComponentType }>): JSX.Element {\n const Component = lazy(loader);\n\n return (\n <Suspense fallback={<Loading />}>\n <Component />\n </Suspense>\n );\n}\n\n// Desk\nconst deskRoot = lazyElement(() => import('../../apps/desk/root').then((m) => ({ default: m.Root })));\nconst deskList = lazyElement(() => import('../../apps/desk/list').then((m) => ({ default: m.List })));\nconst deskEditEntity = lazyElement(() =>\n import('../../apps/desk/edit-entity').then((m) => ({ default: m.EditEntity }))\n);\n\n// Asset Manager\nconst assetManagerRoot = lazyElement(() =>\n import('../../apps/asset-manager/root').then((m) => ({ default: m.Root }))\n);\n\n// Explorer\nconst explorerRoot = lazyElement(() => import('../../apps/explorer/root').then((m) => ({ default: m.Root })));\n\n// AI\nconst aiRoot = lazyElement(() => import('../../apps/ai/root').then((m) => ({ default: m.Root })));\nconst aiPluginsPage = lazyElement(() =>\n import('../../apps/ai/plugin-pages').then((m) => ({ default: m.PluginsPage }))\n);\nconst aiInstalledPluginsPage = lazyElement(() =>\n import('../../apps/ai/plugin-pages').then((m) => ({ default: m.InstalledPluginsPage }))\n);\nconst aiPluginDetailPage = lazyElement(() =>\n import('../../apps/ai/plugin-pages').then((m) => ({ default: m.PluginDetailPage }))\n);\nconst aiAgentChatPage = lazyElement(() =>\n import('../../apps/ai/agent/chat-page').then((m) => ({ default: m.AgentChatPage }))\n);\nconst aiAutomationsPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.AutomationsPage }))\n);\nconst aiRunHistoryPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.RunHistoryPage }))\n);\nconst aiApprovalsPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.ApprovalsPage })));\nconst aiCreateAutomationPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.CreateAutomationPage }))\n);\nconst aiAutomationDetailPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.AutomationDetailPage }))\n);\nconst aiRunsPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.RunsPage })));\nconst aiRunDetailPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.RunDetailPage })));\nconst aiSkillsPage = lazyElement(() =>\n import('../../apps/ai/skills-pages').then((m) => ({ default: m.SkillsPage }))\n);\nconst aiCreateSkillPage = lazyElement(() =>\n import('../../apps/ai/skills-pages').then((m) => ({ default: m.CreateSkillPage }))\n);\nconst aiSkillDetailPage = lazyElement(() =>\n import('../../apps/ai/skills-pages').then((m) => ({ default: m.SkillDetailPage }))\n);\n\nexport const builtInApps: AppOptions[] = [\n {\n name: 'desk',\n icon: <LayoutIcon strokeWidth={1.5} />,\n title: 'Desk',\n component: deskRoot,\n routes: [\n {\n path: 'list/:entity',\n component: deskList,\n children: [\n {\n path: 'edit/:id',\n component: deskEditEntity, // Not used, left here as an example of how to nest routes in apps\n },\n ],\n },\n ],\n },\n {\n name: 'asset-manager',\n icon: <FileStackIcon strokeWidth={1.5} />,\n title: 'Asset Manager',\n component: assetManagerRoot,\n routes: [],\n },\n {\n name: 'explorer',\n icon: <SquarePlayIcon strokeWidth={1.5} />,\n title: 'Explorer',\n component: explorerRoot,\n routes: [],\n },\n {\n name: 'ai',\n icon: <BotIcon strokeWidth={1.5} />,\n title: 'AI',\n component: aiRoot,\n routes: [\n { path: 'plugins', component: aiPluginsPage },\n { path: 'plugins/installed', component: aiInstalledPluginsPage },\n { path: 'plugins/:pluginId', component: aiPluginDetailPage },\n {\n component: <NavigateCompat replace to=\"agent\" />,\n path: '',\n },\n {\n component: aiAgentChatPage,\n path: 'agent',\n },\n {\n component: aiAgentChatPage,\n path: 'agent/chats/:chatId',\n },\n {\n component: aiAutomationsPage,\n path: 'automations',\n },\n {\n component: aiRunHistoryPage,\n path: 'runs',\n },\n {\n component: aiApprovalsPage,\n path: 'approvals',\n },\n {\n component: aiCreateAutomationPage,\n path: 'automations/new',\n },\n {\n component: aiAutomationDetailPage,\n path: 'automations/:automationId',\n },\n {\n component: aiRunsPage,\n path: 'automations/:automationId/runs',\n },\n {\n component: aiRunDetailPage,\n path: 'automations/:automationId/runs/:runId',\n },\n {\n component: aiSkillsPage,\n path: 'skills',\n },\n {\n component: aiCreateSkillPage,\n path: 'skills/new',\n },\n {\n component: aiSkillDetailPage,\n path: 'skills/:skillId',\n },\n ],\n },\n];\n","'use client';\n\nimport useSWR, { mutate } from 'swr';\nimport { apiPaths } from '../api-paths';\nimport type { ProjectSchemaError, ProjectUiConfig } from './types';\n\nexport type ProjectSchemasState = {\n projects: ProjectUiConfig[];\n errors: { [projectId: string]: ProjectSchemaError };\n isLoading: boolean;\n};\n\ntype FetchOutcome = { ok: true; project: ProjectUiConfig } | { ok: false; projectId: string; error: ProjectSchemaError };\n\nasync function fetchProjectSchema(projectId: string): Promise<FetchOutcome> {\n try {\n const response = await fetch(apiPaths(projectId).schema, { credentials: 'include', mode: 'cors' });\n\n if (!response.ok) {\n let message = response.statusText || `Request failed with status ${String(response.status)}`;\n\n try {\n const body = (await response.json()) as { error?: string; message?: string };\n message = body.error ?? body.message ?? message;\n } catch {\n // keep the status text\n }\n\n return { ok: false, projectId, error: { status: response.status, message } };\n }\n\n const project = (await response.json()) as ProjectUiConfig;\n\n return { ok: true, project: { ...project, projectId: project.projectId || projectId } };\n } catch (error) {\n return {\n ok: false,\n projectId,\n error: { status: 0, message: error instanceof Error ? error.message : 'Network error' },\n };\n }\n}\n\nexport function toProjectSchemasState(outcomes: FetchOutcome[] | undefined, isLoading: boolean): ProjectSchemasState {\n const projects: ProjectUiConfig[] = [];\n const errors: { [projectId: string]: ProjectSchemaError } = {};\n\n for (const outcome of outcomes ?? []) {\n if (outcome.ok) {\n projects.push(outcome.project);\n } else {\n errors[outcome.projectId] = outcome.error;\n }\n }\n\n return { projects, errors, isLoading };\n}\n\n/**\n * Loads the deployed schema of every project the Studio can open. Fetching\n * starts once the user is known (the endpoint needs a session) and the result\n * is kept for the lifetime of the page: schemas only change on deploy.\n */\nexport function useProjectSchemas(projectIds: string[], userId: string | undefined): ProjectSchemasState {\n const key = userId && projectIds.length > 0 ? ['project-schemas', userId, ...projectIds] : null;\n const { data, isLoading } = useSWR(key, () => Promise.all(projectIds.map((projectId) => fetchProjectSchema(projectId))), {\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n });\n\n return toProjectSchemasState(data, Boolean(key) && (isLoading || data === undefined));\n}\n\n/** State of a single project's schema, in the same shape as the multi-project hook. */\nexport function toProjectSchemaState(outcome: FetchOutcome | undefined, isLoading: boolean): ProjectSchemasState {\n return toProjectSchemasState(outcome ? [outcome] : undefined, isLoading);\n}\n\n/**\n * Hosted mode: loads only the project currently open. Each project has its own\n * SWR key, so switching back to a project reuses the schema already fetched.\n */\nexport function useProjectSchema(projectId: string | undefined, userId: string | undefined): ProjectSchemasState {\n const key = userId && projectId ? ['project-schema', userId, projectId] : null;\n const { data, isLoading } = useSWR(key, () => fetchProjectSchema(projectId ?? ''), {\n revalidateOnFocus: false,\n revalidateOnReconnect: false,\n });\n\n return toProjectSchemaState(data, Boolean(key) && (isLoading || data === undefined));\n}\n\n/** True for the SWR keys that hold `projectId`'s schema (single- and multi-project hooks). */\nexport function isProjectSchemaKey(key: unknown, projectId: string): boolean {\n return (\n Array.isArray(key) &&\n (key[0] === 'project-schema' || key[0] === 'project-schemas') &&\n key.slice(2).includes(projectId)\n );\n}\n\n/** Refetches the deployed schema of `projectId`, e.g. after the agent deployed a schema change. */\nexport function revalidateProjectSchema(projectId: string): Promise<unknown> {\n return mutate((key) => isProjectSchemaKey(key, projectId));\n}\n","'use client';\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { JSX } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useAuth } from '../../auth/auth-context';\nimport { assetSchema } from '../../entities/assets-schema';\nimport { tagSchema } from '../../entities/tags-schema';\nimport { builtInApps } from '../apps/built-in-apps';\nimport type { AppOptions, ProjectSchemaError, ProjectSummary, ProjectUiConfig, StudioMode } from './types';\nimport type { Entity } from '../types';\nimport { useProjectSchema, useProjectSchemas } from './use-project-schemas';\n\nexport interface ConfigContext {\n /** `projects` when the host passed `projectIds`, `hosted` when the Studio listed the user's projects itself. */\n mode: StudioMode;\n /** The Studio apps shown in the app bar, in order. */\n apps: AppOptions[];\n /** Kept for callers that read `contributions.apps`; same list as `apps`. */\n contributions: {\n apps: AppOptions[];\n };\n currentProjectId?: string;\n /** The project named by the `:projectId` route param, once its schema has loaded. */\n currentProject?: ProjectUiConfig;\n currentProjectSchema: Entity[];\n /** Projects whose schema loaded, in `projectIds` order. */\n projects: ProjectUiConfig[];\n /** Every project id the Studio can open, loaded or not. */\n projectIds: string[];\n /** Hosted mode: name, avatar, role and team of each project, known before any schema loads. */\n projectSummaries: ProjectSummary[];\n /** Per project id: why its schema could not be loaded. */\n schemaErrors: { [projectId: string]: ProjectSchemaError };\n isLoadingSchemas: boolean;\n}\n\nconst ConfigContext = createContext<ConfigContext>({\n mode: 'projects',\n apps: builtInApps,\n contributions: { apps: builtInApps },\n currentProjectId: undefined,\n currentProject: undefined,\n currentProjectSchema: [],\n projects: [],\n projectIds: [],\n projectSummaries: [],\n schemaErrors: {},\n isLoadingSchemas: false,\n});\n\n/** Appends the reserved asset and tag entities to a deployed schema. */\nexport function upsertReservedEntities(schema: Entity[]): Entity[] {\n const withoutReserved = schema.filter((entity) => entity.name !== assetSchema.name && entity.name !== tagSchema.name);\n\n return [...withoutReserved, assetSchema, tagSchema];\n}\n\nexport function ConfigProvider({\n projectIds,\n projectSummaries = [],\n mode = 'projects',\n userId,\n children,\n}: {\n projectIds: string[];\n projectSummaries?: ProjectSummary[];\n mode?: StudioMode;\n /** Hosted mode: the signed-in user's id, known before the per-project `/users/me` call. */\n userId?: string;\n children: React.ReactNode;\n}): JSX.Element {\n /**\n * Getting the projectId from the URL via react-router-dom's useParams hook triggers a rerender of this Context\n * every time the URL changes.\n */\n const { projectId: currentProjectId } = useParams<{ projectId: string }>();\n const [, auth] = useAuth();\n const schemaUserId = auth.user?.id ?? userId;\n // Project mode loads every project up front (short, host-defined list); hosted mode only the one open.\n const allSchemas = useProjectSchemas(mode === 'projects' ? projectIds : [], schemaUserId);\n const currentSchema = useProjectSchema(\n mode === 'hosted' && currentProjectId && projectIds.includes(currentProjectId) ? currentProjectId : undefined,\n schemaUserId\n );\n const { projects: loadedProjects, errors, isLoading } = mode === 'hosted' ? currentSchema : allSchemas;\n const projects = useMemo(\n () =>\n projectIds\n .map((projectId) => loadedProjects.find((project) => project.projectId === projectId))\n .filter((project): project is ProjectUiConfig => project !== undefined)\n .map((project) => ({ ...project, schema: upsertReservedEntities(project.schema) })),\n [loadedProjects, projectIds]\n );\n\n const value = useMemo<ConfigContext>(() => {\n const currentProject = projects.find((project) => project.projectId === currentProjectId);\n\n return {\n mode,\n apps: builtInApps,\n contributions: { apps: builtInApps },\n currentProjectId,\n currentProject,\n currentProjectSchema: currentProject?.schema ?? [],\n projects,\n projectIds,\n projectSummaries,\n schemaErrors: errors,\n isLoadingSchemas: isLoading,\n };\n }, [currentProjectId, errors, isLoading, mode, projectIds, projectSummaries, projects]);\n\n return <ConfigContext.Provider value={value}>{children}</ConfigContext.Provider>;\n}\n\nexport function useConfig(): ConfigContext {\n return useContext(ConfigContext);\n}\n"]}
|
package/dist/index.css
CHANGED
|
@@ -2982,6 +2982,9 @@
|
|
|
2982
2982
|
.fk\:pl-4 {
|
|
2983
2983
|
padding-left: calc(var(--fk-spacing) * 4);
|
|
2984
2984
|
}
|
|
2985
|
+
.fk\:pl-5 {
|
|
2986
|
+
padding-left: calc(var(--fk-spacing) * 5);
|
|
2987
|
+
}
|
|
2985
2988
|
.fk\:pl-6 {
|
|
2986
2989
|
padding-left: calc(var(--fk-spacing) * 6);
|
|
2987
2990
|
}
|
|
@@ -3041,6 +3044,9 @@
|
|
|
3041
3044
|
font-size: var(--fk-text-xs);
|
|
3042
3045
|
line-height: var(--tw-leading, var(--fk-text-xs--line-height));
|
|
3043
3046
|
}
|
|
3047
|
+
.fk\:text-\[0\.7rem\] {
|
|
3048
|
+
font-size: 0.7rem;
|
|
3049
|
+
}
|
|
3044
3050
|
.fk\:text-\[0\.8rem\] {
|
|
3045
3051
|
font-size: 0.8rem;
|
|
3046
3052
|
}
|
package/dist/index.d.ts
CHANGED