@truefoundry/trueforge-ui 0.3.0-rc.0 → 0.3.0-rc.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.
Files changed (110) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +14 -6
  3. package/dist/AgentCodeSnippets-NZOFJE57.js +74 -0
  4. package/dist/AgentCodeSnippets-NZOFJE57.js.map +1 -0
  5. package/dist/AgentMetricChart-JPU3MFQ2.js +15 -0
  6. package/dist/AgentOverview-EEBHJC32.js +167 -0
  7. package/dist/AgentOverview-EEBHJC32.js.map +1 -0
  8. package/dist/AgentSessionEventTimeline-26Z6IB3B.js +79 -0
  9. package/dist/AgentSessionEventTimeline-26Z6IB3B.js.map +1 -0
  10. package/dist/AgentSessionEventTimelineChart-CGCU7WBK.js +504 -0
  11. package/dist/AgentSessionEventTimelineChart-CGCU7WBK.js.map +1 -0
  12. package/dist/AgentSessions-3MPDZASK.js +275 -0
  13. package/dist/AgentSessions-3MPDZASK.js.map +1 -0
  14. package/dist/{ConnectorSettings-FXQ5B7TN.js → ConnectorSettings-MXFRWWR6.js} +8 -6
  15. package/dist/{ConnectorSettings-FXQ5B7TN.js.map → ConnectorSettings-MXFRWWR6.js.map} +1 -1
  16. package/dist/{DockLayout-LBNQJZNF.js → DockLayout-LM4AFMFY.js} +11 -10
  17. package/dist/{DockLayout-LBNQJZNF.js.map → DockLayout-LM4AFMFY.js.map} +1 -1
  18. package/dist/DrawerLayout-JR3O6RRB.js +184 -0
  19. package/dist/DrawerLayout-JR3O6RRB.js.map +1 -0
  20. package/dist/{ModelSettings-4L4LOQJA.js → ModelSettings-G7IFNC2Y.js} +8 -6
  21. package/dist/{ModelSettings-4L4LOQJA.js.map → ModelSettings-G7IFNC2Y.js.map} +1 -1
  22. package/dist/OpenUiFenceBlock-2TV5TQ6P.js +9 -0
  23. package/dist/OpenUiFenceBlock-2TV5TQ6P.js.map +1 -0
  24. package/dist/{SandboxSettings-Z4ZG6ZX4.js → SandboxSettings-NXAANMAX.js} +8 -6
  25. package/dist/{SandboxSettings-Z4ZG6ZX4.js.map → SandboxSettings-NXAANMAX.js.map} +1 -1
  26. package/dist/SchedulesPage-KKLUDO6B.js +15 -0
  27. package/dist/SchedulesPage-KKLUDO6B.js.map +1 -0
  28. package/dist/{SettingsBuilder-WF7ZWKQW.js → SettingsBuilder-L34IQ56S.js} +26 -22
  29. package/dist/SettingsBuilder-L34IQ56S.js.map +1 -0
  30. package/dist/{ShellRouteSync-T4WLY57Q.js → ShellRouteSync-CEBETGEJ.js} +95 -22
  31. package/dist/ShellRouteSync-CEBETGEJ.js.map +1 -0
  32. package/dist/SidebarLayout-A2HJPPHS.js +308 -0
  33. package/dist/SidebarLayout-A2HJPPHS.js.map +1 -0
  34. package/dist/{SkillSettings-3EPPC3IT.js → SkillSettings-FGGMSUNO.js} +8 -6
  35. package/dist/{SkillSettings-3EPPC3IT.js.map → SkillSettings-FGGMSUNO.js.map} +1 -1
  36. package/dist/{TrueForgeUIWithRouter-NZ4FGPE4.js → TrueForgeUIWithRouter-MZVJWJMB.js} +14 -10
  37. package/dist/{TrueForgeUIWithRouter-NZ4FGPE4.js.map → TrueForgeUIWithRouter-MZVJWJMB.js.map} +1 -1
  38. package/dist/{WidgetLayout-3QZ357FL.js → WidgetLayout-6QM45OQQ.js} +17 -13
  39. package/dist/WidgetLayout-6QM45OQQ.js.map +1 -0
  40. package/dist/chunk-2XPPBEYF.js +74 -0
  41. package/dist/chunk-2XPPBEYF.js.map +1 -0
  42. package/dist/chunk-6O6FWUDW.js +1376 -0
  43. package/dist/chunk-6O6FWUDW.js.map +1 -0
  44. package/dist/chunk-7Z2C2K7F.js +578 -0
  45. package/dist/chunk-7Z2C2K7F.js.map +1 -0
  46. package/dist/{chunk-WREC7D54.js → chunk-CYHJDKFB.js} +115 -32
  47. package/dist/chunk-CYHJDKFB.js.map +1 -0
  48. package/dist/chunk-DJUFS2BW.js +27 -0
  49. package/dist/chunk-DJUFS2BW.js.map +1 -0
  50. package/dist/chunk-DMMZSZTN.js +252 -0
  51. package/dist/chunk-DMMZSZTN.js.map +1 -0
  52. package/dist/chunk-FJW36PD7.js +180 -0
  53. package/dist/chunk-FJW36PD7.js.map +1 -0
  54. package/dist/chunk-M62XY4NC.js +555 -0
  55. package/dist/chunk-M62XY4NC.js.map +1 -0
  56. package/dist/{chunk-B52K63AW.js → chunk-MPNSO7E6.js} +2 -2
  57. package/dist/{chunk-CFLVPV5M.js → chunk-QC42MLAK.js} +7 -2
  58. package/dist/chunk-QC42MLAK.js.map +1 -0
  59. package/dist/chunk-RDXBMTP5.js +32 -0
  60. package/dist/chunk-RDXBMTP5.js.map +1 -0
  61. package/dist/chunk-SFZNIO6U.js +18 -0
  62. package/dist/chunk-SFZNIO6U.js.map +1 -0
  63. package/dist/chunk-U7KURWW3.js +840 -0
  64. package/dist/chunk-U7KURWW3.js.map +1 -0
  65. package/dist/chunk-WVE3F724.js +200 -0
  66. package/dist/chunk-WVE3F724.js.map +1 -0
  67. package/dist/{chunk-FJ5RSSMA.js → chunk-XAU7QFG3.js} +178 -36
  68. package/dist/chunk-XAU7QFG3.js.map +1 -0
  69. package/dist/chunk-Y6S4OVVQ.js +16 -0
  70. package/dist/chunk-Y6S4OVVQ.js.map +1 -0
  71. package/dist/chunk-ZKNUMH2M.js +119 -0
  72. package/dist/chunk-ZKNUMH2M.js.map +1 -0
  73. package/dist/chunk-ZTMKFZQ3.js +13214 -0
  74. package/dist/chunk-ZTMKFZQ3.js.map +1 -0
  75. package/dist/{createTrueFoundryServer-B72bU-J7.d.ts → createTrueFoundryServer-CmZnBh_l.d.ts} +15 -4
  76. package/dist/index.d.ts +1002 -22
  77. package/dist/index.js +689 -67
  78. package/dist/index.js.map +1 -1
  79. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +552 -8
  80. package/dist/plugins/trueforge-agent-server-adapter/index.js +503 -188
  81. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  82. package/dist/styles.css +1 -1
  83. package/package.json +8 -7
  84. package/dist/DrawerLayout-Q6UK4VMI.js +0 -159
  85. package/dist/DrawerLayout-Q6UK4VMI.js.map +0 -1
  86. package/dist/OpenUiFenceBlock-6UIIAVBX.js +0 -9
  87. package/dist/SettingsBuilder-WF7ZWKQW.js.map +0 -1
  88. package/dist/ShellRouteSync-T4WLY57Q.js.map +0 -1
  89. package/dist/SidebarLayout-3WZ3CVON.js +0 -256
  90. package/dist/SidebarLayout-3WZ3CVON.js.map +0 -1
  91. package/dist/WidgetLayout-3QZ357FL.js.map +0 -1
  92. package/dist/chunk-36KOSC2J.js +0 -567
  93. package/dist/chunk-36KOSC2J.js.map +0 -1
  94. package/dist/chunk-3S6KHO7H.js +0 -2121
  95. package/dist/chunk-3S6KHO7H.js.map +0 -1
  96. package/dist/chunk-7L63OK3O.js +0 -91
  97. package/dist/chunk-7L63OK3O.js.map +0 -1
  98. package/dist/chunk-CFLVPV5M.js.map +0 -1
  99. package/dist/chunk-FJ5RSSMA.js.map +0 -1
  100. package/dist/chunk-OSV3HI5M.js +0 -6891
  101. package/dist/chunk-OSV3HI5M.js.map +0 -1
  102. package/dist/chunk-WQULF5AT.js +0 -460
  103. package/dist/chunk-WQULF5AT.js.map +0 -1
  104. package/dist/chunk-WREC7D54.js.map +0 -1
  105. package/dist/chunk-YIWUG6MC.js +0 -101
  106. package/dist/chunk-YIWUG6MC.js.map +0 -1
  107. package/dist/chunk-ZXOADNF3.js +0 -75
  108. package/dist/chunk-ZXOADNF3.js.map +0 -1
  109. /package/dist/{OpenUiFenceBlock-6UIIAVBX.js.map → AgentMetricChart-JPU3MFQ2.js.map} +0 -0
  110. /package/dist/{chunk-B52K63AW.js.map → chunk-MPNSO7E6.js.map} +0 -0
@@ -1,8 +1,174 @@
1
- import { T as TrueFoundryServer } from '../../createTrueFoundryServer-B72bU-J7.js';
1
+ import { T as TrueFoundryServer } from '../../createTrueFoundryServer-CmZnBh_l.js';
2
2
  import * as _truefoundry_assistant_ui_runtime from '@truefoundry/assistant-ui-runtime';
3
- import { AgentSpec, AgentBuilderServer, ModelSelection as ModelSelection$1, ConnectorCatalogServer as ConnectorCatalogServer$1, ToolBase as ToolBase$1, ConnectorAuth as ConnectorAuth$1, ConnectorAuthPublic as ConnectorAuthPublic$1, ConnectorBase as ConnectorBase$1, ConnectorCatalogEntry as ConnectorCatalogEntry$1, CreateConnectorRequest as CreateConnectorRequest$1, UpdateConnectorRequest as UpdateConnectorRequest$1, ModelCatalogServer as ModelCatalogServer$1, ModelEntry as ModelEntry$1, ModelProviderBase as ModelProviderBase$1, ModelProviderCatalogEntry as ModelProviderCatalogEntry$1, CreateModelProviderRequest as CreateModelProviderRequest$1, UpdateModelProviderRequest as UpdateModelProviderRequest$1, SandboxProviderConfig, SandboxCatalogServer as SandboxCatalogServer$1, SandboxProviderListEntry as SandboxProviderListEntry$1, SandboxProviderBase, SkillCatalogServer as SkillCatalogServer$1, DefinedSkill, SkillConfigBase as SkillConfigBase$1, AgentChatServer, CatalogServer } from '@truefoundry/assistant-ui-runtime/server';
3
+ import { AgentSpec as AgentSpec$1, AgentMetricsServer as AgentMetricsServer$1, AgentSessionsServer as AgentSessionsServer$1, AgentBuilderServer, ModelSelection as ModelSelection$1, ConnectorCatalogServer as ConnectorCatalogServer$1, ToolBase as ToolBase$1, ConnectorAuth as ConnectorAuth$1, ConnectorAuthPublic as ConnectorAuthPublic$1, ConnectorBase as ConnectorBase$1, ConnectorCatalogEntry as ConnectorCatalogEntry$1, CreateConnectorRequest as CreateConnectorRequest$1, UpdateConnectorRequest as UpdateConnectorRequest$1, ModelCatalogServer as ModelCatalogServer$1, ModelEntry as ModelEntry$1, ModelProviderBase as ModelProviderBase$1, ModelProviderCatalogEntry as ModelProviderCatalogEntry$1, CreateModelProviderRequest as CreateModelProviderRequest$1, UpdateModelProviderRequest as UpdateModelProviderRequest$1, SandboxProviderConfig, SandboxCatalogServer as SandboxCatalogServer$1, SandboxProviderListEntry as SandboxProviderListEntry$1, SandboxProviderBase, SkillCatalogServer as SkillCatalogServer$1, DefinedSkill, SkillConfigBase as SkillConfigBase$1, AgentChatServer, Session, CreateSessionRequest, PageParams as PageParams$1, ListResult as ListResult$1, ScheduleServer as ScheduleServer$1, CatalogServer } from '@truefoundry/assistant-ui-runtime/server';
4
4
  import { TrueForge, TrueForgeApi } from '@truefoundry/trueforge-sdk';
5
5
 
6
+ /**
7
+ * Runtime-owned turn/stream event protocol.
8
+ *
9
+ * Hosts must emit events matching these shapes. The TFY adapter maps
10
+ * truefoundry-gateway-sdk events 1:1 onto these types.
11
+ */
12
+
13
+ interface ToolCallFunction {
14
+ name: string;
15
+ arguments: string;
16
+ }
17
+ type ToolInfo = {
18
+ type: "truefoundry-system";
19
+ name: string;
20
+ } | {
21
+ type: "mcp";
22
+ serverId: string;
23
+ serverName: string;
24
+ name: string;
25
+ } | {
26
+ type: string;
27
+ name?: string;
28
+ [key: string]: unknown;
29
+ };
30
+ interface ToolCall {
31
+ id: string;
32
+ type: "function";
33
+ function: ToolCallFunction;
34
+ toolInfo?: ToolInfo;
35
+ providerSpecificFields?: Record<string, unknown>;
36
+ }
37
+ /** Ref used by approval/response-required events. */
38
+ interface ToolCallRef {
39
+ id: string;
40
+ sourceEventId: string;
41
+ }
42
+ type ModelMessageContentPart = {
43
+ type: "text";
44
+ text: string;
45
+ } | {
46
+ type: "refusal";
47
+ refusal: string;
48
+ } | {
49
+ type: "image_url";
50
+ image_url: {
51
+ url: string;
52
+ };
53
+ };
54
+ interface ModelMessageEvent {
55
+ type: "model.message";
56
+ id: string;
57
+ threadId: string;
58
+ content?: string | ModelMessageContentPart[] | null;
59
+ name?: string;
60
+ refusal?: string | null;
61
+ reasoningContent?: string;
62
+ toolCalls?: ToolCall[];
63
+ finishReason?: string | null;
64
+ createdAt: string;
65
+ usage?: unknown;
66
+ }
67
+ interface ToolResponseEvent {
68
+ type: "tool.response";
69
+ id: string;
70
+ threadId: string;
71
+ toolCallId: string;
72
+ content: string;
73
+ createdAt: string;
74
+ }
75
+ interface ToolApprovalRequiredEvent {
76
+ type: "tool.approval_required";
77
+ id: string;
78
+ createdAt: string;
79
+ threadId: string;
80
+ toolCalls: ToolCallRef[];
81
+ }
82
+ interface ToolResponseRequiredEvent {
83
+ type: "tool.response_required";
84
+ id: string;
85
+ createdAt: string;
86
+ threadId: string;
87
+ toolCalls: ToolCallRef[];
88
+ }
89
+ interface AgentInfo {
90
+ type?: string;
91
+ name: string;
92
+ input: string;
93
+ model?: string;
94
+ }
95
+ interface AgentParent {
96
+ threadId: string;
97
+ toolCallId: string;
98
+ }
99
+ interface ThreadCreatedEvent {
100
+ type: "thread.created";
101
+ id: string;
102
+ threadId: string;
103
+ title: string;
104
+ agentInfo: AgentInfo;
105
+ parent: AgentParent;
106
+ createdAt: string;
107
+ }
108
+ interface ThreadDoneEvent {
109
+ type: "thread.done";
110
+ id: string;
111
+ threadId: string;
112
+ title?: string;
113
+ createdAt: string;
114
+ state?: unknown;
115
+ }
116
+ interface McpServerAuthInfo {
117
+ id: string;
118
+ name: string;
119
+ authUrl: string;
120
+ }
121
+ interface McpAuthRequiredEvent {
122
+ type: "mcp.auth_required";
123
+ id: string;
124
+ createdAt: string;
125
+ threadId?: string | null;
126
+ mcpServers: McpServerAuthInfo[];
127
+ }
128
+ interface SandboxCreatedEvent {
129
+ type: "sandbox.created";
130
+ id: string;
131
+ createdAt: string;
132
+ sandboxId: string;
133
+ threadId: string | null;
134
+ }
135
+ interface McpInitializeEvent {
136
+ type: "mcp.initialize";
137
+ id: string;
138
+ createdAt: string;
139
+ threadId: string | null;
140
+ [key: string]: unknown;
141
+ }
142
+ interface TurnCreatedEvent {
143
+ type: "turn.created";
144
+ id: string;
145
+ turnId: string;
146
+ previousTurnId?: string | null;
147
+ input?: TurnInputItem[];
148
+ state?: {
149
+ status: "running";
150
+ };
151
+ createdAt: string;
152
+ threadId?: string | null;
153
+ }
154
+ interface TurnDoneEvent {
155
+ type: "turn.done";
156
+ id: string;
157
+ state: Exclude<TurnState, {
158
+ status: "running";
159
+ }>;
160
+ createdAt: string;
161
+ threadId?: string | null;
162
+ }
163
+ /** Events stored in fold buckets (non-delta, non-turn-lifecycle). */
164
+ type TurnEvent = ModelMessageEvent | ToolResponseEvent | ThreadCreatedEvent | ThreadDoneEvent | McpAuthRequiredEvent | McpInitializeEvent | SandboxCreatedEvent | ToolApprovalRequiredEvent | ToolResponseRequiredEvent;
165
+ type ActionRequiredEvent = ToolApprovalRequiredEvent | ToolResponseRequiredEvent | McpAuthRequiredEvent;
166
+ /** Session-level event item from `listEvents`. */
167
+ interface SessionEventItem {
168
+ turnId: string;
169
+ event: TurnCreatedEvent | TurnDoneEvent | TurnEvent;
170
+ }
171
+
6
172
  /**
7
173
  * FE-owned AgentUIServer contract.
8
174
  *
@@ -17,17 +183,171 @@ interface ProviderEntry {
17
183
  }
18
184
  interface ModelProperties {
19
185
  reasoningEfforts?: string[];
186
+ contextLength?: number;
187
+ maxOutputTokens?: number;
20
188
  }
21
- /** Model selector row. Host extends for apiModel, modelId, pricing, etc. */
189
+ /** Model selector row. Host extends for apiModel, modelId, etc. */
22
190
  interface ModelSelectorEntry<TProvider extends ProviderEntry = ProviderEntry, TProperties extends ModelProperties = ModelProperties> {
23
191
  name: string;
24
192
  id: string;
25
193
  provider: TProvider;
26
194
  properties: TProperties;
27
195
  }
196
+ /**
197
+ * Mounts written to AgentSpec.skills[] / AgentSpec.mcpServers[].
198
+ *
199
+ * These are opaque to the runtime — it stores and forwards them but never reads
200
+ * a field, and the backend owns the shape (the gateway identifies a skill by
201
+ * `fqn`, with no `id` or `name` anywhere). So the base constrains only that a
202
+ * mount is an object; hosts intersect their concrete mount type over it, as
203
+ * `TfySkillMount` / `TfyMcpServerMount` do in the gateway adapter.
204
+ *
205
+ * Naming a field here would not just be unread, it would be wrong: a base with
206
+ * required fields rejects the backend's own payloads, and one with only optional
207
+ * fields is a weak type, which TypeScript rejects for a source that shares no
208
+ * property with it — the gateway's registry skill shares none.
209
+ */
210
+ type SkillMount = object;
211
+ type McpServerMount = object;
212
+ interface ModelParams {
213
+ maxTokens?: number;
214
+ reasoningEffort?: string;
215
+ temperature?: number;
216
+ topP?: number;
217
+ topK?: number;
218
+ parallelToolCalls?: boolean;
219
+ }
220
+ interface Model {
221
+ name: string;
222
+ params?: ModelParams;
223
+ }
224
+ interface AgentCapabilityConfig {
225
+ enabled?: boolean;
226
+ }
227
+ interface AgentSandboxConfig extends AgentCapabilityConfig {
228
+ fileDownloads?: boolean;
229
+ }
230
+ interface AgentInputTokensCompactionTrigger {
231
+ type: "input_tokens";
232
+ value: number;
233
+ }
234
+ interface AgentCompactionConfig extends AgentCapabilityConfig {
235
+ trigger?: AgentInputTokensCompactionTrigger;
236
+ }
237
+ interface AgentContextManagementConfig {
238
+ compaction?: AgentCompactionConfig;
239
+ largeToolResponse?: AgentCapabilityConfig;
240
+ }
241
+ interface AgentRuntimeConfig {
242
+ iterationLimit?: number;
243
+ sandbox?: AgentSandboxConfig;
244
+ contextManagement?: AgentContextManagementConfig;
245
+ generativeUi?: AgentCapabilityConfig;
246
+ dynamicSubAgents?: AgentCapabilityConfig;
247
+ askUserQuestions?: AgentCapabilityConfig;
248
+ }
249
+ /**
250
+ * SDK-owned agent definition — fields the FE reads/writes.
251
+ * Host widens `model` / `skills` / `mcpServers` / `config` via type params,
252
+ * and adds extra fields via `TSpec extends AgentSpec<...>`.
253
+ */
254
+ interface AgentSpec<TModel extends Model = Model, TSkill extends SkillMount = SkillMount, TMcp extends McpServerMount = McpServerMount, TConfig extends AgentRuntimeConfig = AgentRuntimeConfig> {
255
+ model: TModel;
256
+ skills?: TSkill[];
257
+ mcpServers?: TMcp[];
258
+ config?: TConfig;
259
+ instructions?: string;
260
+ variables?: Record<string, string>;
261
+ description?: string;
262
+ }
263
+ interface ListResult<T> {
264
+ data: T[];
265
+ nextPageToken?: string;
266
+ }
267
+ type ListSessionsOrder = "asc" | "desc";
268
+ type PageParams = {
269
+ limit?: number;
270
+ order?: ListSessionsOrder;
271
+ pageToken?: string;
272
+ };
273
+ interface ListSessionsParams extends PageParams {
274
+ /** Host-owned agent identity filter. Omit for all sessions (current user). */
275
+ agentId?: string;
276
+ /** Inclusive lower bound on session activity (ISO-8601). */
277
+ startTimestamp?: string;
278
+ /** Inclusive upper bound on session activity (ISO-8601). */
279
+ endTimestamp?: string;
280
+ }
281
+ type UserMessageContent = string | Array<{
282
+ type: "text";
283
+ text: string;
284
+ } | {
285
+ type: "file";
286
+ name: string;
287
+ data: string;
288
+ }>;
289
+ interface UserMessage {
290
+ type: "user.message";
291
+ content: UserMessageContent;
292
+ }
293
+ type ApprovalDecision = {
294
+ status: "allow";
295
+ } | {
296
+ status: "deny";
297
+ reason?: string;
298
+ };
299
+ interface UserToolApprovalEvent {
300
+ type: "user.tool_approval";
301
+ threadId: string;
302
+ toolCallId: string;
303
+ approval: ApprovalDecision;
304
+ }
305
+ interface UserToolResponseEvent {
306
+ type: "user.tool_response";
307
+ threadId: string;
308
+ toolCallId: string;
309
+ content: string;
310
+ }
311
+ type TurnInputItem = UserMessage | UserToolApprovalEvent | UserToolResponseEvent;
312
+ type TurnStateRunning = {
313
+ status: "running";
314
+ };
315
+ /**
316
+ * Aggregated token metrics on a finished turn (`turn.done.state.metrics`).
317
+ * Host maps wire snake_case (`total_input_tokens`, …) → camelCase here.
318
+ */
319
+ interface TurnDoneMetrics {
320
+ totalInputTokens: number;
321
+ totalOutputTokens: number;
322
+ totalTokens: number;
323
+ totalCacheReadTokens: number;
324
+ totalCacheWriteTokens: number;
325
+ totalReasoningTokens: number;
326
+ }
327
+ type TurnStateDone = {
328
+ status: "done";
329
+ output?: unknown;
330
+ requiredActions?: ActionRequiredEvent[];
331
+ completedAt: string;
332
+ /** Present when the host reports per-turn token totals. */
333
+ metrics?: TurnDoneMetrics;
334
+ };
335
+ type TurnStateCancelled = {
336
+ status: "cancelled";
337
+ reason: string;
338
+ completedAt: string;
339
+ };
340
+ type TurnStateError = {
341
+ status: "error";
342
+ message: string;
343
+ completedAt: string;
344
+ };
345
+ type TurnState = TurnStateRunning | TurnStateDone | TurnStateCancelled | TurnStateError;
28
346
  interface SaveAgentResult {
29
347
  /** Immutable id allocated by the host registry. */
30
348
  agentId?: string;
349
+ /** Version id allocated by the host registry for this save. */
350
+ versionId?: string;
31
351
  /** Timestamp returned when the active mutable session was updated. */
32
352
  sessionUpdatedAt?: string;
33
353
  }
@@ -316,6 +636,203 @@ interface SandboxCatalogServer<TProvider extends SandboxBase = SandboxBase, TCat
316
636
  }
317
637
  /** Host-facing selector / compose aliases (trueforge-ui public names). */
318
638
  type ModelSelection = ModelSelectorEntry;
639
+ /**
640
+ * Published agent identity + spec for the agent-detail Overview (read-only).
641
+ * Host widens `TSpec` (and may extend this DTO) for mounts / config / extras.
642
+ */
643
+ interface AgentDetail<TSpec extends AgentSpec = AgentSpec> {
644
+ agentId: string;
645
+ /** Display name (e.g. "release-notes-writer"). */
646
+ name: string;
647
+ agentSpec: TSpec;
648
+ }
649
+ /** Stream vs non-stream bodies for one language on the Use In Code tab. */
650
+ interface CodeSnippetSampleCode {
651
+ stream: string;
652
+ nonStream: string;
653
+ }
654
+ /**
655
+ * One language row for Use In Code.
656
+ * Host maps wire `sample_code` / `non_stream` → camelCase here.
657
+ */
658
+ interface CodeSnippet<TSample extends CodeSnippetSampleCode = CodeSnippetSampleCode> {
659
+ /** Sidebar label (e.g. "TypeScript"). */
660
+ labelName: string;
661
+ /** Highlighter / tab id (e.g. "typescript"). */
662
+ language: string;
663
+ icon?: string;
664
+ sampleCode: TSample;
665
+ }
666
+ /**
667
+ * Aggregated session metrics for the sessions list sidebar.
668
+ * Host maps wire snake_case (`total_turns`, `total_cost_in_usd`, …) → camelCase.
669
+ */
670
+ interface SessionListMetrics {
671
+ totalTurns: number;
672
+ totalCostInUsd: number;
673
+ totalDurationMs: number;
674
+ }
675
+ /**
676
+ * One row in the Agent Sessions list (left pane).
677
+ *
678
+ * Binding: `agentName` → named / immutable agent; `agentSpec` → mutable / draft.
679
+ * Host may send one, both, or neither depending on how the session was created.
680
+ */
681
+ interface SessionListEntry<TSpec extends AgentSpec = AgentSpec> {
682
+ id: string;
683
+ title?: string | null;
684
+ createdAt: string;
685
+ updatedAt: string;
686
+ lastActivityAt: string;
687
+ metrics: SessionListMetrics;
688
+ /** Present when bound to a published (immutable) agent. */
689
+ agentName?: string | null;
690
+ /** Present when bound to a mutable / draft agent spec. */
691
+ agentSpec?: TSpec;
692
+ }
693
+ /** Params for `AgentSessionsServer.listSessionEvents` (session event timeline). */
694
+ interface ListSessionEventsParams extends Pick<PageParams, "limit" | "pageToken"> {
695
+ sessionId: string;
696
+ }
697
+ /**
698
+ * Optional plug-in for agent-detail UI: Overview, Use In Code, sessions list,
699
+ * and per-session event timeline. Omit `sessions` on `AgentUIServerPort` when
700
+ * the host has no agent-detail surface.
701
+ *
702
+ * Read-only — create/update/delete stay on `AgentChatServer` / `AgentBuilderServer`.
703
+ */
704
+ interface AgentSessionsServer<TSpec extends AgentSpec = AgentSpec, TDetail extends AgentDetail<TSpec> = AgentDetail<TSpec>, TSnippet extends CodeSnippet = CodeSnippet, TListEntry extends SessionListEntry<TSpec> = SessionListEntry<TSpec>, TList extends ListSessionsParams = ListSessionsParams> {
705
+ /** Fetch published agent details by id for the Overview tab. */
706
+ getAgent(req: {
707
+ agentId: string;
708
+ }): Promise<TDetail>;
709
+ /** Fetch Use In Code snippets for the agent (one row per language). */
710
+ getCodeSnippets(req: {
711
+ agentId: string;
712
+ }): Promise<TSnippet[]>;
713
+ /**
714
+ * List sessions for the current user. Pass `agentId` to scope to one agent;
715
+ * omit for all sessions. Use `startTimestamp` / `endTimestamp` for date filters.
716
+ */
717
+ listSessions(req?: TList): Promise<ListResult<TListEntry>>;
718
+ /**
719
+ * Fetch the session event timeline (right pane). Paginate with `pageToken`
720
+ * until exhausted; rebuild turns from `turn.created` / `turn.done` +
721
+ * nested `TurnEvent`s. Per-turn token metrics live on `turn.done.state.metrics`.
722
+ */
723
+ listSessionEvents(req: ListSessionEventsParams): Promise<ListResult<SessionEventItem>>;
724
+ }
725
+ type ScheduleStatus = "active" | "paused";
726
+ type ScheduleRunStatus = "scheduled" | "triggered" | "failed";
727
+ interface Schedule {
728
+ id: string;
729
+ name: string;
730
+ /** Stable agent id (`AgentSelectorEntry.agentId`). */
731
+ agentId: string;
732
+ /** Display name; omit when the host only has `agentId`. */
733
+ agentName?: string;
734
+ task: string;
735
+ cron: string;
736
+ timezone: string;
737
+ status: ScheduleStatus;
738
+ lastRunAt: string | null;
739
+ }
740
+ /** Flat schedule-run DTO (ISO-8601 timestamps; host maps from wire Dates). */
741
+ interface ScheduleRun {
742
+ id: string;
743
+ scheduleId: string;
744
+ name: string;
745
+ scheduledFor: string;
746
+ status: ScheduleRunStatus;
747
+ triggeredAt: string | null;
748
+ triggeredBy: string;
749
+ }
750
+ interface ListSchedulesParams extends Pick<PageParams, "limit" | "pageToken"> {
751
+ agentId?: string;
752
+ /** Multi-agent filter; combined with `agentId` when both are set. */
753
+ agentIds?: string[];
754
+ }
755
+ interface CreateScheduleRequest {
756
+ agentId: string;
757
+ name: string;
758
+ task: string;
759
+ cron: string;
760
+ timezone?: string;
761
+ status?: ScheduleStatus;
762
+ }
763
+ /** `agentId` is not on the base update body; hosts that allow rebinding can extend `TUpdate`. */
764
+ interface UpdateScheduleRequest {
765
+ id: string;
766
+ name: string;
767
+ task: string;
768
+ cron: string;
769
+ timezone?: string;
770
+ status?: ScheduleStatus;
771
+ }
772
+ interface CreateScheduleRunRequest {
773
+ scheduleId: string;
774
+ }
775
+ interface ScheduleServer<TSchedule extends Schedule = Schedule, TCreate extends CreateScheduleRequest = CreateScheduleRequest, TUpdate extends UpdateScheduleRequest = UpdateScheduleRequest, TRun extends ScheduleRun = ScheduleRun> {
776
+ listSchedules(req?: ListSchedulesParams): Promise<ListResult<TSchedule>>;
777
+ getSchedule(req: {
778
+ id: string;
779
+ }): Promise<TSchedule>;
780
+ createSchedule(req: TCreate): Promise<TSchedule>;
781
+ updateSchedule(req: TUpdate): Promise<TSchedule>;
782
+ deleteSchedule(req: {
783
+ id: string;
784
+ }): Promise<void>;
785
+ listScheduleRuns(req: {
786
+ scheduleId: string;
787
+ }): Promise<TRun[]>;
788
+ createScheduleRun(req: CreateScheduleRunRequest): Promise<TRun>;
789
+ }
790
+ type AgentMetricChartType = "line";
791
+ interface AgentMetricChartDefinition {
792
+ name: string;
793
+ displayName: string;
794
+ description: string;
795
+ chartType: AgentMetricChartType;
796
+ }
797
+ interface AgentMetricMeter {
798
+ name: string;
799
+ aggregateValue: number;
800
+ description: string;
801
+ unit: string;
802
+ }
803
+ interface AgentMetricPoint {
804
+ timestamp: string;
805
+ value: number;
806
+ }
807
+ interface AgentMetricGraphLine<TPoint extends AgentMetricPoint = AgentMetricPoint> {
808
+ name: string;
809
+ values: TPoint[];
810
+ }
811
+ interface AgentMetricGraph<TLine extends AgentMetricGraphLine = AgentMetricGraphLine> {
812
+ name: string;
813
+ displayName: string;
814
+ description: string;
815
+ unit: string;
816
+ chartType: AgentMetricChartType;
817
+ graphLines: TLine[];
818
+ }
819
+ interface AgentMetricChartData<TGraph extends AgentMetricGraph = AgentMetricGraph> {
820
+ step: string;
821
+ graphs: TGraph[];
822
+ }
823
+ interface AgentMetricRangeRequest {
824
+ agentId: string;
825
+ startTimestamp: string;
826
+ endTimestamp: string;
827
+ }
828
+ interface AgentMetricChartDataRequest extends AgentMetricRangeRequest {
829
+ chartName: string;
830
+ }
831
+ interface AgentMetricsServer<TChart extends AgentMetricChartDefinition = AgentMetricChartDefinition, TMeter extends AgentMetricMeter = AgentMetricMeter, TChartData extends AgentMetricChartData = AgentMetricChartData, TRangeRequest extends AgentMetricRangeRequest = AgentMetricRangeRequest, TChartDataRequest extends AgentMetricChartDataRequest = AgentMetricChartDataRequest> {
832
+ getCharts(): Promise<TChart[]>;
833
+ getMeters(req: TRangeRequest): Promise<TMeter[]>;
834
+ getChartData(req: TChartDataRequest): Promise<TChartData>;
835
+ }
319
836
 
320
837
  /**
321
838
  * TrueForge HTTP client for the Harness adapter.
@@ -332,9 +849,19 @@ declare function createTrueForgeClient(options?: CreateTrueForgeClientOptions):
332
849
 
333
850
  type HarnessSkillMount = TrueForgeApi.Skill;
334
851
  type HarnessMcpServerMount = TrueForgeApi.McpServer;
335
- interface HarnessAgentSpec extends AgentSpec<TrueForgeApi.Model, HarnessSkillMount, HarnessMcpServerMount, TrueForgeApi.RuntimeConfig>, TrueForgeApi.AgentSpec {
852
+ interface HarnessAgentSpec extends AgentSpec$1<TrueForgeApi.Model, HarnessSkillMount, HarnessMcpServerMount, TrueForgeApi.RuntimeConfig>, TrueForgeApi.AgentSpec {
336
853
  }
337
854
 
855
+ type CreateHarnessAgentMetricsServerOptions = CreateTrueForgeClientOptions & {
856
+ client?: TrueForge;
857
+ };
858
+ declare function createHarnessAgentMetricsServer(options?: CreateHarnessAgentMetricsServerOptions): AgentMetricsServer$1;
859
+
860
+ type CreateHarnessAgentSessionsServerOptions = CreateTrueForgeClientOptions & {
861
+ client?: TrueForge;
862
+ };
863
+ declare function createHarnessAgentSessionsServer(options?: CreateHarnessAgentSessionsServerOptions): AgentSessionsServer$1<HarnessAgentSpec>;
864
+
338
865
  /**
339
866
  * AgentBuilderServer callbacks for createTrueFoundryServer.
340
867
  * Composer pickers + agent library backed by the Harness agents registry.
@@ -458,10 +985,17 @@ type CreateHarnessChatServerOptions = CreateTrueForgeClientOptions & {
458
985
  /** Injected client — skips creating one from options. */
459
986
  client?: TrueForge;
460
987
  };
988
+ /** UI session with create-agent intent for resume chrome. */
989
+ type HarnessUiSession = Session<HarnessAgentSpec> & {
990
+ isCreateAgent: boolean;
991
+ };
992
+ type HarnessCreateSessionRequest = CreateSessionRequest<HarnessAgentSpec> & {
993
+ metadata?: Record<string, string>;
994
+ };
461
995
  /** Drop UI draft `id` before admission; Harness MCP mounts are name-keyed. */
462
996
  declare function toHarnessAgentSpec(spec: HarnessAgentSpec): TrueForgeApi.AgentSpec;
463
997
  declare function toUiAgentSpec(spec: TrueForgeApi.AgentSpec): HarnessAgentSpec;
464
- declare function createHarnessChatServer(options?: CreateHarnessChatServerOptions): AgentChatServer<HarnessAgentSpec>;
998
+ declare function createHarnessChatServer(options?: CreateHarnessChatServerOptions): AgentChatServer<HarnessAgentSpec, HarnessUiSession, HarnessCreateSessionRequest>;
465
999
 
466
1000
  /**
467
1001
  * Configured-resource list helpers for composer pickers and host boot.
@@ -469,17 +1003,27 @@ declare function createHarnessChatServer(options?: CreateHarnessChatServerOption
469
1003
  */
470
1004
 
471
1005
  declare function listModels(client: TrueForge): Promise<TrueForgeApi.AvailableModel[]>;
1006
+ declare function listConfiguredMcpServersPage(client: TrueForge, req?: PageParams$1): Promise<ListResult$1<TrueForgeApi.AvailableMcpServer>>;
1007
+ /** Drain every MCP page (full catalog for non-picker callers). */
472
1008
  declare function listConfiguredMcpServers(client: TrueForge): Promise<TrueForgeApi.AvailableMcpServer[]>;
473
1009
  declare function listSkills(client: TrueForge): Promise<TrueForgeApi.AvailableSkill[]>;
474
1010
  declare function getCapabilities(client: TrueForge): Promise<TrueForgeApi.CapabilitiesData>;
475
1011
 
1012
+ /**
1013
+ * Harness ScheduleServer adapter — maps flat runtime DTOs to SDK wire (manifest + agentName).
1014
+ */
1015
+
1016
+ declare function createScheduleServer(options: {
1017
+ client: TrueForge;
1018
+ }): ScheduleServer$1;
1019
+
476
1020
  type CreateTrueForgeAgentUIServerOptions = CreateTrueForgeClientOptions & {
477
1021
  /** Override the default Harness settings catalogs. */
478
1022
  catalog?: CatalogServer;
479
1023
  };
480
1024
  /**
481
- * Compose chat + builder + default settings catalogs into an `AgentUIServer`.
1025
+ * Compose chat + builder + agent sessions + default settings catalogs into an `AgentUIServer`.
482
1026
  */
483
- declare function createTrueForgeAgentUIServer(options?: CreateTrueForgeAgentUIServerOptions): TrueFoundryServer<HarnessAgentSpec, ModelSelection, _truefoundry_assistant_ui_runtime.SkillSelectorEntry, _truefoundry_assistant_ui_runtime.ConnectorSelectorEntry, _truefoundry_assistant_ui_runtime.AgentSelectorEntry, SaveAgentResult, CatalogServer<ModelCatalogServer<ModelEntry, ModelProviderBase<ModelEntry>, ModelProviderCatalogEntry<ModelEntry>, CreateModelProviderRequest<ModelEntry>, UpdateModelProviderRequest<ModelEntry>>, ConnectorCatalogServer<ToolBase, ConnectorAuth, ConnectorAuthPublic, ConnectorBase<ConnectorAuthPublic>, ConnectorCatalogEntry<ConnectorAuthPublic>, CreateConnectorRequest<ConnectorAuth>, UpdateConnectorRequest<ConnectorAuth>>, SkillCatalogServer<SkillBase, SkillCatalogEntry, CreateSkillRequest>, SandboxCatalogServer<_truefoundry_assistant_ui_runtime.SandboxBase, _truefoundry_assistant_ui_runtime.SandboxCatalogEntry, _truefoundry_assistant_ui_runtime.CreateSandboxRequest, _truefoundry_assistant_ui_runtime.UpdateSandboxRequest, SandboxProviderListEntry<_truefoundry_assistant_ui_runtime.SandboxBase>>>, AgentBuilderCapabilitiesResponse>;
1027
+ declare function createTrueForgeAgentUIServer(options?: CreateTrueForgeAgentUIServerOptions): TrueFoundryServer<HarnessAgentSpec, ModelSelection, _truefoundry_assistant_ui_runtime.SkillSelectorEntry, _truefoundry_assistant_ui_runtime.ConnectorSelectorEntry, _truefoundry_assistant_ui_runtime.AgentSelectorEntry, SaveAgentResult, CatalogServer<ModelCatalogServer<ModelEntry, ModelProviderBase<ModelEntry>, ModelProviderCatalogEntry<ModelEntry>, CreateModelProviderRequest<ModelEntry>, UpdateModelProviderRequest<ModelEntry>>, ConnectorCatalogServer<ToolBase, ConnectorAuth, ConnectorAuthPublic, ConnectorBase<ConnectorAuthPublic>, ConnectorCatalogEntry<ConnectorAuthPublic>, CreateConnectorRequest<ConnectorAuth>, UpdateConnectorRequest<ConnectorAuth>>, SkillCatalogServer<SkillBase, SkillCatalogEntry, CreateSkillRequest>, SandboxCatalogServer<_truefoundry_assistant_ui_runtime.SandboxBase, _truefoundry_assistant_ui_runtime.SandboxCatalogEntry, _truefoundry_assistant_ui_runtime.CreateSandboxRequest, _truefoundry_assistant_ui_runtime.UpdateSandboxRequest, SandboxProviderListEntry<_truefoundry_assistant_ui_runtime.SandboxBase>>>, AgentBuilderCapabilitiesResponse, AgentSessionsServer<HarnessAgentSpec, AgentDetail<HarnessAgentSpec>, CodeSnippet<CodeSnippetSampleCode>, SessionListEntry<HarnessAgentSpec>, ListSessionsParams>, AgentMetricsServer<AgentMetricChartDefinition, AgentMetricMeter, AgentMetricChartData<AgentMetricGraph<AgentMetricGraphLine<AgentMetricPoint>>>, AgentMetricRangeRequest, AgentMetricChartDataRequest>, ScheduleServer<Schedule, CreateScheduleRequest, UpdateScheduleRequest, ScheduleRun>>;
484
1028
 
485
- export { type CreateHarnessBuilderServerOptions, type CreateHarnessChatServerOptions, type CreateTrueForgeAgentUIServerOptions, type CreateTrueForgeClientOptions, type HarnessAgentSpec, type HarnessMcpServerMount, type HarnessSkillMount, configFromHarness, createConnectorCatalog, createHarnessBuilderServer, createHarnessChatServer, createModelProviderCatalog, createSandboxProviderCatalog, createSkillCatalog, createTrueForgeAgentUIServer, createTrueForgeClient, filterUiSandboxProviders, getCapabilities, listConfiguredMcpServers, listModels, listSkills, modelProviderLogosByName, toHarnessAgentSpec, toHarnessAuth, toHarnessManifest$2 as toHarnessConnectorManifest, toHarnessModelProvider, toHarnessManifest$1 as toHarnessSandboxManifest, toHarnessManifest as toHarnessSkillManifest, toModelSelection, toUiAgentSpec, toUiCatalogModelProviderEntry, toUiConnector, toUiConnectorFromReadEntry, toUiModelProvider, toUiSandboxProvider, toUiSandboxProviderListEntry, toUiSkill };
1029
+ export { type CreateHarnessAgentMetricsServerOptions, type CreateHarnessAgentSessionsServerOptions, type CreateHarnessBuilderServerOptions, type CreateHarnessChatServerOptions, type CreateTrueForgeAgentUIServerOptions, type CreateTrueForgeClientOptions, type HarnessAgentSpec, type HarnessMcpServerMount, type HarnessSkillMount, configFromHarness, createConnectorCatalog, createHarnessAgentMetricsServer, createHarnessAgentSessionsServer, createHarnessBuilderServer, createHarnessChatServer, createModelProviderCatalog, createSandboxProviderCatalog, createScheduleServer, createSkillCatalog, createTrueForgeAgentUIServer, createTrueForgeClient, filterUiSandboxProviders, getCapabilities, listConfiguredMcpServers, listConfiguredMcpServersPage, listModels, listSkills, modelProviderLogosByName, toHarnessAgentSpec, toHarnessAuth, toHarnessManifest$2 as toHarnessConnectorManifest, toHarnessModelProvider, toHarnessManifest$1 as toHarnessSandboxManifest, toHarnessManifest as toHarnessSkillManifest, toModelSelection, toUiAgentSpec, toUiCatalogModelProviderEntry, toUiConnector, toUiConnectorFromReadEntry, toUiModelProvider, toUiSandboxProvider, toUiSandboxProviderListEntry, toUiSkill };