@standardagents/builder 0.16.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/runtime.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { e as ThreadEnv, h as ThreadMetadata, M as Message, l as FileRecord, F as FlowState, n as FileStats, G as GrepResult, m as AttachmentRef, r as MessageContent, E as Env, g as ThreadInstance } from './index-EaxysUHv.js';
2
- export { A as Agent, f as BuilderThreadEndpointHandler, B as Controller, a as ControllerContext, j as FlowResult, p as ImageContentPart, I as ImageMetadata, L as LLMResponse, q as MultimodalContent, R as RequestContext, S as StorageBackend, k as TelemetryEvent, o as TextContentPart, b as ThreadEndpointContext, T as ToolCall, i as ToolResult, c as createThreadEndpointHandler, d as defineController } from './index-EaxysUHv.js';
1
+ import { e as ThreadEnv, h as ThreadMetadata, M as Message, l as FileRecord, F as FlowState, n as FileStats, G as GrepResult, m as AttachmentRef, r as MessageContent, E as Env, g as ThreadInstance } from './index-BnrKzXpJ.js';
2
+ export { A as Agent, f as BuilderThreadEndpointHandler, B as Controller, a as ControllerContext, j as FlowResult, p as ImageContentPart, I as ImageMetadata, L as LLMResponse, q as MultimodalContent, R as RequestContext, S as StorageBackend, k as TelemetryEvent, o as TextContentPart, b as ThreadEndpointContext, T as ToolCall, i as ToolResult, c as createThreadEndpointHandler, d as defineController } from './index-BnrKzXpJ.js';
3
3
  import { CodeExecutionOptions, CodeExecutionResult, SubagentRegistryEntry, InjectMessageInput, QueueMessageInput, ModelDefinition as ModelDefinition$1, ToolArgs, PromptTextPart, PromptEnvPart, VariableDefinition, SubpromptConfig as SubpromptConfig$1, PromptToolConfig as PromptToolConfig$1, SubagentToolConfig as SubagentToolConfig$1, ReasoningConfig, SideConfig as SideConfig$1, LLMProviderInterface, ContentPart, TextPart, ImagePart, FilePart, NamespaceContext, DefinitionLoader } from '@standardagents/spec';
4
4
  export { AgentType, DefinitionLoader, GlobalNamespaceContext, HookSignatures, ImageContent, ModelCapabilities, ModelProvider, NamespaceContext, PackageSignature, PackedExports, PackedMeta, PackedMetadata, PackedNamespaceContext, PromptInput, PromptTextPart, ProviderAssistantMessage, ProviderError, ProviderErrorCode, ProviderFactory, ProviderFactoryConfig, ProviderFinishReason, ProviderGeneratedImage, ProviderMessage, ProviderMessageContent, ModelCapabilities as ProviderModelCapabilities, ProviderReasoningDetail, ProviderRequest, ProviderResponse, ProviderStreamChunk, ProviderSystemMessage, ProviderTool, ProviderToolCallPart, ProviderToolMessage, ProviderToolResultContent, ProviderUsage, ProviderUserMessage, ReasoningConfig, StructuredPrompt, TextContent, Tool, ToolArgs, ToolArgsNode, ToolArgsRawShape, ToolContent, belongsToPackage, defineAgent, defineHook, defineModel, definePrompt, defineTool, isPacked, isVisibleInNamespace, mapReasoningLevel } from '@standardagents/spec';
5
5
  import { DurableObject, WorkerEntrypoint } from 'cloudflare:workers';
@@ -2930,6 +2930,13 @@ type ProviderFilePart = FilePart;
2930
2930
  * Returns a provider to override the default, or null to fall through.
2931
2931
  */
2932
2932
  type ProviderOverrideFn = (modelName: string, modelDef: ModelDefinition$1<string>, env: Env) => LLMProviderInterface | null;
2933
+ interface ProviderLookupResult {
2934
+ provider: LLMProviderInterface;
2935
+ modelName: string;
2936
+ modelDef: ModelDefinition$1<string>;
2937
+ /** True when requests route through the Standard Agents platform (hosted routing or a registered override). */
2938
+ viaPlatform: boolean;
2939
+ }
2933
2940
  /**
2934
2941
  * Provider registry implementation
2935
2942
  *
@@ -2954,11 +2961,7 @@ declare class ProviderRegistryImpl {
2954
2961
  * @param thread - Thread instance for loading model from virtual modules
2955
2962
  * @returns Provider and model definition
2956
2963
  */
2957
- getProvider(modelName: string, env: Env, thread?: ThreadInstance): Promise<{
2958
- provider: LLMProviderInterface;
2959
- modelName: string;
2960
- modelDef: ModelDefinition$1<string>;
2961
- }>;
2964
+ getProvider(modelName: string, env: Env, thread?: ThreadInstance): Promise<ProviderLookupResult>;
2962
2965
  private buildResult;
2963
2966
  private cacheAndReturn;
2964
2967
  private getProviderFingerprint;
package/dist/runtime.js CHANGED
@@ -857,11 +857,38 @@ var init_TestProvider = __esm({
857
857
  }
858
858
  });
859
859
 
860
+ // src/agents/providers/platform-routing.ts
861
+ function stringEnv(value) {
862
+ return typeof value === "string" && value.trim() ? value.trim() : void 0;
863
+ }
864
+ function resolvePlatformRouting(providerName, env) {
865
+ const apiKey = stringEnv(env.STANDARD_AGENTS_API_KEY) ?? stringEnv(env.PLATFORM_API_KEY);
866
+ if (!apiKey) return null;
867
+ const origin = (stringEnv(env.STANDARD_AGENTS_PROXY_URL) ?? stringEnv(env.PLATFORM_ENDPOINT) ?? stringEnv(env.STANDARD_AGENTS_API_URL) ?? DEFAULT_PLATFORM_PROXY_ORIGIN).replace(/\/+$/, "");
868
+ const provider = providerName.toLowerCase();
869
+ const basePath = PROVIDER_BASE_PATHS[provider] ?? "";
870
+ return {
871
+ apiKey,
872
+ origin,
873
+ baseUrl: `${origin}/v1/proxy/${encodeURIComponent(provider)}${basePath}`
874
+ };
875
+ }
876
+ var DEFAULT_PLATFORM_PROXY_ORIGIN, PROVIDER_BASE_PATHS;
877
+ var init_platform_routing = __esm({
878
+ "src/agents/providers/platform-routing.ts"() {
879
+ DEFAULT_PLATFORM_PROXY_ORIGIN = "https://proxy.standardagents.ai";
880
+ PROVIDER_BASE_PATHS = {
881
+ cloudflare: "/ai/v1"
882
+ };
883
+ }
884
+ });
885
+
860
886
  // src/agents/providers/ProviderRegistry.ts
861
887
  var ProviderRegistryImpl, ProviderRegistry;
862
888
  var init_ProviderRegistry = __esm({
863
889
  "src/agents/providers/ProviderRegistry.ts"() {
864
890
  init_TestProvider();
891
+ init_platform_routing();
865
892
  ProviderRegistryImpl = class {
866
893
  providerCache = /* @__PURE__ */ new Map();
867
894
  providerOverrideFn = null;
@@ -899,9 +926,9 @@ var init_ProviderRegistry = __esm({
899
926
  const fingerprint = this.getProviderFingerprint(providerName, modelDef);
900
927
  const cached = this.providerCache.get(modelName);
901
928
  if (cached?.fingerprint === fingerprint) {
902
- return this.buildResult(cached.provider, modelDef);
929
+ return this.buildResult(cached.provider, modelDef, false);
903
930
  }
904
- return this.cacheAndReturn(modelName, createTestProvider(), modelDef, fingerprint);
931
+ return this.cacheAndReturn(modelName, createTestProvider(), modelDef, fingerprint, false);
905
932
  }
906
933
  const apiKey = this.getApiKeyForProvider(providerName, env);
907
934
  if (apiKey) {
@@ -918,34 +945,47 @@ var init_ProviderRegistry = __esm({
918
945
  const fingerprint = this.getProviderFingerprint(providerName, modelDef, config);
919
946
  const cached = this.providerCache.get(modelName);
920
947
  if (cached?.fingerprint === fingerprint) {
921
- return this.buildResult(cached.provider, modelDef);
948
+ return this.buildResult(cached.provider, modelDef, false);
922
949
  }
923
- return this.cacheAndReturn(modelName, providerFactory(config), modelDef, fingerprint);
950
+ return this.cacheAndReturn(modelName, providerFactory(config), modelDef, fingerprint, false);
924
951
  }
925
952
  if (this.providerOverrideFn) {
926
953
  const overrideFingerprint = this.getProviderFingerprint(`override:${this.providerOverrideRevision}`, modelDef);
927
954
  const overrideCached = this.providerCache.get(modelName);
928
955
  if (overrideCached?.fingerprint === overrideFingerprint) {
929
- return this.buildResult(overrideCached.provider, modelDef);
956
+ return this.buildResult(overrideCached.provider, modelDef, true);
930
957
  }
931
958
  const overrideProvider = this.providerOverrideFn(modelName, modelDef, env);
932
959
  if (overrideProvider) {
933
- return this.cacheAndReturn(modelName, overrideProvider, modelDef, overrideFingerprint);
960
+ return this.cacheAndReturn(modelName, overrideProvider, modelDef, overrideFingerprint, true);
961
+ }
962
+ }
963
+ const routing = resolvePlatformRouting(providerName, env);
964
+ if (routing) {
965
+ const config = {
966
+ apiKey: routing.apiKey,
967
+ baseUrl: routing.baseUrl
968
+ };
969
+ const fingerprint = this.getProviderFingerprint(`platform:${providerName}`, modelDef, config);
970
+ const cached = this.providerCache.get(modelName);
971
+ if (cached?.fingerprint === fingerprint) {
972
+ return this.buildResult(cached.provider, modelDef, true);
934
973
  }
974
+ return this.cacheAndReturn(modelName, providerFactory(config), modelDef, fingerprint, true);
935
975
  }
936
976
  throw new Error(`No API key found for provider: ${providerName}. Set the provider key or STANDARD_AGENTS_API_KEY.`);
937
977
  }
938
- buildResult(provider, modelDef) {
939
- return { provider, modelName: modelDef.model, modelDef };
978
+ buildResult(provider, modelDef, viaPlatform) {
979
+ return { provider, modelName: modelDef.model, modelDef, viaPlatform };
940
980
  }
941
- cacheAndReturn(modelName, provider, modelDef, fingerprint) {
942
- this.providerCache.set(modelName, { provider, fingerprint });
943
- return this.buildResult(provider, modelDef);
981
+ cacheAndReturn(modelName, provider, modelDef, fingerprint, viaPlatform) {
982
+ this.providerCache.set(modelName, { provider, fingerprint, viaPlatform });
983
+ return this.buildResult(provider, modelDef, viaPlatform);
944
984
  }
945
985
  getProviderFingerprint(providerName, modelDef, config) {
946
986
  return JSON.stringify({
947
987
  providerName,
948
- baseUrl: modelDef.providerOptions?.baseUrl ?? null,
988
+ baseUrl: config?.baseUrl ?? modelDef.providerOptions?.baseUrl ?? null,
949
989
  apiKey: config?.apiKey ?? null,
950
990
  accountId: config?.accountId ?? null
951
991
  });
@@ -1621,7 +1661,7 @@ var init_LLMRequest = __esm({
1621
1661
  */
1622
1662
  static async callModel(modelId, context, state, logId) {
1623
1663
  const { ProviderRegistry: ProviderRegistry2 } = await Promise.resolve().then(() => (init_providers(), providers_exports));
1624
- const { provider, modelName, modelDef } = await ProviderRegistry2.getProvider(
1664
+ const { provider, modelName, modelDef, viaPlatform } = await ProviderRegistry2.getProvider(
1625
1665
  modelId,
1626
1666
  state.env,
1627
1667
  state.thread.instance
@@ -1755,6 +1795,7 @@ var init_LLMRequest = __esm({
1755
1795
  }
1756
1796
  };
1757
1797
  response._provider = provider;
1798
+ response._viaPlatform = viaPlatform;
1758
1799
  response._providerResponseId = providerResponseId;
1759
1800
  response._aggregate_response = {
1760
1801
  id: responseId,
@@ -1832,7 +1873,7 @@ var init_LLMRequest = __esm({
1832
1873
  try {
1833
1874
  const toolsCalled = response.tool_calls ? JSON.stringify(response.tool_calls.map((tc) => tc.function.name)) : null;
1834
1875
  const providerName = response._provider?.name;
1835
- const standardAgentsRouterUsed = providerName === "platform";
1876
+ const standardAgentsRouterUsed = response._viaPlatform === true || providerName === "platform";
1836
1877
  const resolvedPricing = resolveModelPricing(modelDef, providerName);
1837
1878
  const calculatedCost = calculateUsageCost(response.usage, resolvedPricing);
1838
1879
  const providerReportedCost = typeof response.usage.cost === "number" ? response.usage.cost : typeof response.usage.cost === "string" ? parseFloat(response.usage.cost) : null;
@@ -5937,7 +5978,7 @@ var init_FlowEngine = __esm({
5937
5978
  max_session_turns: newAgentDef.maxSessionTurns ?? null,
5938
5979
  side_a_label: newAgentDef.sideA?.label ?? null,
5939
5980
  side_a_agent_prompt: newAgentDef.sideA?.prompt ?? null,
5940
- side_a_stop_on_response: newAgentDef.sideA?.stopOnResponse ?? false,
5981
+ side_a_stop_on_response: newAgentDef.sideA?.stopOnResponse ?? true,
5941
5982
  side_a_stop_tool: newAgentDef.sideA?.stopTool ?? null,
5942
5983
  side_a_stop_tool_response_property: newAgentDef.sideA?.stopToolResponseProperty ?? null,
5943
5984
  side_a_max_steps: newAgentDef.sideA?.maxSteps ?? null,
@@ -5952,7 +5993,7 @@ var init_FlowEngine = __esm({
5952
5993
  side_a_session_status_attachments_property: sideASession.status.attachmentsProperty,
5953
5994
  side_b_label: newAgentDef.sideB?.label ?? null,
5954
5995
  side_b_agent_prompt: newAgentDef.sideB?.prompt ?? null,
5955
- side_b_stop_on_response: newAgentDef.sideB?.stopOnResponse ?? false,
5996
+ side_b_stop_on_response: newAgentDef.sideB?.stopOnResponse ?? true,
5956
5997
  side_b_stop_tool: newAgentDef.sideB?.stopTool ?? null,
5957
5998
  side_b_stop_tool_response_property: newAgentDef.sideB?.stopToolResponseProperty ?? null,
5958
5999
  side_b_max_steps: newAgentDef.sideB?.maxSteps ?? null,
@@ -17433,7 +17474,7 @@ ${resultContent}${attachmentSummary}`;
17433
17474
  max_session_turns: agentDef.maxSessionTurns,
17434
17475
  side_a_label: agentDef.sideA?.label,
17435
17476
  side_a_agent_prompt: qualifyPromptName(agentDef.sideA?.prompt),
17436
- side_a_stop_on_response: agentDef.sideA?.stopOnResponse ?? false,
17477
+ side_a_stop_on_response: agentDef.sideA?.stopOnResponse ?? true,
17437
17478
  side_a_stop_tool: agentDef.sideA?.stopTool,
17438
17479
  side_a_stop_tool_response_property: agentDef.sideA?.stopToolResponseProperty,
17439
17480
  side_a_max_steps: agentDef.sideA?.maxSteps,
@@ -17448,7 +17489,7 @@ ${resultContent}${attachmentSummary}`;
17448
17489
  side_a_session_status_attachments_property: sideASession.status.attachmentsProperty,
17449
17490
  side_b_label: agentDef.sideB?.label,
17450
17491
  side_b_agent_prompt: qualifyPromptName(agentDef.sideB?.prompt),
17451
- side_b_stop_on_response: agentDef.sideB?.stopOnResponse ?? false,
17492
+ side_b_stop_on_response: agentDef.sideB?.stopOnResponse ?? true,
17452
17493
  side_b_stop_tool: agentDef.sideB?.stopTool,
17453
17494
  side_b_stop_tool_response_property: agentDef.sideB?.stopToolResponseProperty,
17454
17495
  side_b_max_steps: agentDef.sideB?.maxSteps,
@@ -17626,7 +17667,7 @@ ${resultContent}${attachmentSummary}`;
17626
17667
  max_session_turns: agentDef.maxSessionTurns,
17627
17668
  side_a_label: agentDef.sideA?.label,
17628
17669
  side_a_agent_prompt: qualifyPromptName(agentDef.sideA?.prompt),
17629
- side_a_stop_on_response: agentDef.sideA?.stopOnResponse ?? false,
17670
+ side_a_stop_on_response: agentDef.sideA?.stopOnResponse ?? true,
17630
17671
  side_a_stop_tool: agentDef.sideA?.stopTool,
17631
17672
  side_a_stop_tool_response_property: agentDef.sideA?.stopToolResponseProperty,
17632
17673
  side_a_max_steps: agentDef.sideA?.maxSteps,
@@ -17641,7 +17682,7 @@ ${resultContent}${attachmentSummary}`;
17641
17682
  side_a_session_status_attachments_property: sideASession.status.attachmentsProperty,
17642
17683
  side_b_label: agentDef.sideB?.label,
17643
17684
  side_b_agent_prompt: qualifyPromptName(agentDef.sideB?.prompt),
17644
- side_b_stop_on_response: agentDef.sideB?.stopOnResponse ?? false,
17685
+ side_b_stop_on_response: agentDef.sideB?.stopOnResponse ?? true,
17645
17686
  side_b_stop_tool: agentDef.sideB?.stopTool,
17646
17687
  side_b_stop_tool_response_property: agentDef.sideB?.stopToolResponseProperty,
17647
17688
  side_b_max_steps: agentDef.sideB?.maxSteps,
@@ -17772,7 +17813,7 @@ ${resultContent}${attachmentSummary}`;
17772
17813
  max_session_turns: agentDef.maxSessionTurns,
17773
17814
  side_a_label: agentDef.sideA?.label,
17774
17815
  side_a_agent_prompt: qualifyPromptName(agentDef.sideA?.prompt),
17775
- side_a_stop_on_response: agentDef.sideA?.stopOnResponse ?? false,
17816
+ side_a_stop_on_response: agentDef.sideA?.stopOnResponse ?? true,
17776
17817
  side_a_stop_tool: agentDef.sideA?.stopTool,
17777
17818
  side_a_stop_tool_response_property: agentDef.sideA?.stopToolResponseProperty,
17778
17819
  side_a_max_steps: agentDef.sideA?.maxSteps,
@@ -17787,7 +17828,7 @@ ${resultContent}${attachmentSummary}`;
17787
17828
  side_a_session_status_attachments_property: sideASession.status.attachmentsProperty,
17788
17829
  side_b_label: agentDef.sideB?.label,
17789
17830
  side_b_agent_prompt: qualifyPromptName(agentDef.sideB?.prompt),
17790
- side_b_stop_on_response: agentDef.sideB?.stopOnResponse ?? false,
17831
+ side_b_stop_on_response: agentDef.sideB?.stopOnResponse ?? true,
17791
17832
  side_b_stop_tool: agentDef.sideB?.stopTool,
17792
17833
  side_b_stop_tool_response_property: agentDef.sideB?.stopToolResponseProperty,
17793
17834
  side_b_max_steps: agentDef.sideB?.maxSteps,