agentstack-sdk 0.6.1 → 0.6.2-rc2

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 (199) hide show
  1. package/README.md +36 -29
  2. package/dist/api.cjs +1994 -2
  3. package/dist/api.d.cts +29 -0
  4. package/dist/api.d.ts +25 -1
  5. package/dist/api.js +1801 -2
  6. package/dist/core-DcGxYeok.d.ts +1238 -0
  7. package/dist/core-XN6gWSAb.d.cts +1238 -0
  8. package/dist/core.cjs +1773 -2
  9. package/dist/core.d.cts +7 -0
  10. package/dist/core.d.ts +7 -5
  11. package/dist/core.js +1725 -2
  12. package/dist/extensions.cjs +798 -2
  13. package/dist/extensions.d.cts +244 -0
  14. package/dist/extensions.d.ts +240 -1
  15. package/dist/extensions.js +652 -2
  16. package/dist/index.cjs +3142 -2
  17. package/dist/index.d.cts +10 -0
  18. package/dist/index.d.ts +10 -7
  19. package/dist/index.js +2781 -2
  20. package/dist/index.umd.js +16509 -2
  21. package/dist/schemas-Dy3P_eAt.d.cts +57 -0
  22. package/dist/schemas-Dy3P_eAt.d.ts +57 -0
  23. package/dist/server.cjs +2762 -0
  24. package/dist/server.d.cts +244 -0
  25. package/dist/server.d.ts +244 -0
  26. package/dist/server.js +2716 -0
  27. package/dist/types-B5B3b0V2.d.cts +396 -0
  28. package/dist/types-B5B3b0V2.d.ts +396 -0
  29. package/dist/types-CmEs5_Ag.d.cts +3522 -0
  30. package/dist/types-DJm5-rZZ.d.ts +3522 -0
  31. package/dist/types-DvLt-XuC.d.ts +866 -0
  32. package/dist/types-E26YDM19.d.cts +866 -0
  33. package/dist/types-MfIzGgpV.d.cts +43 -0
  34. package/dist/types-MfIzGgpV.d.ts +43 -0
  35. package/package.json +36 -21
  36. package/src/client/a2a/extensions/auth/oauth/index.ts +6 -6
  37. package/src/client/a2a/extensions/auth/secrets/index.ts +6 -6
  38. package/src/client/a2a/extensions/interactions/approval/index.ts +7 -7
  39. package/src/client/a2a/extensions/services/embedding/index.ts +7 -3
  40. package/src/client/a2a/extensions/services/form/index.ts +3 -3
  41. package/src/client/a2a/extensions/services/llm/index.ts +3 -3
  42. package/src/client/a2a/extensions/services/mcp/index.ts +3 -3
  43. package/src/client/a2a/extensions/services/platform-api/index.ts +2 -2
  44. package/src/client/a2a/extensions/ui/agent-detail/index.ts +4 -4
  45. package/src/client/a2a/extensions/ui/canvas/index.ts +4 -4
  46. package/src/client/a2a/extensions/ui/citation/index.ts +4 -4
  47. package/src/client/a2a/extensions/ui/error/index.ts +4 -4
  48. package/src/client/a2a/extensions/ui/form-request/index.ts +4 -4
  49. package/src/client/a2a/extensions/ui/settings/index.ts +7 -3
  50. package/src/client/a2a/extensions/ui/trajectory/index.ts +4 -4
  51. package/src/client/core/extensions/types.ts +8 -1
  52. package/src/client/core/handle-task-status-update.ts +10 -3
  53. package/src/client/core/index.ts +1 -0
  54. package/src/client/core/utils/extract-text-from-message.ts +15 -0
  55. package/src/examples/hello-world.ts +34 -0
  56. package/src/experimental/server/a2a/extensions/agent-detail/index.ts +35 -0
  57. package/src/experimental/server/a2a/extensions/agent-detail/types.ts +10 -0
  58. package/src/experimental/server/a2a/extensions/index.ts +11 -0
  59. package/src/experimental/server/a2a/extensions/llm/index.ts +70 -0
  60. package/src/experimental/server/a2a/extensions/llm/types.ts +16 -0
  61. package/src/experimental/server/a2a/extensions/platform-self-registration/index.ts +34 -0
  62. package/src/experimental/server/a2a/extensions/platform-self-registration/types.ts +10 -0
  63. package/src/experimental/server/a2a/helpers.ts +95 -0
  64. package/{dist/client/a2a/index.d.ts → src/experimental/server/a2a/index.ts} +1 -1
  65. package/src/experimental/server/a2a/utils.ts +43 -0
  66. package/src/experimental/server/core/config/index.ts +17 -0
  67. package/src/experimental/server/core/config/schemas.ts +15 -0
  68. package/src/experimental/server/core/config/types.ts +10 -0
  69. package/src/experimental/server/core/context/index.ts +18 -0
  70. package/src/experimental/server/core/extensions/types.ts +24 -0
  71. package/{dist/client/a2a/protocol/index.d.ts → src/experimental/server/core/index.ts} +4 -0
  72. package/{dist/client/a2a/protocol/tests.d.ts → src/experimental/server/core/schemas.ts} +2 -1
  73. package/src/experimental/server/core/server/autoregistration.ts +142 -0
  74. package/src/experimental/server/core/server/executor.ts +284 -0
  75. package/src/experimental/server/core/server/helpers.ts +12 -0
  76. package/src/experimental/server/core/server/index.ts +166 -0
  77. package/src/experimental/server/core/server/types.ts +58 -0
  78. package/src/experimental/server/core/types.ts +8 -0
  79. package/src/experimental/server/core/utils.ts +59 -0
  80. package/{dist/client/api/core/errors/index.d.ts → src/server.ts} +3 -2
  81. package/dist/api.cjs.map +0 -1
  82. package/dist/api.js.map +0 -1
  83. package/dist/api.umd.js +0 -2
  84. package/dist/api.umd.js.map +0 -1
  85. package/dist/client/a2a/extensions/auth/oauth/index.d.ts +0 -10
  86. package/dist/client/a2a/extensions/auth/oauth/schemas.d.ts +0 -32
  87. package/dist/client/a2a/extensions/auth/oauth/types.d.ts +0 -13
  88. package/dist/client/a2a/extensions/auth/secrets/index.d.ts +0 -10
  89. package/dist/client/a2a/extensions/auth/secrets/schemas.d.ts +0 -23
  90. package/dist/client/a2a/extensions/auth/secrets/types.d.ts +0 -10
  91. package/dist/client/a2a/extensions/common/form/schemas.d.ts +0 -290
  92. package/dist/client/a2a/extensions/common/form/types.d.ts +0 -24
  93. package/dist/client/a2a/extensions/index.d.ts +0 -21
  94. package/dist/client/a2a/extensions/interactions/approval/index.d.ts +0 -10
  95. package/dist/client/a2a/extensions/interactions/approval/schemas.d.ts +0 -43
  96. package/dist/client/a2a/extensions/interactions/approval/types.d.ts +0 -14
  97. package/dist/client/a2a/extensions/schemas.d.ts +0 -19
  98. package/dist/client/a2a/extensions/services/embedding/index.d.ts +0 -9
  99. package/dist/client/a2a/extensions/services/embedding/schemas.d.ts +0 -29
  100. package/dist/client/a2a/extensions/services/embedding/types.d.ts +0 -10
  101. package/dist/client/a2a/extensions/services/form/index.d.ts +0 -9
  102. package/dist/client/a2a/extensions/services/form/schemas.d.ts +0 -97
  103. package/dist/client/a2a/extensions/services/form/types.d.ts +0 -8
  104. package/dist/client/a2a/extensions/services/llm/index.d.ts +0 -9
  105. package/dist/client/a2a/extensions/services/llm/schemas.d.ts +0 -29
  106. package/dist/client/a2a/extensions/services/llm/types.d.ts +0 -10
  107. package/dist/client/a2a/extensions/services/mcp/index.d.ts +0 -9
  108. package/dist/client/a2a/extensions/services/mcp/schemas.d.ts +0 -35
  109. package/dist/client/a2a/extensions/services/mcp/types.d.ts +0 -14
  110. package/dist/client/a2a/extensions/services/platform-api/index.d.ts +0 -11
  111. package/dist/client/a2a/extensions/services/platform-api/schemas.d.ts +0 -10
  112. package/dist/client/a2a/extensions/services/platform-api/types.d.ts +0 -7
  113. package/dist/client/a2a/extensions/types.d.ts +0 -19
  114. package/dist/client/a2a/extensions/ui/agent-detail/index.d.ts +0 -9
  115. package/dist/client/a2a/extensions/ui/agent-detail/schemas.d.ts +0 -41
  116. package/dist/client/a2a/extensions/ui/agent-detail/types.d.ts +0 -13
  117. package/dist/client/a2a/extensions/ui/canvas/index.d.ts +0 -9
  118. package/dist/client/a2a/extensions/ui/canvas/schemas.d.ts +0 -11
  119. package/dist/client/a2a/extensions/ui/canvas/types.d.ts +0 -7
  120. package/dist/client/a2a/extensions/ui/citation/index.d.ts +0 -9
  121. package/dist/client/a2a/extensions/ui/citation/schemas.d.ts +0 -21
  122. package/dist/client/a2a/extensions/ui/citation/types.d.ts +0 -8
  123. package/dist/client/a2a/extensions/ui/error/index.d.ts +0 -9
  124. package/dist/client/a2a/extensions/ui/error/schemas.d.ts +0 -30
  125. package/dist/client/a2a/extensions/ui/error/types.d.ts +0 -9
  126. package/dist/client/a2a/extensions/ui/form-request/index.d.ts +0 -9
  127. package/dist/client/a2a/extensions/ui/settings/index.d.ts +0 -9
  128. package/dist/client/a2a/extensions/ui/settings/schemas.d.ts +0 -113
  129. package/dist/client/a2a/extensions/ui/settings/types.d.ts +0 -18
  130. package/dist/client/a2a/extensions/ui/trajectory/index.d.ts +0 -9
  131. package/dist/client/a2a/extensions/ui/trajectory/schemas.d.ts +0 -10
  132. package/dist/client/a2a/extensions/ui/trajectory/types.d.ts +0 -7
  133. package/dist/client/a2a/protocol/schemas.d.ts +0 -988
  134. package/dist/client/a2a/protocol/types.d.ts +0 -52
  135. package/dist/client/a2a/protocol/utils.d.ts +0 -6
  136. package/dist/client/api/common/schemas.d.ts +0 -30
  137. package/dist/client/api/common/types.d.ts +0 -18
  138. package/dist/client/api/configuration/api.d.ts +0 -22
  139. package/dist/client/api/configuration/schemas.d.ts +0 -31
  140. package/dist/client/api/configuration/types.d.ts +0 -11
  141. package/dist/client/api/connectors/api.d.ts +0 -78
  142. package/dist/client/api/connectors/schemas.d.ts +0 -114
  143. package/dist/client/api/connectors/types.d.ts +0 -28
  144. package/dist/client/api/contexts/api.d.ts +0 -133
  145. package/dist/client/api/contexts/schemas.d.ts +0 -359
  146. package/dist/client/api/contexts/types.d.ts +0 -34
  147. package/dist/client/api/core/client.d.ts +0 -1273
  148. package/dist/client/api/core/errors/types.d.ts +0 -36
  149. package/dist/client/api/core/errors/utils.d.ts +0 -23
  150. package/dist/client/api/core/index.d.ts +0 -7
  151. package/dist/client/api/core/schemas.d.ts +0 -17
  152. package/dist/client/api/core/types.d.ts +0 -45
  153. package/dist/client/api/core/utils.d.ts +0 -23
  154. package/dist/client/api/files/api.d.ts +0 -32
  155. package/dist/client/api/files/schemas.d.ts +0 -61
  156. package/dist/client/api/files/types.d.ts +0 -19
  157. package/dist/client/api/index.d.ts +0 -7
  158. package/dist/client/api/model-providers/api.d.ts +0 -50
  159. package/dist/client/api/model-providers/schemas.d.ts +0 -80
  160. package/dist/client/api/model-providers/types.d.ts +0 -44
  161. package/dist/client/api/provider-builds/api.d.ts +0 -143
  162. package/dist/client/api/provider-builds/schemas.d.ts +0 -250
  163. package/dist/client/api/provider-builds/types.d.ts +0 -31
  164. package/dist/client/api/providers/api.d.ts +0 -847
  165. package/dist/client/api/providers/schemas.d.ts +0 -1335
  166. package/dist/client/api/providers/types.d.ts +0 -45
  167. package/dist/client/api/schemas.d.ts +0 -15
  168. package/dist/client/api/types.d.ts +0 -15
  169. package/dist/client/api/user-feedback/api.d.ts +0 -9
  170. package/dist/client/api/user-feedback/schemas.d.ts +0 -15
  171. package/dist/client/api/user-feedback/types.d.ts +0 -8
  172. package/dist/client/api/users/api.d.ts +0 -13
  173. package/dist/client/api/users/schemas.d.ts +0 -20
  174. package/dist/client/api/users/types.d.ts +0 -14
  175. package/dist/client/api/variables/api.d.ts +0 -12
  176. package/dist/client/api/variables/schemas.d.ts +0 -13
  177. package/dist/client/api/variables/types.d.ts +0 -10
  178. package/dist/client/core/create-authenticated-fetch.d.ts +0 -5
  179. package/dist/client/core/extensions/extract.d.ts +0 -8
  180. package/dist/client/core/extensions/fulfill.d.ts +0 -8
  181. package/dist/client/core/extensions/resolve-user-metadata.d.ts +0 -6
  182. package/dist/client/core/extensions/types.d.ts +0 -68
  183. package/dist/client/core/fulfillment-resolvers/build-llm-extension-fulfillment-resolver.d.ts +0 -8
  184. package/dist/client/core/handle-agent-card.d.ts +0 -128
  185. package/dist/client/core/handle-task-status-update.d.ts +0 -7
  186. package/dist/client/core/index.d.ts +0 -14
  187. package/dist/client/core/utils/build-message-builder.d.ts +0 -9
  188. package/dist/client/core/utils/get-agent-card-path.d.ts +0 -5
  189. package/dist/core.cjs.map +0 -1
  190. package/dist/core.js.map +0 -1
  191. package/dist/core.umd.js +0 -2
  192. package/dist/core.umd.js.map +0 -1
  193. package/dist/extensions.cjs.map +0 -1
  194. package/dist/extensions.js.map +0 -1
  195. package/dist/extensions.umd.js +0 -2
  196. package/dist/extensions.umd.js.map +0 -1
  197. package/dist/index.cjs.map +0 -1
  198. package/dist/index.js.map +0 -1
  199. package/dist/index.umd.js.map +0 -1
package/dist/server.js ADDED
@@ -0,0 +1,2716 @@
1
+ // src/client/a2a/extensions/auth/oauth/index.ts
2
+ import z2 from "zod";
3
+
4
+ // src/client/a2a/extensions/auth/oauth/schemas.ts
5
+ import z from "zod";
6
+ var oauthDemandSchema = z.object({
7
+ redirect_uri: z.boolean()
8
+ });
9
+ var oauthDemandsSchema = z.object({
10
+ oauth_demands: z.record(z.string(), oauthDemandSchema)
11
+ });
12
+ var oauthFulfillmentSchema = z.object({
13
+ redirect_uri: z.string()
14
+ });
15
+ var oauthFulfillmentsSchema = z.object({
16
+ oauth_fulfillments: z.record(z.string(), oauthFulfillmentSchema)
17
+ });
18
+ var oauthRequestSchema = z.object({
19
+ authorization_endpoint_url: z.string()
20
+ });
21
+ var oauthResponseSchema = z.object({
22
+ redirect_uri: z.string()
23
+ });
24
+ var oauthMessageSchema = z.object({
25
+ data: oauthResponseSchema
26
+ });
27
+
28
+ // src/client/a2a/extensions/auth/secrets/index.ts
29
+ import z4 from "zod";
30
+
31
+ // src/client/a2a/extensions/auth/secrets/schemas.ts
32
+ import z3 from "zod";
33
+ var secretDemandSchema = z3.object({
34
+ name: z3.string(),
35
+ description: z3.string().nullish()
36
+ });
37
+ var secretDemandsSchema = z3.object({
38
+ secret_demands: z3.record(z3.string(), secretDemandSchema)
39
+ });
40
+ var secretFulfillmentSchema = z3.object({
41
+ secret: z3.string()
42
+ });
43
+ var secretFulfillmentsSchema = z3.object({
44
+ secret_fulfillments: z3.record(z3.string(), secretFulfillmentSchema)
45
+ });
46
+
47
+ // src/client/a2a/extensions/interactions/approval/index.ts
48
+ import z6 from "zod";
49
+
50
+ // src/client/a2a/extensions/interactions/approval/schemas.ts
51
+ import z5 from "zod";
52
+
53
+ // src/client/a2a/extensions/interactions/approval/types.ts
54
+ var ApprovalDecision = /* @__PURE__ */ ((ApprovalDecision2) => {
55
+ ApprovalDecision2["Approve"] = "approve";
56
+ ApprovalDecision2["Reject"] = "reject";
57
+ return ApprovalDecision2;
58
+ })(ApprovalDecision || {});
59
+
60
+ // src/client/a2a/extensions/interactions/approval/schemas.ts
61
+ var genericApprovalRequestSchema = z5.object({
62
+ action: z5.literal("generic"),
63
+ title: z5.string().nullish().describe("A human-readable title for the action being approved."),
64
+ description: z5.string().nullish().describe("A human-readable description of the action being approved.")
65
+ });
66
+ var toolCallApprovalRequestSchema = z5.object({
67
+ action: z5.literal("tool-call"),
68
+ title: z5.string().nullish().describe("A human-readable title of the tool."),
69
+ description: z5.string().nullish().describe("A human-readable description of the tool."),
70
+ name: z5.string().describe("The programmatic name of the tool."),
71
+ input: z5.object().nullish().describe("The input for the tool."),
72
+ server: z5.object({
73
+ name: z5.string().describe("The programmatic name of the server."),
74
+ title: z5.string().nullish().describe("A human-readable title for the server."),
75
+ version: z5.string().describe("The version of the server.")
76
+ }).nullish().describe("The server executing the tool.")
77
+ });
78
+ var approvalRequestSchema = z5.discriminatedUnion("action", [
79
+ genericApprovalRequestSchema,
80
+ toolCallApprovalRequestSchema
81
+ ]);
82
+ var approvalDecisionSchema = z5.enum(ApprovalDecision);
83
+ var approvalResponseSchema = z5.object({
84
+ decision: approvalDecisionSchema
85
+ });
86
+
87
+ // src/client/a2a/extensions/common/form/schemas.ts
88
+ import z7 from "zod";
89
+ var baseFieldSchema = z7.object({
90
+ id: z7.string().nonempty(),
91
+ label: z7.string().nonempty(),
92
+ required: z7.boolean().nullish(),
93
+ col_span: z7.int().min(1).max(4).nullish()
94
+ });
95
+ var textFieldSchema = baseFieldSchema.extend({
96
+ type: z7.literal("text"),
97
+ placeholder: z7.string().nullish(),
98
+ default_value: z7.string().nullish(),
99
+ auto_resize: z7.boolean().default(true).nullish()
100
+ });
101
+ var dateFieldSchema = baseFieldSchema.extend({
102
+ type: z7.literal("date"),
103
+ placeholder: z7.string().nullish(),
104
+ default_value: z7.string().nullish()
105
+ });
106
+ var fileFieldSchema = baseFieldSchema.extend({
107
+ type: z7.literal("file"),
108
+ accept: z7.array(z7.string())
109
+ });
110
+ var selectFieldOptionSchema = z7.object({
111
+ id: z7.string().nonempty(),
112
+ label: z7.string().nonempty()
113
+ });
114
+ var singleSelectFieldSchema = baseFieldSchema.extend({
115
+ type: z7.literal("singleselect"),
116
+ options: z7.array(selectFieldOptionSchema).nonempty(),
117
+ default_value: z7.string().nullish()
118
+ });
119
+ var multiSelectFieldSchema = baseFieldSchema.extend({
120
+ type: z7.literal("multiselect"),
121
+ options: z7.array(selectFieldOptionSchema).nonempty(),
122
+ default_value: z7.array(z7.string()).nullish()
123
+ });
124
+ var checkboxFieldSchema = baseFieldSchema.extend({
125
+ type: z7.literal("checkbox"),
126
+ content: z7.string(),
127
+ default_value: z7.boolean().nullish()
128
+ });
129
+ var formFieldSchema = z7.discriminatedUnion("type", [
130
+ textFieldSchema,
131
+ dateFieldSchema,
132
+ fileFieldSchema,
133
+ singleSelectFieldSchema,
134
+ multiSelectFieldSchema,
135
+ checkboxFieldSchema
136
+ ]);
137
+ var textFieldValueSchema = z7.object({
138
+ type: textFieldSchema.shape.type,
139
+ value: z7.string().nullish()
140
+ });
141
+ var dateFieldValueSchema = z7.object({
142
+ type: dateFieldSchema.shape.type,
143
+ value: z7.string().nullish()
144
+ });
145
+ var fileFieldValueSchema = z7.object({
146
+ type: fileFieldSchema.shape.type,
147
+ value: z7.array(
148
+ z7.object({
149
+ uri: z7.string(),
150
+ name: z7.string().nullish(),
151
+ mime_type: z7.string().nullish()
152
+ })
153
+ ).nullish()
154
+ });
155
+ var singleSelectFieldValueSchema = z7.object({
156
+ type: singleSelectFieldSchema.shape.type,
157
+ value: z7.string().nullish()
158
+ });
159
+ var multiSelectFieldValueSchema = z7.object({
160
+ type: multiSelectFieldSchema.shape.type,
161
+ value: z7.array(z7.string()).nullish()
162
+ });
163
+ var checkboxFieldValueSchema = z7.object({
164
+ type: checkboxFieldSchema.shape.type,
165
+ value: z7.boolean().nullish()
166
+ });
167
+ var formFieldValueSchema = z7.discriminatedUnion("type", [
168
+ textFieldValueSchema,
169
+ dateFieldValueSchema,
170
+ fileFieldValueSchema,
171
+ singleSelectFieldValueSchema,
172
+ multiSelectFieldValueSchema,
173
+ checkboxFieldValueSchema
174
+ ]);
175
+ var formRenderSchema = z7.object({
176
+ fields: z7.array(formFieldSchema).nonempty(),
177
+ title: z7.string().nullish(),
178
+ description: z7.string().nullish(),
179
+ columns: z7.int().min(1).max(4).nullish(),
180
+ submit_label: z7.string().nullish()
181
+ });
182
+ var formValuesSchema = z7.record(z7.string(), formFieldValueSchema);
183
+ var formResponseSchema = z7.object({
184
+ values: formValuesSchema
185
+ });
186
+
187
+ // src/client/a2a/extensions/services/embedding/schemas.ts
188
+ import z8 from "zod";
189
+ var embeddingDemandSchema = z8.object({
190
+ description: z8.string().nullish(),
191
+ suggested: z8.array(z8.string()).nullish()
192
+ });
193
+ var embeddingDemandsSchema = z8.object({
194
+ embedding_demands: z8.record(z8.string(), embeddingDemandSchema)
195
+ });
196
+ var embeddingFulfillmentSchema = z8.object({
197
+ identifier: z8.string().nullish(),
198
+ api_base: z8.string(),
199
+ api_key: z8.string(),
200
+ api_model: z8.string()
201
+ });
202
+ var embeddingFulfillmentsSchema = z8.object({
203
+ embedding_fulfillments: z8.record(z8.string(), embeddingFulfillmentSchema)
204
+ });
205
+
206
+ // src/client/a2a/extensions/services/form/schemas.ts
207
+ import z9 from "zod";
208
+ var formDemandsSchema = z9.object({
209
+ form_demands: z9.object({
210
+ initial_form: formRenderSchema
211
+ }).partial()
212
+ });
213
+ var formFulfillmentsSchema = z9.object({
214
+ form_fulfillments: z9.record(z9.string(), formResponseSchema)
215
+ });
216
+
217
+ // src/client/a2a/extensions/services/llm/schemas.ts
218
+ import z10 from "zod";
219
+ var llmDemandSchema = z10.object({
220
+ description: z10.string().nullish(),
221
+ suggested: z10.array(z10.string()).nullish()
222
+ });
223
+ var llmDemandsSchema = z10.object({
224
+ llm_demands: z10.record(z10.string(), llmDemandSchema)
225
+ });
226
+ var llmFulfillmentSchema = z10.object({
227
+ identifier: z10.string().nullish(),
228
+ api_base: z10.string(),
229
+ api_key: z10.string(),
230
+ api_model: z10.string()
231
+ });
232
+ var llmFulfillmentsSchema = z10.object({
233
+ llm_fulfillments: z10.record(z10.string(), llmFulfillmentSchema)
234
+ });
235
+
236
+ // src/client/a2a/extensions/services/mcp/schemas.ts
237
+ import z11 from "zod";
238
+
239
+ // src/client/a2a/extensions/services/mcp/types.ts
240
+ var MCPTransportType = /* @__PURE__ */ ((MCPTransportType2) => {
241
+ MCPTransportType2["StreamableHttp"] = "streamable_http";
242
+ MCPTransportType2["Stdio"] = "stdio";
243
+ return MCPTransportType2;
244
+ })(MCPTransportType || {});
245
+
246
+ // src/client/a2a/extensions/services/mcp/schemas.ts
247
+ var mcpTransportTypeSchema = z11.enum(MCPTransportType);
248
+ var mcpDemandSchema = z11.object({
249
+ description: z11.string().nullish(),
250
+ suggested: z11.array(z11.string()).nullish(),
251
+ allowed_transports: z11.array(mcpTransportTypeSchema).nullish()
252
+ });
253
+ var mcpDemandsSchema = z11.object({
254
+ mcp_demands: z11.record(z11.string(), mcpDemandSchema)
255
+ });
256
+ var mcpFulfillmentSchema = z11.object({
257
+ transport: z11.object({
258
+ type: mcpTransportTypeSchema,
259
+ url: z11.string(),
260
+ headers: z11.record(z11.string(), z11.string()).optional()
261
+ })
262
+ });
263
+ var mcpFulfillmentsSchema = z11.object({
264
+ mcp_fulfillments: z11.record(z11.string(), mcpFulfillmentSchema)
265
+ });
266
+
267
+ // src/client/a2a/extensions/services/platform-api/schemas.ts
268
+ import z12 from "zod";
269
+ var platformApiMetadataSchema = z12.object({
270
+ base_url: z12.string().nullish(),
271
+ auth_token: z12.string(),
272
+ expires_at: z12.string().nullish()
273
+ });
274
+
275
+ // src/client/a2a/extensions/ui/agent-detail/schemas.ts
276
+ import z13 from "zod";
277
+
278
+ // src/client/a2a/extensions/ui/agent-detail/types.ts
279
+ var InteractionMode = /* @__PURE__ */ ((InteractionMode2) => {
280
+ InteractionMode2["SingleTurn"] = "single-turn";
281
+ InteractionMode2["MultiTurn"] = "multi-turn";
282
+ return InteractionMode2;
283
+ })(InteractionMode || {});
284
+
285
+ // src/client/a2a/extensions/ui/agent-detail/schemas.ts
286
+ var interactionModeSchema = z13.enum(InteractionMode);
287
+ var agentDetailToolSchema = z13.object({
288
+ name: z13.string(),
289
+ description: z13.string()
290
+ });
291
+ var agentDetailContributorSchema = z13.object({
292
+ name: z13.string(),
293
+ email: z13.string().nullish(),
294
+ url: z13.string().nullish()
295
+ });
296
+ var agentDetailSchema = z13.object({
297
+ interaction_mode: z13.union([interactionModeSchema, z13.string()]).nullish(),
298
+ user_greeting: z13.string().nullish(),
299
+ input_placeholder: z13.string().nullish(),
300
+ tools: z13.array(agentDetailToolSchema).nullish(),
301
+ framework: z13.string().nullish(),
302
+ license: z13.string().nullish(),
303
+ programming_language: z13.string().nullish(),
304
+ homepage_url: z13.string().nullish(),
305
+ source_code_url: z13.string().nullish(),
306
+ container_image_url: z13.string().nullish(),
307
+ author: agentDetailContributorSchema.nullish(),
308
+ contributors: z13.array(agentDetailContributorSchema).nullish()
309
+ });
310
+
311
+ // src/client/a2a/extensions/ui/canvas/schemas.ts
312
+ import z14 from "zod";
313
+ var canvasEditRequestSchema = z14.object({
314
+ start_index: z14.int(),
315
+ end_index: z14.int(),
316
+ description: z14.string().nullish(),
317
+ artifact_id: z14.string()
318
+ });
319
+
320
+ // src/client/a2a/extensions/ui/citation/schemas.ts
321
+ import z15 from "zod";
322
+ var citationSchema = z15.object({
323
+ url: z15.string().nullish(),
324
+ start_index: z15.number().nullish(),
325
+ end_index: z15.number().nullish(),
326
+ title: z15.string().nullish(),
327
+ description: z15.string().nullish()
328
+ });
329
+ var citationMetadataSchema = z15.object({
330
+ citations: z15.array(citationSchema)
331
+ });
332
+
333
+ // src/client/a2a/extensions/ui/error/schemas.ts
334
+ import z16 from "zod";
335
+ var errorSchema = z16.object({
336
+ title: z16.string(),
337
+ message: z16.string()
338
+ });
339
+ var errorGroupSchema = z16.object({
340
+ message: z16.string(),
341
+ errors: z16.array(errorSchema)
342
+ });
343
+ var errorMetadataSchema = z16.object({
344
+ error: z16.union([errorSchema, errorGroupSchema]),
345
+ context: z16.record(z16.string(), z16.unknown()).nullish(),
346
+ stack_trace: z16.string().nullish()
347
+ });
348
+
349
+ // src/client/a2a/extensions/ui/settings/schemas.ts
350
+ import z17 from "zod";
351
+ var settingsCheckboxFieldSchema = z17.object({
352
+ id: z17.string().nonempty(),
353
+ label: z17.string().nonempty(),
354
+ default_value: z17.boolean()
355
+ });
356
+ var settingsCheckboxGroupFieldSchema = z17.object({
357
+ id: z17.string().nonempty(),
358
+ type: z17.literal("checkbox_group"),
359
+ fields: z17.array(settingsCheckboxFieldSchema)
360
+ });
361
+ var settingsOptionItemSchema = z17.object({
362
+ label: z17.string().nonempty(),
363
+ value: z17.string().nonempty()
364
+ });
365
+ var settingsSingleSelectFieldSchema = z17.object({
366
+ type: z17.literal("single_select"),
367
+ id: z17.string().nonempty(),
368
+ label: z17.string().nonempty(),
369
+ options: z17.array(settingsOptionItemSchema).nonempty(),
370
+ default_value: z17.string().nonempty()
371
+ });
372
+ var settingsFieldSchema = z17.discriminatedUnion("type", [
373
+ settingsCheckboxGroupFieldSchema,
374
+ settingsSingleSelectFieldSchema
375
+ ]);
376
+ var settingsCheckboxFieldValueSchema = z17.object({
377
+ value: z17.boolean()
378
+ });
379
+ var settingsCheckboxGroupFieldValueSchema = z17.object({
380
+ type: z17.literal("checkbox_group"),
381
+ values: z17.record(z17.string(), settingsCheckboxFieldValueSchema)
382
+ });
383
+ var settingsSingleSelectFieldValueSchema = z17.object({
384
+ type: z17.literal("single_select"),
385
+ value: z17.string()
386
+ });
387
+ var settingsFieldValueSchema = z17.discriminatedUnion("type", [
388
+ settingsCheckboxGroupFieldValueSchema,
389
+ settingsSingleSelectFieldValueSchema
390
+ ]);
391
+ var settingsDemandsSchema = z17.object({
392
+ fields: z17.array(settingsFieldSchema)
393
+ });
394
+ var settingsValuesSchema = z17.record(z17.string(), settingsFieldValueSchema);
395
+ var settingsFulfillmentsSchema = z17.object({
396
+ values: settingsValuesSchema
397
+ });
398
+
399
+ // src/client/a2a/extensions/ui/trajectory/schemas.ts
400
+ import z18 from "zod";
401
+ var trajectoryMetadataSchema = z18.object({
402
+ title: z18.string().nullish(),
403
+ content: z18.string().nullish(),
404
+ group_id: z18.string().nullish()
405
+ });
406
+
407
+ // src/client/a2a/extensions/services/llm/index.ts
408
+ var LLM_EXTENSION_URI = "https://a2a-extensions.agentstack.beeai.dev/services/llm/v1";
409
+
410
+ // src/client/a2a/extensions/ui/agent-detail/index.ts
411
+ import z19 from "zod";
412
+ var AGENT_DETAIL_EXTENSION_URI = "https://a2a-extensions.agentstack.beeai.dev/ui/agent-detail/v1";
413
+
414
+ // src/client/a2a/extensions/ui/canvas/index.ts
415
+ import z20 from "zod";
416
+
417
+ // src/client/a2a/extensions/ui/citation/index.ts
418
+ import z21 from "zod";
419
+
420
+ // src/client/a2a/extensions/ui/error/index.ts
421
+ import z22 from "zod";
422
+
423
+ // src/client/a2a/extensions/ui/form-request/index.ts
424
+ import z23 from "zod";
425
+
426
+ // src/client/a2a/extensions/ui/trajectory/index.ts
427
+ import z24 from "zod";
428
+
429
+ // src/experimental/server/a2a/extensions/agent-detail/index.ts
430
+ var AgentDetailExtensionSpec = class {
431
+ uri = AGENT_DETAIL_EXTENSION_URI;
432
+ params;
433
+ constructor(params) {
434
+ this.params = {
435
+ ...params,
436
+ programming_language: params.programming_language ?? "TypeScript"
437
+ };
438
+ }
439
+ toAgentCardExtension() {
440
+ return {
441
+ uri: this.uri,
442
+ required: false,
443
+ params: this.params
444
+ };
445
+ }
446
+ parseFulfillments() {
447
+ return void 0;
448
+ }
449
+ };
450
+
451
+ // src/experimental/server/a2a/extensions/llm/index.ts
452
+ var LLMExtensionSpec = class {
453
+ uri = LLM_EXTENSION_URI;
454
+ params;
455
+ fulfillmentsSchema = llmFulfillmentsSchema;
456
+ constructor(params) {
457
+ this.params = params;
458
+ }
459
+ toAgentCardExtension() {
460
+ return {
461
+ uri: this.uri,
462
+ required: true,
463
+ params: {
464
+ llm_demands: this.params.demands
465
+ }
466
+ };
467
+ }
468
+ parseFulfillments(message) {
469
+ const { metadata } = message;
470
+ if (!metadata) {
471
+ return void 0;
472
+ }
473
+ const extensionData = metadata[this.uri];
474
+ if (!extensionData) {
475
+ return void 0;
476
+ }
477
+ const { success, data } = this.fulfillmentsSchema.safeParse(extensionData);
478
+ if (!success) {
479
+ return void 0;
480
+ }
481
+ return data;
482
+ }
483
+ };
484
+ var LLMExtensionServer = class {
485
+ spec;
486
+ constructor(params) {
487
+ this.spec = new LLMExtensionSpec(params);
488
+ }
489
+ resolveDeps(fulfillments) {
490
+ return {
491
+ fulfillments: fulfillments?.llm_fulfillments
492
+ };
493
+ }
494
+ };
495
+
496
+ // src/experimental/server/a2a/extensions/platform-self-registration/index.ts
497
+ var PLATFORM_SELF_REGISTRATION_EXTENSION_URI = "https://a2a-extensions.agentstack.beeai.dev/services/platform-self-registration/v1";
498
+ var PlatformSelfRegistrationExtensionSpec = class {
499
+ uri = PLATFORM_SELF_REGISTRATION_EXTENSION_URI;
500
+ params;
501
+ constructor(params) {
502
+ this.params = params;
503
+ }
504
+ toAgentCardExtension() {
505
+ return {
506
+ uri: this.uri,
507
+ required: false,
508
+ params: this.params
509
+ };
510
+ }
511
+ parseFulfillments() {
512
+ return void 0;
513
+ }
514
+ };
515
+
516
+ // src/experimental/server/core/config/schemas.ts
517
+ import z25 from "zod";
518
+ var configSchema = z25.object({
519
+ platformUrl: z25.string().default("http://127.0.0.1:8333"),
520
+ productionMode: z25.string().optional().transform((value) => value?.toLowerCase() === "true" || value === "1").default(false)
521
+ });
522
+
523
+ // src/experimental/server/core/config/index.ts
524
+ function loadConfig() {
525
+ return configSchema.parse({
526
+ platformUrl: process.env.PLATFORM_URL,
527
+ productionMode: process.env.PRODUCTION_MODE
528
+ });
529
+ }
530
+ function isProductionMode() {
531
+ return loadConfig().productionMode;
532
+ }
533
+
534
+ // src/experimental/server/core/context/index.ts
535
+ var RunContext = class {
536
+ taskId;
537
+ contextId;
538
+ task;
539
+ constructor(taskId, contextId, task) {
540
+ this.taskId = taskId;
541
+ this.contextId = contextId;
542
+ this.task = task;
543
+ }
544
+ };
545
+
546
+ // src/experimental/server/core/server/index.ts
547
+ import { DefaultRequestHandler, InMemoryTaskStore } from "@a2a-js/sdk/server";
548
+ import { agentCardHandler, jsonRpcHandler, UserBuilder } from "@a2a-js/sdk/server/express";
549
+ import express from "express";
550
+
551
+ // src/client/api/configuration/schemas.ts
552
+ import z26 from "zod";
553
+ var systemConfigurationSchema = z26.object({
554
+ id: z26.string(),
555
+ created_by: z26.string(),
556
+ updated_at: z26.string(),
557
+ default_embedding_model: z26.string().nullish(),
558
+ default_llm_model: z26.string().nullish()
559
+ });
560
+ var readSystemConfigurationRequestSchema = z26.never();
561
+ var readSystemConfigurationResponseSchema = systemConfigurationSchema;
562
+ var updateSystemConfigurationRequestSchema = z26.object({
563
+ default_embedding_model: z26.string().nullish(),
564
+ default_llm_model: z26.string().nullish()
565
+ });
566
+ var updateSystemConfigurationResponseSchema = systemConfigurationSchema;
567
+
568
+ // src/client/api/configuration/api.ts
569
+ function createConfigurationApi(callApi) {
570
+ const readSystemConfiguration = () => callApi({
571
+ method: "GET" /* Get */,
572
+ path: "/api/v1/configurations/system",
573
+ schema: readSystemConfigurationResponseSchema
574
+ });
575
+ const updateSystemConfiguration = ({ ...body }) => callApi({
576
+ method: "PUT" /* Put */,
577
+ path: "/api/v1/configurations/system",
578
+ schema: updateSystemConfigurationResponseSchema,
579
+ body
580
+ });
581
+ return {
582
+ readSystemConfiguration,
583
+ updateSystemConfiguration
584
+ };
585
+ }
586
+
587
+ // src/client/api/connectors/schemas.ts
588
+ import z28 from "zod";
589
+
590
+ // src/client/api/core/schemas.ts
591
+ import z27 from "zod";
592
+ var paginationQuerySchema = z27.object({
593
+ limit: z27.number().optional(),
594
+ order: z27.string().optional(),
595
+ order_by: z27.string().optional(),
596
+ page_token: z27.string().nullish()
597
+ });
598
+ var paginatedResponseSchema = z27.object({
599
+ items: z27.array(z27.unknown()),
600
+ total_count: z27.number(),
601
+ has_more: z27.boolean(),
602
+ next_page_token: z27.string().nullable()
603
+ });
604
+
605
+ // src/client/api/connectors/types.ts
606
+ var ConnectorState = /* @__PURE__ */ ((ConnectorState2) => {
607
+ ConnectorState2["Created"] = "created";
608
+ ConnectorState2["AuthRequired"] = "auth_required";
609
+ ConnectorState2["Connected"] = "connected";
610
+ ConnectorState2["Disconnected"] = "disconnected";
611
+ return ConnectorState2;
612
+ })(ConnectorState || {});
613
+
614
+ // src/client/api/connectors/schemas.ts
615
+ var connectorStateSchema = z28.enum(ConnectorState);
616
+ var connectorSchema = z28.object({
617
+ id: z28.string(),
618
+ url: z28.string(),
619
+ state: connectorStateSchema,
620
+ auth_request: z28.object({
621
+ type: z28.literal("code"),
622
+ authorization_endpoint: z28.string()
623
+ }).nullable(),
624
+ disconnect_reason: z28.string().nullable(),
625
+ metadata: z28.record(z28.string(), z28.string()).nullable()
626
+ });
627
+ var listConnectorsRequestSchema = z28.never();
628
+ var listConnectorsResponseSchema = paginatedResponseSchema.extend({
629
+ items: z28.array(connectorSchema)
630
+ });
631
+ var createConnectorRequestSchema = z28.object({
632
+ match_preset: z28.boolean(),
633
+ url: z28.string(),
634
+ client_id: z28.string().nullish(),
635
+ client_secret: z28.string().nullish(),
636
+ metadata: z28.record(z28.string(), z28.string()).nullish()
637
+ });
638
+ var createConnectorResponseSchema = connectorSchema;
639
+ var readConnectorRequestSchema = z28.object({
640
+ connector_id: z28.string()
641
+ });
642
+ var readConnectorResponseSchema = connectorSchema;
643
+ var deleteConnectorRequestSchema = z28.object({
644
+ connector_id: z28.string()
645
+ });
646
+ var deleteConnectorResponseSchema = z28.null();
647
+ var connectConnectorRequestSchema = z28.object({
648
+ connector_id: z28.string(),
649
+ redirect_url: z28.string().nullish()
650
+ });
651
+ var connectConnectorResponseSchema = connectorSchema;
652
+ var disconnectConnectorRequestSchema = z28.object({
653
+ connector_id: z28.string()
654
+ });
655
+ var disconnectConnectorResponseSchema = connectorSchema;
656
+ var connectorPresetSchema = z28.object({
657
+ url: z28.string(),
658
+ metadata: z28.record(z28.string(), z28.string()).nullable()
659
+ });
660
+ var listConnectorPresetsRequestSchema = z28.never();
661
+ var listConnectorPresetsResponseSchema = paginatedResponseSchema.extend({
662
+ items: z28.array(connectorPresetSchema)
663
+ });
664
+
665
+ // src/client/api/connectors/api.ts
666
+ function createConnectorsApi(callApi) {
667
+ const listConnectors = () => callApi({
668
+ method: "GET" /* Get */,
669
+ path: "/api/v1/connectors",
670
+ schema: listConnectorsResponseSchema
671
+ });
672
+ const createConnector = ({ ...body }) => callApi({
673
+ method: "POST" /* Post */,
674
+ path: "/api/v1/connectors",
675
+ schema: createConnectorResponseSchema,
676
+ body
677
+ });
678
+ const readConnector = ({ connector_id }) => callApi({
679
+ method: "GET" /* Get */,
680
+ path: `/api/v1/connectors/${connector_id}`,
681
+ schema: readConnectorResponseSchema
682
+ });
683
+ const deleteConnector = ({ connector_id }) => callApi({
684
+ method: "DELETE" /* Delete */,
685
+ path: `/api/v1/connectors/${connector_id}`,
686
+ schema: deleteConnectorResponseSchema
687
+ });
688
+ const connectConnector = ({ connector_id, ...body }) => callApi({
689
+ method: "POST" /* Post */,
690
+ path: `/api/v1/connectors/${connector_id}/connect`,
691
+ schema: connectConnectorResponseSchema,
692
+ body
693
+ });
694
+ const disconnectConnector = ({ connector_id }) => callApi({
695
+ method: "POST" /* Post */,
696
+ path: `/api/v1/connectors/${connector_id}/disconnect`,
697
+ schema: disconnectConnectorResponseSchema
698
+ });
699
+ const listConnectorPresets = () => callApi({
700
+ method: "GET" /* Get */,
701
+ path: "/api/v1/connectors/presets",
702
+ schema: listConnectorPresetsResponseSchema
703
+ });
704
+ return {
705
+ listConnectors,
706
+ createConnector,
707
+ readConnector,
708
+ deleteConnector,
709
+ connectConnector,
710
+ disconnectConnector,
711
+ listConnectorPresets
712
+ };
713
+ }
714
+
715
+ // src/client/api/contexts/schemas.ts
716
+ import z31 from "zod";
717
+
718
+ // src/client/a2a/protocol/schemas.ts
719
+ import z30 from "zod";
720
+
721
+ // src/client/a2a/protocol/utils.ts
722
+ import z29 from "zod";
723
+ function a2aSchema(schema) {
724
+ return z29.preprocess((value) => normalizeOptionalNulls(schema, value), schema);
725
+ }
726
+ function normalizeOptionalNulls(schema, data) {
727
+ if (schema instanceof z29.ZodOptional) {
728
+ if (data === null) {
729
+ return void 0;
730
+ }
731
+ return normalizeOptionalNulls(schema.unwrap(), data);
732
+ }
733
+ if (schema instanceof z29.ZodObject) {
734
+ if (data === null || typeof data !== "object" || Array.isArray(data)) {
735
+ return data;
736
+ }
737
+ const { shape } = schema;
738
+ const record = data;
739
+ return Object.keys(record).reduce((acc, key) => {
740
+ acc[key] = key in shape ? normalizeOptionalNulls(shape[key], record[key]) : record[key];
741
+ return acc;
742
+ }, {});
743
+ }
744
+ return data;
745
+ }
746
+
747
+ // src/client/a2a/protocol/schemas.ts
748
+ var agentInterfaceSchema = a2aSchema(
749
+ z30.object({
750
+ transport: z30.string(),
751
+ url: z30.string()
752
+ })
753
+ );
754
+ var agentExtensionSchema = a2aSchema(
755
+ z30.object({
756
+ uri: z30.string(),
757
+ description: z30.string().optional(),
758
+ required: z30.boolean().optional(),
759
+ params: z30.record(z30.string(), z30.unknown()).optional()
760
+ })
761
+ );
762
+ var agentCapabilitiesSchema = a2aSchema(
763
+ z30.object({
764
+ extensions: z30.array(agentExtensionSchema).optional(),
765
+ pushNotifications: z30.boolean().optional(),
766
+ stateTransitionHistory: z30.boolean().optional(),
767
+ streaming: z30.boolean().optional()
768
+ })
769
+ );
770
+ var agentProviderSchema = a2aSchema(
771
+ z30.object({
772
+ url: z30.string(),
773
+ organization: z30.string()
774
+ })
775
+ );
776
+ var agentCardSignatureSchema = a2aSchema(
777
+ z30.object({
778
+ signature: z30.string(),
779
+ protected: z30.string(),
780
+ header: z30.record(z30.string(), z30.unknown()).optional()
781
+ })
782
+ );
783
+ var agentSkillSchema = a2aSchema(
784
+ z30.object({
785
+ id: z30.string(),
786
+ name: z30.string(),
787
+ description: z30.string(),
788
+ tags: z30.array(z30.string()),
789
+ inputModes: z30.array(z30.string()).optional(),
790
+ outputModes: z30.array(z30.string()).optional(),
791
+ examples: z30.array(z30.string()).optional(),
792
+ security: z30.array(z30.record(z30.string(), z30.array(z30.string()))).optional()
793
+ })
794
+ );
795
+ var authorizationCodeOAuthFlowSchema = a2aSchema(
796
+ z30.object({
797
+ authorizationUrl: z30.string(),
798
+ tokenUrl: z30.string(),
799
+ scopes: z30.record(z30.string(), z30.string()),
800
+ refreshUrl: z30.string().optional()
801
+ })
802
+ );
803
+ var clientCredentialsOAuthFlowSchema = a2aSchema(
804
+ z30.object({
805
+ tokenUrl: z30.string(),
806
+ scopes: z30.record(z30.string(), z30.string()),
807
+ refreshUrl: z30.string().optional()
808
+ })
809
+ );
810
+ var implicitOAuthFlowSchema = a2aSchema(
811
+ z30.object({
812
+ authorizationUrl: z30.string(),
813
+ scopes: z30.record(z30.string(), z30.string()),
814
+ refreshUrl: z30.string().optional()
815
+ })
816
+ );
817
+ var passwordOAuthFlowSchema = a2aSchema(
818
+ z30.object({
819
+ tokenUrl: z30.string(),
820
+ scopes: z30.record(z30.string(), z30.string()),
821
+ refreshUrl: z30.string().optional()
822
+ })
823
+ );
824
+ var oauthFlowsSchema = a2aSchema(
825
+ z30.object({
826
+ authorizationCode: authorizationCodeOAuthFlowSchema.optional(),
827
+ clientCredentials: clientCredentialsOAuthFlowSchema.optional(),
828
+ implicit: implicitOAuthFlowSchema.optional(),
829
+ password: passwordOAuthFlowSchema.optional()
830
+ })
831
+ );
832
+ var apiKeySecuritySchemeSchema = a2aSchema(
833
+ z30.object({
834
+ type: z30.literal("apiKey"),
835
+ name: z30.string(),
836
+ in: z30.literal(["cookie", "header", "query"]),
837
+ description: z30.string().optional()
838
+ })
839
+ );
840
+ var httpAuthSecuritySchemeSchema = a2aSchema(
841
+ z30.object({
842
+ type: z30.literal("http"),
843
+ scheme: z30.string(),
844
+ description: z30.string().optional(),
845
+ bearerFormat: z30.string().optional()
846
+ })
847
+ );
848
+ var oauth2SecuritySchemeSchema = a2aSchema(
849
+ z30.object({
850
+ type: z30.literal("oauth2"),
851
+ flows: oauthFlowsSchema,
852
+ description: z30.string().optional(),
853
+ oauth2MetadataUrl: z30.string().optional()
854
+ })
855
+ );
856
+ var openIdConnectSecuritySchemeSchema = a2aSchema(
857
+ z30.object({
858
+ type: z30.literal("openIdConnect"),
859
+ openIdConnectUrl: z30.string(),
860
+ description: z30.string().optional()
861
+ })
862
+ );
863
+ var mutualTlsSecuritySchemeSchema = a2aSchema(
864
+ z30.object({
865
+ type: z30.literal("mutualTLS"),
866
+ description: z30.string().optional()
867
+ })
868
+ );
869
+ var securitySchemeSchema = a2aSchema(
870
+ z30.union([
871
+ apiKeySecuritySchemeSchema,
872
+ httpAuthSecuritySchemeSchema,
873
+ oauth2SecuritySchemeSchema,
874
+ openIdConnectSecuritySchemeSchema,
875
+ mutualTlsSecuritySchemeSchema
876
+ ])
877
+ );
878
+ var agentCardSchema = a2aSchema(
879
+ z30.object({
880
+ url: z30.string(),
881
+ name: z30.string(),
882
+ description: z30.string(),
883
+ version: z30.string(),
884
+ protocolVersion: z30.string(),
885
+ capabilities: agentCapabilitiesSchema,
886
+ defaultInputModes: z30.array(z30.string()),
887
+ defaultOutputModes: z30.array(z30.string()),
888
+ skills: z30.array(agentSkillSchema),
889
+ iconUrl: z30.string().optional(),
890
+ documentationUrl: z30.string().optional(),
891
+ preferredTransport: z30.string().optional(),
892
+ supportsAuthenticatedExtendedCard: z30.boolean().optional(),
893
+ additionalInterfaces: z30.array(agentInterfaceSchema).optional(),
894
+ provider: agentProviderSchema.optional(),
895
+ signatures: z30.array(agentCardSignatureSchema).optional(),
896
+ security: z30.array(z30.record(z30.string(), z30.array(z30.string()))).optional(),
897
+ securitySchemes: z30.record(z30.string(), securitySchemeSchema).optional()
898
+ })
899
+ );
900
+ var fileWithBytesSchema = a2aSchema(
901
+ z30.object({
902
+ bytes: z30.string(),
903
+ mimeType: z30.string().optional(),
904
+ name: z30.string().optional()
905
+ })
906
+ );
907
+ var fileWithUriSchema = a2aSchema(
908
+ z30.object({
909
+ uri: z30.string(),
910
+ mimeType: z30.string().optional(),
911
+ name: z30.string().optional()
912
+ })
913
+ );
914
+ var textPartSchema = a2aSchema(
915
+ z30.object({
916
+ kind: z30.literal("text"),
917
+ text: z30.string(),
918
+ metadata: z30.record(z30.string(), z30.unknown()).optional()
919
+ })
920
+ );
921
+ var filePartSchema = a2aSchema(
922
+ z30.object({
923
+ kind: z30.literal("file"),
924
+ file: z30.union([fileWithBytesSchema, fileWithUriSchema]),
925
+ metadata: z30.record(z30.string(), z30.unknown()).optional()
926
+ })
927
+ );
928
+ var dataPartSchema = a2aSchema(
929
+ z30.object({
930
+ kind: z30.literal("data"),
931
+ data: z30.record(z30.string(), z30.unknown()),
932
+ metadata: z30.record(z30.string(), z30.unknown()).optional()
933
+ })
934
+ );
935
+ var partSchema = a2aSchema(z30.union([textPartSchema, filePartSchema, dataPartSchema]));
936
+ var artifactSchema = a2aSchema(
937
+ z30.object({
938
+ artifactId: z30.string(),
939
+ parts: z30.array(partSchema),
940
+ description: z30.string().optional(),
941
+ extensions: z30.array(z30.string()).optional(),
942
+ metadata: z30.record(z30.string(), z30.unknown()).optional(),
943
+ name: z30.string().optional()
944
+ })
945
+ );
946
+ var messageSchema = a2aSchema(
947
+ z30.object({
948
+ kind: z30.literal("message"),
949
+ messageId: z30.string(),
950
+ parts: z30.array(partSchema),
951
+ role: z30.literal(["agent", "user"]),
952
+ contextId: z30.string().optional(),
953
+ extensions: z30.array(z30.string()).optional(),
954
+ metadata: z30.record(z30.string(), z30.unknown()).optional(),
955
+ referenceTaskIds: z30.array(z30.string()).optional(),
956
+ taskId: z30.string().optional()
957
+ })
958
+ );
959
+ var taskStatusSchema = a2aSchema(
960
+ z30.object({
961
+ state: z30.literal([
962
+ "submitted",
963
+ "working",
964
+ "input-required",
965
+ "completed",
966
+ "canceled",
967
+ "failed",
968
+ "rejected",
969
+ "auth-required",
970
+ "unknown"
971
+ ]),
972
+ message: messageSchema.optional(),
973
+ timestamp: z30.string().optional()
974
+ })
975
+ );
976
+ var taskStatusUpdateEventSchema = a2aSchema(
977
+ z30.object({
978
+ kind: z30.literal("status-update"),
979
+ taskId: z30.string(),
980
+ contextId: z30.string(),
981
+ status: taskStatusSchema,
982
+ final: z30.boolean(),
983
+ metadata: z30.record(z30.string(), z30.unknown()).optional()
984
+ })
985
+ );
986
+ var taskSchema = a2aSchema(
987
+ z30.object({
988
+ kind: z30.literal("task"),
989
+ id: z30.string(),
990
+ contextId: z30.string(),
991
+ status: taskStatusSchema,
992
+ artifacts: z30.array(artifactSchema).optional(),
993
+ history: z30.array(messageSchema).optional(),
994
+ metadata: z30.record(z30.string(), z30.unknown()).optional()
995
+ })
996
+ );
997
+ var taskArtifactUpdateEventSchema = a2aSchema(
998
+ z30.object({
999
+ kind: z30.literal("artifact-update"),
1000
+ taskId: z30.string(),
1001
+ contextId: z30.string(),
1002
+ artifact: artifactSchema,
1003
+ append: z30.boolean().optional(),
1004
+ lastChunk: z30.boolean().optional(),
1005
+ metadata: z30.record(z30.string(), z30.unknown()).optional()
1006
+ })
1007
+ );
1008
+ var errorBaseSchema = z30.object({
1009
+ message: z30.string(),
1010
+ data: z30.record(z30.string(), z30.unknown()).optional()
1011
+ });
1012
+ var jsonRpcErrorSchema = a2aSchema(
1013
+ errorBaseSchema.extend({
1014
+ code: z30.number()
1015
+ })
1016
+ );
1017
+ var jsonParseErrorSchema = a2aSchema(
1018
+ errorBaseSchema.extend({
1019
+ code: z30.literal(-32700)
1020
+ })
1021
+ );
1022
+ var invalidRequestErrorSchema = a2aSchema(
1023
+ errorBaseSchema.extend({
1024
+ code: z30.literal(-32600)
1025
+ })
1026
+ );
1027
+ var methodNotFoundErrorSchema = a2aSchema(
1028
+ errorBaseSchema.extend({
1029
+ code: z30.literal(-32601)
1030
+ })
1031
+ );
1032
+ var invalidParamsErrorSchema = a2aSchema(
1033
+ errorBaseSchema.extend({
1034
+ code: z30.literal(-32602)
1035
+ })
1036
+ );
1037
+ var internalErrorSchema = a2aSchema(
1038
+ errorBaseSchema.extend({
1039
+ code: z30.literal(-32603)
1040
+ })
1041
+ );
1042
+ var taskNotFoundErrorSchema = a2aSchema(
1043
+ errorBaseSchema.extend({
1044
+ code: z30.literal(-32001)
1045
+ })
1046
+ );
1047
+ var taskNotCancelableErrorSchema = a2aSchema(
1048
+ errorBaseSchema.extend({
1049
+ code: z30.literal(-32002)
1050
+ })
1051
+ );
1052
+ var pushNotificationNotSupportedErrorSchema = a2aSchema(
1053
+ errorBaseSchema.extend({
1054
+ code: z30.literal(-32003)
1055
+ })
1056
+ );
1057
+ var unsupportedOperationErrorSchema = a2aSchema(
1058
+ errorBaseSchema.extend({
1059
+ code: z30.literal(-32004)
1060
+ })
1061
+ );
1062
+ var contentTypeNotSupportedErrorSchema = a2aSchema(
1063
+ errorBaseSchema.extend({
1064
+ code: z30.literal(-32005)
1065
+ })
1066
+ );
1067
+ var invalidAgentResponseErrorSchema = a2aSchema(
1068
+ errorBaseSchema.extend({
1069
+ code: z30.literal(-32006)
1070
+ })
1071
+ );
1072
+ var authenticatedExtendedCardNotConfiguredErrorSchema = a2aSchema(
1073
+ errorBaseSchema.extend({
1074
+ code: z30.literal(-32007)
1075
+ })
1076
+ );
1077
+ var jsonRpcErrorResponseSchema = a2aSchema(
1078
+ z30.object({
1079
+ jsonrpc: z30.literal("2.0"),
1080
+ id: z30.union([z30.string(), z30.number()]).nullable(),
1081
+ error: z30.union([
1082
+ jsonRpcErrorSchema,
1083
+ jsonParseErrorSchema,
1084
+ invalidRequestErrorSchema,
1085
+ methodNotFoundErrorSchema,
1086
+ invalidParamsErrorSchema,
1087
+ internalErrorSchema,
1088
+ taskNotFoundErrorSchema,
1089
+ taskNotCancelableErrorSchema,
1090
+ pushNotificationNotSupportedErrorSchema,
1091
+ unsupportedOperationErrorSchema,
1092
+ contentTypeNotSupportedErrorSchema,
1093
+ invalidAgentResponseErrorSchema,
1094
+ authenticatedExtendedCardNotConfiguredErrorSchema
1095
+ ])
1096
+ })
1097
+ );
1098
+ var getTaskSuccessResponseSchema = a2aSchema(
1099
+ z30.object({
1100
+ jsonrpc: z30.literal("2.0"),
1101
+ id: z30.union([z30.string(), z30.number()]).nullable(),
1102
+ result: taskSchema
1103
+ })
1104
+ );
1105
+ var getTaskResponseSchema = a2aSchema(z30.union([jsonRpcErrorResponseSchema, getTaskSuccessResponseSchema]));
1106
+
1107
+ // src/client/api/contexts/types.ts
1108
+ var ContextHistoryKind = /* @__PURE__ */ ((ContextHistoryKind2) => {
1109
+ ContextHistoryKind2["Artifact"] = "artifact";
1110
+ ContextHistoryKind2["Message"] = "message";
1111
+ return ContextHistoryKind2;
1112
+ })(ContextHistoryKind || {});
1113
+
1114
+ // src/client/api/contexts/schemas.ts
1115
+ var contextSchema = z31.object({
1116
+ id: z31.string(),
1117
+ created_at: z31.string(),
1118
+ updated_at: z31.string(),
1119
+ last_active_at: z31.string(),
1120
+ created_by: z31.string(),
1121
+ provider_id: z31.string().nullable(),
1122
+ metadata: z31.record(z31.string(), z31.unknown()).nullable()
1123
+ });
1124
+ var listContextsRequestSchema = z31.object({
1125
+ query: paginationQuerySchema.extend({
1126
+ provider_id: z31.string().nullish(),
1127
+ include_empty: z31.boolean().optional()
1128
+ }).optional()
1129
+ });
1130
+ var listContextsResponseSchema = paginatedResponseSchema.extend({
1131
+ items: z31.array(contextSchema)
1132
+ });
1133
+ var createContextRequestSchema = z31.object({
1134
+ provider_id: z31.string().nullish(),
1135
+ metadata: z31.record(z31.string(), z31.string()).nullish()
1136
+ });
1137
+ var createContextResponseSchema = contextSchema;
1138
+ var readContextRequestSchema = z31.object({
1139
+ context_id: z31.string()
1140
+ });
1141
+ var readContextResponseSchema = contextSchema;
1142
+ var updateContextRequestSchema = z31.object({
1143
+ context_id: z31.string(),
1144
+ metadata: z31.record(z31.string(), z31.string()).nullish()
1145
+ });
1146
+ var updateContextResponseSchema = contextSchema;
1147
+ var deleteContextRequestSchema = z31.object({
1148
+ context_id: z31.string()
1149
+ });
1150
+ var deleteContextResponseSchema = z31.null();
1151
+ var contextHistoryKind = z31.enum(ContextHistoryKind);
1152
+ var contextHistorySchema = z31.object({
1153
+ id: z31.string(),
1154
+ context_id: z31.string(),
1155
+ created_at: z31.string(),
1156
+ kind: contextHistoryKind,
1157
+ data: z31.union([artifactSchema, messageSchema])
1158
+ });
1159
+ var listContextHistoryRequestSchema = z31.object({
1160
+ context_id: z31.string(),
1161
+ query: paginationQuerySchema.optional()
1162
+ });
1163
+ var listContextHistoryResponseSchema = paginatedResponseSchema.extend({
1164
+ items: z31.array(contextHistorySchema)
1165
+ });
1166
+ var createContextHistoryRequestSchema = z31.object({
1167
+ context_id: z31.string(),
1168
+ data: z31.union([artifactSchema, messageSchema])
1169
+ });
1170
+ var createContextHistoryResponseSchema = z31.null();
1171
+ var patchContextMetadataRequestSchema = z31.object({
1172
+ context_id: z31.string(),
1173
+ metadata: z31.record(z31.string(), z31.union([z31.string(), z31.null()]))
1174
+ });
1175
+ var patchContextMetadataResponseSchema = contextSchema;
1176
+ var contextTokenSchema = z31.object({
1177
+ token: z31.string(),
1178
+ expires_at: z31.string().nullable()
1179
+ });
1180
+ var resourceIdPermissionSchema = z31.object({
1181
+ id: z31.string()
1182
+ });
1183
+ var contextPermissionsGrantSchema = z31.object({
1184
+ files: z31.array(z31.literal(["read", "write", "extract", "*"])).optional(),
1185
+ vector_stores: z31.array(z31.literal(["read", "write", "*"])).optional(),
1186
+ context_data: z31.array(z31.literal(["read", "write", "*"])).optional()
1187
+ });
1188
+ var globalPermissionsGrantSchema = contextPermissionsGrantSchema.extend({
1189
+ feedback: z31.array(z31.literal("write")).optional(),
1190
+ llm: z31.array(z31.union([z31.literal("*"), resourceIdPermissionSchema])).optional(),
1191
+ embeddings: z31.array(z31.union([z31.literal("*"), resourceIdPermissionSchema])).optional(),
1192
+ model_providers: z31.array(z31.literal(["read", "write", "*"])).optional(),
1193
+ a2a_proxy: z31.array(z31.union([z31.literal("*"), z31.string()])).optional(),
1194
+ providers: z31.array(z31.literal(["read", "write", "*"])).optional(),
1195
+ provider_variables: z31.array(z31.literal(["read", "write", "*"])).optional(),
1196
+ contexts: z31.array(z31.literal(["read", "write", "*"])).optional(),
1197
+ connectors: z31.array(z31.literal(["read", "write", "proxy", "*"])).optional()
1198
+ }).superRefine((val, ctx) => {
1199
+ if (!val.a2a_proxy) return;
1200
+ if (val.a2a_proxy.length === 0) {
1201
+ ctx.addIssue({
1202
+ code: z31.ZodIssueCode.custom,
1203
+ message: "a2a_proxy cannot be empty array",
1204
+ path: ["a2a_proxy"]
1205
+ });
1206
+ return;
1207
+ }
1208
+ const hasWildcard = val.a2a_proxy.includes("*");
1209
+ const hasOthers = val.a2a_proxy.some((v) => v !== "*");
1210
+ if (hasWildcard && hasOthers) {
1211
+ ctx.addIssue({
1212
+ code: z31.ZodIssueCode.custom,
1213
+ message: "a2a_proxy cannot mix '*' with specific providers",
1214
+ path: ["a2a_proxy"]
1215
+ });
1216
+ }
1217
+ });
1218
+ var createContextTokenRequestSchema = z31.object({
1219
+ context_id: z31.string(),
1220
+ grant_context_permissions: contextPermissionsGrantSchema.optional(),
1221
+ grant_global_permissions: globalPermissionsGrantSchema.optional()
1222
+ });
1223
+ var createContextTokenResponseSchema = contextTokenSchema;
1224
+
1225
+ // src/client/api/contexts/api.ts
1226
+ function createContextsApi(callApi) {
1227
+ const listContexts = ({ query }) => callApi({
1228
+ method: "GET" /* Get */,
1229
+ path: "/api/v1/contexts",
1230
+ schema: listContextsResponseSchema,
1231
+ query
1232
+ });
1233
+ const createContext = ({ ...body }) => callApi({
1234
+ method: "POST" /* Post */,
1235
+ path: "/api/v1/contexts",
1236
+ schema: createContextResponseSchema,
1237
+ body
1238
+ });
1239
+ const readContext = ({ context_id }) => callApi({
1240
+ method: "GET" /* Get */,
1241
+ path: `/api/v1/contexts/${context_id}`,
1242
+ schema: readContextResponseSchema
1243
+ });
1244
+ const updateContext = ({ context_id, ...body }) => callApi({
1245
+ method: "PUT" /* Put */,
1246
+ path: `/api/v1/contexts/${context_id}`,
1247
+ schema: updateContextResponseSchema,
1248
+ body
1249
+ });
1250
+ const deleteContext = ({ context_id }) => callApi({
1251
+ method: "DELETE" /* Delete */,
1252
+ path: `/api/v1/contexts/${context_id}`,
1253
+ schema: deleteContextResponseSchema
1254
+ });
1255
+ const listContextHistory = ({ context_id, query }) => callApi({
1256
+ method: "GET" /* Get */,
1257
+ path: `/api/v1/contexts/${context_id}/history`,
1258
+ schema: listContextHistoryResponseSchema,
1259
+ query
1260
+ });
1261
+ const createContextHistory = ({ context_id, ...body }) => callApi({
1262
+ method: "POST" /* Post */,
1263
+ path: `/api/v1/contexts/${context_id}/history`,
1264
+ schema: createContextHistoryResponseSchema,
1265
+ body
1266
+ });
1267
+ const patchContextMetadata = ({ context_id, ...body }) => callApi({
1268
+ method: "PATCH" /* Patch */,
1269
+ path: `/api/v1/contexts/${context_id}/metadata`,
1270
+ schema: patchContextMetadataResponseSchema,
1271
+ body
1272
+ });
1273
+ const createContextToken = ({ context_id, ...body }) => callApi({
1274
+ method: "POST" /* Post */,
1275
+ path: `/api/v1/contexts/${context_id}/token`,
1276
+ schema: createContextTokenResponseSchema,
1277
+ body
1278
+ });
1279
+ return {
1280
+ listContexts,
1281
+ createContext,
1282
+ readContext,
1283
+ updateContext,
1284
+ deleteContext,
1285
+ listContextHistory,
1286
+ createContextHistory,
1287
+ patchContextMetadata,
1288
+ createContextToken
1289
+ };
1290
+ }
1291
+
1292
+ // src/client/api/files/schemas.ts
1293
+ import z32 from "zod";
1294
+
1295
+ // src/client/api/files/types.ts
1296
+ var FileType = /* @__PURE__ */ ((FileType2) => {
1297
+ FileType2["UserUpload"] = "user_upload";
1298
+ FileType2["ExtractedText"] = "extracted_text";
1299
+ return FileType2;
1300
+ })(FileType || {});
1301
+
1302
+ // src/client/api/files/schemas.ts
1303
+ var fileTypeSchema = z32.enum(FileType);
1304
+ var fileSchema = z32.object({
1305
+ id: z32.string(),
1306
+ filename: z32.string(),
1307
+ content_type: z32.string(),
1308
+ file_type: fileTypeSchema,
1309
+ created_by: z32.string(),
1310
+ created_at: z32.string(),
1311
+ context_id: z32.string().nullish(),
1312
+ file_size_bytes: z32.number().nullish(),
1313
+ parent_file_id: z32.string().nullish()
1314
+ });
1315
+ var createFileRequestSchema = z32.object({
1316
+ context_id: z32.string().nullable(),
1317
+ file: z32.union([
1318
+ z32.file(),
1319
+ z32.object({
1320
+ blob: z32.instanceof(Blob),
1321
+ filename: z32.string()
1322
+ })
1323
+ ])
1324
+ });
1325
+ var createFileResponseSchema = fileSchema;
1326
+ var readFileRequestSchema = z32.object({
1327
+ context_id: z32.string().nullable(),
1328
+ file_id: z32.string()
1329
+ });
1330
+ var readFileResponseSchema = fileSchema;
1331
+ var deleteFileRequestSchema = z32.object({
1332
+ context_id: z32.string().nullable(),
1333
+ file_id: z32.string()
1334
+ });
1335
+ var deleteFileResponseSchema = z32.null();
1336
+ var readFileContentRequestSchema = z32.object({
1337
+ context_id: z32.string().nullable(),
1338
+ file_id: z32.string()
1339
+ });
1340
+ var readFileContentResponseSchema = z32.unknown();
1341
+
1342
+ // src/client/api/files/api.ts
1343
+ function createFilesApi(callApi) {
1344
+ const createFile = ({ context_id, file }) => {
1345
+ const body = new FormData();
1346
+ if (file instanceof File) {
1347
+ body.append("file", file);
1348
+ } else {
1349
+ body.append("file", file.blob, file.filename);
1350
+ }
1351
+ return callApi({
1352
+ method: "POST" /* Post */,
1353
+ path: "/api/v1/files",
1354
+ schema: createFileResponseSchema,
1355
+ query: { context_id },
1356
+ body
1357
+ });
1358
+ };
1359
+ const readFile = ({ context_id, file_id }) => callApi({
1360
+ method: "GET" /* Get */,
1361
+ path: `/api/v1/files/${file_id}`,
1362
+ schema: readFileResponseSchema,
1363
+ query: { context_id }
1364
+ });
1365
+ const deleteFile = ({ context_id, file_id }) => callApi({
1366
+ method: "DELETE" /* Delete */,
1367
+ path: `/api/v1/files/${file_id}`,
1368
+ schema: deleteFileResponseSchema,
1369
+ query: { context_id }
1370
+ });
1371
+ const readFileContent = ({ context_id, file_id }) => callApi({
1372
+ method: "GET" /* Get */,
1373
+ path: `/api/v1/files/${file_id}/content`,
1374
+ schema: readFileContentResponseSchema,
1375
+ query: { context_id }
1376
+ });
1377
+ return {
1378
+ createFile,
1379
+ readFile,
1380
+ deleteFile,
1381
+ readFileContent
1382
+ };
1383
+ }
1384
+
1385
+ // src/client/api/model-providers/schemas.ts
1386
+ import z33 from "zod";
1387
+
1388
+ // src/client/api/model-providers/types.ts
1389
+ var ModelCapability = /* @__PURE__ */ ((ModelCapability2) => {
1390
+ ModelCapability2["Llm"] = "llm";
1391
+ ModelCapability2["Embedding"] = "embedding";
1392
+ return ModelCapability2;
1393
+ })(ModelCapability || {});
1394
+ var ModelProviderType = /* @__PURE__ */ ((ModelProviderType2) => {
1395
+ ModelProviderType2["Anthropic"] = "anthropic";
1396
+ ModelProviderType2["Cerebras"] = "cerebras";
1397
+ ModelProviderType2["Chutes"] = "chutes";
1398
+ ModelProviderType2["Cohere"] = "cohere";
1399
+ ModelProviderType2["DeepSeek"] = "deepseek";
1400
+ ModelProviderType2["Gemini"] = "gemini";
1401
+ ModelProviderType2["GitHub"] = "github";
1402
+ ModelProviderType2["Groq"] = "groq";
1403
+ ModelProviderType2["Watsonx"] = "watsonx";
1404
+ ModelProviderType2["Jan"] = "jan";
1405
+ ModelProviderType2["Mistral"] = "mistral";
1406
+ ModelProviderType2["Moonshot"] = "moonshot";
1407
+ ModelProviderType2["Nvidia"] = "nvidia";
1408
+ ModelProviderType2["Ollama"] = "ollama";
1409
+ ModelProviderType2["OpenAI"] = "openai";
1410
+ ModelProviderType2["OpenRouter"] = "openrouter";
1411
+ ModelProviderType2["Perplexity"] = "perplexity";
1412
+ ModelProviderType2["Together"] = "together";
1413
+ ModelProviderType2["Voyage"] = "voyage";
1414
+ ModelProviderType2["Rits"] = "rits";
1415
+ ModelProviderType2["Other"] = "other";
1416
+ return ModelProviderType2;
1417
+ })(ModelProviderType || {});
1418
+
1419
+ // src/client/api/model-providers/schemas.ts
1420
+ var modelCapabilitySchema = z33.enum(ModelCapability);
1421
+ var modelProviderTypeSchema = z33.enum(ModelProviderType);
1422
+ var modelProviderSchema = z33.object({
1423
+ id: z33.string(),
1424
+ base_url: z33.string(),
1425
+ created_at: z33.string(),
1426
+ capabilities: z33.array(modelCapabilitySchema),
1427
+ name: z33.string().nullish(),
1428
+ description: z33.string().nullish(),
1429
+ type: modelProviderTypeSchema
1430
+ });
1431
+ var listModelProvidersRequestSchema = z33.never();
1432
+ var listModelProvidersResponseSchema = paginatedResponseSchema.extend({
1433
+ items: z33.array(modelProviderSchema)
1434
+ });
1435
+ var createModelProviderRequestSchema = z33.object({
1436
+ api_key: z33.string(),
1437
+ base_url: z33.string(),
1438
+ type: modelProviderTypeSchema,
1439
+ name: z33.string().nullish(),
1440
+ description: z33.string().nullish(),
1441
+ watsonx_project_id: z33.string().nullish(),
1442
+ watsonx_space_id: z33.string().nullish()
1443
+ });
1444
+ var createModelProviderResponseSchema = modelProviderSchema;
1445
+ var readModelProviderRequestSchema = z33.object({
1446
+ model_provider_id: z33.string()
1447
+ });
1448
+ var readModelProviderResponseSchema = modelProviderSchema;
1449
+ var deleteModelProviderRequestSchema = z33.object({
1450
+ model_provider_id: z33.string()
1451
+ });
1452
+ var deleteModelProviderResponseSchema = z33.null();
1453
+ var matchModelProvidersRequestSchema = z33.object({
1454
+ suggested_models: z33.array(z33.string()).nullable(),
1455
+ capability: modelCapabilitySchema,
1456
+ score_cutoff: z33.number()
1457
+ });
1458
+ var matchModelProvidersResponseSchema = paginatedResponseSchema.extend({
1459
+ items: z33.array(
1460
+ z33.object({
1461
+ model_id: z33.string(),
1462
+ score: z33.number()
1463
+ })
1464
+ )
1465
+ });
1466
+
1467
+ // src/client/api/model-providers/api.ts
1468
+ function createModelProvidersApi(callApi) {
1469
+ const listModelProviders = () => callApi({
1470
+ method: "GET" /* Get */,
1471
+ path: "/api/v1/model_providers",
1472
+ schema: listModelProvidersResponseSchema
1473
+ });
1474
+ const createModelProvider = ({ ...body }) => callApi({
1475
+ method: "POST" /* Post */,
1476
+ path: "/api/v1/model_providers",
1477
+ schema: createModelProviderResponseSchema,
1478
+ body
1479
+ });
1480
+ const readModelProvider = ({ model_provider_id }) => callApi({
1481
+ method: "GET" /* Get */,
1482
+ path: `/api/v1/model_providers/${model_provider_id}`,
1483
+ schema: readModelProviderResponseSchema
1484
+ });
1485
+ const deleteModelProvider = ({ model_provider_id }) => callApi({
1486
+ method: "DELETE" /* Delete */,
1487
+ path: `/api/v1/model_providers/${model_provider_id}`,
1488
+ schema: deleteModelProviderResponseSchema
1489
+ });
1490
+ const matchModelProviders = ({ ...body }) => callApi({
1491
+ method: "POST" /* Post */,
1492
+ path: "/api/v1/model_providers/match",
1493
+ schema: matchModelProvidersResponseSchema,
1494
+ body
1495
+ });
1496
+ return {
1497
+ listModelProviders,
1498
+ createModelProvider,
1499
+ readModelProvider,
1500
+ deleteModelProvider,
1501
+ matchModelProviders
1502
+ };
1503
+ }
1504
+
1505
+ // src/client/api/provider-builds/schemas.ts
1506
+ import z35 from "zod";
1507
+
1508
+ // src/client/api/common/schemas.ts
1509
+ import z34 from "zod";
1510
+
1511
+ // src/client/api/common/types.ts
1512
+ var GitHubVersionType = /* @__PURE__ */ ((GitHubVersionType2) => {
1513
+ GitHubVersionType2["Head"] = "head";
1514
+ GitHubVersionType2["Tag"] = "tag";
1515
+ return GitHubVersionType2;
1516
+ })(GitHubVersionType || {});
1517
+
1518
+ // src/client/api/common/schemas.ts
1519
+ var gitHubVersionTypeSchema = z34.enum(GitHubVersionType);
1520
+ var gitHubRegistryLocationSchema = z34.string();
1521
+ var networkRegistryLocationSchema = z34.string();
1522
+ var fileSystemRegistryLocationSchema = z34.string();
1523
+ var dockerImageIdSchema = z34.string();
1524
+ var dockerImageProviderLocationSchema = dockerImageIdSchema;
1525
+ var networkProviderLocationSchema = z34.string();
1526
+ var resolvedGitHubUrlSchema = z34.object({
1527
+ host: z34.string(),
1528
+ org: z34.string(),
1529
+ repo: z34.string(),
1530
+ version: z34.string(),
1531
+ version_type: gitHubVersionTypeSchema,
1532
+ commit_hash: z34.string(),
1533
+ path: z34.string().nullish()
1534
+ });
1535
+ var resolvedDockerImageIdSchema = z34.object({
1536
+ registry: z34.string(),
1537
+ repository: z34.string(),
1538
+ tag: z34.string(),
1539
+ digest: z34.string(),
1540
+ image_id: dockerImageIdSchema
1541
+ });
1542
+ var readableStreamSchema = z34.custom(
1543
+ (value) => value instanceof ReadableStream,
1544
+ { error: "Expected ReadableStream" }
1545
+ );
1546
+
1547
+ // src/client/api/provider-builds/types.ts
1548
+ var ProviderBuildState = /* @__PURE__ */ ((ProviderBuildState2) => {
1549
+ ProviderBuildState2["Missing"] = "missing";
1550
+ ProviderBuildState2["InProgress"] = "in_progress";
1551
+ ProviderBuildState2["BuildCompleted"] = "build_completed";
1552
+ ProviderBuildState2["Completed"] = "completed";
1553
+ ProviderBuildState2["Failed"] = "failed";
1554
+ return ProviderBuildState2;
1555
+ })(ProviderBuildState || {});
1556
+
1557
+ // src/client/api/provider-builds/schemas.ts
1558
+ var providerBuildStateSchema = z35.enum(ProviderBuildState);
1559
+ var providerBuildAddActionSchema = z35.object({
1560
+ type: z35.literal("add_provider"),
1561
+ auto_stop_timeout_sec: z35.number().nullish(),
1562
+ variables: z35.record(z35.string(), z35.string()).nullish()
1563
+ });
1564
+ var providerBuildUpdateActionSchema = z35.object({
1565
+ type: z35.literal("update_provider"),
1566
+ provider_id: z35.string()
1567
+ });
1568
+ var providerBuildNoActionSchema = z35.object({
1569
+ type: z35.literal("no_action")
1570
+ });
1571
+ var providerBuildOnCompleteActionSchema = z35.union([
1572
+ providerBuildAddActionSchema,
1573
+ providerBuildUpdateActionSchema,
1574
+ providerBuildNoActionSchema
1575
+ ]);
1576
+ var providerBuildConfigurationSchema = z35.object({
1577
+ dockerfile_path: z35.string().nullish()
1578
+ });
1579
+ var providerBuildSchema = z35.object({
1580
+ id: z35.string(),
1581
+ created_at: z35.string(),
1582
+ created_by: z35.string(),
1583
+ provider_origin: z35.string(),
1584
+ status: providerBuildStateSchema,
1585
+ source: resolvedGitHubUrlSchema,
1586
+ destination: dockerImageIdSchema,
1587
+ on_complete: providerBuildOnCompleteActionSchema,
1588
+ build_configuration: providerBuildConfigurationSchema.nullish(),
1589
+ provider_id: z35.string().nullish(),
1590
+ error_message: z35.string().nullish()
1591
+ });
1592
+ var listProviderBuildsRequestSchema = z35.object({
1593
+ query: paginationQuerySchema.extend({
1594
+ status: providerBuildStateSchema.nullish(),
1595
+ user_owned: z35.boolean().nullish()
1596
+ }).optional()
1597
+ });
1598
+ var listProviderBuildsResponseSchema = paginatedResponseSchema.extend({
1599
+ items: z35.array(providerBuildSchema)
1600
+ });
1601
+ var createProviderBuildRequestSchema = z35.object({
1602
+ location: z35.string(),
1603
+ build_configuration: providerBuildConfigurationSchema.nullish(),
1604
+ on_complete: providerBuildOnCompleteActionSchema.optional()
1605
+ });
1606
+ var createProviderBuildResponseSchema = providerBuildSchema;
1607
+ var readProviderBuildRequestSchema = z35.object({
1608
+ id: z35.string()
1609
+ });
1610
+ var readProviderBuildResponseSchema = providerBuildSchema;
1611
+ var deleteProviderBuildRequestSchema = z35.object({
1612
+ id: z35.string()
1613
+ });
1614
+ var deleteProviderBuildResponseSchema = z35.null();
1615
+ var readProviderBuildLogsRequestSchema = z35.object({
1616
+ id: z35.string()
1617
+ });
1618
+ var readProviderBuildLogsResponseSchema = readableStreamSchema;
1619
+ var previewProviderBuildRequestSchema = z35.object({
1620
+ location: z35.string(),
1621
+ build_configuration: providerBuildConfigurationSchema.nullish(),
1622
+ on_complete: providerBuildOnCompleteActionSchema.optional()
1623
+ });
1624
+ var previewProviderBuildResponseSchema = providerBuildSchema;
1625
+
1626
+ // src/client/api/provider-builds/api.ts
1627
+ function createProviderBuildsApi(callApi) {
1628
+ const listProviderBuilds = ({ query }) => callApi({
1629
+ method: "GET" /* Get */,
1630
+ path: "/api/v1/provider_builds",
1631
+ schema: listProviderBuildsResponseSchema,
1632
+ query
1633
+ });
1634
+ const createProviderBuild = ({ ...body }) => callApi({
1635
+ method: "POST" /* Post */,
1636
+ path: "/api/v1/provider_builds",
1637
+ schema: createProviderBuildResponseSchema,
1638
+ body
1639
+ });
1640
+ const readProviderBuild = ({ id }) => callApi({
1641
+ method: "GET" /* Get */,
1642
+ path: `/api/v1/provider_builds/${id}`,
1643
+ schema: readProviderBuildResponseSchema
1644
+ });
1645
+ const deleteProviderBuild = ({ id }) => callApi({
1646
+ method: "DELETE" /* Delete */,
1647
+ path: `/api/v1/provider_builds/${id}`,
1648
+ schema: deleteProviderBuildResponseSchema
1649
+ });
1650
+ const readProviderBuildLogs = ({ id }) => callApi({
1651
+ method: "GET" /* Get */,
1652
+ path: `/api/v1/provider_builds/${id}/logs`,
1653
+ schema: readProviderBuildLogsResponseSchema,
1654
+ parseAsStream: true
1655
+ });
1656
+ const previewProviderBuild = ({ ...body }) => callApi({
1657
+ method: "POST" /* Post */,
1658
+ path: "/api/v1/provider_builds/preview",
1659
+ schema: previewProviderBuildResponseSchema,
1660
+ body
1661
+ });
1662
+ return {
1663
+ listProviderBuilds,
1664
+ createProviderBuild,
1665
+ readProviderBuild,
1666
+ deleteProviderBuild,
1667
+ readProviderBuildLogs,
1668
+ previewProviderBuild
1669
+ };
1670
+ }
1671
+
1672
+ // src/client/api/providers/schemas.ts
1673
+ import z36 from "zod";
1674
+
1675
+ // src/client/api/providers/types.ts
1676
+ var ProviderType = /* @__PURE__ */ ((ProviderType2) => {
1677
+ ProviderType2["Managed"] = "managed";
1678
+ ProviderType2["Unmanaged"] = "unmanaged";
1679
+ return ProviderType2;
1680
+ })(ProviderType || {});
1681
+ var ProviderStatus = /* @__PURE__ */ ((ProviderStatus2) => {
1682
+ ProviderStatus2["Missing"] = "missing";
1683
+ ProviderStatus2["Starting"] = "starting";
1684
+ ProviderStatus2["Ready"] = "ready";
1685
+ ProviderStatus2["Running"] = "running";
1686
+ ProviderStatus2["Error"] = "error";
1687
+ return ProviderStatus2;
1688
+ })(ProviderStatus || {});
1689
+ var ProviderUnmanagedStatus = /* @__PURE__ */ ((ProviderUnmanagedStatus2) => {
1690
+ ProviderUnmanagedStatus2["Online"] = "online";
1691
+ ProviderUnmanagedStatus2["Offline"] = "offline";
1692
+ return ProviderUnmanagedStatus2;
1693
+ })(ProviderUnmanagedStatus || {});
1694
+
1695
+ // src/client/api/providers/schemas.ts
1696
+ var providerTypeSchema = z36.enum(ProviderType);
1697
+ var providerStatusSchema = z36.enum(ProviderStatus);
1698
+ var providerUnmanagedStatusSchema = z36.enum(ProviderUnmanagedStatus);
1699
+ var providerErrorSchema = z36.object({
1700
+ message: z36.string()
1701
+ });
1702
+ var providerEnvVarSchema = z36.object({
1703
+ name: z36.string(),
1704
+ required: z36.boolean(),
1705
+ description: z36.string().nullish()
1706
+ });
1707
+ var providerVersionInfoSchema = z36.object({
1708
+ docker: resolvedDockerImageIdSchema.nullish(),
1709
+ github: resolvedGitHubUrlSchema.nullish()
1710
+ });
1711
+ var providerSchema = z36.object({
1712
+ id: z36.string(),
1713
+ source: z36.union([dockerImageProviderLocationSchema, networkProviderLocationSchema]),
1714
+ agent_card: agentCardSchema,
1715
+ state: z36.union([providerStatusSchema, providerUnmanagedStatusSchema]),
1716
+ origin: z36.string(),
1717
+ created_at: z36.string(),
1718
+ created_by: z36.string(),
1719
+ updated_at: z36.string(),
1720
+ last_active_at: z36.string(),
1721
+ auto_stop_timeout: z36.string(),
1722
+ managed: z36.boolean(),
1723
+ type: providerTypeSchema,
1724
+ env: z36.array(providerEnvVarSchema),
1725
+ registry: z36.union([gitHubRegistryLocationSchema, networkRegistryLocationSchema, fileSystemRegistryLocationSchema]).nullish(),
1726
+ last_error: providerErrorSchema.nullish(),
1727
+ missing_configuration: z36.array(providerEnvVarSchema).optional(),
1728
+ version_info: providerVersionInfoSchema.optional()
1729
+ });
1730
+ var listProvidersRequestSchema = z36.object({
1731
+ query: z36.object({
1732
+ origin: z36.string().nullish(),
1733
+ user_owned: z36.boolean().nullish()
1734
+ }).optional()
1735
+ });
1736
+ var listProvidersResponseSchema = paginatedResponseSchema.extend({
1737
+ items: z36.array(providerSchema)
1738
+ });
1739
+ var createProviderRequestSchema = z36.object({
1740
+ location: z36.union([dockerImageProviderLocationSchema, networkProviderLocationSchema]),
1741
+ agent_card: agentCardSchema.nullish(),
1742
+ auto_stop_timeout_sec: z36.number().nullish(),
1743
+ origin: z36.string().nullish(),
1744
+ variables: z36.record(z36.string(), z36.string()).nullish()
1745
+ });
1746
+ var createProviderResponseSchema = providerSchema;
1747
+ var readProviderRequestSchema = z36.object({
1748
+ id: z36.string()
1749
+ });
1750
+ var readProviderResponseSchema = providerSchema;
1751
+ var deleteProviderRequestSchema = z36.object({
1752
+ id: z36.string()
1753
+ });
1754
+ var deleteProviderResponseSchema = z36.null();
1755
+ var patchProviderRequestSchema = z36.object({
1756
+ id: z36.string(),
1757
+ location: z36.union([dockerImageProviderLocationSchema, networkProviderLocationSchema]).nullish(),
1758
+ agent_card: agentCardSchema.nullish(),
1759
+ auto_stop_timeout_sec: z36.number().nullish(),
1760
+ origin: z36.string().nullish(),
1761
+ variables: z36.record(z36.string(), z36.string()).nullish()
1762
+ });
1763
+ var patchProviderResponseSchema = providerSchema;
1764
+ var readProviderLogsRequestSchema = z36.object({
1765
+ id: z36.string()
1766
+ });
1767
+ var readProviderLogsResponseSchema = readableStreamSchema;
1768
+ var listProviderVariablesRequestSchema = z36.object({
1769
+ id: z36.string()
1770
+ });
1771
+ var listProviderVariablesResponseSchema = z36.object({
1772
+ variables: z36.record(z36.string(), z36.string())
1773
+ });
1774
+ var updateProviderVariablesRequestSchema = z36.object({
1775
+ id: z36.string(),
1776
+ variables: z36.record(z36.string(), z36.union([z36.string(), z36.null()]))
1777
+ });
1778
+ var updateProviderVariablesResponseSchema = z36.null();
1779
+ var readProviderByLocationRequestSchema = z36.object({
1780
+ location: z36.string()
1781
+ });
1782
+ var readProviderByLocationResponseSchema = providerSchema;
1783
+ var previewProviderResponseSchema = providerSchema;
1784
+
1785
+ // src/client/api/providers/api.ts
1786
+ function createProvidersApi(callApi) {
1787
+ const listProviders = ({ query }) => callApi({
1788
+ method: "GET" /* Get */,
1789
+ path: "/api/v1/providers",
1790
+ schema: listProvidersResponseSchema,
1791
+ query
1792
+ });
1793
+ const createProvider = ({ ...body }) => callApi({
1794
+ method: "POST" /* Post */,
1795
+ path: "/api/v1/providers",
1796
+ schema: createProviderResponseSchema,
1797
+ body
1798
+ });
1799
+ const readProvider = ({ id }) => callApi({
1800
+ method: "GET" /* Get */,
1801
+ path: `/api/v1/providers/${id}`,
1802
+ schema: readProviderResponseSchema
1803
+ });
1804
+ const deleteProvider = ({ id }) => callApi({
1805
+ method: "DELETE" /* Delete */,
1806
+ path: `/api/v1/providers/${id}`,
1807
+ schema: deleteProviderResponseSchema
1808
+ });
1809
+ const patchProvider = ({ id, ...body }) => callApi({
1810
+ method: "PATCH" /* Patch */,
1811
+ path: `/api/v1/providers/${id}`,
1812
+ schema: patchProviderResponseSchema,
1813
+ body
1814
+ });
1815
+ const readProviderLogs = ({ id }) => callApi({
1816
+ method: "GET" /* Get */,
1817
+ path: `/api/v1/providers/${id}/logs`,
1818
+ schema: readProviderLogsResponseSchema,
1819
+ parseAsStream: true
1820
+ });
1821
+ const listProviderVariables = ({ id }) => callApi({
1822
+ method: "GET" /* Get */,
1823
+ path: `/api/v1/providers/${id}/variables`,
1824
+ schema: listProviderVariablesResponseSchema
1825
+ });
1826
+ const updateProviderVariables = ({ id, ...body }) => callApi({
1827
+ method: "PUT" /* Put */,
1828
+ path: `/api/v1/providers/${id}/variables`,
1829
+ schema: updateProviderVariablesResponseSchema,
1830
+ body
1831
+ });
1832
+ const readProviderByLocation = ({ location }) => callApi({
1833
+ method: "GET" /* Get */,
1834
+ path: `/api/v1/providers/by-location/${location}`,
1835
+ schema: readProviderByLocationResponseSchema
1836
+ });
1837
+ const previewProvider = ({ ...body }) => callApi({
1838
+ method: "POST" /* Post */,
1839
+ path: "/api/v1/providers/preview",
1840
+ schema: previewProviderResponseSchema,
1841
+ body
1842
+ });
1843
+ return {
1844
+ listProviders,
1845
+ createProvider,
1846
+ readProvider,
1847
+ deleteProvider,
1848
+ patchProvider,
1849
+ readProviderLogs,
1850
+ listProviderVariables,
1851
+ updateProviderVariables,
1852
+ readProviderByLocation,
1853
+ previewProvider
1854
+ };
1855
+ }
1856
+
1857
+ // src/client/api/user-feedback/schemas.ts
1858
+ import z37 from "zod";
1859
+ var createUserFeedbackRequestSchema = z37.object({
1860
+ provider_id: z37.string(),
1861
+ context_id: z37.string(),
1862
+ task_id: z37.string(),
1863
+ message: z37.string(),
1864
+ rating: z37.union([z37.literal(1), z37.literal(-1)]),
1865
+ comment: z37.string().nullish(),
1866
+ comment_tags: z37.array(z37.string()).nullish()
1867
+ });
1868
+ var createUserFeedbackResponseSchema = z37.null();
1869
+
1870
+ // src/client/api/user-feedback/api.ts
1871
+ function createUserFeedbackApi(callApi) {
1872
+ const createUserFeedback = ({ ...body }) => callApi({
1873
+ method: "POST" /* Post */,
1874
+ path: "/api/v1/user_feedback",
1875
+ schema: createUserFeedbackResponseSchema,
1876
+ body
1877
+ });
1878
+ return {
1879
+ createUserFeedback
1880
+ };
1881
+ }
1882
+
1883
+ // src/client/api/users/schemas.ts
1884
+ import z38 from "zod";
1885
+
1886
+ // src/client/api/users/types.ts
1887
+ var UserRole = /* @__PURE__ */ ((UserRole2) => {
1888
+ UserRole2["Admin"] = "admin";
1889
+ UserRole2["Developer"] = "developer";
1890
+ UserRole2["User"] = "user";
1891
+ return UserRole2;
1892
+ })(UserRole || {});
1893
+
1894
+ // src/client/api/users/schemas.ts
1895
+ var userRoleSchema = z38.enum(UserRole);
1896
+ var userSchema = z38.object({
1897
+ id: z38.string(),
1898
+ role: userRoleSchema,
1899
+ email: z38.string(),
1900
+ created_at: z38.string()
1901
+ });
1902
+ var readUserRequestSchema = z38.never();
1903
+ var readUserResponseSchema = userSchema;
1904
+
1905
+ // src/client/api/users/api.ts
1906
+ function createUsersApi(callApi) {
1907
+ const readUser = () => callApi({
1908
+ method: "GET" /* Get */,
1909
+ path: "/api/v1/user",
1910
+ schema: readUserResponseSchema
1911
+ });
1912
+ return {
1913
+ readUser
1914
+ };
1915
+ }
1916
+
1917
+ // src/client/api/variables/schemas.ts
1918
+ import z39 from "zod";
1919
+ var listVariablesRequestSchema = z39.never();
1920
+ var listVariablesResponseSchema = z39.object({
1921
+ variables: z39.record(z39.string(), z39.string())
1922
+ });
1923
+ var updateVariablesRequestSchema = z39.object({
1924
+ variables: z39.record(z39.string(), z39.union([z39.string(), z39.null()]))
1925
+ });
1926
+ var updateVariablesResponseSchema = z39.null();
1927
+
1928
+ // src/client/api/variables/api.ts
1929
+ function createVariablesApi(callApi) {
1930
+ const listVariables = () => callApi({
1931
+ method: "GET" /* Get */,
1932
+ path: "/api/v1/variables",
1933
+ schema: listVariablesResponseSchema
1934
+ });
1935
+ const updateVariables = ({ ...body }) => callApi({
1936
+ method: "PUT" /* Put */,
1937
+ path: "/api/v1/variables",
1938
+ schema: updateVariablesResponseSchema,
1939
+ body
1940
+ });
1941
+ return {
1942
+ listVariables,
1943
+ updateVariables
1944
+ };
1945
+ }
1946
+
1947
+ // src/client/api/core/utils.ts
1948
+ function buildRequestUrl({ baseUrl, path, query }) {
1949
+ const url = `${baseUrl.replace(/\/+$/, "")}${path}`;
1950
+ if (query) {
1951
+ const searchParams = new URLSearchParams();
1952
+ Object.entries(query).forEach(([key, value]) => {
1953
+ if (value != null) {
1954
+ searchParams.append(key, String(value));
1955
+ }
1956
+ });
1957
+ const queryString = searchParams.toString();
1958
+ if (queryString) {
1959
+ return `${url}?${queryString}`;
1960
+ }
1961
+ }
1962
+ return url;
1963
+ }
1964
+ function buildRequestInit({ method, body }) {
1965
+ const headers = new Headers();
1966
+ let requestBody;
1967
+ if (body) {
1968
+ if (body instanceof FormData) {
1969
+ requestBody = body;
1970
+ } else {
1971
+ headers.set("Content-Type", "application/json");
1972
+ requestBody = JSON.stringify(body);
1973
+ }
1974
+ }
1975
+ return {
1976
+ method,
1977
+ headers,
1978
+ body: requestBody
1979
+ };
1980
+ }
1981
+ async function safeReadText(response) {
1982
+ try {
1983
+ return await response.text();
1984
+ } catch {
1985
+ return null;
1986
+ }
1987
+ }
1988
+ function parseBodyText(bodyText, headers) {
1989
+ const isStreamResponse = bodyText instanceof ReadableStream;
1990
+ if (isStreamResponse) {
1991
+ return {
1992
+ data: bodyText
1993
+ };
1994
+ }
1995
+ if (bodyText == null || bodyText.trim() === "") {
1996
+ return {
1997
+ data: null
1998
+ };
1999
+ }
2000
+ const contentType = headers.get("content-type") ?? "";
2001
+ const isJsonResponse = contentType.includes("application/json");
2002
+ if (isJsonResponse) {
2003
+ try {
2004
+ return {
2005
+ data: JSON.parse(bodyText)
2006
+ };
2007
+ } catch (error) {
2008
+ return {
2009
+ data: null,
2010
+ error: error instanceof Error ? error : new Error("Failed to parse body text.")
2011
+ };
2012
+ }
2013
+ }
2014
+ return {
2015
+ data: bodyText
2016
+ };
2017
+ }
2018
+
2019
+ // src/client/api/core/client.ts
2020
+ function createCallApi({ baseUrl, fetch: fetchFn }) {
2021
+ return async function callApi({ method, path, schema, query, body, parseAsStream }) {
2022
+ const requestUrl = buildRequestUrl({ baseUrl, path, query });
2023
+ const requestInit = buildRequestInit({ method, body });
2024
+ const request = {
2025
+ method,
2026
+ url: requestUrl
2027
+ };
2028
+ try {
2029
+ const rawResponse = await fetchFn(requestUrl, requestInit);
2030
+ const bodyText = parseAsStream ? rawResponse.body : await safeReadText(rawResponse);
2031
+ const { ok, status, statusText, headers } = rawResponse;
2032
+ const response = { status, statusText, bodyText };
2033
+ if (!ok) {
2034
+ return {
2035
+ ok: false,
2036
+ error: {
2037
+ type: "http" /* Http */,
2038
+ message: "API Http Error",
2039
+ request,
2040
+ response
2041
+ }
2042
+ };
2043
+ }
2044
+ const { data: parsedBody, error: parseError } = parseBodyText(bodyText, headers);
2045
+ if (parseError) {
2046
+ return {
2047
+ ok: false,
2048
+ error: {
2049
+ type: "parse" /* Parse */,
2050
+ message: "API Parse Error",
2051
+ request,
2052
+ response,
2053
+ details: parseError
2054
+ }
2055
+ };
2056
+ }
2057
+ const { data: result, success, error } = schema.safeParse(parsedBody);
2058
+ if (!success) {
2059
+ return {
2060
+ ok: false,
2061
+ error: {
2062
+ type: "validation" /* Validation */,
2063
+ message: "API Validation Error",
2064
+ request,
2065
+ response,
2066
+ details: error
2067
+ }
2068
+ };
2069
+ }
2070
+ return {
2071
+ ok: true,
2072
+ data: result,
2073
+ response
2074
+ };
2075
+ } catch (details) {
2076
+ return {
2077
+ ok: false,
2078
+ error: {
2079
+ type: "network" /* Network */,
2080
+ message: "API Network Error",
2081
+ request,
2082
+ details
2083
+ }
2084
+ };
2085
+ }
2086
+ };
2087
+ }
2088
+ var buildApiClient = ({
2089
+ baseUrl,
2090
+ fetch: fetchFn
2091
+ } = { baseUrl: "" }) => {
2092
+ const maybeFetch = fetchFn ?? (typeof globalThis.fetch !== "undefined" ? globalThis.fetch : void 0);
2093
+ if (!maybeFetch) {
2094
+ throw new Error(
2095
+ "fetch is not available. In Node.js < 18 or environments without global fetch, provide a fetch implementation via the fetch option."
2096
+ );
2097
+ }
2098
+ const callApi = createCallApi({ baseUrl, fetch: maybeFetch });
2099
+ const configurationApi = createConfigurationApi(callApi);
2100
+ const connectorsApi = createConnectorsApi(callApi);
2101
+ const contextsApi = createContextsApi(callApi);
2102
+ const filesApi = createFilesApi(callApi);
2103
+ const modelProvidersApi = createModelProvidersApi(callApi);
2104
+ const providerBuildsApi = createProviderBuildsApi(callApi);
2105
+ const providersApi = createProvidersApi(callApi);
2106
+ const userFeedbackApi = createUserFeedbackApi(callApi);
2107
+ const usersApi = createUsersApi(callApi);
2108
+ const variablesApi = createVariablesApi(callApi);
2109
+ return {
2110
+ ...configurationApi,
2111
+ ...connectorsApi,
2112
+ ...contextsApi,
2113
+ ...filesApi,
2114
+ ...modelProvidersApi,
2115
+ ...providerBuildsApi,
2116
+ ...providersApi,
2117
+ ...userFeedbackApi,
2118
+ ...usersApi,
2119
+ ...variablesApi
2120
+ };
2121
+ };
2122
+
2123
+ // src/experimental/server/core/utils.ts
2124
+ function sleep(ms) {
2125
+ return new Promise((resolve) => setTimeout(resolve, ms));
2126
+ }
2127
+ async function withRetry(fn, options = {}) {
2128
+ const { maxAttempts = 10, maxDelayMs = 1e4, shouldAbort, onRetry } = options;
2129
+ let lastError;
2130
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
2131
+ if (shouldAbort?.()) {
2132
+ throw new Error("Operation aborted");
2133
+ }
2134
+ try {
2135
+ return await fn();
2136
+ } catch (error) {
2137
+ lastError = error instanceof Error ? error : new Error(String(error));
2138
+ const delay = Math.min(1e3 * Math.pow(2, attempt), maxDelayMs);
2139
+ onRetry?.(attempt + 1, lastError, delay);
2140
+ await sleep(delay);
2141
+ }
2142
+ }
2143
+ throw lastError ?? new Error("Max retry attempts exceeded");
2144
+ }
2145
+ function setsEqual(a, b) {
2146
+ if (a.size !== b.size) {
2147
+ return false;
2148
+ }
2149
+ for (const item of a) {
2150
+ if (!b.has(item)) {
2151
+ return false;
2152
+ }
2153
+ }
2154
+ return true;
2155
+ }
2156
+ function getErrorMessage(error) {
2157
+ return error instanceof Error ? error.message : String(error);
2158
+ }
2159
+
2160
+ // src/experimental/server/core/server/helpers.ts
2161
+ function createAgentCardUrl(host, port, selfRegistrationId) {
2162
+ return `http://${host === "0.0.0.0" ? "localhost" : host}:${port}${selfRegistrationId ? `#${selfRegistrationId}` : ""}`;
2163
+ }
2164
+ function normalizeDockerHost(host) {
2165
+ return host.replace(/0\.0\.0\.0|localhost|127\.0\.0\.1/g, "host.docker.internal");
2166
+ }
2167
+
2168
+ // src/experimental/server/core/server/autoregistration.ts
2169
+ var VARIABLE_RELOAD_INTERVAL_MS = 5e3;
2170
+ function createAutoregisterToAgentstack(options) {
2171
+ const { selfRegistrationId, agentCard, host, port, api } = options;
2172
+ let providerId = null;
2173
+ let variableReloadInterval = null;
2174
+ let configuredVariables = /* @__PURE__ */ new Set();
2175
+ let stopped = false;
2176
+ async function loadVariables(firstRun = false) {
2177
+ if (!providerId) {
2178
+ return;
2179
+ }
2180
+ try {
2181
+ const result = await api.listProviderVariables({ id: providerId });
2182
+ if (!result.ok) {
2183
+ console.warn(`Failed to load variables: ${result.error.message}`);
2184
+ return;
2185
+ }
2186
+ const variables = result.data.variables;
2187
+ const oldVariables = configuredVariables;
2188
+ const newVariables = /* @__PURE__ */ new Set();
2189
+ for (const variable of configuredVariables) {
2190
+ if (!(variable in variables)) {
2191
+ delete process.env[variable];
2192
+ }
2193
+ }
2194
+ for (const [key, value] of Object.entries(variables)) {
2195
+ process.env[key] = value;
2196
+ newVariables.add(key);
2197
+ }
2198
+ const dirty = !setsEqual(oldVariables, newVariables);
2199
+ configuredVariables = newVariables;
2200
+ if (dirty && configuredVariables.size > 0) {
2201
+ console.log(`Environment variables reloaded: ${[...configuredVariables].join(", ")}`);
2202
+ }
2203
+ if (firstRun && configuredVariables.size > 0) {
2204
+ console.log("Environment variables loaded.");
2205
+ }
2206
+ } catch (error) {
2207
+ console.error(`Failed to load variables: ${getErrorMessage(error)}`);
2208
+ }
2209
+ }
2210
+ async function register() {
2211
+ if (isProductionMode()) {
2212
+ console.log("Agent is not automatically registered in production mode.");
2213
+ return;
2214
+ }
2215
+ const location = createAgentCardUrl(normalizeDockerHost(host), port, selfRegistrationId);
2216
+ console.log("Registering agent to the Agent Stack platform", { location });
2217
+ try {
2218
+ await withRetry(
2219
+ async () => {
2220
+ const existingResult = await api.readProviderByLocation({
2221
+ location: encodeURIComponent(location)
2222
+ });
2223
+ if (existingResult.ok) {
2224
+ const patchResult = await api.patchProvider({
2225
+ id: existingResult.data.id,
2226
+ agent_card: agentCard
2227
+ });
2228
+ if (!patchResult.ok) {
2229
+ throw new Error(`Failed to patch provider: ${patchResult.error.message}`);
2230
+ }
2231
+ providerId = patchResult.data.id;
2232
+ } else if (existingResult.error.type === "http" /* Http */ && existingResult.error.response.status === 404) {
2233
+ const createResult = await api.createProvider({
2234
+ location,
2235
+ agent_card: agentCard
2236
+ });
2237
+ if (!createResult.ok) {
2238
+ throw new Error(`Failed to create provider: ${createResult.error.message}`);
2239
+ }
2240
+ providerId = createResult.data.id;
2241
+ } else {
2242
+ throw new Error(`Failed to lookup provider: ${existingResult.error.message}`);
2243
+ }
2244
+ },
2245
+ {
2246
+ shouldAbort: () => stopped,
2247
+ onRetry: (attempt, _error, delayMs) => {
2248
+ console.warn(`Registration attempt ${attempt} failed, retrying in ${delayMs}ms...`);
2249
+ }
2250
+ }
2251
+ );
2252
+ console.log("Agent registered successfully");
2253
+ await loadVariables(true);
2254
+ variableReloadInterval = setInterval(() => {
2255
+ loadVariables().catch((error) => console.error("Error during variable reload:", error));
2256
+ }, VARIABLE_RELOAD_INTERVAL_MS);
2257
+ } catch (error) {
2258
+ console.error(`Agent cannot be registered to agentstack server: ${getErrorMessage(error)}`);
2259
+ }
2260
+ }
2261
+ function stop() {
2262
+ stopped = true;
2263
+ if (variableReloadInterval) {
2264
+ clearInterval(variableReloadInterval);
2265
+ variableReloadInterval = null;
2266
+ }
2267
+ }
2268
+ register();
2269
+ return stop;
2270
+ }
2271
+
2272
+ // src/experimental/server/a2a/helpers.ts
2273
+ import { randomUUID } from "crypto";
2274
+ function createMessage({
2275
+ taskId,
2276
+ contextId,
2277
+ parts,
2278
+ metadata
2279
+ }) {
2280
+ return {
2281
+ kind: "message",
2282
+ messageId: randomUUID(),
2283
+ role: "agent",
2284
+ taskId,
2285
+ contextId,
2286
+ parts,
2287
+ metadata
2288
+ };
2289
+ }
2290
+ function createTextPart(text) {
2291
+ return {
2292
+ kind: "text",
2293
+ text
2294
+ };
2295
+ }
2296
+ function createDataPart(data) {
2297
+ return {
2298
+ kind: "data",
2299
+ data
2300
+ };
2301
+ }
2302
+ function createStatusUpdateEvent({
2303
+ taskId,
2304
+ contextId,
2305
+ status,
2306
+ final
2307
+ }) {
2308
+ return {
2309
+ kind: "status-update",
2310
+ taskId,
2311
+ contextId,
2312
+ status,
2313
+ final
2314
+ };
2315
+ }
2316
+ function createArtifactUpdateEvent({
2317
+ taskId,
2318
+ contextId,
2319
+ artifact,
2320
+ lastChunk,
2321
+ append
2322
+ }) {
2323
+ return {
2324
+ kind: "artifact-update",
2325
+ taskId,
2326
+ contextId,
2327
+ artifact,
2328
+ lastChunk,
2329
+ append
2330
+ };
2331
+ }
2332
+
2333
+ // src/experimental/server/a2a/utils.ts
2334
+ function isObjectLike(value) {
2335
+ return value != null && typeof value === "object";
2336
+ }
2337
+ function isAsyncIterable(value) {
2338
+ return isObjectLike(value) && Symbol.asyncIterator in value;
2339
+ }
2340
+ function isMessage(value) {
2341
+ return isObjectLike(value) && "kind" in value && value.kind === "message";
2342
+ }
2343
+ function isArtifact(value) {
2344
+ return isObjectLike(value) && "artifactId" in value;
2345
+ }
2346
+ function isPart(value) {
2347
+ return isObjectLike(value) && "kind" in value && typeof value.kind === "string" && ["text", "file", "data"].includes(value.kind);
2348
+ }
2349
+ function isTaskStatus(value) {
2350
+ return isObjectLike(value) && "state" in value;
2351
+ }
2352
+ function isTaskStatusUpdateEvent(value) {
2353
+ return isObjectLike(value) && "kind" in value && value.kind === "status-update";
2354
+ }
2355
+
2356
+ // src/experimental/server/core/server/executor.ts
2357
+ var AgentExecutorImpl = class {
2358
+ handler;
2359
+ extensions;
2360
+ runningTasks = /* @__PURE__ */ new Map();
2361
+ constructor(handler, extensions) {
2362
+ this.handler = handler;
2363
+ this.extensions = extensions;
2364
+ }
2365
+ getOrCreateTask(requestContext, eventBus) {
2366
+ const { taskId, contextId, task } = requestContext;
2367
+ if (task) {
2368
+ return task;
2369
+ }
2370
+ const initialTask = {
2371
+ kind: "task",
2372
+ id: taskId,
2373
+ contextId,
2374
+ status: {
2375
+ state: "submitted",
2376
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
2377
+ },
2378
+ history: []
2379
+ };
2380
+ eventBus.publish(initialTask);
2381
+ eventBus.publish(
2382
+ createStatusUpdateEvent({
2383
+ taskId: initialTask.id,
2384
+ contextId,
2385
+ status: {
2386
+ state: "working"
2387
+ },
2388
+ final: false
2389
+ })
2390
+ );
2391
+ return initialTask;
2392
+ }
2393
+ async execute(requestContext, eventBus) {
2394
+ const { userMessage, contextId } = requestContext;
2395
+ const task = this.getOrCreateTask(requestContext, eventBus);
2396
+ const runContext = new RunContext(task.id, contextId, task);
2397
+ const taskState = { cancelled: false };
2398
+ this.runningTasks.set(task.id, taskState);
2399
+ try {
2400
+ const deps = this.resolveExtensions(userMessage);
2401
+ const result = this.handler(userMessage, runContext, deps);
2402
+ if (isAsyncIterable(result)) {
2403
+ for await (const yielded of result) {
2404
+ if (taskState.cancelled) {
2405
+ this.publishCancelled(eventBus, task.id, contextId);
2406
+ return;
2407
+ }
2408
+ this.processYield(eventBus, task.id, contextId, yielded);
2409
+ }
2410
+ } else {
2411
+ const awaited = await result;
2412
+ if (awaited !== void 0) {
2413
+ this.processYield(eventBus, task.id, contextId, awaited);
2414
+ }
2415
+ }
2416
+ if (!taskState.cancelled) {
2417
+ eventBus.publish(
2418
+ createStatusUpdateEvent({
2419
+ taskId: task.id,
2420
+ contextId,
2421
+ status: {
2422
+ state: "completed"
2423
+ },
2424
+ final: true
2425
+ })
2426
+ );
2427
+ }
2428
+ } catch (error) {
2429
+ const message = createMessage({
2430
+ taskId: task.id,
2431
+ contextId,
2432
+ parts: [createTextPart(error instanceof Error ? error.message : "Unknown error")]
2433
+ });
2434
+ eventBus.publish(
2435
+ createStatusUpdateEvent({
2436
+ taskId: task.id,
2437
+ contextId,
2438
+ status: {
2439
+ state: "failed",
2440
+ message
2441
+ },
2442
+ final: true
2443
+ })
2444
+ );
2445
+ this.runningTasks.delete(task.id);
2446
+ } finally {
2447
+ eventBus.finished();
2448
+ }
2449
+ }
2450
+ async cancelTask(taskId) {
2451
+ const taskState = this.runningTasks.get(taskId);
2452
+ if (taskState) {
2453
+ taskState.cancelled = true;
2454
+ }
2455
+ }
2456
+ resolveExtensions(message) {
2457
+ if (!this.extensions) {
2458
+ return {};
2459
+ }
2460
+ const deps = {};
2461
+ for (const [key, ext] of Object.entries(this.extensions)) {
2462
+ const fulfillments = ext.spec.parseFulfillments(message);
2463
+ deps[key] = ext.resolveDeps(fulfillments);
2464
+ }
2465
+ return deps;
2466
+ }
2467
+ publishCancelled(eventBus, taskId, contextId) {
2468
+ eventBus.publish(
2469
+ createStatusUpdateEvent({
2470
+ taskId,
2471
+ contextId,
2472
+ status: {
2473
+ state: "canceled"
2474
+ },
2475
+ final: true
2476
+ })
2477
+ );
2478
+ }
2479
+ processYield(eventBus, taskId, contextId, yielded) {
2480
+ if (typeof yielded === "string") {
2481
+ const message = createMessage({
2482
+ taskId,
2483
+ contextId,
2484
+ parts: [createTextPart(yielded)]
2485
+ });
2486
+ eventBus.publish(
2487
+ createStatusUpdateEvent({
2488
+ taskId,
2489
+ contextId,
2490
+ status: {
2491
+ state: "working",
2492
+ message
2493
+ },
2494
+ final: false
2495
+ })
2496
+ );
2497
+ } else if (yielded instanceof Error) {
2498
+ const message = createMessage({
2499
+ taskId,
2500
+ contextId,
2501
+ parts: [createTextPart(yielded.message)]
2502
+ });
2503
+ eventBus.publish(
2504
+ createStatusUpdateEvent({
2505
+ taskId,
2506
+ contextId,
2507
+ status: {
2508
+ state: "failed",
2509
+ message
2510
+ },
2511
+ final: true
2512
+ })
2513
+ );
2514
+ } else if (isMessage(yielded)) {
2515
+ const message = {
2516
+ ...yielded,
2517
+ taskId,
2518
+ contextId
2519
+ };
2520
+ eventBus.publish(
2521
+ createStatusUpdateEvent({
2522
+ taskId,
2523
+ contextId,
2524
+ status: {
2525
+ state: "working",
2526
+ message
2527
+ },
2528
+ final: false
2529
+ })
2530
+ );
2531
+ } else if (isPart(yielded)) {
2532
+ const message = createMessage({
2533
+ taskId,
2534
+ contextId,
2535
+ parts: [yielded]
2536
+ });
2537
+ eventBus.publish(
2538
+ createStatusUpdateEvent({
2539
+ taskId,
2540
+ contextId,
2541
+ status: {
2542
+ state: "working",
2543
+ message
2544
+ },
2545
+ final: false
2546
+ })
2547
+ );
2548
+ } else if (isTaskStatusUpdateEvent(yielded)) {
2549
+ eventBus.publish(yielded);
2550
+ } else if (isTaskStatus(yielded)) {
2551
+ eventBus.publish(
2552
+ createStatusUpdateEvent({
2553
+ taskId,
2554
+ contextId,
2555
+ status: yielded,
2556
+ final: false
2557
+ })
2558
+ );
2559
+ } else if (isArtifact(yielded)) {
2560
+ eventBus.publish(
2561
+ createArtifactUpdateEvent({
2562
+ taskId,
2563
+ contextId,
2564
+ artifact: yielded,
2565
+ lastChunk: true,
2566
+ append: false
2567
+ })
2568
+ );
2569
+ } else if (typeof yielded === "object" && yielded != null) {
2570
+ const message = createMessage({
2571
+ taskId,
2572
+ contextId,
2573
+ parts: [createDataPart(yielded)]
2574
+ });
2575
+ eventBus.publish(
2576
+ createStatusUpdateEvent({
2577
+ taskId,
2578
+ contextId,
2579
+ status: {
2580
+ state: "working",
2581
+ message
2582
+ },
2583
+ final: false
2584
+ })
2585
+ );
2586
+ }
2587
+ }
2588
+ };
2589
+
2590
+ // src/experimental/server/core/server/index.ts
2591
+ var Server = class {
2592
+ agentCard;
2593
+ agentOptions;
2594
+ agentConfigured = false;
2595
+ agent(options) {
2596
+ if (this.agentConfigured) {
2597
+ throw new Error("Agent already configured. Only one agent per server is supported.");
2598
+ }
2599
+ let extensions = this.buildExtensions(options.extensions);
2600
+ if (options.detail) {
2601
+ const detailExt = new AgentDetailExtensionSpec(options.detail);
2602
+ extensions = [...extensions ?? [], detailExt.toAgentCardExtension()];
2603
+ }
2604
+ this.agentCard = {
2605
+ name: options.name,
2606
+ description: options.description ?? "",
2607
+ url: "http://localhost:8000",
2608
+ version: options.version ?? "1.0.0",
2609
+ protocolVersion: options.protocolVersion ?? "0.3.0",
2610
+ capabilities: {
2611
+ streaming: true,
2612
+ extensions
2613
+ },
2614
+ defaultInputModes: ["text"],
2615
+ defaultOutputModes: ["text"],
2616
+ skills: []
2617
+ };
2618
+ this.agentOptions = options;
2619
+ this.agentConfigured = true;
2620
+ return this;
2621
+ }
2622
+ async run(options = {}) {
2623
+ if (!this.agentConfigured || !this.agentCard || !this.agentOptions) {
2624
+ throw new Error("No agent configured. Call agent() before run().");
2625
+ }
2626
+ const config = loadConfig();
2627
+ const host = options.host ?? "0.0.0.0";
2628
+ const port = options.port ?? 8e3;
2629
+ const selfRegistrationId = options.selfRegistrationId;
2630
+ const platformUrl = options.platformUrl ?? config.platformUrl;
2631
+ const productionMode = config.productionMode;
2632
+ this.agentCard.url = createAgentCardUrl(host, port);
2633
+ if (selfRegistrationId && !productionMode) {
2634
+ const selfRegExtension = new PlatformSelfRegistrationExtensionSpec({ self_registration_id: selfRegistrationId });
2635
+ this.agentCard.capabilities.extensions = [
2636
+ ...this.agentCard.capabilities.extensions ?? [],
2637
+ selfRegExtension.toAgentCardExtension()
2638
+ ];
2639
+ }
2640
+ const taskStore = new InMemoryTaskStore();
2641
+ const executor = new AgentExecutorImpl(this.agentOptions.handler, this.agentOptions.extensions);
2642
+ const requestHandler = new DefaultRequestHandler(this.agentCard, taskStore, executor);
2643
+ const app = express();
2644
+ const agentCardPath = `/.well-known/agent-card.json`;
2645
+ app.use(jsonRpcHandler({ requestHandler, userBuilder: UserBuilder.noAuthentication }));
2646
+ app.use(agentCardPath, agentCardHandler({ agentCardProvider: requestHandler }));
2647
+ const api = buildApiClient({ baseUrl: platformUrl });
2648
+ let stopAutoregistration;
2649
+ if (selfRegistrationId && !productionMode) {
2650
+ stopAutoregistration = createAutoregisterToAgentstack({
2651
+ selfRegistrationId,
2652
+ agentCard: this.agentCard,
2653
+ host,
2654
+ port,
2655
+ api
2656
+ });
2657
+ }
2658
+ return new Promise((resolve, reject) => {
2659
+ const server = app.listen(port, host, async () => {
2660
+ console.log(`Agent "${this.agentCard.name}" running at http://${host}:${port}`);
2661
+ console.log(`Agent card available at http://${host}:${port}${agentCardPath}`);
2662
+ const url = createAgentCardUrl(host, port);
2663
+ const handle = {
2664
+ port,
2665
+ url,
2666
+ close: () => new Promise((resolveClose, rejectClose) => {
2667
+ stopAutoregistration?.();
2668
+ server.close((error) => {
2669
+ if (error) {
2670
+ rejectClose(error);
2671
+ } else {
2672
+ resolveClose();
2673
+ }
2674
+ });
2675
+ })
2676
+ };
2677
+ resolve(handle);
2678
+ });
2679
+ server.on("error", (error) => {
2680
+ stopAutoregistration?.();
2681
+ reject(error);
2682
+ });
2683
+ const cleanup = () => {
2684
+ stopAutoregistration?.();
2685
+ server.close();
2686
+ };
2687
+ process.on("SIGTERM", cleanup);
2688
+ process.on("SIGINT", cleanup);
2689
+ });
2690
+ }
2691
+ buildExtensions(extensionConfig) {
2692
+ if (!extensionConfig) {
2693
+ return void 0;
2694
+ }
2695
+ const extensions = [];
2696
+ for (const ext of Object.values(extensionConfig)) {
2697
+ extensions.push(ext.spec.toAgentCardExtension());
2698
+ }
2699
+ if (extensions.length === 0) {
2700
+ return void 0;
2701
+ }
2702
+ return extensions;
2703
+ }
2704
+ };
2705
+ export {
2706
+ AgentDetailExtensionSpec,
2707
+ LLMExtensionServer,
2708
+ LLMExtensionSpec,
2709
+ PLATFORM_SELF_REGISTRATION_EXTENSION_URI,
2710
+ PlatformSelfRegistrationExtensionSpec,
2711
+ RunContext,
2712
+ Server,
2713
+ configSchema,
2714
+ isProductionMode,
2715
+ loadConfig
2716
+ };