@truefoundry/assistant-ui-runtime 0.1.4 → 0.1.6-rc.0

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.
Files changed (57) hide show
  1. package/README.md +374 -190
  2. package/dist/index.d.ts +32 -29
  3. package/dist/index.js +334 -241
  4. package/dist/index.js.map +1 -1
  5. package/dist/plugins/truefoundry-agent-server-adapter/index.d.ts +30 -0
  6. package/dist/plugins/truefoundry-agent-server-adapter/index.js +198 -0
  7. package/dist/plugins/truefoundry-agent-server-adapter/index.js.map +1 -0
  8. package/dist/types-VUBzoJT2.d.ts +462 -0
  9. package/package.json +12 -4
  10. package/src/askUserQuestion.ts +3 -3
  11. package/src/collectPending.ts +1 -1
  12. package/src/convertTurnMessages.test.ts +141 -196
  13. package/src/convertTurnMessages.ts +131 -77
  14. package/src/createSubAgent.ts +1 -1
  15. package/src/draftAgentConfig.test.ts +26 -29
  16. package/src/extractTurnUserText.ts +1 -1
  17. package/src/foldPeerThreads.test.ts +1 -1
  18. package/src/foldPeerThreads.ts +3 -2
  19. package/src/index.ts +39 -4
  20. package/src/listPages.ts +21 -0
  21. package/src/loadSessionSnapshot.test.ts +9 -8
  22. package/src/loadSessionSnapshot.ts +9 -14
  23. package/src/mcpAuth.ts +6 -3
  24. package/src/messageCustomMetadata.ts +1 -1
  25. package/src/modelMessageContent.ts +1 -1
  26. package/src/modelMessageImageContent.test.ts +1 -1
  27. package/src/modelMessageImageContent.ts +7 -6
  28. package/src/plugins/truefoundry-agent-server-adapter/index.ts +285 -0
  29. package/src/private/agentSpec.ts +8 -3
  30. package/src/private/draftSessionBridge.ts +14 -13
  31. package/src/private/truefoundryDraftThreadListAdapter.test.ts +44 -49
  32. package/src/private/truefoundryDraftThreadListAdapter.ts +22 -16
  33. package/src/requiredActionInputs.ts +1 -1
  34. package/src/requiredActionsFromActiveUpdate.test.ts +1 -1
  35. package/src/server/eventUtils.ts +120 -0
  36. package/src/server/events.ts +246 -0
  37. package/src/server/index.ts +66 -0
  38. package/src/server/types.ts +313 -0
  39. package/src/sessionSnapshot.ts +1 -1
  40. package/src/sessions.ts +5 -21
  41. package/src/streamTurn.test.ts +175 -158
  42. package/src/streamTurn.ts +51 -57
  43. package/src/toolApproval.ts +4 -4
  44. package/src/toolResponse.ts +4 -4
  45. package/src/truefoundryExtras.ts +1 -1
  46. package/src/truefoundryOwnedSessionsThreadListAdapter.test.ts +26 -29
  47. package/src/truefoundryOwnedSessionsThreadListAdapter.ts +18 -23
  48. package/src/truefoundryThreadListAdapter.test.ts +16 -18
  49. package/src/truefoundryThreadListAdapter.ts +9 -9
  50. package/src/turnEventHelpers.ts +1 -1
  51. package/src/types.ts +2 -16
  52. package/src/useTrueFoundryAgentMessages.test.tsx +38 -70
  53. package/src/useTrueFoundryAgentMessages.ts +33 -45
  54. package/src/useTrueFoundryAgentRuntime.ts +11 -28
  55. package/src/private/bindDraftAgentSession.test.ts +0 -54
  56. package/src/private/bindDraftAgentSession.ts +0 -28
  57. package/src/private/getGatewayFromPrivateClient.ts +0 -13
package/dist/index.d.ts CHANGED
@@ -1,15 +1,14 @@
1
1
  import * as _assistant_ui_core from '@assistant-ui/core';
2
2
  import { ExternalStoreSharedOptions, AttachmentAdapter, SpeechSynthesisAdapter, DictationAdapter, RealtimeVoiceAdapter, FeedbackAdapter, ThreadAssistantMessagePart, ThreadMessage, AppendMessage, ExportedMessageRepositoryItem, RemoteThreadListAdapter } from '@assistant-ui/core';
3
- import * as truefoundry_gateway_sdk_agents from 'truefoundry-gateway-sdk/agents';
4
- import { AgentSessionClient, TurnEvent, ThreadCreatedEvent, UserToolResponseEvent, McpAuthRequiredEvent, UserToolApprovalEvent, Turn, TurnInputItem, AgentSession } from 'truefoundry-gateway-sdk/agents';
5
- export { SandboxCreatedEvent } from 'truefoundry-gateway-sdk/agents';
6
- import { PrivateAgentSessionClient } from 'truefoundry-gateway-sdk/agents/private';
7
- export { AgentDraftSession, PrivateAgentSessionClient } from 'truefoundry-gateway-sdk/agents/private';
8
- import { TruefoundryGatewayApi } from 'truefoundry-gateway-sdk';
3
+ import { A as AgentSpec, a as AgentChatServer, T as TurnStreamingEvent, D as DeltaEvents, b as TurnEvent, c as ThreadCreatedEvent, U as UserToolResponseEvent, M as McpAuthRequiredEvent, d as UserToolApprovalEvent, e as Turn, f as TurnInputItem, S as Session } from './types-VUBzoJT2.js';
4
+ export { g as AgentBuilderServer, C as CreateSessionRequest, L as ListResult, h as ListSessionsParams, i as ModelMessageEvent, P as PreviousTurnIdInput, j as SandboxCreatedEvent, k as SessionEventItem, l as ToolApprovalRequiredEvent, m as ToolCall, n as ToolResponseRequiredEvent, o as TurnState, p as TurnStateDone, q as TurnStreamData, r as UpdateSessionRequest, s as UserMessage } from './types-VUBzoJT2.js';
9
5
  import * as _assistant_ui_core_internal from '@assistant-ui/core/internal';
10
6
 
11
- type AgentSpec = TruefoundryGatewayApi.AgentSpec;
12
- type DraftSession = TruefoundryGatewayApi.DraftSession;
7
+ /** @deprecated Use Session with isMutable: true instead. Kept for title helper. */
8
+ type DraftSession = {
9
+ title?: string | null;
10
+ agentSpec: AgentSpec;
11
+ };
13
12
  type AgentSpecUpdate = {
14
13
  instructions?: string;
15
14
  model?: Partial<AgentSpec["model"]> & {
@@ -36,7 +35,7 @@ type DraftAgentConfig = {
36
35
  };
37
36
  type TrueFoundryAgentConfig = NamedAgentConfig | DraftAgentConfig;
38
37
  type TrueFoundryAgentRuntimeBaseOptions = ExternalStoreSharedOptions & {
39
- client: AgentSessionClient;
38
+ server: AgentChatServer;
40
39
  initialSessionId?: string | undefined;
41
40
  threadId?: string | undefined;
42
41
  onThreadIdChange?: ((threadId: string | undefined) => void) | undefined;
@@ -55,15 +54,23 @@ type UseTrueFoundryAgentRuntimeOptions = TrueFoundryAgentRuntimeBaseOptions & {
55
54
  agent?: TrueFoundryAgentConfig | undefined;
56
55
  /** Legacy named-agent shorthand. Prefer `agent: { mode: "named", agentName }`. */
57
56
  agentName?: string | undefined;
58
- /**
59
- * Required when `agent.mode === "draft"`. Also used for sandbox file downloads
60
- * (named or draft).
61
- */
62
- privateClient?: PrivateAgentSessionClient | undefined;
63
57
  };
64
58
 
65
59
  declare function useTrueFoundryAgentRuntime(options: UseTrueFoundryAgentRuntimeOptions): _assistant_ui_core.AssistantRuntime;
66
60
 
61
+ /**
62
+ * Local implementations of streaming delta helpers.
63
+ * Formerly imported from truefoundry-gateway-sdk/agents.
64
+ */
65
+
66
+ /** True for `.delta` streaming events. */
67
+ declare function isEventDelta(event: TurnStreamingEvent): event is DeltaEvents;
68
+ /**
69
+ * Merge `delta` into `base` in place (same `id` required).
70
+ * Currently handles `model.message.delta` → `model.message`.
71
+ */
72
+ declare function mergeEventDelta(base: TurnEvent, delta: DeltaEvents): void;
73
+
67
74
  type AssistantContentPart = ThreadAssistantMessagePart;
68
75
 
69
76
  /** Gateway root thread id — always the literal `"main"`. */
@@ -157,8 +164,8 @@ type ConvertTurnsResult = {
157
164
  runningTurn?: Turn;
158
165
  unstable_resume?: boolean;
159
166
  };
160
- declare function buildTurnAssistantContent(turn: Pick<Turn, "listEvents" | "state">, foldState?: PeerThreadFoldState): Promise<AssistantContentPart[]>;
161
- declare function convertTurnsToThreadMessages(session: AgentSession): Promise<ConvertTurnsResult>;
167
+ declare function buildTurnAssistantContent(server: AgentChatServer, sessionId: string, turn: Pick<Turn, "id" | "state">, foldState?: PeerThreadFoldState): Promise<AssistantContentPart[]>;
168
+ declare function convertTurnsToThreadMessages(server: AgentChatServer, sessionId: string): Promise<ConvertTurnsResult>;
162
169
  declare function getTurnMessageContent(message: AppendMessage): string;
163
170
  /**
164
171
  * Gateway `user.message` content (string for text-only, or text/file parts).
@@ -183,24 +190,24 @@ declare function buildEditedUserMessageContent(editedText: string, originalInput
183
190
  declare function repositoryItemsFromMessages(messages: readonly ThreadMessage[]): ExportedMessageRepositoryItem[];
184
191
 
185
192
  declare function createTrueFoundryDraftThreadListAdapter(options: {
186
- privateClient: PrivateAgentSessionClient;
193
+ server: AgentChatServer;
187
194
  defaultAgentSpec: AgentSpec;
188
195
  getAgentSpec?: () => AgentSpec;
189
196
  }): RemoteThreadListAdapter;
190
197
 
191
198
  /**
192
- * Read-only thread-list adapter backed by `PrivateAgentSessionClient.listOwnedSessions`.
193
- * Returns every session the caller owns (named + draft), newest first.
199
+ * Read-only thread-list adapter backed by `AgentChatServer.listSessions`.
200
+ * Hosts that previously used listOwnedSessions should filter in their server impl.
194
201
  */
195
202
  declare function createTrueFoundryOwnedSessionsThreadListAdapter(options: {
196
- privateClient: PrivateAgentSessionClient;
203
+ server: AgentChatServer;
197
204
  }): RemoteThreadListAdapter;
198
205
 
199
206
  type DraftSessionBridge = {
200
207
  syncAgentSpec: (draftSessionId: string, agentSpec: AgentSpec) => Promise<string>;
201
208
  getDraftAgentSpec: (draftSessionId: string) => Promise<AgentSpec>;
202
209
  };
203
- declare function createDraftSessionBridge(privateClient: PrivateAgentSessionClient): DraftSessionBridge;
210
+ declare function createDraftSessionBridge(server: AgentChatServer): DraftSessionBridge;
204
211
 
205
212
  type PendingApproval = {
206
213
  approvalId: string;
@@ -260,7 +267,7 @@ declare const useTrueFoundryToolResponses: () => {
260
267
  /** Pending MCP OAuth plus a resume action. */
261
268
  declare const useTrueFoundryMcpAuth: () => {
262
269
  pending: {
263
- mcpServers: truefoundry_gateway_sdk_agents.McpAuthRequiredEvent["mcpServers"];
270
+ mcpServers: McpAuthRequiredEvent["mcpServers"];
264
271
  } | null;
265
272
  resume: () => Promise<void>;
266
273
  };
@@ -305,16 +312,12 @@ declare function findPausedAssistantMessage(messages: readonly ThreadMessage[]):
305
312
  }> | undefined;
306
313
 
307
314
  declare function createTrueFoundryThreadListAdapter(options: {
308
- client: AgentSessionClient;
315
+ server: AgentChatServer;
309
316
  agentName: string;
310
317
  }): RemoteThreadListAdapter;
311
318
 
312
- type GetSessionOptions = {
313
- /** When set, validates the draft and binds turns via PrivateAgentSessionClient. */
314
- privateClient?: PrivateAgentSessionClient;
315
- };
316
319
  /** `sessionId` is the assistant-ui thread `remoteId` from `RemoteThreadListAdapter.initialize`. */
317
- declare function getSession(client: AgentSessionClient, sessionId: string, options?: GetSessionOptions): Promise<AgentSession>;
320
+ declare function getSession(server: AgentChatServer, sessionId: string): Promise<Session>;
318
321
 
319
322
  /**
320
323
  * Reads composer files into `CompleteAttachment` `file` parts for send.
@@ -322,4 +325,4 @@ declare function getSession(client: AgentSessionClient, sessionId: string, optio
322
325
  */
323
326
  declare const trueFoundryAttachmentAdapter: AttachmentAdapter;
324
327
 
325
- export { type AgentSpec, type AgentSpecUpdate, type ConvertTurnsResult, type DraftAgentConfig, type DraftSession, type DraftSessionBridge, type McpAuthMessageCustomMetadata, type NamedAgentConfig, type PendingApproval, type PendingToolResponse, ROOT_THREAD_ID, type SandboxMessageCustomMetadata, type SubAgentArtifact, type SubAgentCustomMetadata, type SubAgentMessageCustomMetadata, TOOL_RESPONSE_THREAD_ID_CUSTOM_KEY, type ToolApprovalMessageCustomMetadata, type ToolResponseMessageCustomMetadata, type TrueFoundryAgentConfig, type TrueFoundryDraftRuntimeExtras, type TrueFoundryMessageCustomMetadata, type TrueFoundryRuntimeExtras, type UseTrueFoundryAgentRuntimeOptions, type UserMessageContent, buildEditedUserMessageContent, buildTurnAssistantContent, buildUserMessageContent, collectApprovalInputs, collectRequiredActionInputs, collectResponseInputs, convertTurnsToThreadMessages, createDraftSessionBridge, createTrueFoundryDraftThreadListAdapter, createTrueFoundryOwnedSessionsThreadListAdapter, createTrueFoundryThreadListAdapter, draftSessionTitle, findPausedAssistantMessage, getSession, getTurnMessageContent, mergeAgentSpec, messageHasPendingApprovals, messageHasPendingRequiredActions, messageHasPendingResponses, parseTurnIdFromMessageId, repositoryItemsFromMessages, toTrueFoundryApprovalInputs, trueFoundryAttachmentAdapter, trueFoundryExtras, useTrueFoundryAgentRuntime, useTrueFoundryAgentSpec, useTrueFoundryApprovals, useTrueFoundryCancel, useTrueFoundryDownloadSandboxFile, useTrueFoundryHistoryPagination, useTrueFoundryMcpAuth, useTrueFoundryReload, useTrueFoundryResetFromTurn, useTrueFoundryRespondToToolApproval, useTrueFoundryRespondToToolResponse, useTrueFoundryResumeMcpAuth, useTrueFoundrySandboxId, useTrueFoundryToolResponses, useTrueFoundryUpdateAgentSpec };
328
+ export { AgentChatServer, AgentSpec, type AgentSpecUpdate, type ConvertTurnsResult, type DraftAgentConfig, type DraftSession, type DraftSessionBridge, type McpAuthMessageCustomMetadata, McpAuthRequiredEvent, type NamedAgentConfig, type PendingApproval, type PendingToolResponse, ROOT_THREAD_ID, type SandboxMessageCustomMetadata, AgentSpec as ServerAgentSpec, Session, type SubAgentArtifact, type SubAgentCustomMetadata, type SubAgentMessageCustomMetadata, TOOL_RESPONSE_THREAD_ID_CUSTOM_KEY, ThreadCreatedEvent, type ToolApprovalMessageCustomMetadata, type ToolResponseMessageCustomMetadata, type TrueFoundryAgentConfig, type TrueFoundryDraftRuntimeExtras, type TrueFoundryMessageCustomMetadata, type TrueFoundryRuntimeExtras, Turn, TurnEvent, TurnInputItem, TurnStreamingEvent, type UseTrueFoundryAgentRuntimeOptions, type UserMessageContent, UserToolApprovalEvent, UserToolResponseEvent, buildEditedUserMessageContent, buildTurnAssistantContent, buildUserMessageContent, collectApprovalInputs, collectRequiredActionInputs, collectResponseInputs, convertTurnsToThreadMessages, createDraftSessionBridge, createTrueFoundryDraftThreadListAdapter, createTrueFoundryOwnedSessionsThreadListAdapter, createTrueFoundryThreadListAdapter, draftSessionTitle, findPausedAssistantMessage, getSession, getTurnMessageContent, isEventDelta, mergeAgentSpec, mergeEventDelta, messageHasPendingApprovals, messageHasPendingRequiredActions, messageHasPendingResponses, parseTurnIdFromMessageId, repositoryItemsFromMessages, toTrueFoundryApprovalInputs, trueFoundryAttachmentAdapter, trueFoundryExtras, useTrueFoundryAgentRuntime, useTrueFoundryAgentSpec, useTrueFoundryApprovals, useTrueFoundryCancel, useTrueFoundryDownloadSandboxFile, useTrueFoundryHistoryPagination, useTrueFoundryMcpAuth, useTrueFoundryReload, useTrueFoundryResetFromTurn, useTrueFoundryRespondToToolApproval, useTrueFoundryRespondToToolResponse, useTrueFoundryResumeMcpAuth, useTrueFoundrySandboxId, useTrueFoundryToolResponses, useTrueFoundryUpdateAgentSpec };