@flexkit/studio 0.2.19 → 0.2.21
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/activity-nav-button-7RLCHOFV.js +2 -0
- package/dist/{activity-nav-button-V5DFHADL.js.map → activity-nav-button-7RLCHOFV.js.map} +1 -1
- package/dist/chat-page-QKSMDM7A.js +4 -0
- package/dist/chat-page-QKSMDM7A.js.map +1 -0
- package/dist/chunk-3TAYSYYW.js +7 -0
- package/dist/{chunk-XNHSHVG2.js.map → chunk-3TAYSYYW.js.map} +1 -1
- package/dist/{chunk-ME55YNBF.js → chunk-4PUMSUJL.js} +2 -2
- package/dist/{chunk-ME55YNBF.js.map → chunk-4PUMSUJL.js.map} +1 -1
- package/dist/{chunk-BMX4URYN.js → chunk-7ERLYAPR.js} +2 -2
- package/dist/{chunk-BMX4URYN.js.map → chunk-7ERLYAPR.js.map} +1 -1
- package/dist/chunk-7KLXWCDS.js +3 -0
- package/dist/chunk-7KLXWCDS.js.map +1 -0
- package/dist/{chunk-4IEOAKKK.js → chunk-7KRDPQXX.js} +2 -2
- package/dist/{chunk-4IEOAKKK.js.map → chunk-7KRDPQXX.js.map} +1 -1
- package/dist/{chunk-HCJAM5LG.js → chunk-AFLZA2R5.js} +2 -2
- package/dist/{chunk-HCJAM5LG.js.map → chunk-AFLZA2R5.js.map} +1 -1
- package/dist/chunk-AHR2EZGG.js +4 -0
- package/dist/{chunk-VMWUMFUL.js.map → chunk-AHR2EZGG.js.map} +1 -1
- package/dist/chunk-BXUW6OXZ.js +2 -0
- package/dist/{chunk-ZKA2HKNI.js.map → chunk-BXUW6OXZ.js.map} +1 -1
- package/dist/chunk-DZS344SD.js +378 -0
- package/dist/chunk-DZS344SD.js.map +1 -0
- package/dist/chunk-ELOJGLAR.js +2 -0
- package/dist/chunk-ELOJGLAR.js.map +1 -0
- package/dist/chunk-HKN6BX5U.js +2 -0
- package/dist/chunk-HKN6BX5U.js.map +1 -0
- package/dist/{chunk-DFLAX7EE.js → chunk-I4INIJFN.js} +2 -2
- package/dist/{chunk-DFLAX7EE.js.map → chunk-I4INIJFN.js.map} +1 -1
- package/dist/{chunk-QWQHXMXW.js → chunk-MJICM7YP.js} +2 -2
- package/dist/{chunk-QWQHXMXW.js.map → chunk-MJICM7YP.js.map} +1 -1
- package/dist/chunk-MLHXPTBT.js +2 -0
- package/dist/chunk-MLHXPTBT.js.map +1 -0
- package/dist/{chunk-H2RWSC56.js → chunk-PLZUH56T.js} +3 -3
- package/dist/{chunk-H2RWSC56.js.map → chunk-PLZUH56T.js.map} +1 -1
- package/dist/{chunk-UOR437J2.js → chunk-QCVQJN5O.js} +2 -2
- package/dist/{chunk-UOR437J2.js.map → chunk-QCVQJN5O.js.map} +1 -1
- package/dist/{chunk-DHVKE36X.js → chunk-SY67F62K.js} +3 -3
- package/dist/{chunk-DHVKE36X.js.map → chunk-SY67F62K.js.map} +1 -1
- package/dist/chunk-T2DOW23R.js +3 -0
- package/dist/chunk-T2DOW23R.js.map +1 -0
- package/dist/{chunk-6RRB47OZ.js → chunk-YBLY77TV.js} +5 -5
- package/dist/{chunk-6RRB47OZ.js.map → chunk-YBLY77TV.js.map} +1 -1
- package/dist/{chunk-V6RB45UU.js → chunk-YJM2RPTA.js} +2 -2
- package/dist/{chunk-V6RB45UU.js.map → chunk-YJM2RPTA.js.map} +1 -1
- package/dist/{entry-3JSFO4OU.js → entry-BKWT63OH.js} +2 -2
- package/dist/{entry-3JSFO4OU.js.map → entry-BKWT63OH.js.map} +1 -1
- package/dist/index.css +24 -0
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/list-F2MN4VI4.js +3 -0
- package/dist/{list-SY3L2ACH.js.map → list-F2MN4VI4.js.map} +1 -1
- package/dist/list-RFIARR7J.js +2 -0
- package/dist/{list-Z2C74QDN.js.map → list-RFIARR7J.js.map} +1 -1
- package/dist/{pages-INCA54HE.js → pages-6YG37BSV.js} +3 -3
- package/dist/{pages-INCA54HE.js.map → pages-6YG37BSV.js.map} +1 -1
- package/dist/plugin-pages-R5QCB5GZ.js +2 -0
- package/dist/{plugin-pages-WO3MCJKC.js.map → plugin-pages-R5QCB5GZ.js.map} +1 -1
- package/dist/record-links-BACU2DWS.js +2 -0
- package/dist/{record-links-CTB4SC4J.js.map → record-links-BACU2DWS.js.map} +1 -1
- package/dist/root-6FML7PJC.js +23 -0
- package/dist/{root-DOOWSYWY.js.map → root-6FML7PJC.js.map} +1 -1
- package/dist/{root-XHXX3SZG.js → root-FCO3MQTE.js} +3 -3
- package/dist/{root-XHXX3SZG.js.map → root-FCO3MQTE.js.map} +1 -1
- package/dist/{root-JA2LFGNX.js → root-MQ5FZRMQ.js} +2 -2
- package/dist/{root-JA2LFGNX.js.map → root-MQ5FZRMQ.js.map} +1 -1
- package/dist/root-MTJAYVPT.js +14 -0
- package/dist/root-MTJAYVPT.js.map +1 -0
- package/dist/{root-6MSWGFZX.js → root-U4QMDA3Q.js} +2 -2
- package/dist/{root-6MSWGFZX.js.map → root-U4QMDA3Q.js.map} +1 -1
- package/dist/root-UCQDMHDV.js +2 -0
- package/dist/{root-OGX4DUTM.js.map → root-UCQDMHDV.js.map} +1 -1
- package/dist/{search-Z4M4R4NJ.js → search-7DVZZIZ6.js} +2 -2
- package/dist/{search-Z4M4R4NJ.js.map → search-7DVZZIZ6.js.map} +1 -1
- package/dist/skills-pages-EPIBHZVO.js +2 -0
- package/dist/skills-pages-EPIBHZVO.js.map +1 -0
- package/dist/source-F6B2UBWX.js +2 -0
- package/dist/{source-5J56KIFA.js.map → source-F6B2UBWX.js.map} +1 -1
- package/package.json +4 -1
- package/dist/activity-nav-button-V5DFHADL.js +0 -2
- package/dist/chat-page-LAK4TFN4.js +0 -4
- package/dist/chat-page-LAK4TFN4.js.map +0 -1
- package/dist/chunk-A7XHA2P6.js +0 -3
- package/dist/chunk-A7XHA2P6.js.map +0 -1
- package/dist/chunk-BMO7JFAX.js +0 -2
- package/dist/chunk-BMO7JFAX.js.map +0 -1
- package/dist/chunk-OOYCTZ3C.js +0 -379
- package/dist/chunk-OOYCTZ3C.js.map +0 -1
- package/dist/chunk-VMWUMFUL.js +0 -4
- package/dist/chunk-XNHSHVG2.js +0 -7
- package/dist/chunk-ZKA2HKNI.js +0 -2
- package/dist/list-SY3L2ACH.js +0 -3
- package/dist/list-Z2C74QDN.js +0 -2
- package/dist/plugin-pages-WO3MCJKC.js +0 -2
- package/dist/record-links-CTB4SC4J.js +0 -2
- package/dist/root-B4D3C37Q.js +0 -2
- package/dist/root-B4D3C37Q.js.map +0 -1
- package/dist/root-DOOWSYWY.js +0 -23
- package/dist/root-OGX4DUTM.js +0 -2
- package/dist/skills-pages-TP2XQPCQ.js +0 -2
- package/dist/skills-pages-TP2XQPCQ.js.map +0 -1
- package/dist/source-5J56KIFA.js +0 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import'./index.css';import {EditorView}from'@codemirror/view';import {tags}from'@lezer/highlight';import {createTheme}from'@uiw/codemirror-themes';var n="var(--font-geist-mono), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace",t="#212121",e="#fafafa";function c(i,r,g){return [i,EditorView.theme({"&":{backgroundColor:r},".cm-scroller":{backgroundColor:r},".cm-gutters":{backgroundColor:g}})]}var u=c(createTheme({settings:{background:t,caret:"#f8f8f0",fontFamily:n,foreground:"#f8f8f2",gutterBackground:t,gutterBorder:"transparent",gutterForeground:"#6d8a88",lineHighlight:"rgba(255, 255, 255, 0.1)",selection:"rgba(255, 255, 255, 0.1)",selectionMatch:"rgba(255, 255, 255, 0.2)"},styles:[{color:"#6272a4",tag:[tags.comment,tags.quote,tags.strikethrough]},{color:"#6272a4",tag:[tags.meta,tags.processingInstruction]},{color:"#f1fa8c",tag:tags.string},{color:"#f91f6f",tag:[tags.atom,tags.bool,tags.number,tags.heading]},{color:"#ff79c6",tag:[tags.keyword,tags.operator,tags.tagName]},{color:"#8be9fd",tag:[tags.typeName,tags.link,tags.url]},{color:"#009fb8",tag:[tags.className,tags.attributeName,tags.monospace]},{color:"#66d9ef",tag:[tags.propertyName,tags.function(tags.propertyName)]},{color:"#009fb8",tag:[tags.definition(tags.variableName),tags.function(tags.variableName)]},{color:"#0072f5",tag:[tags.strong,tags.emphasis]},{color:"#ff5555",tag:tags.invalid}],theme:"dark"}),t,t),d=c(createTheme({settings:{background:e,caret:"#526fff",fontFamily:n,foreground:"#383a42",gutterBackground:e,gutterBorder:"transparent",gutterForeground:"#9d9d9f",lineHighlight:"#383a420c",selection:"#e5e5e6",selectionMatch:"#e5e5e6"},styles:[{color:"#a0a1a7",tag:[tags.comment,tags.quote,tags.strikethrough]},{color:"#a0a1a7",tag:[tags.meta,tags.processingInstruction]},{color:"#50a14f",tag:tags.string},{color:"#986801",tag:[tags.attributeName]},{color:"#a626a4",tag:tags.keyword},{color:"#0072f5",tag:[tags.operator,tags.strong,tags.emphasis]},{color:"#f91f6f",tag:[tags.atom,tags.bool,tags.number,tags.heading]},{color:"#c18401",tag:[tags.typeName,tags.className]},{color:"#009fb8",tag:[tags.tagName,tags.propertyName,tags.monospace]},{color:"#4078f2",tag:[tags.link,tags.url,tags.function(tags.variableName),tags.definition(tags.variableName)]},{color:"#f91f6f",tag:tags.invalid}],theme:"light"}),e,e);export{u as a,d as b};//# sourceMappingURL=chunk-MLHXPTBT.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-MLHXPTBT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/apps/ai/markdown-editor-themes.ts"],"names":["EDITOR_FONT","DARK_THEME_BACKGROUND","LIGHT_THEME_BACKGROUND","withEditorSurface","theme","background","gutterBackground","EditorView","darkTheme","createTheme","t","lightTheme"],"mappings":"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","file":"chunk-MLHXPTBT.js","sourcesContent":["import type { Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport { tags as t } from '@lezer/highlight';\nimport { createTheme } from '@uiw/codemirror-themes';\n\nconst EDITOR_FONT = 'var(--font-geist-mono), ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace';\nconst DARK_THEME_BACKGROUND = '#212121';\nconst LIGHT_THEME_BACKGROUND = '#fafafa';\n\nfunction withEditorSurface(theme: Extension, background: string, gutterBackground: string): Extension {\n return [\n theme,\n EditorView.theme({\n '&': {\n backgroundColor: background,\n },\n '.cm-scroller': {\n backgroundColor: background,\n },\n '.cm-gutters': {\n backgroundColor: gutterBackground,\n },\n }),\n ];\n}\n\nexport const darkTheme: Extension = withEditorSurface(\n createTheme({\n settings: {\n background: DARK_THEME_BACKGROUND,\n caret: '#f8f8f0',\n fontFamily: EDITOR_FONT,\n foreground: '#f8f8f2',\n gutterBackground: DARK_THEME_BACKGROUND,\n gutterBorder: 'transparent',\n gutterForeground: '#6d8a88',\n lineHighlight: 'rgba(255, 255, 255, 0.1)',\n selection: 'rgba(255, 255, 255, 0.1)',\n selectionMatch: 'rgba(255, 255, 255, 0.2)',\n },\n styles: [\n { color: '#6272a4', tag: [t.comment, t.quote, t.strikethrough] },\n { color: '#6272a4', tag: [t.meta, t.processingInstruction] },\n { color: '#f1fa8c', tag: t.string },\n { color: '#f91f6f', tag: [t.atom, t.bool, t.number, t.heading] },\n { color: '#ff79c6', tag: [t.keyword, t.operator, t.tagName] },\n { color: '#8be9fd', tag: [t.typeName, t.link, t.url] },\n { color: '#009fb8', tag: [t.className, t.attributeName, t.monospace] },\n { color: '#66d9ef', tag: [t.propertyName, t.function(t.propertyName)] },\n {\n color: '#009fb8',\n tag: [t.definition(t.variableName), t.function(t.variableName)],\n },\n { color: '#0072f5', tag: [t.strong, t.emphasis] },\n { color: '#ff5555', tag: t.invalid },\n ],\n theme: 'dark',\n }),\n DARK_THEME_BACKGROUND,\n DARK_THEME_BACKGROUND\n);\n\nexport const lightTheme: Extension = withEditorSurface(\n createTheme({\n settings: {\n background: LIGHT_THEME_BACKGROUND,\n caret: '#526fff',\n fontFamily: EDITOR_FONT,\n foreground: '#383a42',\n gutterBackground: LIGHT_THEME_BACKGROUND,\n gutterBorder: 'transparent',\n gutterForeground: '#9d9d9f',\n lineHighlight: '#383a420c',\n selection: '#e5e5e6',\n selectionMatch: '#e5e5e6',\n },\n styles: [\n { color: '#a0a1a7', tag: [t.comment, t.quote, t.strikethrough] },\n { color: '#a0a1a7', tag: [t.meta, t.processingInstruction] },\n { color: '#50a14f', tag: t.string },\n { color: '#986801', tag: [t.attributeName] },\n { color: '#a626a4', tag: t.keyword },\n { color: '#0072f5', tag: [t.operator, t.strong, t.emphasis] },\n { color: '#f91f6f', tag: [t.atom, t.bool, t.number, t.heading] },\n { color: '#c18401', tag: [t.typeName, t.className] },\n { color: '#009fb8', tag: [t.tagName, t.propertyName, t.monospace] },\n { color: '#4078f2', tag: [t.link, t.url, t.function(t.variableName), t.definition(t.variableName)] },\n { color: '#f91f6f', tag: t.invalid },\n ],\n theme: 'light',\n }),\n LIGHT_THEME_BACKGROUND,\n LIGHT_THEME_BACKGROUND\n);\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import'./index.css';import {g,d as d$1}from'./chunk-2HYQVMP3.js';import {b as b$1}from'./chunk-U45E5X3H.js';import {createContext,lazy,Suspense,useMemo,useContext}from'react';import {Navigate,useParams}from'react-router-dom';import {Bot,Layout,FileStack,BookOpenText,Waypoints,SquarePlay}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';import w,{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 x(){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 o(e){let t=lazy(e);return jsx(Suspense,{fallback:jsx(x,{}),children:jsx(t,{})})}var J=o(()=>import('./root-
|
|
2
|
-
export{x as a,d as b,f as c,Fe as d,Xe as e,qe as f};//# sourceMappingURL=chunk-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import'./index.css';import {g,d as d$1}from'./chunk-2HYQVMP3.js';import {b as b$1}from'./chunk-U45E5X3H.js';import {createContext,lazy,Suspense,useMemo,useContext}from'react';import {Navigate,useParams}from'react-router-dom';import {Bot,Layout,FileStack,BookOpenText,Waypoints,SquarePlay}from'lucide-react';import {jsx,jsxs}from'react/jsx-runtime';import w,{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 x(){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 o(e){let t=lazy(e);return jsx(Suspense,{fallback:jsx(x,{}),children:jsx(t,{})})}var J=o(()=>import('./root-MQ5FZRMQ.js').then(e=>({default:e.Root}))),X=o(()=>import('./list-RFIARR7J.js').then(e=>({default:e.List}))),q=o(()=>import('./edit-entity-PVT34FD7.js').then(e=>({default:e.EditEntity}))),K=o(()=>import('./root-6FML7PJC.js').then(e=>({default:e.Root}))),G=o(()=>import('./root-U4QMDA3Q.js').then(e=>({default:e.Root}))),$=o(()=>import('./list-F2MN4VI4.js').then(e=>({default:e.List}))),Q=o(()=>import('./source-F6B2UBWX.js').then(e=>({default:e.Source}))),Y=o(()=>import('./root-MTJAYVPT.js').then(e=>({default:e.Root}))),ee=o(()=>import('./root-FCO3MQTE.js').then(e=>({default:e.Root}))),te=o(()=>import('./root-UCQDMHDV.js').then(e=>({default:e.Root}))),oe=o(()=>import('./plugin-pages-R5QCB5GZ.js').then(e=>({default:e.PluginsPage}))),ne=o(()=>import('./plugin-pages-R5QCB5GZ.js').then(e=>({default:e.InstalledPluginsPage}))),ae=o(()=>import('./plugin-pages-R5QCB5GZ.js').then(e=>({default:e.PluginDetailPage}))),T=o(()=>import('./chat-page-QKSMDM7A.js').then(e=>({default:e.AgentChatPage}))),ie=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.AutomationsPage}))),re=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.RunHistoryPage}))),se=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.ApprovalsPage}))),pe=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.ActivityPage}))),ce=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.ActivityItemPage}))),le=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.CreateAutomationPage}))),me=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.AutomationDetailPage}))),ue=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.RunsPage}))),de=o(()=>import('./pages-6YG37BSV.js').then(e=>({default:e.RunDetailPage}))),fe=o(()=>import('./skills-pages-EPIBHZVO.js').then(e=>({default:e.SkillsPage}))),ge=o(()=>import('./skills-pages-EPIBHZVO.js').then(e=>({default:e.CreateSkillPage}))),he=o(()=>import('./skills-pages-EPIBHZVO.js').then(e=>({default:e.SkillDetailPage}))),l=[{name:"ai",icon:jsx(Bot,{strokeWidth:1.5}),title:"AI",component:te,routes:[{path:"plugins",component:oe},{path:"plugins/installed",component:ne},{path:"plugins/:pluginId",component:ae},{component:jsx(_,{replace:true,to:"agent"}),path:""},{component:T,path:"agent"},{component:T,path:"agent/chats/:chatId"},{component:ie,path:"automations"},{component:re,path:"runs"},{component:se,path:"approvals"},{component:pe,path:"activity"},{component:ce,path:"activity/:itemId"},{component:le,path:"automations/new"},{component:me,path:"automations/:automationId"},{component:ue,path:"automations/:automationId/runs"},{component:de,path:"automations/:automationId/runs/:runId"},{component:fe,path:"skills"},{component:ge,path:"skills/new"},{component:he,path:"skills/:skillId"}]},{name:"desk",icon:jsx(Layout,{strokeWidth:1.5}),title:"Desk",component:J,routes:[{path:"list/:entity",component:X,children:[{path:"edit/:id",component:q}]}]},{name:"asset-manager",icon:jsx(FileStack,{strokeWidth:1.5}),title:"Asset Manager",component:K,routes:[]},{name:"knowledge",icon:jsx(BookOpenText,{strokeWidth:1.5}),title:"Knowledge",component:G,routes:[{component:$,path:""},{component:Q,path:":sourceId"}]},{name:"graph",icon:jsx(Waypoints,{strokeWidth:1.5}),title:"Graph",component:Y,routes:[]},{name:"explorer",icon:jsx(SquarePlay,{strokeWidth:1.5}),title:"Explorer",component:ee,routes:[]}];async function C(e){try{let t=await fetch(d$1(e).schema,{credentials:"include",mode:"cors"});if(!t.ok){let a=t.statusText||`Request failed with status ${String(t.status)}`;try{let i=await t.json();a=i.error??i.message??a;}catch{}return {ok:!1,projectId:e,error:{status:t.status,message:a}}}let n=await t.json();return {ok:!0,project:{...n,projectId:n.projectId||e}}}catch(t){return {ok:false,projectId:e,error:{status:0,message:t instanceof Error?t.message:"Network error"}}}}function b(e,t){let n=[],a={};for(let i of e??[])i.ok?n.push(i.project):a[i.projectId]=i.error;return {projects:n,errors:a,isLoading:t}}function L(e,t){let n=t&&e.length>0?["project-schemas",t,...e]:null,{data:a,isLoading:i}=w(n,()=>Promise.all(e.map(p=>C(p))),{revalidateOnFocus:false,revalidateOnReconnect:false});return b(a,!!n&&(i||a===void 0))}function Pe(e,t){return b(e?[e]:void 0,t)}function A(e,t){let n=t&&e?["project-schema",t,e]:null,{data:a,isLoading:i}=w(n,()=>C(e??""),{revalidateOnFocus:false,revalidateOnReconnect:false});return Pe(a,!!n&&(i||a===void 0))}function Se(e,t){return Array.isArray(e)&&(e[0]==="project-schema"||e[0]==="project-schemas")&&e.slice(2).includes(t)}function Fe(e){return mutate(t=>Se(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 xe(e){return [...e.filter(n=>n.name!==d.name&&n.name!==f.name),d,f]}function Xe({projectIds:e,projectSummaries:t=[],mode:n="projects",userId:a,children:i}){let{projectId:p}=useParams(),[,I]=g(),h=I.user?.id??a,V=L(n==="projects"?e:[],h),O=A(n==="hosted"&&p&&e.includes(p)?p:void 0,h),{projects:y,errors:P,isLoading:S}=n==="hosted"?O:V,m=useMemo(()=>e.map(s=>y.find(u=>u.projectId===s)).filter(s=>s!==void 0).map(s=>({...s,schema:xe(s.schema)})),[y,e]),H=useMemo(()=>{let s=m.find(u=>u.projectId===p);return {mode:n,apps:l,contributions:{apps:l},currentProjectId:p,currentProject:s,currentProjectSchema:s?.schema??[],projects:m,projectIds:e,projectSummaries:t,schemaErrors:P,isLoadingSchemas:S}},[p,P,S,n,e,t,m]);return jsx(R.Provider,{value:H,children:i})}function qe(){return useContext(R)}
|
|
2
|
+
export{x as a,d as b,f as c,Fe as d,Xe as e,qe as f};//# sourceMappingURL=chunk-PLZUH56T.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-PLZUH56T.js.map
|
|
@@ -1 +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","knowledgeRoot","knowledgeList","knowledgeSource","graphRoot","explorerRoot","aiRoot","aiPluginsPage","aiInstalledPluginsPage","aiPluginDetailPage","aiAgentChatPage","aiAutomationsPage","aiRunHistoryPage","aiApprovalsPage","aiActivityPage","aiActivityItemPage","aiCreateAutomationPage","aiAutomationDetailPage","aiRunsPage","aiRunDetailPage","aiSkillsPage","aiCreateSkillPage","aiSkillDetailPage","builtInApps","BotIcon","LayoutIcon","FileStackIcon","BookOpenTextIcon","WaypointsIcon","SquarePlayIcon","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":"uXAEO,IAAMA,CAAAA,CAAsB,CACjC,IAAA,CAAM,QAAA,CACN,OAAQ,SAAA,CACR,OAAA,CAAS,kBAAA,CACT,IAAA,CAAM,CACJ,MAAA,CAAQ,IACV,CAAA,CACA,UAAA,CAAY,CACV,CACE,IAAA,CAAM,OACN,KAAA,CAAO,OAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,KAAM,GACR,CAAA,CACA,SAAU,QAAA,CACV,SAAA,CAAW,OACX,WAAA,CAAa,mBAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,KAAM,kBAAA,CACN,KAAA,CAAO,WACP,KAAA,CAAO,QAAA,CACP,QAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,QAAA,CAAU,QAAA,CACV,UAAW,MAAA,CACX,WAAA,CAAa,OACb,YAAA,CAAc,EAChB,EACA,CACE,IAAA,CAAM,MAAA,CACN,KAAA,CAAO,MAAA,CACP,KAAA,CAAO,SACP,OAAA,CAAS,CACP,KAAM,GACR,CAAA,CACA,SAAU,KAAA,CACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,KAAM,OAAA,CACN,KAAA,CAAO,QACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,EACR,EACA,QAAA,CAAU,KAAA,CACV,UAAW,MAAA,CACX,WAAA,CAAa,OACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,QAAA,CACN,MAAO,QAAA,CACP,KAAA,CAAO,SACP,OAAA,CAAS,CACP,KAAM,GACR,CAAA,CACA,QAAA,CAAU,KAAA,CACV,SAAA,CAAW,MAAA,CACX,YAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,KAAM,UAAA,CACN,KAAA,CAAO,WAAA,CACP,KAAA,CAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,EACA,QAAA,CAAU,QAAA,CACV,UAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,MAAA,CACN,MAAO,MAAA,CACP,KAAA,CAAO,SACP,MAAA,CAAQ,IAAA,CACR,QAAA,CAAU,QAAA,CACV,SAAA,CAAW,MAAA,CACX,YAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,KAAM,KAAA,CACN,KAAA,CAAO,KAAA,CACP,KAAA,CAAO,QAAA,CACP,MAAA,CAAQ,KACR,QAAA,CAAU,IAAA,CACV,SAAU,QAAA,CACV,SAAA,CAAW,OACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,KAAM,YAAA,CACN,KAAA,CAAO,aACP,KAAA,CAAO,QAAA,CACP,QAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,QAAA,CAAU,IAAA,CACV,OAAQ,IAAA,CACR,QAAA,CAAU,UAAA,CACV,SAAA,CAAW,UAAA,CACX,WAAA,CAAa,WACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,MAAA,CACN,MAAO,MAAA,CACP,KAAA,CAAO,eACP,QAAA,CAAU,QAAA,CACV,UAAW,cAAA,CACX,YAAA,CAAc,EAAA,CACd,WAAA,CAAa,MAAA,CACb,OAAA,CAAS,CACP,IAAA,CAAM,GACR,EACA,YAAA,CAAc,CACZ,KAAM,UAAA,CACN,KAAA,CAAO,MAAA,CACP,MAAA,CAAQ,MACV,CACF,CACF,CACF,MCrIaC,CAAAA,CAAoB,CAC/B,KAAM,MAAA,CACN,MAAA,CAAQ,OAAA,CACR,OAAA,CAAS,MAAA,CACT,IAAA,CAAM,CACJ,MAAA,CAAQ,IACV,EACA,UAAA,CAAY,CACV,CACE,IAAA,CAAM,MAAA,CACN,KAAA,CAAO,UAAA,CACP,KAAA,CAAO,QAAA,CACP,QAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,QAAA,CAAU,SACV,SAAA,CAAW,MAAA,CACX,WAAA,CAAa,MAAA,CACb,YAAA,CAAc,EAChB,EACA,CACE,IAAA,CAAM,aACN,KAAA,CAAO,YAAA,CACP,MAAO,QAAA,CACP,OAAA,CAAS,CACP,IAAA,CAAM,GACR,CAAA,CACA,SAAU,IAAA,CACV,MAAA,CAAQ,KACR,QAAA,CAAU,UAAA,CACV,UAAW,UAAA,CACX,WAAA,CAAa,UAAA,CACb,YAAA,CAAc,EAChB,CAAA,CACA,CACE,IAAA,CAAM,QAAA,CACN,KAAA,CAAO,QAAA,CACP,KAAA,CAAO,cAAA,CACP,SAAU,QAAA,CACV,SAAA,CAAW,cAAA,CACX,YAAA,CAAc,EAAA,CACd,YAAA,CAAc,CACZ,IAAA,CAAM,UAAA,CACN,MAAO,kBAAA,CACP,MAAA,CAAQ,QACV,CACF,CACF,CACF,EC/CO,SAASC,CAAAA,EAAuB,CACrC,GAAM,CAAE,cAAAC,CAAc,CAAA,CAAIC,GAAAA,EAAS,CAEnC,OACEC,GAAAA,CAAC,OAAI,SAAA,CAAU,gFAAA,CACb,SAAAC,IAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,qCAAA,CACZ,QAAA,CAAA,CAAAH,CAAAA,GAAkB,MAAA,CACjBG,IAAAA,CAAC,KAAA,CAAA,CACC,UAAU,iCAAA,CACV,IAAA,CAAK,OACL,OAAA,CAAQ,WAAA,CACR,MAAM,4BAAA,CAEN,QAAA,CAAA,CAAAD,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,iBAAA,CAAkB,KAAK,SAAA,CAAU,CAAA,CACzCA,GAAAA,CAAC,MAAA,CAAA,CACC,CAAA,CAAE,sRAAA,CACF,KAAK,OAAA,CACP,CAAA,CAAA,CACF,CAAA,CAEAC,IAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAU,kCACV,IAAA,CAAK,MAAA,CACL,QAAQ,WAAA,CACR,KAAA,CAAM,6BAEN,QAAA,CAAA,CAAAD,GAAAA,CAAC,MAAA,CAAA,CAAK,CAAA,CAAE,iBAAA,CAAkB,IAAA,CAAK,QAAQ,CAAA,CACvCA,GAAAA,CAAC,QACC,CAAA,CAAE,sRAAA,CACF,KAAK,SAAA,CACP,CAAA,CAAA,CACF,CAAA,CAEFA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6DAA6D,QAAA,CAAA,YAAA,CAAU,CAAA,CAAA,CACxF,EACF,CAEJ,CC1BA,IAAME,CAAAA,CAAiBC,QAAAA,CASvB,SAASC,EAAYC,CAAAA,CAAgE,CACnF,IAAMC,CAAAA,CAAYC,IAAAA,CAAKF,CAAM,CAAA,CAE7B,OACEL,GAAAA,CAACQ,QAAAA,CAAA,CAAS,QAAA,CAAUR,IAACH,CAAAA,CAAA,EAAQ,EAC3B,QAAA,CAAAG,GAAAA,CAACM,EAAA,EAAU,CAAA,CACb,CAEJ,CAGA,IAAMG,CAAAA,CAAWL,EAAY,IAAM,OAAO,oBAAsB,CAAA,CAAE,IAAA,CAAMM,IAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,IAAK,CAAA,CAAE,CAAC,EAC9FC,CAAAA,CAAWP,CAAAA,CAAY,IAAM,OAAO,oBAAsB,EAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,IAAK,EAAE,CAAC,CAAA,CAC9FE,CAAAA,CAAiBR,CAAAA,CAAY,IACjC,OAAO,2BAA6B,CAAA,CAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,UAAW,CAAA,CAAE,CAC/E,EAGMG,CAAAA,CAAmBT,CAAAA,CAAY,IAAM,OAAO,oBAA+B,CAAA,CAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,QAASA,CAAAA,CAAE,IAAK,EAAE,CAAC,CAAA,CAG/GI,EAAgBV,CAAAA,CAAY,IAAM,OAAO,oBAA2B,CAAA,CAAE,IAAA,CAAMM,IAAO,CAAE,OAAA,CAASA,EAAE,IAAK,CAAA,CAAE,CAAC,CAAA,CACxGK,CAAAA,CAAgBX,CAAAA,CAAY,IAAM,OAAO,oBAA2B,EAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,IAAK,CAAA,CAAE,CAAC,CAAA,CACxGM,CAAAA,CAAkBZ,CAAAA,CAAY,IAAM,OAAO,sBAA6B,CAAA,CAAE,KAAMM,CAAAA,GAAO,CAAE,QAASA,CAAAA,CAAE,MAAO,CAAA,CAAE,CAAC,CAAA,CAG9GO,CAAAA,CAAYb,EAAY,IAAM,OAAO,oBAAuB,CAAA,CAAE,IAAA,CAAMM,IAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,IAAK,CAAA,CAAE,CAAC,EAGhGQ,EAAAA,CAAed,CAAAA,CAAY,IAAM,OAAO,oBAA0B,EAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,IAAK,EAAE,CAAC,CAAA,CAGtGS,EAAAA,CAASf,CAAAA,CAAY,IAAM,OAAO,oBAAoB,CAAA,CAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,IAAK,CAAA,CAAE,CAAC,EAC1FU,EAAAA,CAAgBhB,CAAAA,CAAY,IAAM,OAAO,4BAA4B,CAAA,CAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,QAASA,CAAAA,CAAE,WAAY,EAAE,CAAC,CAAA,CAChHW,GAAyBjB,CAAAA,CAAY,IACzC,OAAO,4BAA4B,CAAA,CAAE,IAAA,CAAMM,IAAO,CAAE,OAAA,CAASA,EAAE,oBAAqB,CAAA,CAAE,CACxF,CAAA,CACMY,EAAAA,CAAqBlB,CAAAA,CAAY,IACrC,OAAO,4BAA4B,EAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,gBAAiB,CAAA,CAAE,CACpF,CAAA,CACMa,CAAAA,CAAkBnB,CAAAA,CAAY,IAClC,OAAO,yBAA+B,CAAA,CAAE,KAAMM,CAAAA,GAAO,CAAE,QAASA,CAAAA,CAAE,aAAc,CAAA,CAAE,CACpF,CAAA,CACMc,EAAAA,CAAoBpB,EAAY,IACpC,OAAO,qBAAqB,CAAA,CAAE,IAAA,CAAMM,IAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,eAAgB,CAAA,CAAE,CAC5E,EACMe,EAAAA,CAAmBrB,CAAAA,CAAY,IAAM,OAAO,qBAAqB,EAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,cAAe,EAAE,CAAC,CAAA,CAC/GgB,EAAAA,CAAkBtB,CAAAA,CAAY,IAAM,OAAO,qBAAqB,CAAA,CAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,aAAc,CAAA,CAAE,CAAC,EAC7GiB,EAAAA,CAAiBvB,CAAAA,CAAY,IAAM,OAAO,qBAAqB,CAAA,CAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,QAASA,CAAAA,CAAE,YAAa,EAAE,CAAC,CAAA,CAC3GkB,GAAqBxB,CAAAA,CAAY,IACrC,OAAO,qBAAqB,CAAA,CAAE,IAAA,CAAMM,IAAO,CAAE,OAAA,CAASA,EAAE,gBAAiB,CAAA,CAAE,CAC7E,CAAA,CACMmB,EAAAA,CAAyBzB,CAAAA,CAAY,IACzC,OAAO,qBAAqB,EAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,oBAAqB,CAAA,CAAE,CACjF,CAAA,CACMoB,EAAAA,CAAyB1B,CAAAA,CAAY,IACzC,OAAO,qBAAqB,CAAA,CAAE,KAAMM,CAAAA,GAAO,CAAE,QAASA,CAAAA,CAAE,oBAAqB,CAAA,CAAE,CACjF,CAAA,CACMqB,EAAAA,CAAa3B,EAAY,IAAM,OAAO,qBAAqB,CAAA,CAAE,IAAA,CAAMM,IAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,QAAS,CAAA,CAAE,CAAC,EACnGsB,EAAAA,CAAkB5B,CAAAA,CAAY,IAAM,OAAO,qBAAqB,EAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,aAAc,EAAE,CAAC,CAAA,CAC7GuB,EAAAA,CAAe7B,CAAAA,CAAY,IAAM,OAAO,4BAA4B,CAAA,CAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,OAAA,CAASA,CAAAA,CAAE,UAAW,CAAA,CAAE,CAAC,EAC9GwB,EAAAA,CAAoB9B,CAAAA,CAAY,IACpC,OAAO,4BAA4B,CAAA,CAAE,IAAA,CAAMM,CAAAA,GAAO,CAAE,QAASA,CAAAA,CAAE,eAAgB,EAAE,CACnF,CAAA,CACMyB,GAAoB/B,CAAAA,CAAY,IACpC,OAAO,4BAA4B,CAAA,CAAE,IAAA,CAAMM,IAAO,CAAE,OAAA,CAASA,EAAE,eAAgB,CAAA,CAAE,CACnF,CAAA,CAEa0B,CAAAA,CAA4B,CACvC,CACE,IAAA,CAAM,IAAA,CACN,KAAMpC,GAAAA,CAACqC,GAAAA,CAAA,CAAQ,WAAA,CAAa,GAAA,CAAK,EACjC,KAAA,CAAO,IAAA,CACP,SAAA,CAAWlB,EAAAA,CACX,MAAA,CAAQ,CACN,CAAE,IAAA,CAAM,SAAA,CAAW,UAAWC,EAAc,CAAA,CAC5C,CAAE,IAAA,CAAM,mBAAA,CAAqB,SAAA,CAAWC,EAAuB,CAAA,CAC/D,CAAE,KAAM,mBAAA,CAAqB,SAAA,CAAWC,EAAmB,CAAA,CAC3D,CACE,UAAWtB,GAAAA,CAACE,CAAAA,CAAA,CAAe,OAAA,CAAO,IAAA,CAAC,EAAA,CAAG,QAAQ,CAAA,CAC9C,IAAA,CAAM,EACR,CAAA,CACA,CACE,UAAWqB,CAAAA,CACX,IAAA,CAAM,OACR,CAAA,CACA,CACE,SAAA,CAAWA,EACX,IAAA,CAAM,qBACR,EACA,CACE,SAAA,CAAWC,GACX,IAAA,CAAM,aACR,CAAA,CACA,CACE,SAAA,CAAWC,EAAAA,CACX,KAAM,MACR,CAAA,CACA,CACE,SAAA,CAAWC,EAAAA,CACX,KAAM,WACR,CAAA,CACA,CACE,SAAA,CAAWC,EAAAA,CACX,IAAA,CAAM,UACR,CAAA,CACA,CACE,UAAWC,EAAAA,CACX,IAAA,CAAM,kBACR,CAAA,CACA,CACE,SAAA,CAAWC,EAAAA,CACX,IAAA,CAAM,iBACR,EACA,CACE,SAAA,CAAWC,GACX,IAAA,CAAM,2BACR,EACA,CACE,SAAA,CAAWC,EAAAA,CACX,IAAA,CAAM,gCACR,CAAA,CACA,CACE,SAAA,CAAWC,EAAAA,CACX,KAAM,uCACR,CAAA,CACA,CACE,SAAA,CAAWC,EAAAA,CACX,IAAA,CAAM,QACR,CAAA,CACA,CACE,UAAWC,EAAAA,CACX,IAAA,CAAM,YACR,CAAA,CACA,CACE,UAAWC,EAAAA,CACX,IAAA,CAAM,iBACR,CACF,CACF,CAAA,CACA,CACE,IAAA,CAAM,MAAA,CACN,KAAMnC,GAAAA,CAACsC,MAAAA,CAAA,CAAW,WAAA,CAAa,GAAA,CAAK,CAAA,CACpC,KAAA,CAAO,MAAA,CACP,SAAA,CAAW7B,EACX,MAAA,CAAQ,CACN,CACE,IAAA,CAAM,cAAA,CACN,UAAWE,CAAAA,CACX,QAAA,CAAU,CACR,CACE,IAAA,CAAM,UAAA,CACN,UAAWC,CACb,CACF,CACF,CACF,CACF,CAAA,CACA,CACE,IAAA,CAAM,eAAA,CACN,IAAA,CAAMZ,GAAAA,CAACuC,SAAAA,CAAA,CAAc,YAAa,GAAA,CAAK,CAAA,CACvC,MAAO,eAAA,CACP,SAAA,CAAW1B,EACX,MAAA,CAAQ,EACV,CAAA,CACA,CACE,IAAA,CAAM,YACN,IAAA,CAAMb,GAAAA,CAACwC,aAAA,CAAiB,WAAA,CAAa,IAAK,CAAA,CAC1C,KAAA,CAAO,WAAA,CACP,SAAA,CAAW1B,CAAAA,CACX,MAAA,CAAQ,CACN,CACE,SAAA,CAAWC,EACX,IAAA,CAAM,EACR,EACA,CACE,SAAA,CAAWC,CAAAA,CACX,IAAA,CAAM,WACR,CACF,CACF,CAAA,CACA,CACE,KAAM,OAAA,CACN,IAAA,CAAMhB,IAACyC,SAAAA,CAAA,CAAc,WAAA,CAAa,GAAA,CAAK,CAAA,CACvC,KAAA,CAAO,QACP,SAAA,CAAWxB,CAAAA,CACX,OAAQ,EACV,EACA,CACE,IAAA,CAAM,UAAA,CACN,IAAA,CAAMjB,GAAAA,CAAC0C,UAAAA,CAAA,CAAe,WAAA,CAAa,GAAA,CAAK,EACxC,KAAA,CAAO,UAAA,CACP,UAAWxB,EAAAA,CACX,MAAA,CAAQ,EACV,CACF,CAAA,CC5MA,eAAeyB,EAAmBC,CAAAA,CAA0C,CAC1E,GAAI,CACF,IAAMC,CAAAA,CAAW,MAAM,KAAA,CAAMC,GAAAA,CAASF,CAAS,CAAA,CAAE,MAAA,CAAQ,CAAE,YAAa,SAAA,CAAW,IAAA,CAAM,MAAO,CAAC,CAAA,CAEjG,GAAI,CAACC,CAAAA,CAAS,EAAA,CAAI,CAChB,IAAIE,CAAAA,CAAUF,EAAS,UAAA,EAAc,CAAA,2BAAA,EAA8B,MAAA,CAAOA,CAAAA,CAAS,MAAM,CAAC,GAE1F,GAAI,CACF,IAAMG,CAAAA,CAAQ,MAAMH,EAAS,IAAA,EAAK,CAClCE,CAAAA,CAAUC,CAAAA,CAAK,KAAA,EAASA,CAAAA,CAAK,SAAWD,EAC1C,CAAA,KAAQ,CAER,CAEA,OAAO,CAAE,EAAA,CAAI,CAAA,CAAA,CAAO,SAAA,CAAAH,CAAAA,CAAW,KAAA,CAAO,CAAE,OAAQC,CAAAA,CAAS,MAAA,CAAQ,QAAAE,CAAQ,CAAE,CAC7E,CAEA,IAAME,CAAAA,CAAW,MAAMJ,CAAAA,CAAS,IAAA,GAEhC,OAAO,CAAE,GAAI,CAAA,CAAA,CAAM,OAAA,CAAS,CAAE,GAAGI,CAAAA,CAAS,SAAA,CAAWA,CAAAA,CAAQ,SAAA,EAAaL,CAAU,CAAE,CACxF,CAAA,MAASM,EAAO,CACd,OAAO,CACL,EAAA,CAAI,KAAA,CACJ,SAAA,CAAAN,CAAAA,CACA,KAAA,CAAO,CAAE,OAAQ,CAAA,CAAG,OAAA,CAASM,aAAiB,KAAA,CAAQA,CAAAA,CAAM,QAAU,eAAgB,CACxF,CACF,CACF,CAEO,SAASC,EAAsBC,CAAAA,CAAsCC,CAAAA,CAAyC,CACnH,IAAMC,CAAAA,CAA8B,GAC9BC,CAAAA,CAAsD,EAAC,CAE7D,IAAA,IAAWC,CAAAA,IAAWJ,CAAAA,EAAY,EAAC,CAC7BI,CAAAA,CAAQ,GACVF,CAAAA,CAAS,IAAA,CAAKE,EAAQ,OAAO,CAAA,CAE7BD,CAAAA,CAAOC,CAAAA,CAAQ,SAAS,CAAA,CAAIA,EAAQ,KAAA,CAIxC,OAAO,CAAE,QAAA,CAAAF,CAAAA,CAAU,OAAAC,CAAAA,CAAQ,SAAA,CAAAF,CAAU,CACvC,CAOO,SAASI,EAAkBC,CAAAA,CAAsBC,CAAAA,CAAiD,CACvG,IAAMC,CAAAA,CAAMD,GAAUD,CAAAA,CAAW,MAAA,CAAS,CAAA,CAAI,CAAC,iBAAA,CAAmBC,CAAAA,CAAQ,GAAGD,CAAU,CAAA,CAAI,KACrF,CAAE,IAAA,CAAAG,EAAM,SAAA,CAAAR,CAAU,CAAA,CAAIS,CAAAA,CAAOF,CAAAA,CAAK,IAAM,QAAQ,GAAA,CAAIF,CAAAA,CAAW,IAAKd,CAAAA,EAAcD,CAAAA,CAAmBC,CAAS,CAAC,CAAC,CAAA,CAAG,CACvH,iBAAA,CAAmB,KAAA,CACnB,sBAAuB,KACzB,CAAC,EAED,OAAOO,CAAAA,CAAsBU,EAAM,CAAA,CAAQD,CAAAA,GAASP,CAAAA,EAAaQ,CAAAA,GAAS,MAAA,CAAU,CACtF,CAGO,SAASE,EAAAA,CAAqBP,EAAmCH,CAAAA,CAAyC,CAC/G,OAAOF,CAAAA,CAAsBK,CAAAA,CAAU,CAACA,CAAO,CAAA,CAAI,MAAA,CAAWH,CAAS,CACzE,CAMO,SAASW,CAAAA,CAAiBpB,CAAAA,CAA+Be,CAAAA,CAAiD,CAC/G,IAAMC,CAAAA,CAAMD,CAAAA,EAAUf,CAAAA,CAAY,CAAC,gBAAA,CAAkBe,EAAQf,CAAS,CAAA,CAAI,KACpE,CAAE,IAAA,CAAAiB,EAAM,SAAA,CAAAR,CAAU,CAAA,CAAIS,CAAAA,CAAOF,CAAAA,CAAK,IAAMjB,EAAmBC,CAAAA,EAAa,EAAE,EAAG,CACjF,iBAAA,CAAmB,MACnB,qBAAA,CAAuB,KACzB,CAAC,CAAA,CAED,OAAOmB,EAAAA,CAAqBF,EAAM,CAAA,CAAQD,CAAAA,GAASP,GAAaQ,CAAAA,GAAS,MAAA,CAAU,CACrF,CAGO,SAASI,EAAAA,CAAmBL,CAAAA,CAAchB,CAAAA,CAA4B,CAC3E,OACE,KAAA,CAAM,OAAA,CAAQgB,CAAG,CAAA,GAChBA,CAAAA,CAAI,CAAC,CAAA,GAAM,gBAAA,EAAoBA,CAAAA,CAAI,CAAC,CAAA,GAAM,iBAAA,CAAA,EAC3CA,EAAI,KAAA,CAAM,CAAC,EAAE,QAAA,CAAShB,CAAS,CAEnC,CAGO,SAASsB,EAAAA,CAAwBtB,CAAAA,CAAqC,CAC3E,OAAOuB,OAAQP,CAAAA,EAAQK,EAAAA,CAAmBL,EAAKhB,CAAS,CAAC,CAC3D,CCnEA,IAAMwB,CAAAA,CAAgBC,cAA6B,CACjD,IAAA,CAAM,WACN,IAAA,CAAMjC,CAAAA,CACN,cAAe,CAAE,IAAA,CAAMA,CAAY,CAAA,CACnC,gBAAA,CAAkB,MAAA,CAClB,eAAgB,MAAA,CAChB,oBAAA,CAAsB,EAAC,CACvB,QAAA,CAAU,GACV,UAAA,CAAY,EAAC,CACb,gBAAA,CAAkB,EAAC,CACnB,aAAc,EAAC,CACf,iBAAkB,KACpB,CAAC,EAGM,SAASkC,EAAAA,CAAuBC,CAAAA,CAA4B,CAGjE,OAAO,CAAC,GAFgBA,CAAAA,CAAO,MAAA,CAAQC,GAAWA,CAAAA,CAAO,IAAA,GAAS7E,EAAY,IAAA,EAAQ6E,CAAAA,CAAO,IAAA,GAAS5E,CAAAA,CAAU,IAAI,CAAA,CAExFD,EAAaC,CAAS,CACpD,CAEO,SAAS6E,EAAAA,CAAe,CAC7B,UAAA,CAAAf,CAAAA,CACA,gBAAA,CAAAgB,CAAAA,CAAmB,EAAC,CACpB,KAAAC,CAAAA,CAAO,UAAA,CACP,OAAAhB,CAAAA,CACA,QAAA,CAAAiB,CACF,CAAA,CAOgB,CAKd,GAAM,CAAE,SAAA,CAAWC,CAAiB,EAAIC,SAAAA,EAAiC,CACnE,EAAGC,CAAI,EAAIC,CAAAA,EAAQ,CACnBC,CAAAA,CAAeF,CAAAA,CAAK,IAAA,EAAM,EAAA,EAAMpB,EAEhCuB,CAAAA,CAAazB,CAAAA,CAAkBkB,IAAS,UAAA,CAAajB,CAAAA,CAAa,EAAC,CAAGuB,CAAY,CAAA,CAClFE,CAAAA,CAAgBnB,CAAAA,CACpBW,CAAAA,GAAS,UAAYE,CAAAA,EAAoBnB,CAAAA,CAAW,SAASmB,CAAgB,CAAA,CAAIA,EAAmB,MAAA,CACpGI,CACF,CAAA,CACM,CAAE,QAAA,CAAUG,CAAAA,CAAgB,OAAA7B,CAAAA,CAAQ,SAAA,CAAAF,CAAU,CAAA,CAAIsB,CAAAA,GAAS,QAAA,CAAWQ,EAAgBD,CAAAA,CACtF5B,CAAAA,CAAW+B,OAAAA,CACf,IACE3B,CAAAA,CACG,GAAA,CAAKd,GAAcwC,CAAAA,CAAe,IAAA,CAAMnC,GAAYA,CAAAA,CAAQ,SAAA,GAAcL,CAAS,CAAC,CAAA,CACpF,MAAA,CAAQK,CAAAA,EAAwCA,CAAAA,GAAY,MAAS,EACrE,GAAA,CAAKA,CAAAA,GAAa,CAAE,GAAGA,CAAAA,CAAS,OAAQqB,EAAAA,CAAuBrB,CAAAA,CAAQ,MAAM,CAAE,CAAA,CAAE,CAAA,CACtF,CAACmC,CAAAA,CAAgB1B,CAAU,CAC7B,CAAA,CAEM4B,CAAAA,CAAQD,QAAuB,IAAM,CACzC,IAAME,CAAAA,CAAiBjC,CAAAA,CAAS,IAAA,CAAML,GAAYA,CAAAA,CAAQ,SAAA,GAAc4B,CAAgB,CAAA,CAExF,OAAO,CACL,IAAA,CAAAF,CAAAA,CACA,IAAA,CAAMvC,CAAAA,CACN,aAAA,CAAe,CAAE,KAAMA,CAAY,CAAA,CACnC,iBAAAyC,CAAAA,CACA,cAAA,CAAAU,EACA,oBAAA,CAAsBA,CAAAA,EAAgB,MAAA,EAAU,EAAC,CACjD,QAAA,CAAAjC,EACA,UAAA,CAAAI,CAAAA,CACA,iBAAAgB,CAAAA,CACA,YAAA,CAAcnB,EACd,gBAAA,CAAkBF,CACpB,CACF,CAAA,CAAG,CAACwB,CAAAA,CAAkBtB,EAAQF,CAAAA,CAAWsB,CAAAA,CAAMjB,EAAYgB,CAAAA,CAAkBpB,CAAQ,CAAC,CAAA,CAEtF,OAAOtD,GAAAA,CAACoE,CAAAA,CAAc,QAAA,CAAd,CAAuB,MAAOkB,CAAAA,CAAQ,QAAA,CAAAV,CAAAA,CAAS,CACzD,CAEO,SAASY,IAA2B,CACzC,OAAOC,UAAAA,CAAWrB,CAAa,CACjC","file":"chunk-H2RWSC56.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 BookOpenText as BookOpenTextIcon,\n Bot as BotIcon,\n FileStack as FileStackIcon,\n Layout as LayoutIcon,\n SquarePlay as SquarePlayIcon,\n Waypoints as WaypointsIcon,\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(() => import('../../apps/asset-manager/root').then((m) => ({ default: m.Root })));\n\n// Knowledge\nconst knowledgeRoot = lazyElement(() => import('../../apps/knowledge/root').then((m) => ({ default: m.Root })));\nconst knowledgeList = lazyElement(() => import('../../apps/knowledge/list').then((m) => ({ default: m.List })));\nconst knowledgeSource = lazyElement(() => import('../../apps/knowledge/source').then((m) => ({ default: m.Source })));\n\n// Graph\nconst graphRoot = lazyElement(() => import('../../apps/graph/root').then((m) => ({ default: m.Root })));\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(() => import('../../apps/ai/plugin-pages').then((m) => ({ default: m.PluginsPage })));\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(() => import('../../apps/ai/pages').then((m) => ({ default: m.RunHistoryPage })));\nconst aiApprovalsPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.ApprovalsPage })));\nconst aiActivityPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.ActivityPage })));\nconst aiActivityItemPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.ActivityItemPage }))\n);\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(() => import('../../apps/ai/skills-pages').then((m) => ({ default: m.SkillsPage })));\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: '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: aiActivityPage,\n path: 'activity',\n },\n {\n component: aiActivityItemPage,\n path: 'activity/:itemId',\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 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: 'knowledge',\n icon: <BookOpenTextIcon strokeWidth={1.5} />,\n title: 'Knowledge',\n component: knowledgeRoot,\n routes: [\n {\n component: knowledgeList,\n path: '',\n },\n {\n component: knowledgeSource,\n path: ':sourceId',\n },\n ],\n },\n {\n name: 'graph',\n icon: <WaypointsIcon strokeWidth={1.5} />,\n title: 'Graph',\n component: graphRoot,\n routes: [],\n },\n {\n name: 'explorer',\n icon: <SquarePlayIcon strokeWidth={1.5} />,\n title: 'Explorer',\n component: explorerRoot,\n routes: [],\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"]}
|
|
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","knowledgeRoot","knowledgeList","knowledgeSource","graphRoot","explorerRoot","aiRoot","aiPluginsPage","aiInstalledPluginsPage","aiPluginDetailPage","aiAgentChatPage","aiAutomationsPage","aiRunHistoryPage","aiApprovalsPage","aiActivityPage","aiActivityItemPage","aiCreateAutomationPage","aiAutomationDetailPage","aiRunsPage","aiRunDetailPage","aiSkillsPage","aiCreateSkillPage","aiSkillDetailPage","builtInApps","BotIcon","LayoutIcon","FileStackIcon","BookOpenTextIcon","WaypointsIcon","SquarePlayIcon","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-PLZUH56T.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 BookOpenText as BookOpenTextIcon,\n Bot as BotIcon,\n FileStack as FileStackIcon,\n Layout as LayoutIcon,\n SquarePlay as SquarePlayIcon,\n Waypoints as WaypointsIcon,\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(() => import('../../apps/asset-manager/root').then((m) => ({ default: m.Root })));\n\n// Knowledge\nconst knowledgeRoot = lazyElement(() => import('../../apps/knowledge/root').then((m) => ({ default: m.Root })));\nconst knowledgeList = lazyElement(() => import('../../apps/knowledge/list').then((m) => ({ default: m.List })));\nconst knowledgeSource = lazyElement(() => import('../../apps/knowledge/source').then((m) => ({ default: m.Source })));\n\n// Graph\nconst graphRoot = lazyElement(() => import('../../apps/graph/root').then((m) => ({ default: m.Root })));\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(() => import('../../apps/ai/plugin-pages').then((m) => ({ default: m.PluginsPage })));\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(() => import('../../apps/ai/pages').then((m) => ({ default: m.RunHistoryPage })));\nconst aiApprovalsPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.ApprovalsPage })));\nconst aiActivityPage = lazyElement(() => import('../../apps/ai/pages').then((m) => ({ default: m.ActivityPage })));\nconst aiActivityItemPage = lazyElement(() =>\n import('../../apps/ai/pages').then((m) => ({ default: m.ActivityItemPage }))\n);\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(() => import('../../apps/ai/skills-pages').then((m) => ({ default: m.SkillsPage })));\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: '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: aiActivityPage,\n path: 'activity',\n },\n {\n component: aiActivityItemPage,\n path: 'activity/:itemId',\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 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: 'knowledge',\n icon: <BookOpenTextIcon strokeWidth={1.5} />,\n title: 'Knowledge',\n component: knowledgeRoot,\n routes: [\n {\n component: knowledgeList,\n path: '',\n },\n {\n component: knowledgeSource,\n path: ':sourceId',\n },\n ],\n },\n {\n name: 'graph',\n icon: <WaypointsIcon strokeWidth={1.5} />,\n title: 'Graph',\n component: graphRoot,\n routes: [],\n },\n {\n name: 'explorer',\n icon: <SquarePlayIcon strokeWidth={1.5} />,\n title: 'Explorer',\n component: explorerRoot,\n routes: [],\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"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import'./index.css';import {b}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import'./index.css';import {b}from'./chunk-SY67F62K.js';var E="/plugins/oauth/start",g=class extends Error{code="account_mismatch";constructor(){super('You signed in with a different account. Use "Connect another account" to add it.'),this.name="PluginAccountMismatchError";}};function I(o){let e;try{e=new URL(o);}catch{return null}return e.protocol!=="https:"||e.username!==""||e.password!==""?null:e}function x(o,e){let s=b(),r=I(o),n=I(e);return !r||!n||r.origin!==s||r.pathname!==E||n.origin!==s||n.pathname!=="/"?null:{href:r.href,origin:s}}async function O(o,e,s,r){let n=window.open("about:blank",`flexkit-plugin-${crypto.randomUUID()}`,"popup,width=560,height=720");if(!n)throw new Error("Allow popups for Studio, then connect again.");let i;try{i=await o.connectPlugins({pluginId:e,scope:s,studioOrigin:window.location.origin,...r?.connectionId?{connectionId:r.connectionId}:{}});}catch(d){throw n.close(),d}let l=x(i.authorizeUrl,i.completionOrigin);if(!l)throw n.close(),new Error("Connection could not be started.");let f=l.origin;await new Promise((d,A)=>{let u=false,p=false,w=false,c=t=>{if(!p){if(p=true,window.clearInterval(P),window.clearTimeout(T),window.removeEventListener("message",m),n.close(),t){A(t);return}d();}},h=async()=>{if(u||p)return;u=true;let t;try{t=await o.pluginOAuthStatus(i.transactionId);}catch{u=false;return}if(u=false,t.status==="complete"){c();return}if(!w&&n.closed&&t.status==="pending"){c(new Error("Connection window was closed."));return}(t.status==="failed"||new Date(t.expires_at).getTime()<Date.now())&&c(new Error("Connection was not completed. Please try again."));},m=t=>{if(t.origin!==f||t.source!==n||!t.data||typeof t.data!="object")return;let a=t.data;if(a.type==="flexkit:plugin-oauth-ready"&&a.transactionId===i.transactionId){w=true,n.postMessage({type:"flexkit:plugin-oauth-start",transactionId:i.transactionId,ticket:i.launchTicket},f);return}if(a.type==="flexkit:plugin-oauth"&&a.transactionId===i.transactionId){if(a.status==="failed"&&a.error==="account_mismatch"){c(new g);return}h();}},P=window.setInterval(()=>{h();},2e3),T=window.setTimeout(()=>c(new Error("Connection timed out. Please try again.")),6e5);window.addEventListener("message",m),n.location.href=l.href;});}export{g as a,O as b};//# sourceMappingURL=chunk-QCVQJN5O.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-QCVQJN5O.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/apps/ai/plugin-oauth.ts"],"names":["OAUTH_START_PATH","PluginAccountMismatchError","httpsUrl","value","url","trustedPluginOAuthTargets","authorizeUrl","completionOrigin","origin","getPlatformOrigin","authorize","completion","connectPluginPopup","api","pluginId","scope","options","popup","transaction","error","targets","expectedOrigin","resolve","reject","polling","finished","handedOff","finish","interval","timeout","onMessage","poll","status","event","payload"],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../src/apps/ai/plugin-oauth.ts"],"names":["OAUTH_START_PATH","PluginAccountMismatchError","httpsUrl","value","url","trustedPluginOAuthTargets","authorizeUrl","completionOrigin","origin","getPlatformOrigin","authorize","completion","connectPluginPopup","api","pluginId","scope","options","popup","transaction","error","targets","expectedOrigin","resolve","reject","polling","finished","handedOff","finish","interval","timeout","onMessage","poll","status","event","payload"],"mappings":"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","file":"chunk-QCVQJN5O.js","sourcesContent":["import { getPlatformOrigin, type ApiClient } from './api';\nimport type { PluginScope } from './plugin-types';\n\nconst OAUTH_START_PATH = '/plugins/oauth/start';\n\n/** A Reconnect was completed with a different provider account than the one being reconnected. */\nexport class PluginAccountMismatchError extends Error {\n readonly code = 'account_mismatch';\n\n constructor() {\n super('You signed in with a different account. Use \"Connect another account\" to add it.');\n this.name = 'PluginAccountMismatchError';\n }\n}\n\nfunction httpsUrl(value: string): URL | null {\n let url: URL;\n\n try {\n url = new URL(value);\n } catch {\n return null;\n }\n\n if (url.protocol !== 'https:' || url.username !== '' || url.password !== '') {\n return null;\n }\n\n return url;\n}\n\n/** Popup navigation and postMessage stay on the platform OAuth start page. */\nfunction trustedPluginOAuthTargets(\n authorizeUrl: string,\n completionOrigin: string\n): { href: string; origin: string } | null {\n const origin = getPlatformOrigin();\n const authorize = httpsUrl(authorizeUrl);\n const completion = httpsUrl(completionOrigin);\n\n if (!authorize || !completion) {\n return null;\n }\n\n if (authorize.origin !== origin || authorize.pathname !== OAUTH_START_PATH) {\n return null;\n }\n\n if (completion.origin !== origin || completion.pathname !== '/') {\n return null;\n }\n\n return { href: authorize.href, origin };\n}\n\n/** Must be called directly from the click handler so browsers allow the popup. */\nexport async function connectPluginPopup(\n api: ApiClient,\n pluginId: string,\n scope: PluginScope,\n options?: { connectionId?: string }\n): Promise<void> {\n const popup = window.open('about:blank', `flexkit-plugin-${crypto.randomUUID()}`, 'popup,width=560,height=720');\n\n if (!popup) {\n throw new Error('Allow popups for Studio, then connect again.');\n }\n\n let transaction: Awaited<ReturnType<ApiClient['connectPlugins']>>;\n\n try {\n transaction = await api.connectPlugins({\n pluginId,\n scope,\n studioOrigin: window.location.origin,\n ...(options?.connectionId ? { connectionId: options.connectionId } : {}),\n });\n } catch (error) {\n popup.close();\n throw error;\n }\n\n const targets = trustedPluginOAuthTargets(transaction.authorizeUrl, transaction.completionOrigin);\n\n if (!targets) {\n popup.close();\n throw new Error('Connection could not be started.');\n }\n\n const expectedOrigin = targets.origin;\n\n await new Promise<void>((resolve, reject) => {\n let polling = false;\n let finished = false;\n // Once the popup leaves for the provider, `popup.closed` says nothing:\n // providers isolate their pages (Cross-Origin-Opener-Policy), which severs\n // the opener and reports the window as closed while it is open. From then\n // on only the transaction's status (and the timeout) ends the wait.\n let handedOff = false;\n const finish = (error?: Error) => {\n if (finished) {\n return;\n }\n\n finished = true;\n window.clearInterval(interval);\n window.clearTimeout(timeout);\n window.removeEventListener('message', onMessage);\n popup.close();\n\n if (error) {\n reject(error);\n\n return;\n }\n\n resolve();\n };\n const poll = async () => {\n if (polling || finished) {\n return;\n }\n\n polling = true;\n let status: Awaited<ReturnType<ApiClient['pluginOAuthStatus']>>;\n\n try {\n status = await api.pluginOAuthStatus(transaction.transactionId);\n } catch {\n polling = false;\n\n return;\n }\n\n polling = false;\n\n if (status.status === 'complete') {\n finish();\n\n return;\n }\n\n if (!handedOff && popup.closed && status.status === 'pending') {\n finish(new Error('Connection window was closed.'));\n\n return;\n }\n\n if (status.status === 'failed' || new Date(status.expires_at).getTime() < Date.now()) {\n finish(new Error('Connection was not completed. Please try again.'));\n }\n };\n const onMessage = (event: MessageEvent<unknown>) => {\n if (event.origin !== expectedOrigin || event.source !== popup || !event.data || typeof event.data !== 'object') {\n return;\n }\n\n const payload = event.data as { type?: string; transactionId?: string; status?: string; error?: string };\n\n if (payload.type === 'flexkit:plugin-oauth-ready' && payload.transactionId === transaction.transactionId) {\n handedOff = true;\n popup.postMessage(\n {\n type: 'flexkit:plugin-oauth-start',\n transactionId: transaction.transactionId,\n ticket: transaction.launchTicket,\n },\n expectedOrigin\n );\n\n return;\n }\n\n if (payload.type === 'flexkit:plugin-oauth' && payload.transactionId === transaction.transactionId) {\n if (payload.status === 'failed' && payload.error === 'account_mismatch') {\n finish(new PluginAccountMismatchError());\n\n return;\n }\n\n void poll();\n }\n };\n const interval = window.setInterval(() => {\n void poll();\n }, 2000);\n const timeout = window.setTimeout(() => finish(new Error('Connection timed out. Please try again.')), 600_000);\n window.addEventListener('message', onMessage);\n popup.location.href = targets.href;\n });\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import'./index.css';import {f}from'./chunk-A7XHA2P6.js';import {b as b$1,c}from'./chunk-5CVDMZUI.js';import {put}from'@vercel/blob/client';function b(i,o){let l=o.trim();return l?i.trim()?/\s$/.test(i)||/^[.,!?;:]/.test(l)?`${i}${l}`:`${i} ${l}`:i.length===0?l:`${i}${l}`:i}async function C(i){if(typeof window>"u")throw new Error("Dictation is only available in the browser.");let o=window.AudioContext??window.webkitAudioContext;if(!o)throw new Error("This browser cannot decode recorded audio.");let l=await i.arrayBuffer(),u=new o;try{let n=await u.decodeAudioData(l.slice(0)),s=S(n),t=I(s,n.sampleRate,24e3),e=P(t),a=t.length/24e3;if(a<.25)throw new Error("No speech was captured. Try again.");if(a>60)throw new Error(`Dictation is limited to ${String(60)} seconds.`);return {durationSeconds:a,pcm:new Blob([e],{type:"audio/pcm"})}}finally{await u.close();}}function S(i){let{length:o,numberOfChannels:l}=i;if(l===1)return i.getChannelData(0).slice();let u=new Float32Array(o);for(let n=0;n<o;n+=1){let s=0;for(let t=0;t<l;t+=1)s+=i.getChannelData(t)[n]??0;u[n]=s/l;}return u}function I(i,o,l){if(o===l)return i;let u=o/l,n=Math.max(1,Math.round(i.length/u)),s=new Float32Array(n);for(let t=0;t<n;t+=1){let e=t*u,a=Math.floor(e),c=Math.min(a+1,i.length-1),r=e-a,g=i[a]??0,m=i[c]??0;s[t]=g+(m-g)*r;}return s}function P(i){let o=new ArrayBuffer(i.length*2),l=new DataView(o);for(let u=0;u<i.length;u+=1){let n=Math.max(-1,Math.min(1,i[u]??0));l.setInt16(u*2,n<0?n*32768:n*32767,true);}return o}async function w(i){if(!(typeof crypto>"u"||!crypto.subtle))try{let o=await crypto.subtle.digest("SHA-256",await i.arrayBuffer());return Array.from(new Uint8Array(o),l=>l.toString(16).padStart(2,"0")).join("")}catch{return}}var d=class extends Error{code;status;constructor(o,l,u=null){super(l),this.name="AgentUploadError",this.code=u,this.status=o;}};function y(){if(typeof window>"u")return "flexkit.io";if(b$1())return c;let{hostname:i}=window.location;return i==="localhost"||i==="127.0.0.1"||i==="flexkit.test"||i.endsWith(".flexkit.test")?"flexkit.test":"flexkit.io"}function v(){return `https://${y()}`}function x(i,o){return `https://${i}.api.${y()}/automations/webhook/${encodeURIComponent(o)}`}function N(i){let o=`/api/flexkit/${i}`,l=`${o}/automations`,u=`${o}/skills`,n=`${o}/agent/chats`;async function s(t,e){let a=await fetch(t,{credentials:"include",headers:{"Content-Type":"application/json",...e?.headers??{}},...e}),c=await a.json();if(!a.ok){let r=c&&typeof c=="object"&&"error"in c?String(c.error):"Request failed";throw new Error(r)}return c}return {connectPlugins:t=>s(`${o}/plugins/connect`,{method:"POST",body:JSON.stringify(t)}),pluginOAuthStatus:t=>s(`${o}/plugins/oauth-transactions/${encodeURIComponent(t)}`),updatePluginConnection:(t,e)=>s(`${o}/plugin-connections/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify(e)}),disconnectPlugin:t=>s(`${o}/plugin-connections/${encodeURIComponent(t)}`,{method:"DELETE"}),installPlugin:t=>s(`${o}/plugins/${encodeURIComponent(t)}/installation`,{method:"PUT",body:JSON.stringify({})}),setPluginPolicy:(t,e)=>s(`${o}/plugins/${encodeURIComponent(t)}/policy`,{method:"PATCH",body:JSON.stringify(e)}),refreshPluginTools:t=>s(`${o}/plugin-connections/${encodeURIComponent(t)}/tools/refresh`,{method:"POST"}),cancelRun:async t=>s(`${l}/runs/${encodeURIComponent(t)}/cancel`,{method:"POST"}),createAgentChat:async t=>s(n,{body:JSON.stringify({modelId:t?.modelId??null}),method:"POST"}),deleteAgentChat:async t=>s(`${n}/${encodeURIComponent(t)}`,{method:"DELETE"}),getAgentChatStreamUrl:(t,e)=>`${n}/${encodeURIComponent(t)}/stream?workflowRunId=${encodeURIComponent(e)}`,renameAgentChat:async(t,e)=>s(`${n}/${encodeURIComponent(t)}`,{body:JSON.stringify({title:e}),method:"PATCH"}),sendAgentChatMessage:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/messages`,{body:JSON.stringify(e),method:"POST"}),announcePluginConnected:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/plugin-connected`,{body:JSON.stringify({pluginId:e}),method:"POST"}),sendAgentChatFollowUp:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/follow-ups`,{body:JSON.stringify(e),method:"POST"}),answerAgentChatQuestion:async(t,e,a)=>{let c=await fetch(`${n}/${encodeURIComponent(t)}/questions/${encodeURIComponent(e)}/answer`,{body:JSON.stringify(a),credentials:"include",headers:{"Content-Type":"application/json"},method:"POST"}),r=await c.json();if(!c.ok&&!r.question)throw new Error(r.errorMessage??r.error??"Request failed");return {errorMessage:c.ok?void 0:r.errorMessage,question:r.question}},startAgentChat:async({attachments:t,content:e,modelId:a})=>s(n,{body:JSON.stringify({message:{attachments:t,content:e},modelId:a??null}),method:"POST"}),startQueuedAgentChatMessage:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/follow-ups/${encodeURIComponent(e)}/start`,{method:"POST"}),stopAgentChat:async t=>s(`${n}/${encodeURIComponent(t)}/stop`,{method:"POST"}),stopAgentChatMonitor:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/monitors/${encodeURIComponent(e)}/stop`,{method:"POST"}),transcribeAgentAudio:async(t,e)=>{let{durationSeconds:a,pcm:c}=await C(t),r=new FormData;r.append("file",c,"audio.pcm"),r.append("durationSeconds",String(a));let g=await fetch(`${o}/agent/transcribe`,{body:r,credentials:"include",method:"POST",signal:e}),m=await g.json();if(!g.ok){let $=m&&typeof m=="object"&&m.error?String(m.error):"Request failed";throw new Error($)}if(!m.text?.trim())throw new Error("No speech was recognized. Try again.");return {text:m.text}},uploadAgentChatAttachment:async(t,e)=>{let[a,c]=await Promise.all([fetch(`${o}/agent/uploads`,{body:JSON.stringify({filename:t.name,mediaType:t.type||null,sizeBytes:t.size}),credentials:"include",headers:{"Content-Type":"application/json"},method:"POST",signal:e}),f({name:t.name,size:t.size})===null?w(t):void 0]),r=await a.json();if(!a.ok||!r.pathname||!r.token||!r.mediaType)throw new d(a.status,r.error?String(r.error):"The file could not be uploaded.",r.code??null);let g=await put(r.pathname,t,{abortSignal:e,access:"public",contentType:r.mediaType,token:r.token});return {filename:t.name,mediaType:r.mediaType,sizeBytes:t.size,url:g.url,...c?{sha256:c}:{}}},decideApproval:async(t,e)=>{let a=await fetch(`${l}/approvals/${encodeURIComponent(t)}/decide`,{body:JSON.stringify(e),credentials:"include",headers:{"Content-Type":"application/json"},method:"POST"}),c=await a.json();if(!a.ok&&typeof c.success!="boolean")throw new Error(c.error?String(c.error):"Request failed");return c},markActivityRead:async t=>s(`${o}/activity/read`,{body:JSON.stringify(t==="all"?{all:true}:{ids:t}),method:"POST"}),setActivityItemState:async(t,e)=>s(`${o}/activity/${encodeURIComponent(t)}`,{body:JSON.stringify({state:e}),method:"PATCH"}),createAutomation:async t=>s(l,{body:JSON.stringify(t),method:"POST"}),createSkill:async t=>s(u,{body:JSON.stringify(t),method:"POST"}),deleteAutomation:async t=>s(`${l}/${encodeURIComponent(t)}`,{method:"DELETE"}),deleteSkill:async t=>s(`${u}/${encodeURIComponent(t)}`,{method:"DELETE"}),getArtifactUrl:(t,e)=>{let a=e?.download?"?download=1":"";return `${l}/artifacts/${encodeURIComponent(t)}/content${a}`},getRunArtifacts:async t=>s(`${l}/runs/${encodeURIComponent(t)}/artifacts`).then(e=>e.artifacts),getStreamUrl:t=>`${l}/runs/${encodeURIComponent(t)}/stream`,getTranscriptUrl:t=>`${l}/runs/${encodeURIComponent(t)}/transcript`,listChannels:async(t,e)=>{let a=e?`${o}/plugin-connections/${encodeURIComponent(e)}/channels`:`${o}/plugins/${t}/channels`,c=await fetch(a,{credentials:"include",headers:{"Content-Type":"application/json"}}),r=await c.json();if(c.ok)return {channels:r.channels??[],errorMessage:r.errorMessage,success:r.success??true};if(r.success===false)return {channels:r.channels??[],errorMessage:r.errorMessage??`Failed to load ${t==="slack"?"Slack":"Teams"} channels.`,success:false};let g=r.error?String(r.error):"Request failed";throw new Error(g)},runAutomation:async t=>s(`${l}/${encodeURIComponent(t)}/runs`,{method:"POST"}),updateAutomation:async(t,e)=>s(`${l}/${encodeURIComponent(t)}`,{body:JSON.stringify(e),method:"PATCH"}),updateSkill:async(t,e)=>s(`${u}/${encodeURIComponent(t)}`,{body:JSON.stringify(e),method:"PATCH"})}}var p=class extends Error{status;constructor(o,l="Request failed"){super(l),this.name="FetcherError",this.status=o;}},D=async i=>{let o=await fetch(i,{credentials:"include"});if(!o.ok)throw new p(o.status);return await o.json()};function E(i){let o=`/api/flexkit/${i}/automations`,l=`/api/flexkit/${i}/skills`,u=`/api/flexkit/${i}/agent/chats`;return {activity:(n={})=>{let{filter:s="all",limit:t=25,offset:e=0}=n,a=new URLSearchParams({filter:s,limit:t.toString(),offset:e.toString()});return `/api/flexkit/${i}/activity?${a.toString()}`},activityItem:n=>`/api/flexkit/${i}/activity/${encodeURIComponent(n)}`,activitySummary:n=>n?`/api/flexkit/${i}/activity/summary?since=${encodeURIComponent(n)}`:`/api/flexkit/${i}/activity/summary`,agentChat:n=>`${u}/${encodeURIComponent(n)}`,agentChatSearch:n=>`${u}/search?q=${encodeURIComponent(n)}`,agentChats:(n=0)=>`${u}?offset=${n.toString()}`,agentProfile:()=>`/api/flexkit/${i}/agent/profile`,approval:n=>`${o}/approvals/${encodeURIComponent(n)}`,approvals:(n={})=>{let{limit:s=25,offset:t=0,runId:e,status:a}=n,c=new URLSearchParams({limit:s.toString(),offset:t.toString()});return a&&c.set("status",a),e&&c.set("runId",e),`${o}/approvals?${c.toString()}`},approvalsCount:`${o}/approvals?limit=1`,automation:n=>`${o}/${encodeURIComponent(n)}`,automationRuns:(n,s=0,t=25)=>`${o}/${encodeURIComponent(n)}/runs?offset=${s.toString()}&limit=${t.toString()}`,automations:(n={})=>{let{enabled:s,limit:t=25,offset:e=0,search:a,visibility:c}=n,r=new URLSearchParams({limit:t.toString(),offset:e.toString()});s&&s.length>0&&r.set("enabled",s.map(m=>m?"true":"false").join(",")),c&&c.length>0&&r.set("visibility",c.join(","));let g=a?.trim();return g&&r.set("q",g),`${o}?${r.toString()}`},creditBalance:`${o}/credits`,entities:`${o}/entities`,run:n=>`${o}/runs/${encodeURIComponent(n)}`,runHistory:(n,s=0,t=25)=>`${o}/runs?scope=${n}&offset=${s.toString()}&limit=${t.toString()}`,skill:n=>`${l}/${encodeURIComponent(n)}`,skills:(n={})=>{let{limit:s=25,offset:t=0,search:e,visibility:a}=n,c=new URLSearchParams({limit:s.toString(),offset:t.toString()});a&&a.length>0&&c.set("visibility",a.join(","));let r=e?.trim();return r&&c.set("q",r),`${l}?${c.toString()}`},spaces:`/api/flexkit/${i}/spaces`,members:n=>n?`/api/flexkit/${i}/members?spaceId=${encodeURIComponent(n)}`:`/api/flexkit/${i}/members`,tools:n=>n?`${o}/${encodeURIComponent(n)}/tools`:`${o}/tools`}}
|
|
2
|
-
export{b as a,v as b,x as c,N as d,p as e,D as f,E as g};//# sourceMappingURL=chunk-
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import'./index.css';import {e}from'./chunk-7KLXWCDS.js';import {b as b$1,c}from'./chunk-5CVDMZUI.js';import {put}from'@vercel/blob/client';function b(i,o){let l=o.trim();return l?i.trim()?/\s$/.test(i)||/^[.,!?;:]/.test(l)?`${i}${l}`:`${i} ${l}`:i.length===0?l:`${i}${l}`:i}async function C(i){if(typeof window>"u")throw new Error("Dictation is only available in the browser.");let o=window.AudioContext??window.webkitAudioContext;if(!o)throw new Error("This browser cannot decode recorded audio.");let l=await i.arrayBuffer(),u=new o;try{let n=await u.decodeAudioData(l.slice(0)),s=S(n),t=I(s,n.sampleRate,24e3),e=P(t),a=t.length/24e3;if(a<.25)throw new Error("No speech was captured. Try again.");if(a>60)throw new Error(`Dictation is limited to ${String(60)} seconds.`);return {durationSeconds:a,pcm:new Blob([e],{type:"audio/pcm"})}}finally{await u.close();}}function S(i){let{length:o,numberOfChannels:l}=i;if(l===1)return i.getChannelData(0).slice();let u=new Float32Array(o);for(let n=0;n<o;n+=1){let s=0;for(let t=0;t<l;t+=1)s+=i.getChannelData(t)[n]??0;u[n]=s/l;}return u}function I(i,o,l){if(o===l)return i;let u=o/l,n=Math.max(1,Math.round(i.length/u)),s=new Float32Array(n);for(let t=0;t<n;t+=1){let e=t*u,a=Math.floor(e),c=Math.min(a+1,i.length-1),r=e-a,g=i[a]??0,m=i[c]??0;s[t]=g+(m-g)*r;}return s}function P(i){let o=new ArrayBuffer(i.length*2),l=new DataView(o);for(let u=0;u<i.length;u+=1){let n=Math.max(-1,Math.min(1,i[u]??0));l.setInt16(u*2,n<0?n*32768:n*32767,true);}return o}async function w(i){if(!(typeof crypto>"u"||!crypto.subtle))try{let o=await crypto.subtle.digest("SHA-256",await i.arrayBuffer());return Array.from(new Uint8Array(o),l=>l.toString(16).padStart(2,"0")).join("")}catch{return}}var d=class extends Error{code;status;constructor(o,l,u=null){super(l),this.name="AgentUploadError",this.code=u,this.status=o;}};function y(){if(typeof window>"u")return "flexkit.io";if(b$1())return c;let{hostname:i}=window.location;return i==="localhost"||i==="127.0.0.1"||i==="flexkit.test"||i.endsWith(".flexkit.test")?"flexkit.test":"flexkit.io"}function v(){return `https://${y()}`}function x(i,o){return `https://${i}.api.${y()}/automations/webhook/${encodeURIComponent(o)}`}function N(i){let o=`/api/flexkit/${i}`,l=`${o}/automations`,u=`${o}/skills`,n=`${o}/agent/chats`;async function s(t,e){let a=await fetch(t,{credentials:"include",headers:{"Content-Type":"application/json",...e?.headers??{}},...e}),c=await a.json();if(!a.ok){let r=c&&typeof c=="object"&&"error"in c?String(c.error):"Request failed";throw new Error(r)}return c}return {connectPlugins:t=>s(`${o}/plugins/connect`,{method:"POST",body:JSON.stringify(t)}),pluginOAuthStatus:t=>s(`${o}/plugins/oauth-transactions/${encodeURIComponent(t)}`),updatePluginConnection:(t,e)=>s(`${o}/plugin-connections/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify(e)}),disconnectPlugin:t=>s(`${o}/plugin-connections/${encodeURIComponent(t)}`,{method:"DELETE"}),installPlugin:t=>s(`${o}/plugins/${encodeURIComponent(t)}/installation`,{method:"PUT",body:JSON.stringify({})}),setPluginPolicy:(t,e)=>s(`${o}/plugins/${encodeURIComponent(t)}/policy`,{method:"PATCH",body:JSON.stringify(e)}),refreshPluginTools:t=>s(`${o}/plugin-connections/${encodeURIComponent(t)}/tools/refresh`,{method:"POST"}),cancelRun:async t=>s(`${l}/runs/${encodeURIComponent(t)}/cancel`,{method:"POST"}),createAgentChat:async t=>s(n,{body:JSON.stringify({modelId:t?.modelId??null}),method:"POST"}),deleteAgentChat:async t=>s(`${n}/${encodeURIComponent(t)}`,{method:"DELETE"}),getAgentChatStreamUrl:(t,e)=>`${n}/${encodeURIComponent(t)}/stream?workflowRunId=${encodeURIComponent(e)}`,renameAgentChat:async(t,e)=>s(`${n}/${encodeURIComponent(t)}`,{body:JSON.stringify({title:e}),method:"PATCH"}),sendAgentChatMessage:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/messages`,{body:JSON.stringify(e),method:"POST"}),announcePluginConnected:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/plugin-connected`,{body:JSON.stringify({pluginId:e}),method:"POST"}),sendAgentChatFollowUp:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/follow-ups`,{body:JSON.stringify(e),method:"POST"}),answerAgentChatQuestion:async(t,e,a)=>{let c=await fetch(`${n}/${encodeURIComponent(t)}/questions/${encodeURIComponent(e)}/answer`,{body:JSON.stringify(a),credentials:"include",headers:{"Content-Type":"application/json"},method:"POST"}),r=await c.json();if(!c.ok&&!r.question)throw new Error(r.errorMessage??r.error??"Request failed");return {errorMessage:c.ok?void 0:r.errorMessage,question:r.question}},startAgentChat:async({attachments:t,content:e,modelId:a})=>s(n,{body:JSON.stringify({message:{attachments:t,content:e},modelId:a??null}),method:"POST"}),startQueuedAgentChatMessage:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/follow-ups/${encodeURIComponent(e)}/start`,{method:"POST"}),stopAgentChat:async t=>s(`${n}/${encodeURIComponent(t)}/stop`,{method:"POST"}),stopAgentChatMonitor:async(t,e)=>s(`${n}/${encodeURIComponent(t)}/monitors/${encodeURIComponent(e)}/stop`,{method:"POST"}),transcribeAgentAudio:async(t,e)=>{let{durationSeconds:a,pcm:c}=await C(t),r=new FormData;r.append("file",c,"audio.pcm"),r.append("durationSeconds",String(a));let g=await fetch(`${o}/agent/transcribe`,{body:r,credentials:"include",method:"POST",signal:e}),m=await g.json();if(!g.ok){let $=m&&typeof m=="object"&&m.error?String(m.error):"Request failed";throw new Error($)}if(!m.text?.trim())throw new Error("No speech was recognized. Try again.");return {text:m.text}},uploadAgentChatAttachment:async(t,e$1)=>{let[a,c]=await Promise.all([fetch(`${o}/agent/uploads`,{body:JSON.stringify({filename:t.name,mediaType:t.type||null,sizeBytes:t.size}),credentials:"include",headers:{"Content-Type":"application/json"},method:"POST",signal:e$1}),e({name:t.name,size:t.size})===null?w(t):void 0]),r=await a.json();if(!a.ok||!r.pathname||!r.token||!r.mediaType)throw new d(a.status,r.error?String(r.error):"The file could not be uploaded.",r.code??null);let g=await put(r.pathname,t,{abortSignal:e$1,access:"public",contentType:r.mediaType,token:r.token});return {filename:t.name,mediaType:r.mediaType,sizeBytes:t.size,url:g.url,...c?{sha256:c}:{}}},decideApproval:async(t,e)=>{let a=await fetch(`${l}/approvals/${encodeURIComponent(t)}/decide`,{body:JSON.stringify(e),credentials:"include",headers:{"Content-Type":"application/json"},method:"POST"}),c=await a.json();if(!a.ok&&typeof c.success!="boolean")throw new Error(c.error?String(c.error):"Request failed");return c},markActivityRead:async t=>s(`${o}/activity/read`,{body:JSON.stringify(t==="all"?{all:true}:{ids:t}),method:"POST"}),setActivityItemState:async(t,e)=>s(`${o}/activity/${encodeURIComponent(t)}`,{body:JSON.stringify({state:e}),method:"PATCH"}),createAutomation:async t=>s(l,{body:JSON.stringify(t),method:"POST"}),createSkill:async t=>s(u,{body:JSON.stringify(t),method:"POST"}),deleteAutomation:async t=>s(`${l}/${encodeURIComponent(t)}`,{method:"DELETE"}),deleteSkill:async t=>s(`${u}/${encodeURIComponent(t)}`,{method:"DELETE"}),getArtifactUrl:(t,e)=>{let a=e?.download?"?download=1":"";return `${l}/artifacts/${encodeURIComponent(t)}/content${a}`},getRunArtifacts:async t=>s(`${l}/runs/${encodeURIComponent(t)}/artifacts`).then(e=>e.artifacts),getStreamUrl:t=>`${l}/runs/${encodeURIComponent(t)}/stream`,getTranscriptUrl:t=>`${l}/runs/${encodeURIComponent(t)}/transcript`,listChannels:async(t,e)=>{let a=e?`${o}/plugin-connections/${encodeURIComponent(e)}/channels`:`${o}/plugins/${t}/channels`,c=await fetch(a,{credentials:"include",headers:{"Content-Type":"application/json"}}),r=await c.json();if(c.ok)return {channels:r.channels??[],errorMessage:r.errorMessage,success:r.success??true};if(r.success===false)return {channels:r.channels??[],errorMessage:r.errorMessage??`Failed to load ${t==="slack"?"Slack":"Teams"} channels.`,success:false};let g=r.error?String(r.error):"Request failed";throw new Error(g)},runAutomation:async t=>s(`${l}/${encodeURIComponent(t)}/runs`,{method:"POST"}),updateAutomation:async(t,e)=>s(`${l}/${encodeURIComponent(t)}`,{body:JSON.stringify(e),method:"PATCH"}),updateSkill:async(t,e)=>s(`${u}/${encodeURIComponent(t)}`,{body:JSON.stringify(e),method:"PATCH"})}}var p=class extends Error{status;constructor(o,l="Request failed"){super(l),this.name="FetcherError",this.status=o;}},D=async i=>{let o=await fetch(i,{credentials:"include"});if(!o.ok)throw new p(o.status);return await o.json()};function E(i){let o=`/api/flexkit/${i}/automations`,l=`/api/flexkit/${i}/skills`,u=`/api/flexkit/${i}/agent/chats`;return {activity:(n={})=>{let{filter:s="all",limit:t=25,offset:e=0}=n,a=new URLSearchParams({filter:s,limit:t.toString(),offset:e.toString()});return `/api/flexkit/${i}/activity?${a.toString()}`},activityItem:n=>`/api/flexkit/${i}/activity/${encodeURIComponent(n)}`,activitySummary:n=>n?`/api/flexkit/${i}/activity/summary?since=${encodeURIComponent(n)}`:`/api/flexkit/${i}/activity/summary`,agentChat:n=>`${u}/${encodeURIComponent(n)}`,agentChatSearch:n=>`${u}/search?q=${encodeURIComponent(n)}`,agentChats:(n=0)=>`${u}?offset=${n.toString()}`,agentProfile:()=>`/api/flexkit/${i}/agent/profile`,approval:n=>`${o}/approvals/${encodeURIComponent(n)}`,approvals:(n={})=>{let{limit:s=25,offset:t=0,runId:e,status:a}=n,c=new URLSearchParams({limit:s.toString(),offset:t.toString()});return a&&c.set("status",a),e&&c.set("runId",e),`${o}/approvals?${c.toString()}`},approvalsCount:`${o}/approvals?limit=1`,automation:n=>`${o}/${encodeURIComponent(n)}`,automationRuns:(n,s=0,t=25)=>`${o}/${encodeURIComponent(n)}/runs?offset=${s.toString()}&limit=${t.toString()}`,automations:(n={})=>{let{enabled:s,limit:t=25,offset:e=0,search:a,visibility:c}=n,r=new URLSearchParams({limit:t.toString(),offset:e.toString()});s&&s.length>0&&r.set("enabled",s.map(m=>m?"true":"false").join(",")),c&&c.length>0&&r.set("visibility",c.join(","));let g=a?.trim();return g&&r.set("q",g),`${o}?${r.toString()}`},creditBalance:`${o}/credits`,entities:`${o}/entities`,run:n=>`${o}/runs/${encodeURIComponent(n)}`,runHistory:(n,s=0,t=25)=>`${o}/runs?scope=${n}&offset=${s.toString()}&limit=${t.toString()}`,skill:n=>`${l}/${encodeURIComponent(n)}`,skills:(n={})=>{let{limit:s=25,offset:t=0,search:e,visibility:a}=n,c=new URLSearchParams({limit:s.toString(),offset:t.toString()});a&&a.length>0&&c.set("visibility",a.join(","));let r=e?.trim();return r&&c.set("q",r),`${l}?${c.toString()}`},spaces:`/api/flexkit/${i}/spaces`,members:n=>n?`/api/flexkit/${i}/members?spaceId=${encodeURIComponent(n)}`:`/api/flexkit/${i}/members`,tools:n=>n?`${o}/${encodeURIComponent(n)}/tools`:`${o}/tools`}}
|
|
2
|
+
export{b as a,v as b,x as c,N as d,p as e,D as f,E as g};//# sourceMappingURL=chunk-SY67F62K.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-SY67F62K.js.map
|