@truefoundry/trueforge-ui 0.3.0-rc.0 → 0.3.0-rc.10

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 (115) hide show
  1. package/CHANGELOG.md +191 -0
  2. package/README.md +35 -12
  3. package/dist/AgentCodeSnippets-RJBB4DDE.js +89 -0
  4. package/dist/AgentCodeSnippets-RJBB4DDE.js.map +1 -0
  5. package/dist/AgentMetricChart-UPGSJ2WP.js +15 -0
  6. package/dist/AgentOverview-U5WIQXZN.js +169 -0
  7. package/dist/AgentOverview-U5WIQXZN.js.map +1 -0
  8. package/dist/AgentSessionEventTimeline-GRGIQTRE.js +88 -0
  9. package/dist/AgentSessionEventTimeline-GRGIQTRE.js.map +1 -0
  10. package/dist/AgentSessionEventTimelineChart-GNF4VOUT.js +591 -0
  11. package/dist/AgentSessionEventTimelineChart-GNF4VOUT.js.map +1 -0
  12. package/dist/AgentSessions-5OTF2BUW.js +323 -0
  13. package/dist/AgentSessions-5OTF2BUW.js.map +1 -0
  14. package/dist/{ConnectorSettings-FXQ5B7TN.js → ConnectorSettings-HDKGLDCY.js} +163 -125
  15. package/dist/ConnectorSettings-HDKGLDCY.js.map +1 -0
  16. package/dist/{DockLayout-LBNQJZNF.js → DockLayout-D2FPQCAL.js} +11 -10
  17. package/dist/{DockLayout-LBNQJZNF.js.map → DockLayout-D2FPQCAL.js.map} +1 -1
  18. package/dist/DrawerLayout-HUV7RAWL.js +186 -0
  19. package/dist/DrawerLayout-HUV7RAWL.js.map +1 -0
  20. package/dist/{ModelSettings-4L4LOQJA.js → ModelSettings-VNQ7HPKH.js} +23 -27
  21. package/dist/ModelSettings-VNQ7HPKH.js.map +1 -0
  22. package/dist/OpenUiFenceBlock-KPZFLUSC.js +9 -0
  23. package/dist/OpenUiFenceBlock-KPZFLUSC.js.map +1 -0
  24. package/dist/{SandboxSettings-Z4ZG6ZX4.js → SandboxSettings-ZLXGMFBF.js} +18 -20
  25. package/dist/SandboxSettings-ZLXGMFBF.js.map +1 -0
  26. package/dist/SchedulesPage-QKYI2Z3A.js +15 -0
  27. package/dist/SchedulesPage-QKYI2Z3A.js.map +1 -0
  28. package/dist/{SettingsBuilder-WF7ZWKQW.js → SettingsBuilder-RVVYXOJW.js} +27 -23
  29. package/dist/SettingsBuilder-RVVYXOJW.js.map +1 -0
  30. package/dist/ShellRouteSync-SJXFKUAJ.js +390 -0
  31. package/dist/ShellRouteSync-SJXFKUAJ.js.map +1 -0
  32. package/dist/SidebarLayout-KYA76FQ7.js +330 -0
  33. package/dist/SidebarLayout-KYA76FQ7.js.map +1 -0
  34. package/dist/{SkillSettings-3EPPC3IT.js → SkillSettings-7OHT7FPI.js} +25 -21
  35. package/dist/SkillSettings-7OHT7FPI.js.map +1 -0
  36. package/dist/{TrueForgeUIWithRouter-NZ4FGPE4.js → TrueForgeUIWithRouter-LKG4XLW6.js} +14 -10
  37. package/dist/{TrueForgeUIWithRouter-NZ4FGPE4.js.map → TrueForgeUIWithRouter-LKG4XLW6.js.map} +1 -1
  38. package/dist/{WidgetLayout-3QZ357FL.js → WidgetLayout-W2RGGOQ3.js} +17 -13
  39. package/dist/WidgetLayout-W2RGGOQ3.js.map +1 -0
  40. package/dist/chunk-2GIZY3JJ.js +1062 -0
  41. package/dist/chunk-2GIZY3JJ.js.map +1 -0
  42. package/dist/chunk-2QTH6JHX.js +217 -0
  43. package/dist/chunk-2QTH6JHX.js.map +1 -0
  44. package/dist/{chunk-FJ5RSSMA.js → chunk-3ZW74FHC.js} +118 -164
  45. package/dist/chunk-3ZW74FHC.js.map +1 -0
  46. package/dist/chunk-67ZO7Z2W.js +184 -0
  47. package/dist/chunk-67ZO7Z2W.js.map +1 -0
  48. package/dist/{chunk-CFLVPV5M.js → chunk-7AAO4UDQ.js} +8 -2
  49. package/dist/chunk-7AAO4UDQ.js.map +1 -0
  50. package/dist/{chunk-B52K63AW.js → chunk-CG75X77Q.js} +2 -2
  51. package/dist/chunk-DJUFS2BW.js +27 -0
  52. package/dist/chunk-DJUFS2BW.js.map +1 -0
  53. package/dist/chunk-DPPOEFBD.js +517 -0
  54. package/dist/chunk-DPPOEFBD.js.map +1 -0
  55. package/dist/chunk-EPAL2HD5.js +1629 -0
  56. package/dist/chunk-EPAL2HD5.js.map +1 -0
  57. package/dist/chunk-GG23N2GW.js +15018 -0
  58. package/dist/chunk-GG23N2GW.js.map +1 -0
  59. package/dist/chunk-JCL3Q7RW.js +587 -0
  60. package/dist/chunk-JCL3Q7RW.js.map +1 -0
  61. package/dist/chunk-JKEBMGLH.js +682 -0
  62. package/dist/chunk-JKEBMGLH.js.map +1 -0
  63. package/dist/chunk-KSGNKS2D.js +296 -0
  64. package/dist/chunk-KSGNKS2D.js.map +1 -0
  65. package/dist/{chunk-WREC7D54.js → chunk-PCI6VMB5.js} +268 -48
  66. package/dist/chunk-PCI6VMB5.js.map +1 -0
  67. package/dist/chunk-PQ7VWBQQ.js +121 -0
  68. package/dist/chunk-PQ7VWBQQ.js.map +1 -0
  69. package/dist/chunk-RDXBMTP5.js +32 -0
  70. package/dist/chunk-RDXBMTP5.js.map +1 -0
  71. package/dist/chunk-T6QQV5LK.js +238 -0
  72. package/dist/chunk-T6QQV5LK.js.map +1 -0
  73. package/dist/chunk-Y6S4OVVQ.js +16 -0
  74. package/dist/chunk-Y6S4OVVQ.js.map +1 -0
  75. package/dist/{createTrueFoundryServer-B72bU-J7.d.ts → createTrueFoundryServer-B_FYhSdn.d.ts} +18 -4
  76. package/dist/index.d.ts +1287 -46
  77. package/dist/index.js +266 -63
  78. package/dist/index.js.map +1 -1
  79. package/dist/plugins/trueforge-agent-server-adapter/index.d.ts +590 -11
  80. package/dist/plugins/trueforge-agent-server-adapter/index.js +607 -204
  81. package/dist/plugins/trueforge-agent-server-adapter/index.js.map +1 -1
  82. package/dist/styles.css +1 -1
  83. package/package.json +10 -8
  84. package/dist/ConnectorSettings-FXQ5B7TN.js.map +0 -1
  85. package/dist/DrawerLayout-Q6UK4VMI.js +0 -159
  86. package/dist/DrawerLayout-Q6UK4VMI.js.map +0 -1
  87. package/dist/ModelSettings-4L4LOQJA.js.map +0 -1
  88. package/dist/OpenUiFenceBlock-6UIIAVBX.js +0 -9
  89. package/dist/SandboxSettings-Z4ZG6ZX4.js.map +0 -1
  90. package/dist/SettingsBuilder-WF7ZWKQW.js.map +0 -1
  91. package/dist/ShellRouteSync-T4WLY57Q.js +0 -172
  92. package/dist/ShellRouteSync-T4WLY57Q.js.map +0 -1
  93. package/dist/SidebarLayout-3WZ3CVON.js +0 -256
  94. package/dist/SidebarLayout-3WZ3CVON.js.map +0 -1
  95. package/dist/SkillSettings-3EPPC3IT.js.map +0 -1
  96. package/dist/WidgetLayout-3QZ357FL.js.map +0 -1
  97. package/dist/chunk-36KOSC2J.js +0 -567
  98. package/dist/chunk-36KOSC2J.js.map +0 -1
  99. package/dist/chunk-3S6KHO7H.js +0 -2121
  100. package/dist/chunk-3S6KHO7H.js.map +0 -1
  101. package/dist/chunk-7L63OK3O.js +0 -91
  102. package/dist/chunk-7L63OK3O.js.map +0 -1
  103. package/dist/chunk-CFLVPV5M.js.map +0 -1
  104. package/dist/chunk-FJ5RSSMA.js.map +0 -1
  105. package/dist/chunk-OSV3HI5M.js +0 -6891
  106. package/dist/chunk-OSV3HI5M.js.map +0 -1
  107. package/dist/chunk-WQULF5AT.js +0 -460
  108. package/dist/chunk-WQULF5AT.js.map +0 -1
  109. package/dist/chunk-WREC7D54.js.map +0 -1
  110. package/dist/chunk-YIWUG6MC.js +0 -101
  111. package/dist/chunk-YIWUG6MC.js.map +0 -1
  112. package/dist/chunk-ZXOADNF3.js +0 -75
  113. package/dist/chunk-ZXOADNF3.js.map +0 -1
  114. /package/dist/{OpenUiFenceBlock-6UIIAVBX.js.map → AgentMetricChart-UPGSJ2WP.js.map} +0 -0
  115. /package/dist/{chunk-B52K63AW.js.map → chunk-CG75X77Q.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-B_FYhSdn.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, PermissionsServer, 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,181 @@ 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
+ /** Who created a resource. Optional on list DTOs when the host does not track creators. */
197
+ interface CreatedBySubject {
198
+ subjectId: string;
199
+ subjectType: string;
200
+ subjectDisplayName: string;
201
+ }
202
+ /**
203
+ * Mounts written to AgentSpec.skills[] / AgentSpec.mcpServers[].
204
+ *
205
+ * These are opaque to the runtime — it stores and forwards them but never reads
206
+ * a field, and the backend owns the shape (the gateway identifies a skill by
207
+ * `fqn`, with no `id` or `name` anywhere). So the base constrains only that a
208
+ * mount is an object; hosts intersect their concrete mount type over it, as
209
+ * `TfySkillMount` / `TfyMcpServerMount` do in the gateway adapter.
210
+ *
211
+ * Naming a field here would not just be unread, it would be wrong: a base with
212
+ * required fields rejects the backend's own payloads, and one with only optional
213
+ * fields is a weak type, which TypeScript rejects for a source that shares no
214
+ * property with it — the gateway's registry skill shares none.
215
+ */
216
+ type SkillMount = object;
217
+ type McpServerMount = object;
218
+ interface ModelParams {
219
+ maxTokens?: number;
220
+ reasoningEffort?: string;
221
+ temperature?: number;
222
+ topP?: number;
223
+ topK?: number;
224
+ parallelToolCalls?: boolean;
225
+ }
226
+ interface Model {
227
+ name: string;
228
+ params?: ModelParams;
229
+ }
230
+ interface AgentCapabilityConfig {
231
+ enabled?: boolean;
232
+ }
233
+ interface AgentSandboxConfig extends AgentCapabilityConfig {
234
+ fileDownloads?: boolean;
235
+ }
236
+ interface AgentInputTokensCompactionTrigger {
237
+ type: "input_tokens";
238
+ value: number;
239
+ }
240
+ interface AgentCompactionConfig extends AgentCapabilityConfig {
241
+ trigger?: AgentInputTokensCompactionTrigger;
242
+ }
243
+ interface AgentContextManagementConfig {
244
+ compaction?: AgentCompactionConfig;
245
+ largeToolResponse?: AgentCapabilityConfig;
246
+ }
247
+ interface AgentRuntimeConfig {
248
+ iterationLimit?: number;
249
+ sandbox?: AgentSandboxConfig;
250
+ contextManagement?: AgentContextManagementConfig;
251
+ generativeUi?: AgentCapabilityConfig;
252
+ dynamicSubAgents?: AgentCapabilityConfig;
253
+ askUserQuestions?: AgentCapabilityConfig;
254
+ }
255
+ /**
256
+ * SDK-owned agent definition — fields the FE reads/writes.
257
+ * Host widens `model` / `skills` / `mcpServers` / `config` via type params,
258
+ * and adds extra fields via `TSpec extends AgentSpec<...>`.
259
+ */
260
+ interface AgentSpec<TModel extends Model = Model, TSkill extends SkillMount = SkillMount, TMcp extends McpServerMount = McpServerMount, TConfig extends AgentRuntimeConfig = AgentRuntimeConfig> {
261
+ model: TModel;
262
+ skills?: TSkill[];
263
+ mcpServers?: TMcp[];
264
+ config?: TConfig;
265
+ instructions?: string;
266
+ variables?: Record<string, string>;
267
+ }
268
+ interface ListResult<T> {
269
+ data: T[];
270
+ nextPageToken?: string;
271
+ }
272
+ type ListSessionsOrder = "asc" | "desc";
273
+ type PageParams = {
274
+ limit?: number;
275
+ order?: ListSessionsOrder;
276
+ pageToken?: string;
277
+ };
278
+ interface ListSessionsParams extends PageParams {
279
+ /** Host-owned agent identity filter. Omit for all sessions (current user). */
280
+ agentId?: string;
281
+ /**
282
+ * When true, only sessions created by the authenticated subject.
283
+ * Omit to include managed-agent visibility where the host supports it.
284
+ */
285
+ createdByMe?: boolean;
286
+ /** Inclusive lower bound on session activity (ISO-8601). */
287
+ startTimestamp?: string;
288
+ /** Inclusive upper bound on session activity (ISO-8601). */
289
+ endTimestamp?: string;
290
+ }
291
+ type UserMessageContent = string | Array<{
292
+ type: "text";
293
+ text: string;
294
+ } | {
295
+ type: "file";
296
+ name: string;
297
+ data: string;
298
+ }>;
299
+ interface UserMessage {
300
+ type: "user.message";
301
+ content: UserMessageContent;
302
+ }
303
+ type ApprovalDecision = {
304
+ status: "allow";
305
+ } | {
306
+ status: "deny";
307
+ reason?: string;
308
+ };
309
+ interface UserToolApprovalEvent {
310
+ type: "user.tool_approval";
311
+ threadId: string;
312
+ toolCallId: string;
313
+ approval: ApprovalDecision;
314
+ }
315
+ interface UserToolResponseEvent {
316
+ type: "user.tool_response";
317
+ threadId: string;
318
+ toolCallId: string;
319
+ content: string;
320
+ }
321
+ type TurnInputItem = UserMessage | UserToolApprovalEvent | UserToolResponseEvent;
322
+ type TurnStateRunning = {
323
+ status: "running";
324
+ };
325
+ /**
326
+ * Aggregated token metrics on a finished turn (`turn.done.state.metrics`).
327
+ * Host maps wire snake_case (`total_input_tokens`, …) → camelCase here.
328
+ */
329
+ interface TurnDoneMetrics {
330
+ totalInputTokens: number;
331
+ totalOutputTokens: number;
332
+ totalTokens: number;
333
+ totalCacheReadTokens: number;
334
+ totalCacheWriteTokens: number;
335
+ totalReasoningTokens: number;
336
+ }
337
+ type TurnStateDone = {
338
+ status: "done";
339
+ output?: unknown;
340
+ requiredActions?: ActionRequiredEvent[];
341
+ completedAt: string;
342
+ /** Present when the host reports per-turn token totals. */
343
+ metrics?: TurnDoneMetrics;
344
+ };
345
+ type TurnStateCancelled = {
346
+ status: "cancelled";
347
+ reason: string;
348
+ completedAt: string;
349
+ };
350
+ type TurnStateError = {
351
+ status: "error";
352
+ message: string;
353
+ completedAt: string;
354
+ };
355
+ type TurnState = TurnStateRunning | TurnStateDone | TurnStateCancelled | TurnStateError;
28
356
  interface SaveAgentResult {
29
357
  /** Immutable id allocated by the host registry. */
30
358
  agentId?: string;
359
+ /** Version id allocated by the host registry for this save. */
360
+ versionId?: string;
31
361
  /** Timestamp returned when the active mutable session was updated. */
32
362
  sessionUpdatedAt?: string;
33
363
  }
@@ -316,6 +646,220 @@ interface SandboxCatalogServer<TProvider extends SandboxBase = SandboxBase, TCat
316
646
  }
317
647
  /** Host-facing selector / compose aliases (trueforge-ui public names). */
318
648
  type ModelSelection = ModelSelectorEntry;
649
+ /**
650
+ * Published agent identity + spec for the agent-detail Overview (read-only).
651
+ * Host widens `TSpec` (and may extend this DTO) for mounts / config / extras.
652
+ */
653
+ interface AgentDetail<TSpec extends AgentSpec = AgentSpec> {
654
+ agentId: string;
655
+ /** Display name (e.g. "release-notes-writer"). */
656
+ name: string;
657
+ /** Published-agent description; not part of the executable agent spec. */
658
+ description?: string;
659
+ agentSpec: TSpec;
660
+ }
661
+ /** Stream vs non-stream bodies for one language on the Use In Code tab. */
662
+ interface CodeSnippetSampleCode {
663
+ stream: string;
664
+ nonStream: string;
665
+ }
666
+ /**
667
+ * One language row for Use In Code.
668
+ * Host maps wire `sample_code` / `non_stream` → camelCase here.
669
+ */
670
+ interface CodeSnippet<TSample extends CodeSnippetSampleCode = CodeSnippetSampleCode> {
671
+ /** Sidebar label (e.g. "TypeScript"). */
672
+ labelName: string;
673
+ /** Highlighter / tab id (e.g. "typescript"). */
674
+ language: string;
675
+ icon?: string;
676
+ sampleCode: TSample;
677
+ }
678
+ /**
679
+ * Aggregated session metrics for the sessions list sidebar.
680
+ * Host maps wire snake_case (`total_turns`, `total_cost_in_usd`, …) → camelCase.
681
+ */
682
+ interface SessionListMetrics {
683
+ totalTurns: number;
684
+ totalCostInUsd?: number;
685
+ totalDurationMs: number;
686
+ }
687
+ /**
688
+ * One row in the Agent Sessions list (left pane).
689
+ *
690
+ * Binding: `agentName` → named / immutable agent; `agentSpec` → mutable / draft.
691
+ * Host may send one, both, or neither depending on how the session was created.
692
+ */
693
+ interface SessionListEntry<TSpec extends AgentSpec = AgentSpec> {
694
+ id: string;
695
+ title?: string | null;
696
+ createdAt: string;
697
+ updatedAt: string;
698
+ lastActivityAt: string;
699
+ metrics: SessionListMetrics;
700
+ /** Present when bound to a published (immutable) agent. */
701
+ agentName?: string | null;
702
+ /** Present when bound to a mutable / draft agent spec. */
703
+ agentSpec?: TSpec;
704
+ }
705
+ /** Params for `AgentSessionsServer.listSessionEvents` (session event timeline). */
706
+ interface ListSessionEventsParams extends Pick<PageParams, "limit" | "pageToken"> {
707
+ sessionId: string;
708
+ }
709
+ /**
710
+ * Optional plug-in for agent-detail UI: Overview, Use In Code, sessions list,
711
+ * and per-session event timeline. Omit `sessions` on `AgentUIServerPort` when
712
+ * the host has no agent-detail surface.
713
+ *
714
+ * Read-only — create/update/delete stay on `AgentChatServer` / `AgentBuilderServer`.
715
+ */
716
+ 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> {
717
+ /** Fetch published agent details by id for the Overview tab. */
718
+ getAgent(req: {
719
+ agentId: string;
720
+ }): Promise<TDetail>;
721
+ /** Fetch Use In Code snippets for the agent (one row per language). */
722
+ getCodeSnippets(req: {
723
+ agentId: string;
724
+ }): Promise<TSnippet[]>;
725
+ /**
726
+ * List sessions visible to the current user. Pass `agentId` to scope to one
727
+ * agent; `createdByMe: true` for only sessions they created. Use
728
+ * `startTimestamp` / `endTimestamp` for date filters.
729
+ */
730
+ listSessions(req?: TList): Promise<ListResult<TListEntry>>;
731
+ /**
732
+ * Fetch the session event timeline (right pane). Paginate with `pageToken`
733
+ * until exhausted; rebuild turns from `turn.created` / `turn.done` +
734
+ * nested `TurnEvent`s. Per-turn token metrics live on `turn.done.state.metrics`.
735
+ */
736
+ listSessionEvents(req: ListSessionEventsParams): Promise<ListResult<SessionEventItem>>;
737
+ }
738
+ type ScheduleStatus = "active" | "paused";
739
+ type ScheduleRunStatus = "scheduled" | "triggered" | "failed";
740
+ interface Schedule {
741
+ id: string;
742
+ name: string;
743
+ /** Stable agent id (`AgentSelectorEntry.agentId`). */
744
+ agentId: string;
745
+ /** Display name; omit when the host only has `agentId`. */
746
+ agentName?: string;
747
+ task: string;
748
+ cron: string;
749
+ timezone: string;
750
+ status: ScheduleStatus;
751
+ lastRunAt: string | null;
752
+ /** Creator when the host persists one; omit to hide Created-by UI. */
753
+ createdBySubject?: CreatedBySubject;
754
+ }
755
+ /** Flat schedule-run DTO (ISO-8601 timestamps; host maps from wire Dates). */
756
+ interface ScheduleRun {
757
+ id: string;
758
+ scheduleId: string;
759
+ name: string;
760
+ scheduledFor: string;
761
+ status: ScheduleRunStatus;
762
+ triggeredAt: string | null;
763
+ triggeredBy: string;
764
+ }
765
+ interface ListSchedulesParams extends Pick<PageParams, "limit" | "pageToken"> {
766
+ agentId?: string;
767
+ /** Multi-agent filter; combined with `agentId` when both are set. */
768
+ agentIds?: string[];
769
+ }
770
+ interface CreateScheduleRequest {
771
+ agentId: string;
772
+ name: string;
773
+ task: string;
774
+ cron: string;
775
+ timezone?: string;
776
+ status?: ScheduleStatus;
777
+ }
778
+ /** `agentId` is not on the base update body; hosts that allow rebinding can extend `TUpdate`. */
779
+ interface UpdateScheduleRequest {
780
+ id: string;
781
+ name: string;
782
+ task: string;
783
+ cron: string;
784
+ timezone?: string;
785
+ status?: ScheduleStatus;
786
+ }
787
+ interface CreateScheduleRunRequest {
788
+ scheduleId: string;
789
+ }
790
+ interface ScheduleServer<TSchedule extends Schedule = Schedule, TCreate extends CreateScheduleRequest = CreateScheduleRequest, TUpdate extends UpdateScheduleRequest = UpdateScheduleRequest, TRun extends ScheduleRun = ScheduleRun> {
791
+ listSchedules(req?: ListSchedulesParams): Promise<ListResult<TSchedule>>;
792
+ getSchedule(req: {
793
+ id: string;
794
+ }): Promise<TSchedule>;
795
+ createSchedule(req: TCreate): Promise<TSchedule>;
796
+ updateSchedule(req: TUpdate): Promise<TSchedule>;
797
+ deleteSchedule(req: {
798
+ id: string;
799
+ }): Promise<void>;
800
+ listScheduleRuns(req: {
801
+ scheduleId: string;
802
+ }): Promise<TRun[]>;
803
+ createScheduleRun(req: CreateScheduleRunRequest): Promise<TRun>;
804
+ }
805
+ type PermissionResourceType = "agent" | "schedule" | "session" | "tenant";
806
+ type ResourcePermission = "USE" | "MANAGE" | "DELETE" | "CREATE";
807
+ interface ListPermissionsRequest {
808
+ resourceType: PermissionResourceType;
809
+ resourceIds: string[];
810
+ }
811
+ interface ListPermissionsResponse {
812
+ data: {
813
+ type: PermissionResourceType;
814
+ permissions: Record<string, ResourcePermission[]>;
815
+ };
816
+ }
817
+ type AgentMetricChartType = "line";
818
+ interface AgentMetricChartDefinition {
819
+ name: string;
820
+ displayName: string;
821
+ description: string;
822
+ chartType: AgentMetricChartType;
823
+ }
824
+ interface AgentMetricMeter {
825
+ name: string;
826
+ aggregateValue: number;
827
+ description: string;
828
+ unit: string;
829
+ }
830
+ interface AgentMetricPoint {
831
+ timestamp: string;
832
+ value: number;
833
+ }
834
+ interface AgentMetricGraphLine<TPoint extends AgentMetricPoint = AgentMetricPoint> {
835
+ name: string;
836
+ values: TPoint[];
837
+ }
838
+ interface AgentMetricGraph<TLine extends AgentMetricGraphLine = AgentMetricGraphLine> {
839
+ name: string;
840
+ displayName: string;
841
+ description: string;
842
+ unit: string;
843
+ chartType: AgentMetricChartType;
844
+ graphLines: TLine[];
845
+ }
846
+ interface AgentMetricChartData<TGraph extends AgentMetricGraph = AgentMetricGraph> {
847
+ step: string;
848
+ graphs: TGraph[];
849
+ }
850
+ interface AgentMetricRangeRequest {
851
+ agentId: string;
852
+ startTimestamp: string;
853
+ endTimestamp: string;
854
+ }
855
+ interface AgentMetricChartDataRequest extends AgentMetricRangeRequest {
856
+ chartName: string;
857
+ }
858
+ interface AgentMetricsServer<TChart extends AgentMetricChartDefinition = AgentMetricChartDefinition, TMeter extends AgentMetricMeter = AgentMetricMeter, TChartData extends AgentMetricChartData = AgentMetricChartData, TRangeRequest extends AgentMetricRangeRequest = AgentMetricRangeRequest, TChartDataRequest extends AgentMetricChartDataRequest = AgentMetricChartDataRequest> {
859
+ getCharts(): Promise<TChart[]>;
860
+ getMeters(req: TRangeRequest): Promise<TMeter[]>;
861
+ getChartData(req: TChartDataRequest): Promise<TChartData>;
862
+ }
319
863
 
320
864
  /**
321
865
  * TrueForge HTTP client for the Harness adapter.
@@ -330,11 +874,24 @@ interface CreateTrueForgeClientOptions {
330
874
  }
331
875
  declare function createTrueForgeClient(options?: CreateTrueForgeClientOptions): TrueForge;
332
876
 
333
- type HarnessSkillMount = TrueForgeApi.Skill;
877
+ /** Catalog attach key may sit on `id`; wire Skill is name-only. See builder getSkills. */
878
+ type HarnessSkillMount = TrueForgeApi.Skill & {
879
+ id?: string;
880
+ };
334
881
  type HarnessMcpServerMount = TrueForgeApi.McpServer;
335
- interface HarnessAgentSpec extends AgentSpec<TrueForgeApi.Model, HarnessSkillMount, HarnessMcpServerMount, TrueForgeApi.RuntimeConfig>, TrueForgeApi.AgentSpec {
882
+ interface HarnessAgentSpec extends AgentSpec$1<TrueForgeApi.Model, HarnessSkillMount, HarnessMcpServerMount, TrueForgeApi.RuntimeConfig>, Omit<TrueForgeApi.AgentSpec, 'skills'> {
336
883
  }
337
884
 
885
+ type CreateHarnessAgentMetricsServerOptions = CreateTrueForgeClientOptions & {
886
+ client?: TrueForge;
887
+ };
888
+ declare function createHarnessAgentMetricsServer(options?: CreateHarnessAgentMetricsServerOptions): AgentMetricsServer$1;
889
+
890
+ type CreateHarnessAgentSessionsServerOptions = CreateTrueForgeClientOptions & {
891
+ client?: TrueForge;
892
+ };
893
+ declare function createHarnessAgentSessionsServer(options?: CreateHarnessAgentSessionsServerOptions): AgentSessionsServer$1<HarnessAgentSpec>;
894
+
338
895
  /**
339
896
  * AgentBuilderServer callbacks for createTrueFoundryServer.
340
897
  * Composer pickers + agent library backed by the Harness agents registry.
@@ -435,7 +992,7 @@ declare function createSandboxProviderCatalog(client: TrueForge): SandboxCatalog
435
992
  */
436
993
 
437
994
  type UiSkill = DefinedSkill;
438
- declare function toHarnessManifest(req: SkillConfigBase$1): TrueForgeApi.SkillManifest;
995
+ declare function toHarnessManifest(req: SkillConfigBase$1): TrueForgeApi.settings.CreateSkillRequest['manifest'];
439
996
  declare function toUiSkill(skill: TrueForgeApi.ConfiguredSkill, catalogNames: ReadonlySet<string>): UiSkill;
440
997
  /** Settings skill-catalog port for `createTrueFoundryServer`. Delete omitted (no BE route). */
441
998
  declare function createSkillCatalog(client: TrueForge): SkillCatalogServer$1<UiSkill>;
@@ -447,7 +1004,7 @@ declare function createSkillCatalog(client: TrueForge): SkillCatalogServer$1<UiS
447
1004
  * `nextPageToken`), and `null` normalized to absent. Harness keys MCP mounts by
448
1005
  * name and returns `null` for optional fields — the maps below bridge both.
449
1006
  *
450
- * Skills are name refs on the wire (`Skill`).
1007
+ * Skills are name (+ optional preload) refs on the wire (`Skill`).
451
1008
  *
452
1009
  * Session create takes `{ name }` or `{ spec }`; reads carry the
453
1010
  * `reference`/`inline` discriminator, with reference rows already naming their
@@ -458,10 +1015,17 @@ type CreateHarnessChatServerOptions = CreateTrueForgeClientOptions & {
458
1015
  /** Injected client — skips creating one from options. */
459
1016
  client?: TrueForge;
460
1017
  };
1018
+ /** UI session with create-agent intent for resume chrome. */
1019
+ type HarnessUiSession = Session<HarnessAgentSpec> & {
1020
+ isCreateAgent: boolean;
1021
+ };
1022
+ type HarnessCreateSessionRequest = CreateSessionRequest<HarnessAgentSpec> & {
1023
+ metadata?: Record<string, string>;
1024
+ };
461
1025
  /** Drop UI draft `id` before admission; Harness MCP mounts are name-keyed. */
462
1026
  declare function toHarnessAgentSpec(spec: HarnessAgentSpec): TrueForgeApi.AgentSpec;
463
1027
  declare function toUiAgentSpec(spec: TrueForgeApi.AgentSpec): HarnessAgentSpec;
464
- declare function createHarnessChatServer(options?: CreateHarnessChatServerOptions): AgentChatServer<HarnessAgentSpec>;
1028
+ declare function createHarnessChatServer(options?: CreateHarnessChatServerOptions): AgentChatServer<HarnessAgentSpec, HarnessUiSession, HarnessCreateSessionRequest>;
465
1029
 
466
1030
  /**
467
1031
  * Configured-resource list helpers for composer pickers and host boot.
@@ -473,13 +1037,28 @@ declare function listConfiguredMcpServers(client: TrueForge): Promise<TrueForgeA
473
1037
  declare function listSkills(client: TrueForge): Promise<TrueForgeApi.AvailableSkill[]>;
474
1038
  declare function getCapabilities(client: TrueForge): Promise<TrueForgeApi.CapabilitiesData>;
475
1039
 
1040
+ type CreateHarnessPermissionsServerOptions = CreateTrueForgeClientOptions & {
1041
+ client?: TrueForge;
1042
+ };
1043
+ declare function createHarnessPermissionsServer(options?: CreateHarnessPermissionsServerOptions): PermissionsServer;
1044
+
1045
+ /**
1046
+ * Harness ScheduleServer adapter — maps flat runtime DTOs to SDK wire (manifest + agentName).
1047
+ */
1048
+
1049
+ declare function createScheduleServer(options: {
1050
+ client: TrueForge;
1051
+ }): ScheduleServer$1;
1052
+
476
1053
  type CreateTrueForgeAgentUIServerOptions = CreateTrueForgeClientOptions & {
477
1054
  /** Override the default Harness settings catalogs. */
478
1055
  catalog?: CatalogServer;
1056
+ /** Optional host-provided resource permissions port. */
1057
+ permissions?: PermissionsServer;
479
1058
  };
480
1059
  /**
481
- * Compose chat + builder + default settings catalogs into an `AgentUIServer`.
1060
+ * Compose chat + builder + agent sessions + default settings catalogs into an `AgentUIServer`.
482
1061
  */
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>;
1062
+ 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>, PermissionsServer<ListPermissionsRequest, ListPermissionsResponse>>;
484
1063
 
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 };
1064
+ export { type CreateHarnessAgentMetricsServerOptions, type CreateHarnessAgentSessionsServerOptions, type CreateHarnessBuilderServerOptions, type CreateHarnessChatServerOptions, type CreateHarnessPermissionsServerOptions, type CreateTrueForgeAgentUIServerOptions, type CreateTrueForgeClientOptions, type HarnessAgentSpec, type HarnessMcpServerMount, type HarnessSkillMount, configFromHarness, createConnectorCatalog, createHarnessAgentMetricsServer, createHarnessAgentSessionsServer, createHarnessBuilderServer, createHarnessChatServer, createHarnessPermissionsServer, createModelProviderCatalog, createSandboxProviderCatalog, createScheduleServer, 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 };