@standardagents/builder 0.41.10 → 0.41.12

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.
@@ -1943,8 +1943,19 @@ declare class DurableUserHub extends DurableObject<DurableUserHubEnv> {
1943
1943
  private limitsFor;
1944
1944
  /** Load the project's room definition from the users registry, once. */
1945
1945
  private loadRoom;
1946
+ /**
1947
+ * How a room execution presents itself to grant policies: as the endpoint
1948
+ * it declares it fronts, otherwise as a room named by its registry key.
1949
+ */
1950
+ private roomCaller;
1946
1951
  /** Whether `key` is room-owned state, exempt from `user_value_changed`. */
1947
1952
  private roomOwnsKey;
1953
+ /**
1954
+ * The value-key prefixes this user's room declares as its own, so the
1955
+ * client-facing KV routes refuse writes under room-owned state. The platform
1956
+ * reserves whatever the tenant declares via `defineUserRoom({ valuePrefix })`.
1957
+ */
1958
+ roomValuePrefixes(): Promise<string[]>;
1948
1959
  /**
1949
1960
  * Presence runs inside the serialization chain, after any execution the
1950
1961
  * event raced with, so a room's presence write never interleaves with a
@@ -2508,6 +2519,11 @@ declare class DurableAgentBuilder<Env extends AgentBuilderEnv = AgentBuilderEnv>
2508
2519
  */
2509
2520
  private userHub;
2510
2521
  /** Read one JSON value from a user's account-wide key-value store. */
2522
+ /**
2523
+ * The pre-hub singleton hosts no user room, so it reserves no room prefixes.
2524
+ * Kept to satisfy the shared UserValueStore contract for fallback runtimes.
2525
+ */
2526
+ roomValuePrefixes(): Promise<string[]>;
2511
2527
  getUserValue(userId: string, key: string): Promise<unknown | null>;
2512
2528
  /** Write one JSON value to a user's account-wide store; null/undefined deletes. */
2513
2529
  setUserValue(userId: string, key: string, value: unknown): Promise<void>;
package/dist/runtime.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { m as AgentBuilderEnv, n as AgentBuilderEvent, A as AgentDefinition, ah as BroadcastOptions, C as CodeExecutionBridge, h as DurableAgentBuilder, D as DurableThread, l as DurableUserHub, af as FlowStateSdk, ai as FlowStateWithSdk, G as HandlerSide, H as HubClientInfo, E as HumanSide, aq as ImageContextConfig, ae as InjectMessageOptions, as as LLMProviderInterface, M as ModelDefinition, aL as NamespaceResolutionError, w as PromptContent, s as PromptDefinition, y as PromptIncludePart, x as PromptPart, F as PromptSide, t as PromptToolConfig, P as Provider, at as ProviderContentPart, aw as ProviderFilePart, av as ProviderImagePart, ar as ProviderRegistry, au as ProviderTextPart, B as SessionToolBinding, z as SessionToolConfig, I as SideConfig, J as SubagentRelationship, u as SubagentToolConfig, S as SubpromptConfig, o as ThreadEventPayload, p as ThreadRegistryEntry, T as ThreadWatchdog, j as ThreadWatchdogState, v as ToolConfig, U as UpdateThreadParams, q as User, k as WatchdogCheckin, W as WatchdogProbeResult, f as applyRuntimeCors, am as buildImageDescription, c as canAccessThread, a9 as cat, aJ as createNamespaceContext, Q as emitThreadEvent, ag as enhanceFlowState, a0 as exists, ad as find, R as forceTurn, ap as generateImageDescription, a7 as getFileStats, N as getMessages, al as getMessagesToSummarize, az as getShortName, a8 as getThumbnail, ak as getUnsummarizedImageAttachments, aG as getVisibleAgentNames, aI as getVisibleModelNames, aH as getVisiblePromptNames, aF as getVisibleToolNames, ac as grep, aj as hasImageAttachments, aa as head, L as injectMessage, d as isAdminOnlyApiRoute, i as isHostedInstance, b as isPublicApiRoute, aK as isQualifiedName, e as isSameOriginBrowserRequest, a as isTrustedLocalDevelopmentRequest, Z as linkFile, a2 as mkdir, a5 as move, ao as optimizeImageContext, ax as parseQualifiedName, ay as qualifyName, K as queueTool, _ as readFile, a3 as readdir, O as reloadHistory, a6 as rename, an as replaceImagesWithDescriptions, aD as resolveAgent, aE as resolveHook, aC as resolveModel, aB as resolvePrompt, aA as resolveTool, a4 as rmdir, r as runtimeCorsHeaders, g as runtimePreflightResponse, $ as stat, ab as tail, a1 as unlink, V as updateThread, X as writeFile, Y as writeImage } from './resolver-kvVdxct2.js';
1
+ export { m as AgentBuilderEnv, n as AgentBuilderEvent, A as AgentDefinition, ah as BroadcastOptions, C as CodeExecutionBridge, h as DurableAgentBuilder, D as DurableThread, l as DurableUserHub, af as FlowStateSdk, ai as FlowStateWithSdk, G as HandlerSide, H as HubClientInfo, E as HumanSide, aq as ImageContextConfig, ae as InjectMessageOptions, as as LLMProviderInterface, M as ModelDefinition, aL as NamespaceResolutionError, w as PromptContent, s as PromptDefinition, y as PromptIncludePart, x as PromptPart, F as PromptSide, t as PromptToolConfig, P as Provider, at as ProviderContentPart, aw as ProviderFilePart, av as ProviderImagePart, ar as ProviderRegistry, au as ProviderTextPart, B as SessionToolBinding, z as SessionToolConfig, I as SideConfig, J as SubagentRelationship, u as SubagentToolConfig, S as SubpromptConfig, o as ThreadEventPayload, p as ThreadRegistryEntry, T as ThreadWatchdog, j as ThreadWatchdogState, v as ToolConfig, U as UpdateThreadParams, q as User, k as WatchdogCheckin, W as WatchdogProbeResult, f as applyRuntimeCors, am as buildImageDescription, c as canAccessThread, a9 as cat, aJ as createNamespaceContext, Q as emitThreadEvent, ag as enhanceFlowState, a0 as exists, ad as find, R as forceTurn, ap as generateImageDescription, a7 as getFileStats, N as getMessages, al as getMessagesToSummarize, az as getShortName, a8 as getThumbnail, ak as getUnsummarizedImageAttachments, aG as getVisibleAgentNames, aI as getVisibleModelNames, aH as getVisiblePromptNames, aF as getVisibleToolNames, ac as grep, aj as hasImageAttachments, aa as head, L as injectMessage, d as isAdminOnlyApiRoute, i as isHostedInstance, b as isPublicApiRoute, aK as isQualifiedName, e as isSameOriginBrowserRequest, a as isTrustedLocalDevelopmentRequest, Z as linkFile, a2 as mkdir, a5 as move, ao as optimizeImageContext, ax as parseQualifiedName, ay as qualifyName, K as queueTool, _ as readFile, a3 as readdir, O as reloadHistory, a6 as rename, an as replaceImagesWithDescriptions, aD as resolveAgent, aE as resolveHook, aC as resolveModel, aB as resolvePrompt, aA as resolveTool, a4 as rmdir, r as runtimeCorsHeaders, g as runtimePreflightResponse, $ as stat, ab as tail, a1 as unlink, V as updateThread, X as writeFile, Y as writeImage } from './resolver-DE5HFRlb.js';
2
2
  export { v as Agent, J as AttachmentRef, i as AuthContext, A as AuthUser, e as BuilderThreadEndpointHandler, C as CLIENT_STREAM_CHUNK_BYTES, t as ClientDuplex, u as ClientForwarding, p as ClientStreamRequest, q as ClientStreamResponse, n as ClientToolRequest, o as ClientToolResponse, B as Controller, a as ControllerContext, G as Env, H as FileRecord, N as FileStats, D as FlowResult, F as FlowState, K as GrepResult, P as ImageContentPart, I as ImageMetadata, L as LLMResponse, M as Message, U as MessageContent, Q as MultimodalContent, R as RequestContext, S as StorageBackend, E as TelemetryEvent, O as TextContentPart, T as ThreadEndpointContext, b as ThreadEnv, w as ThreadInstance, x as ThreadMetadata, y as ToolCall, z as ToolResult, f as authenticate, j as callClient, k as callClientStream, c as createThreadEndpointHandler, m as decodeStreamChunk, d as defineController, l as encodeStreamChunk, h as endpointCallerFromAuth, g as requireAdmin, r as requireAuth, s as supportsClientForwarding } from './index-ChHAVogf.js';
3
3
  export { AgentType, DefineHandlerOptions, DefinitionLoader, GlobalNamespaceContext, HANDLER_SYMBOL, HandlerDefinition, HookExecutionContext, HookExecutionSource, HookSignatures, ImageContent, ModelCapabilities, ModelProvider, NamespaceContext, PackageSignature, PackedExports, PackedMeta, PackedMetadata, PackedNamespaceContext, ParentHookRequirement, ParentHookStage, 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, ThreadHookName, Tool, ToolArgs, ToolArgsNode, ToolArgsRawShape, ToolContent, belongsToPackage, defineAgent, defineHandler, defineHook, defineModel, definePrompt, defineProvider, defineTool, isHandler, isPacked, isVisibleInNamespace, mapReasoningLevel, providerConst, providerEnv, providerValue } from '@standardagents/spec';
4
4
  export { N as NamespacedRegistry } from './types-Dhd0M369.js';
package/dist/runtime.js CHANGED
@@ -12011,6 +12011,13 @@ ${result ?? error ?? "No result content."}${attachmentSummary}`;
12011
12011
  return namespace.get(namespace.idFromName(userId));
12012
12012
  }
12013
12013
  /** Read one JSON value from a user's account-wide key-value store. */
12014
+ /**
12015
+ * The pre-hub singleton hosts no user room, so it reserves no room prefixes.
12016
+ * Kept to satisfy the shared UserValueStore contract for fallback runtimes.
12017
+ */
12018
+ async roomValuePrefixes() {
12019
+ return [];
12020
+ }
12014
12021
  async getUserValue(userId, key) {
12015
12022
  await this.ensureMigrated();
12016
12023
  this.assertValidUserValueUserId(userId);
@@ -30199,7 +30206,7 @@ function canAccessThread(auth, thread) {
30199
30206
  }
30200
30207
 
30201
30208
  // src/users/upstream-timing.ts
30202
- var UPSTREAM_TIMING_HEADER = "x-standard-upstream-timing";
30209
+ var UPSTREAM_TIMING_HEADER = "x-agentbuilder-upstream-timing";
30203
30210
  var MAX_HEADER_CHARS = 512;
30204
30211
  function formatUpstreamTiming(name, durationMs) {
30205
30212
  const safe = Number.isFinite(durationMs) && durationMs > 0 ? durationMs : 0;
@@ -31055,11 +31062,30 @@ var DurableUserHub = class extends DurableObject {
31055
31062
  }
31056
31063
  return this.roomDefinition;
31057
31064
  }
31065
+ /**
31066
+ * How a room execution presents itself to grant policies: as the endpoint
31067
+ * it declares it fronts, otherwise as a room named by its registry key.
31068
+ */
31069
+ roomCaller(room) {
31070
+ if (typeof room.endpoint === "string" && room.endpoint.length > 0) {
31071
+ return { kind: "userEndpoint", name: room.endpoint };
31072
+ }
31073
+ return { kind: "userRoom", name: this.roomKey ?? "room" };
31074
+ }
31058
31075
  /** Whether `key` is room-owned state, exempt from `user_value_changed`. */
31059
31076
  async roomOwnsKey(key) {
31060
31077
  const room = await this.loadRoom();
31061
31078
  return Boolean(room?.valuePrefix && key.startsWith(room.valuePrefix));
31062
31079
  }
31080
+ /**
31081
+ * The value-key prefixes this user's room declares as its own, so the
31082
+ * client-facing KV routes refuse writes under room-owned state. The platform
31083
+ * reserves whatever the tenant declares via `defineUserRoom({ valuePrefix })`.
31084
+ */
31085
+ async roomValuePrefixes() {
31086
+ const room = await this.loadRoom();
31087
+ return room?.valuePrefix ? [room.valuePrefix] : [];
31088
+ }
31063
31089
  /**
31064
31090
  * Presence runs inside the serialization chain, after any execution the
31065
31091
  * event raced with, so a room's presence write never interleaves with a
@@ -31092,7 +31118,7 @@ var DurableUserHub = class extends DurableObject {
31092
31118
  const run = this.executionChain.run(async () => {
31093
31119
  const room = await this.loadRoom();
31094
31120
  if (!room?.onPresence) return;
31095
- const user = new UserStateImpl(this.roomUserId(), this.scopeHost(), { kind: "userRoom", name: this.roomKey ?? "room" });
31121
+ const user = new UserStateImpl(this.roomUserId(), this.scopeHost(), this.roomCaller(room));
31096
31122
  try {
31097
31123
  await room.onPresence(user, event);
31098
31124
  } catch (error) {
@@ -31114,7 +31140,7 @@ var DurableUserHub = class extends DurableObject {
31114
31140
  this.sendRoomFrame(ws, JSON.stringify({ type: "room", id: frame.id, error: "no_room" }));
31115
31141
  return;
31116
31142
  }
31117
- const user = new UserStateImpl(this.roomUserId(), this.scopeHost(), { kind: "userRoom", name: this.roomKey ?? "room" });
31143
+ const user = new UserStateImpl(this.roomUserId(), this.scopeHost(), this.roomCaller(room));
31118
31144
  try {
31119
31145
  await room.onFrame(user, connection, frame);
31120
31146
  } catch (error) {