@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/built-in-routes.js
CHANGED
|
@@ -874,11 +874,38 @@ var init_TestProvider = __esm({
|
|
|
874
874
|
}
|
|
875
875
|
});
|
|
876
876
|
|
|
877
|
+
// src/agents/providers/platform-routing.ts
|
|
878
|
+
function stringEnv(value) {
|
|
879
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
880
|
+
}
|
|
881
|
+
function resolvePlatformRouting(providerName, env2) {
|
|
882
|
+
const apiKey = stringEnv(env2.STANDARD_AGENTS_API_KEY) ?? stringEnv(env2.PLATFORM_API_KEY);
|
|
883
|
+
if (!apiKey) return null;
|
|
884
|
+
const origin = (stringEnv(env2.STANDARD_AGENTS_PROXY_URL) ?? stringEnv(env2.PLATFORM_ENDPOINT) ?? stringEnv(env2.STANDARD_AGENTS_API_URL) ?? DEFAULT_PLATFORM_PROXY_ORIGIN).replace(/\/+$/, "");
|
|
885
|
+
const provider = providerName.toLowerCase();
|
|
886
|
+
const basePath = PROVIDER_BASE_PATHS[provider] ?? "";
|
|
887
|
+
return {
|
|
888
|
+
apiKey,
|
|
889
|
+
origin,
|
|
890
|
+
baseUrl: `${origin}/v1/proxy/${encodeURIComponent(provider)}${basePath}`
|
|
891
|
+
};
|
|
892
|
+
}
|
|
893
|
+
var DEFAULT_PLATFORM_PROXY_ORIGIN, PROVIDER_BASE_PATHS;
|
|
894
|
+
var init_platform_routing = __esm({
|
|
895
|
+
"src/agents/providers/platform-routing.ts"() {
|
|
896
|
+
DEFAULT_PLATFORM_PROXY_ORIGIN = "https://proxy.standardagents.ai";
|
|
897
|
+
PROVIDER_BASE_PATHS = {
|
|
898
|
+
cloudflare: "/ai/v1"
|
|
899
|
+
};
|
|
900
|
+
}
|
|
901
|
+
});
|
|
902
|
+
|
|
877
903
|
// src/agents/providers/ProviderRegistry.ts
|
|
878
904
|
var ProviderRegistryImpl, ProviderRegistry;
|
|
879
905
|
var init_ProviderRegistry = __esm({
|
|
880
906
|
"src/agents/providers/ProviderRegistry.ts"() {
|
|
881
907
|
init_TestProvider();
|
|
908
|
+
init_platform_routing();
|
|
882
909
|
ProviderRegistryImpl = class {
|
|
883
910
|
providerCache = /* @__PURE__ */ new Map();
|
|
884
911
|
providerOverrideFn = null;
|
|
@@ -950,6 +977,19 @@ var init_ProviderRegistry = __esm({
|
|
|
950
977
|
return this.cacheAndReturn(modelName, overrideProvider, modelDef, overrideFingerprint);
|
|
951
978
|
}
|
|
952
979
|
}
|
|
980
|
+
const routing = resolvePlatformRouting(providerName, env2);
|
|
981
|
+
if (routing) {
|
|
982
|
+
const config = {
|
|
983
|
+
apiKey: routing.apiKey,
|
|
984
|
+
baseUrl: routing.baseUrl
|
|
985
|
+
};
|
|
986
|
+
const fingerprint = this.getProviderFingerprint(`platform:${providerName}`, modelDef, config);
|
|
987
|
+
const cached = this.providerCache.get(modelName);
|
|
988
|
+
if (cached?.fingerprint === fingerprint) {
|
|
989
|
+
return this.buildResult(cached.provider, modelDef);
|
|
990
|
+
}
|
|
991
|
+
return this.cacheAndReturn(modelName, providerFactory(config), modelDef, fingerprint);
|
|
992
|
+
}
|
|
953
993
|
throw new Error(`No API key found for provider: ${providerName}. Set the provider key or STANDARD_AGENTS_API_KEY.`);
|
|
954
994
|
}
|
|
955
995
|
buildResult(provider, modelDef) {
|
|
@@ -962,7 +1002,7 @@ var init_ProviderRegistry = __esm({
|
|
|
962
1002
|
getProviderFingerprint(providerName, modelDef, config) {
|
|
963
1003
|
return JSON.stringify({
|
|
964
1004
|
providerName,
|
|
965
|
-
baseUrl: modelDef.providerOptions?.baseUrl ?? null,
|
|
1005
|
+
baseUrl: config?.baseUrl ?? modelDef.providerOptions?.baseUrl ?? null,
|
|
966
1006
|
apiKey: config?.apiKey ?? null,
|
|
967
1007
|
accountId: config?.accountId ?? null
|
|
968
1008
|
});
|
|
@@ -12783,6 +12823,9 @@ var init_CloudflareProvider = __esm({
|
|
|
12783
12823
|
if (accountScopedMatch) {
|
|
12784
12824
|
return `${accountScopedMatch[1]}/ai/models/search`;
|
|
12785
12825
|
}
|
|
12826
|
+
if (baseUrl.endsWith("/ai/v1")) {
|
|
12827
|
+
return `${baseUrl.slice(0, -"/ai/v1".length)}/ai/models/search`;
|
|
12828
|
+
}
|
|
12786
12829
|
throw new ProviderError(
|
|
12787
12830
|
"Cloudflare model discovery requires CLOUDFLARE_ACCOUNT_ID or an account-scoped baseUrl.",
|
|
12788
12831
|
"invalid_request"
|
|
@@ -61688,7 +61731,7 @@ async function getPlatformIdentity(env2) {
|
|
|
61688
61731
|
const endpoint = platformEndpoint(env2);
|
|
61689
61732
|
const verifiedAccount = await fetchPlatformAccount(endpoint, token);
|
|
61690
61733
|
const account = verifiedAccount ?? await fallbackAccountForToken(token);
|
|
61691
|
-
const username = sanitizeUsername(
|
|
61734
|
+
const username = sanitizeUsername(account.slug);
|
|
61692
61735
|
return {
|
|
61693
61736
|
connected: true,
|
|
61694
61737
|
verified: verifiedAccount !== null,
|
|
@@ -61716,11 +61759,17 @@ async function createPlatformLocalSession(env2) {
|
|
|
61716
61759
|
const username = identity.user.username;
|
|
61717
61760
|
let user = await agentBuilder.getUserByUsername(username);
|
|
61718
61761
|
if (!user) {
|
|
61719
|
-
|
|
61720
|
-
|
|
61721
|
-
|
|
61722
|
-
|
|
61723
|
-
}
|
|
61762
|
+
const legacyUsername = sanitizeUsername(`standard-agents-${identity.account.slug}`);
|
|
61763
|
+
const legacyUser = legacyUsername !== username ? await agentBuilder.getUserByUsername(legacyUsername) : null;
|
|
61764
|
+
if (legacyUser) {
|
|
61765
|
+
user = await agentBuilder.updateUser(legacyUser.id, { username }) ?? legacyUser;
|
|
61766
|
+
} else {
|
|
61767
|
+
user = await agentBuilder.createUser({
|
|
61768
|
+
username,
|
|
61769
|
+
password_hash: await hashPassword(crypto.randomUUID()),
|
|
61770
|
+
role: "admin"
|
|
61771
|
+
});
|
|
61772
|
+
}
|
|
61724
61773
|
}
|
|
61725
61774
|
const token = generateUserToken();
|
|
61726
61775
|
const tokenHash = await hashToken(token);
|
|
@@ -62830,7 +62879,17 @@ var index_get_default2 = defineController2(async ({ req, env: env2 }) => {
|
|
|
62830
62879
|
const agentBuilderId = env2.AGENT_BUILDER.idFromName("singleton");
|
|
62831
62880
|
const agentBuilder = env2.AGENT_BUILDER.get(agentBuilderId);
|
|
62832
62881
|
const users = await agentBuilder.listUsers();
|
|
62833
|
-
|
|
62882
|
+
let platformUsername = null;
|
|
62883
|
+
const platformEnv = env2;
|
|
62884
|
+
if (hasPlatformApiKey(platformEnv)) {
|
|
62885
|
+
const identity = await getPlatformIdentity(platformEnv).catch(() => null);
|
|
62886
|
+
platformUsername = identity?.user.username ?? null;
|
|
62887
|
+
}
|
|
62888
|
+
const usersWithSource = users.map((user) => ({
|
|
62889
|
+
...user,
|
|
62890
|
+
source: platformUsername && user.username === platformUsername ? "standard_agents" : "local"
|
|
62891
|
+
}));
|
|
62892
|
+
return Response.json({ users: usersWithSource });
|
|
62834
62893
|
} catch (error) {
|
|
62835
62894
|
console.error("List users error:", error);
|
|
62836
62895
|
return Response.json(
|
|
@@ -64160,6 +64219,7 @@ var instance_patch_default = defineController2(async ({ req, env: env2 }) => {
|
|
|
64160
64219
|
});
|
|
64161
64220
|
|
|
64162
64221
|
// src/api/models/available.post.ts
|
|
64222
|
+
init_platform_routing();
|
|
64163
64223
|
var UUID_LIKE_MODEL_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
64164
64224
|
var CLOUDFLARE_PROVIDER_MODEL_ID = /^@cf\//i;
|
|
64165
64225
|
function isOpaqueModelId(modelId) {
|
|
@@ -64263,15 +64323,16 @@ var available_post_default = defineController2(async ({ req, env: env2 }) => {
|
|
|
64263
64323
|
);
|
|
64264
64324
|
}
|
|
64265
64325
|
const apiKey = env2[config.envKey];
|
|
64266
|
-
|
|
64326
|
+
const platformRouting = apiKey ? null : resolvePlatformRouting(provider, env2);
|
|
64327
|
+
if (!apiKey && !platformRouting && provider !== "openrouter") {
|
|
64267
64328
|
return Response.json(
|
|
64268
|
-
{ error: `API key not configured for ${provider}. Set ${config.envKey}
|
|
64329
|
+
{ error: `API key not configured for ${provider}. Set ${config.envKey} or STANDARD_AGENTS_API_KEY.` },
|
|
64269
64330
|
{ status: 401 }
|
|
64270
64331
|
);
|
|
64271
64332
|
}
|
|
64272
64333
|
try {
|
|
64273
64334
|
const factory = await config.getFactory();
|
|
64274
|
-
const providerConfig = config.getConfig?.(env2, apiKey || "") || { apiKey: apiKey || "" };
|
|
64335
|
+
const providerConfig = platformRouting ? { apiKey: platformRouting.apiKey, baseUrl: platformRouting.baseUrl } : config.getConfig?.(env2, apiKey || "") || { apiKey: apiKey || "" };
|
|
64275
64336
|
const providerInstance = factory(providerConfig);
|
|
64276
64337
|
if (!providerInstance.getModels && !providerInstance.getModelsPage) {
|
|
64277
64338
|
return Response.json({ models: [], hasNextPage: false });
|