@standardagents/builder 0.16.0 → 0.17.0-next.a4b7340
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/built-in-routes.js +72 -11
- package/dist/built-in-routes.js.map +1 -1
- package/dist/client/UsersView.js +1 -1
- package/dist/index.js +41 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime.js +41 -1
- package/dist/runtime.js.map +1 -1
- package/package.json +4 -4
package/dist/client/UsersView.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as
|
|
1
|
+
import{r as P}from"./formkit.js";import{B as Y,_ as h,G as y,d as x,e as V}from"./index.js";import{_ as H}from"./DataTable.vue_vue_type_script_setup_true_lang.js";import{_ as $}from"./Modal.vue_vue_type_script_setup_true_lang.js";import{C as Q}from"./CenteredContentView.js";import{u as W}from"./useActionFeedback.js";import{g as M,b as X}from"./settingsData.js";import{d as Z,r as l,o as ee,O as B,z as O,e as C,k as r,q as j,j as s,J as i,s as b,u as T,f as m,b as K}from"./vue.js";import"./vendor.js";import"./monaco.js";import"./syntax.js";import"./chevron-right.js";import"./ConfirmDialog.vue_vue_type_script_setup_true_lang.js";const ae={class:"inline-flex items-center gap-2"},se={key:0,class:"rounded-full bg-accent-100 px-2 py-0.5 text-xs font-medium text-accent-800 dark:bg-accent-900 dark:text-accent-200"},te={key:1,class:"rounded-full bg-neutral-100 px-2 py-0.5 text-xs font-medium text-neutral-600 dark:bg-neutral-800 dark:text-neutral-300",title:"Signs in through the Standard Agents platform connection"},re={class:"space-y-4"},oe={class:"flex justify-end gap-2"},le={class:"space-y-4"},ne={class:"flex justify-end gap-2"},ke=Z({__name:"UsersView",setup(de){const g=l(!1),U=l(!1),F=l([]),S=l(null),E=l(!1),w=l(null),p=l(!1),f=l(!1),u=l(null),c=l(null),{feedback:A,setFeedback:d,clearFeedback:_}=W(),v=l({username:"",role:"admin"}),D=[{value:"admin",label:"Admin"}],R=[{key:"username",label:"Username",width:"w-1/3"},{key:"role",label:"Role",width:"w-1/4"},{key:"created_at",label:"Created",width:"w-1/3",formatter:a=>new Date(a*1e3).toLocaleString()}],J=[{icon:"edit",label:"Edit",handler:async a=>{w.value=a,v.value={username:a.username,role:a.role},U.value=!0}},{icon:"delete",label:"Delete",confirm:!0,confirmMessage:"Are you sure you want to delete this user? This action cannot be undone.",handler:async a=>{await I(a.id)}}],k=async()=>{E.value=!0,_();try{const a=await y("/users");if(!a.ok)throw new Error("Failed to fetch users");const e=await a.json();F.value=e.users||[]}catch{d("error","Users could not be loaded."),F.value=[]}finally{E.value=!1}},L=async()=>{try{const a=await y("/auth/me");if(!a.ok)return;const e=await a.json();S.value=e.user?.id??null}catch{S.value=null}},z=async a=>{p.value=!0,_(),x(u);try{const e=await y("/users",{method:"POST",body:JSON.stringify(a)});if(!e.ok){const n=await e.json();V(n,u)||d("error",M(n,"Failed to add user"));return}await k(),q(),d("success","User added.")}catch{V({error:"Failed to add user"},u)}finally{p.value=!1}},G=async a=>{if(w.value){f.value=!0,_(),x(c);try{const e=X(a),n=await y(`/users/${w.value.id}`,{method:"PUT",body:JSON.stringify(e)});if(!n.ok){const o=await n.json();V(o,c)||d("error",M(o,"Failed to update user"));return}await k(),N(),d("success","User updated.")}catch{V({error:"Failed to update user"},c)}finally{f.value=!1}}},I=async a=>{_();try{const e=await y(`/users/${a}`,{method:"DELETE"});if(!e.ok){const n=await e.json();d("error",M(n,"Failed to delete user"));return}await k(),d("success","User deleted.")}catch{d("error","Failed to delete user")}},q=()=>{x(u),P("add-user-form"),g.value=!1},N=()=>{x(c),P("edit-user-form"),U.value=!1,w.value=null};return ee(()=>{k(),L()}),(a,e)=>{const n=B("FormKitMessages"),o=B("FormKit");return C(),O(Q,null,{default:r(()=>[i(A)?(C(),O(i(Y),{key:0,variant:i(A).variant,class:"mb-4"},{default:r(()=>[b(T(i(A).message),1)]),_:1},8,["variant"])):j("",!0),s(H,{title:"Users",description:"Manage user accounts and permissions","primary-action":{label:"Add User",handler:()=>g.value=!0},columns:R,data:F.value,actions:J,loading:E.value,"empty-message":"No users found"},{"cell-username":r(({row:t})=>[m("span",ae,[m("span",null,T(t.username),1),t.id===S.value?(C(),K("span",se," You ")):j("",!0),t.source==="standard_agents"?(C(),K("span",te," Standard Agents login ")):j("",!0)])]),_:1},8,["primary-action","data","loading"]),s($,{modelValue:g.value,"onUpdate:modelValue":e[1]||(e[1]=t=>g.value=t),title:"Add User",onClose:q},{footer:r(()=>[m("div",oe,[s(i(h),{variant:"secondary",disabled:p.value,onClick:q},{default:r(()=>[...e[6]||(e[6]=[b(" Cancel ",-1)])]),_:1},8,["disabled"]),s(i(h),{type:"submit",form:"add-user-form",loading:p.value},{default:r(()=>[...e[7]||(e[7]=[b(" Add User ",-1)])]),_:1},8,["loading"])])]),default:r(()=>[s(o,{id:"add-user-form",type:"form",actions:!1,disabled:p.value,onSubmit:z,onNode:e[0]||(e[0]=t=>u.value=t)},{default:r(()=>[m("div",re,[s(n,{node:u.value||void 0},null,8,["node"]),s(o,{type:"text",name:"username",label:"Username",validation:"required","validation-messages":{required:"Username is required"}}),s(o,{type:"password",name:"password",label:"Password",validation:"required","validation-messages":{required:"Password is required"}}),s(o,{type:"selectSearch",name:"role",label:"Role",options:D,value:"admin",placeholder:"Select role"})])]),_:1},8,["disabled"])]),_:1},8,["modelValue"]),s($,{modelValue:U.value,"onUpdate:modelValue":e[5]||(e[5]=t=>U.value=t),title:"Edit User",onClose:N},{footer:r(()=>[m("div",ne,[s(i(h),{variant:"secondary",disabled:f.value,onClick:N},{default:r(()=>[...e[8]||(e[8]=[b(" Cancel ",-1)])]),_:1},8,["disabled"]),s(i(h),{type:"submit",form:"edit-user-form",loading:f.value},{default:r(()=>[...e[9]||(e[9]=[b(" Update User ",-1)])]),_:1},8,["loading"])])]),default:r(()=>[s(o,{id:"edit-user-form",type:"form",actions:!1,disabled:f.value,onSubmit:G,onNode:e[4]||(e[4]=t=>c.value=t)},{default:r(()=>[m("div",le,[s(n,{node:c.value||void 0},null,8,["node"]),s(o,{type:"text",name:"username",label:"Username",validation:"required",modelValue:v.value.username,"onUpdate:modelValue":e[2]||(e[2]=t=>v.value.username=t),"validation-messages":{required:"Username is required"}},null,8,["modelValue"]),s(o,{type:"password",name:"password",label:"Password",help:"Leave blank to keep current password"}),s(o,{type:"selectSearch",name:"role",label:"Role",options:D,modelValue:v.value.role,"onUpdate:modelValue":e[3]||(e[3]=t=>v.value.role=t),placeholder:"Select role"},null,8,["modelValue"])])]),_:1},8,["disabled"])]),_:1},8,["modelValue"])]),_:1})}}});export{ke as default};
|
package/dist/index.js
CHANGED
|
@@ -866,11 +866,38 @@ var init_TestProvider = __esm({
|
|
|
866
866
|
}
|
|
867
867
|
});
|
|
868
868
|
|
|
869
|
+
// src/agents/providers/platform-routing.ts
|
|
870
|
+
function stringEnv(value) {
|
|
871
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
872
|
+
}
|
|
873
|
+
function resolvePlatformRouting(providerName, env) {
|
|
874
|
+
const apiKey = stringEnv(env.STANDARD_AGENTS_API_KEY) ?? stringEnv(env.PLATFORM_API_KEY);
|
|
875
|
+
if (!apiKey) return null;
|
|
876
|
+
const origin = (stringEnv(env.STANDARD_AGENTS_PROXY_URL) ?? stringEnv(env.PLATFORM_ENDPOINT) ?? stringEnv(env.STANDARD_AGENTS_API_URL) ?? DEFAULT_PLATFORM_PROXY_ORIGIN).replace(/\/+$/, "");
|
|
877
|
+
const provider = providerName.toLowerCase();
|
|
878
|
+
const basePath = PROVIDER_BASE_PATHS[provider] ?? "";
|
|
879
|
+
return {
|
|
880
|
+
apiKey,
|
|
881
|
+
origin,
|
|
882
|
+
baseUrl: `${origin}/v1/proxy/${encodeURIComponent(provider)}${basePath}`
|
|
883
|
+
};
|
|
884
|
+
}
|
|
885
|
+
var DEFAULT_PLATFORM_PROXY_ORIGIN, PROVIDER_BASE_PATHS;
|
|
886
|
+
var init_platform_routing = __esm({
|
|
887
|
+
"src/agents/providers/platform-routing.ts"() {
|
|
888
|
+
DEFAULT_PLATFORM_PROXY_ORIGIN = "https://proxy.standardagents.ai";
|
|
889
|
+
PROVIDER_BASE_PATHS = {
|
|
890
|
+
cloudflare: "/ai/v1"
|
|
891
|
+
};
|
|
892
|
+
}
|
|
893
|
+
});
|
|
894
|
+
|
|
869
895
|
// src/agents/providers/ProviderRegistry.ts
|
|
870
896
|
var ProviderRegistryImpl, ProviderRegistry;
|
|
871
897
|
var init_ProviderRegistry = __esm({
|
|
872
898
|
"src/agents/providers/ProviderRegistry.ts"() {
|
|
873
899
|
init_TestProvider();
|
|
900
|
+
init_platform_routing();
|
|
874
901
|
ProviderRegistryImpl = class {
|
|
875
902
|
providerCache = /* @__PURE__ */ new Map();
|
|
876
903
|
providerOverrideFn = null;
|
|
@@ -942,6 +969,19 @@ var init_ProviderRegistry = __esm({
|
|
|
942
969
|
return this.cacheAndReturn(modelName, overrideProvider, modelDef, overrideFingerprint);
|
|
943
970
|
}
|
|
944
971
|
}
|
|
972
|
+
const routing = resolvePlatformRouting(providerName, env);
|
|
973
|
+
if (routing) {
|
|
974
|
+
const config = {
|
|
975
|
+
apiKey: routing.apiKey,
|
|
976
|
+
baseUrl: routing.baseUrl
|
|
977
|
+
};
|
|
978
|
+
const fingerprint = this.getProviderFingerprint(`platform:${providerName}`, modelDef, config);
|
|
979
|
+
const cached = this.providerCache.get(modelName);
|
|
980
|
+
if (cached?.fingerprint === fingerprint) {
|
|
981
|
+
return this.buildResult(cached.provider, modelDef);
|
|
982
|
+
}
|
|
983
|
+
return this.cacheAndReturn(modelName, providerFactory(config), modelDef, fingerprint);
|
|
984
|
+
}
|
|
945
985
|
throw new Error(`No API key found for provider: ${providerName}. Set the provider key or STANDARD_AGENTS_API_KEY.`);
|
|
946
986
|
}
|
|
947
987
|
buildResult(provider, modelDef) {
|
|
@@ -954,7 +994,7 @@ var init_ProviderRegistry = __esm({
|
|
|
954
994
|
getProviderFingerprint(providerName, modelDef, config) {
|
|
955
995
|
return JSON.stringify({
|
|
956
996
|
providerName,
|
|
957
|
-
baseUrl: modelDef.providerOptions?.baseUrl ?? null,
|
|
997
|
+
baseUrl: config?.baseUrl ?? modelDef.providerOptions?.baseUrl ?? null,
|
|
958
998
|
apiKey: config?.apiKey ?? null,
|
|
959
999
|
accountId: config?.accountId ?? null
|
|
960
1000
|
});
|