@standardagents/builder 0.27.2 → 0.27.3

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.
@@ -262,6 +262,7 @@ interface ThreadInstance {
262
262
  hooks(): HookRegistry;
263
263
  getValue<T = unknown>(key: string): Promise<T | null>;
264
264
  setValue(key: string, value: unknown): Promise<void>;
265
+ emitThreadEvent?(threadId: string, event: string, data: unknown): void | Promise<void>;
265
266
  callClientTool?(request: ClientToolRequest): Promise<ClientToolResponse>;
266
267
  registerCodeExecutionBridge?(runId: string, bridge: {
267
268
  call(functionId: string, encodedArgs: unknown[]): Promise<unknown>;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { ModelDefinition, AgentDefinition } from './runtime.js';
2
2
  export { AgentBuilderEnv, AuthContext, AuthUser, BroadcastOptions, CodeExecutionBridge, DurableAgentBuilder, DurableThread, FlowStateSdk, FlowStateWithSdk, ImageContextConfig, InjectMessageOptions, LLMProviderInterface, NamespaceResolutionError, PromptContent, PromptDefinition, PromptIncludePart, PromptPart, PromptToolConfig, Provider, ProviderContentPart, ProviderFilePart, ProviderImagePart, ProviderRegistry, ProviderTextPart, SessionToolBinding, SessionToolConfig, SideConfig, SubagentToolConfig, SubpromptConfig, ThreadRegistryEntry, ThreadWatchdog, ThreadWatchdogState, ToolConfig, UpdateThreadParams, User, WatchdogCheckin, WatchdogProbeResult, authenticate, buildImageDescription, cat, createNamespaceContext, emitThreadEvent, enhanceFlowState, exists, find, forceTurn, generateImageDescription, getFileStats, getMessages, getMessagesToSummarize, getShortName, getThumbnail, getUnsummarizedImageAttachments, getVisibleAgentNames, getVisibleModelNames, getVisiblePromptNames, getVisibleToolNames, grep, hasImageAttachments, head, injectMessage, isQualifiedName, linkFile, mkdir, move, optimizeImageContext, parseQualifiedName, qualifyName, queueTool, readFile, readdir, reloadHistory, rename, replaceImagesWithDescriptions, requireAdmin, requireAuth, resolveAgent, resolveHook, resolveModel, resolvePrompt, resolveTool, rmdir, stat, tail, unlink, updateThread, writeFile, writeImage } from './runtime.js';
3
3
  export { AgentPluginOptions, agentbuilder, builder } from './plugin.js';
4
- export { A as Agent, m as AttachmentRef, f as BuilderThreadEndpointHandler, B as Controller, a as ControllerContext, E as Env, l as FileRecord, n as FileStats, j as FlowResult, F as FlowState, G as GrepResult, p as ImageContentPart, I as ImageMetadata, L as LLMResponse, M as Message, r as MessageContent, q as MultimodalContent, R as RequestContext, S as StorageBackend, k as TelemetryEvent, o as TextContentPart, b as ThreadEndpointContext, e as ThreadEnv, g as ThreadInstance, h as ThreadMetadata, T as ToolCall, i as ToolResult, c as createThreadEndpointHandler, d as defineController } from './index-DJ7B8CTp.js';
4
+ export { A as Agent, m as AttachmentRef, f as BuilderThreadEndpointHandler, B as Controller, a as ControllerContext, E as Env, l as FileRecord, n as FileStats, j as FlowResult, F as FlowState, G as GrepResult, p as ImageContentPart, I as ImageMetadata, L as LLMResponse, M as Message, r as MessageContent, q as MultimodalContent, R as RequestContext, S as StorageBackend, k as TelemetryEvent, o as TextContentPart, b as ThreadEndpointContext, e as ThreadEnv, g as ThreadInstance, h as ThreadMetadata, T as ToolCall, i as ToolResult, c as createThreadEndpointHandler, d as defineController } from './index-DReIS8eP.js';
5
5
  export { AgentType, DefinitionLoader, GlobalNamespaceContext, HookSignatures, ImageContent, ModelCapabilities, ModelProvider, NamespaceContext, PackageSignature, PackedExports, PackedMeta, PackedMetadata, PackedNamespaceContext, PromptInput, PromptTextPart, ProviderAssistantMessage, ProviderConfigSlot, ProviderConfigSlots, ProviderConfigValueSource, ProviderDefinition, ProviderError, ProviderErrorCode, ProviderFactory, ProviderFactoryConfig, ProviderFinishReason, ProviderGeneratedImage, ProviderMessage, ProviderMessageContent, ProviderMethodOverrides, ModelCapabilities as ProviderModelCapabilities, ProviderOverride, ProviderOverrideContext, ProviderReasoningDetail, ProviderRequest, ProviderResponse, ProviderStreamChunk, ProviderSyncOverride, ProviderSystemMessage, ProviderTool, ProviderToolCallPart, ProviderToolMessage, ProviderToolResultContent, ProviderUsage, ProviderUserMessage, ReasoningConfig, StructuredPrompt, TextContent, Tool, ToolArgs, ToolArgsNode, ToolArgsRawShape, ToolContent, belongsToPackage, defineAgent, defineHook, defineModel, definePrompt, defineProvider, defineTool, isPacked, isVisibleInNamespace, mapReasoningLevel, providerConst, providerEnv, providerValue } from '@standardagents/spec';
6
6
  export { C as ConstituentItem, D as DiscoveredPackage, N as NamespacedRegistry, P as PackingAnalysis, a as PackingOptions, b as PackingResult, c as UnpackOptions, d as UnpackResult } from './types-Bpe7IANZ.js';
7
7
  export { D as DiscoveryConfig, P as PackageDiscoveryService, d as discoverPackages } from './discovery-DiMJWisl.js';
package/dist/index.js CHANGED
@@ -12703,6 +12703,7 @@ var init_ThreadStateImpl = __esm({
12703
12703
  _executionState = null;
12704
12704
  _childrenCache = [];
12705
12705
  _terminatedCache = null;
12706
+ _pendingEventDeliveries = /* @__PURE__ */ new Set();
12706
12707
  constructor(flowState, threadInstance, metadata, runtimeContext = {}) {
12707
12708
  this._flowState = flowState;
12708
12709
  this._threadInstance = threadInstance;
@@ -13154,6 +13155,22 @@ var init_ThreadStateImpl = __esm({
13154
13155
  emit(event, data) {
13155
13156
  if (this._flowState?.emitEvent) {
13156
13157
  this._flowState.emitEvent(event, data);
13158
+ return;
13159
+ }
13160
+ if (this._threadInstance.emitThreadEvent) {
13161
+ const delivery = this._threadInstance.emitThreadEvent(this.threadId, event, data);
13162
+ if (delivery && typeof delivery.then === "function") {
13163
+ const pending = Promise.resolve(delivery).catch((error) => {
13164
+ console.error(`[ThreadState] Custom event "${event}" delivery failed:`, error);
13165
+ }).finally(() => this._pendingEventDeliveries.delete(pending));
13166
+ this._pendingEventDeliveries.add(pending);
13167
+ }
13168
+ }
13169
+ }
13170
+ /** Runtime-only drain used by thread endpoint wrappers before responding. */
13171
+ async flushPendingEventDeliveries() {
13172
+ while (this._pendingEventDeliveries.size > 0) {
13173
+ await Promise.all([...this._pendingEventDeliveries]);
13157
13174
  }
13158
13175
  }
13159
13176
  // ─────────────────────────────────────────────────────────────────────────
@@ -22230,7 +22247,9 @@ function createThreadEndpointHandler(handler) {
22230
22247
  }
22231
22248
  endpointParams[key === "_" ? "*" : key] = value;
22232
22249
  }
22233
- return await handler(req, threadState, endpointParams);
22250
+ const response = await handler(req, threadState, endpointParams);
22251
+ await threadState.flushPendingEventDeliveries();
22252
+ return response;
22234
22253
  } catch (error) {
22235
22254
  console.error(`Error in thread endpoint for ${threadId}:`, error);
22236
22255
  return Response.json(
@@ -28341,6 +28360,9 @@ ${resultContent}${attachmentSummary}`;
28341
28360
  * Broadcast a custom event to all connected message WebSocket clients
28342
28361
  * Used by tools via emitThreadEvent() to send user-defined events
28343
28362
  */
28363
+ emitThreadEvent(_threadId, type, data) {
28364
+ this.broadcastEvent(type, data);
28365
+ }
28344
28366
  broadcastEvent(type, data) {
28345
28367
  const payload = JSON.stringify({
28346
28368
  type: "event",