@diskd-ai/sdk 5.1.2

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 (299) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +1036 -0
  3. package/dist/agentHub/StreamProtocolFetcher.d.ts +55 -0
  4. package/dist/agentHub/StreamProtocolFetcher.d.ts.map +1 -0
  5. package/dist/agentHub/StreamProtocolFetcher.js +176 -0
  6. package/dist/agentHub/StreamProtocolFetcher.js.map +1 -0
  7. package/dist/agentHub/StreamProtocolHandler.d.ts +18 -0
  8. package/dist/agentHub/StreamProtocolHandler.d.ts.map +1 -0
  9. package/dist/agentHub/StreamProtocolHandler.js +63 -0
  10. package/dist/agentHub/StreamProtocolHandler.js.map +1 -0
  11. package/dist/agentHub/agentHub.d.ts +30 -0
  12. package/dist/agentHub/agentHub.d.ts.map +1 -0
  13. package/dist/agentHub/agentHub.js +200 -0
  14. package/dist/agentHub/agentHub.js.map +1 -0
  15. package/dist/agentHub/agentHubTypes.d.ts +110 -0
  16. package/dist/agentHub/agentHubTypes.d.ts.map +1 -0
  17. package/dist/agentHub/agentHubTypes.js +8 -0
  18. package/dist/agentHub/agentHubTypes.js.map +1 -0
  19. package/dist/agentHub/streamProtocolMap.d.ts +328 -0
  20. package/dist/agentHub/streamProtocolMap.d.ts.map +1 -0
  21. package/dist/agentHub/streamProtocolMap.js +8 -0
  22. package/dist/agentHub/streamProtocolMap.js.map +1 -0
  23. package/dist/auth/createApiKeyAuth.d.ts +11 -0
  24. package/dist/auth/createApiKeyAuth.d.ts.map +1 -0
  25. package/dist/auth/createApiKeyAuth.js +31 -0
  26. package/dist/auth/createApiKeyAuth.js.map +1 -0
  27. package/dist/auth/createAuth.d.ts +3 -0
  28. package/dist/auth/createAuth.d.ts.map +1 -0
  29. package/dist/auth/createAuth.js +128 -0
  30. package/dist/auth/createAuth.js.map +1 -0
  31. package/dist/auth/createAuthBrowser.d.ts +3 -0
  32. package/dist/auth/createAuthBrowser.d.ts.map +1 -0
  33. package/dist/auth/createAuthBrowser.js +104 -0
  34. package/dist/auth/createAuthBrowser.js.map +1 -0
  35. package/dist/auth/jwtClaims.d.ts +3 -0
  36. package/dist/auth/jwtClaims.d.ts.map +1 -0
  37. package/dist/auth/jwtClaims.js +23 -0
  38. package/dist/auth/jwtClaims.js.map +1 -0
  39. package/dist/auth/keyfile.d.ts +10 -0
  40. package/dist/auth/keyfile.d.ts.map +1 -0
  41. package/dist/auth/keyfile.js +28 -0
  42. package/dist/auth/keyfile.js.map +1 -0
  43. package/dist/auth/oidcDiscovery.d.ts +9 -0
  44. package/dist/auth/oidcDiscovery.d.ts.map +1 -0
  45. package/dist/auth/oidcDiscovery.js +27 -0
  46. package/dist/auth/oidcDiscovery.js.map +1 -0
  47. package/dist/auth/pkce.d.ts +4 -0
  48. package/dist/auth/pkce.d.ts.map +1 -0
  49. package/dist/auth/pkce.js +43 -0
  50. package/dist/auth/pkce.js.map +1 -0
  51. package/dist/auth/sessionStorage.d.ts +8 -0
  52. package/dist/auth/sessionStorage.d.ts.map +1 -0
  53. package/dist/auth/sessionStorage.js +8 -0
  54. package/dist/auth/sessionStorage.js.map +1 -0
  55. package/dist/auth/tokenRequests.d.ts +15 -0
  56. package/dist/auth/tokenRequests.d.ts.map +1 -0
  57. package/dist/auth/tokenRequests.js +89 -0
  58. package/dist/auth/tokenRequests.js.map +1 -0
  59. package/dist/auth/types.d.ts +35 -0
  60. package/dist/auth/types.d.ts.map +1 -0
  61. package/dist/auth/types.js +2 -0
  62. package/dist/auth/types.js.map +1 -0
  63. package/dist/auth/urlRuntime.d.ts +7 -0
  64. package/dist/auth/urlRuntime.d.ts.map +1 -0
  65. package/dist/auth/urlRuntime.js +17 -0
  66. package/dist/auth/urlRuntime.js.map +1 -0
  67. package/dist/browser/index.d.ts +8 -0
  68. package/dist/browser/index.d.ts.map +1 -0
  69. package/dist/browser/index.js +3 -0
  70. package/dist/browser/index.js.map +1 -0
  71. package/dist/calendar/calendar.d.ts +21 -0
  72. package/dist/calendar/calendar.d.ts.map +1 -0
  73. package/dist/calendar/calendar.js +105 -0
  74. package/dist/calendar/calendar.js.map +1 -0
  75. package/dist/calendar/calendarTypes.d.ts +191 -0
  76. package/dist/calendar/calendarTypes.d.ts.map +1 -0
  77. package/dist/calendar/calendarTypes.js +4 -0
  78. package/dist/calendar/calendarTypes.js.map +1 -0
  79. package/dist/contacts/contacts.d.ts +10 -0
  80. package/dist/contacts/contacts.d.ts.map +1 -0
  81. package/dist/contacts/contacts.js +86 -0
  82. package/dist/contacts/contacts.js.map +1 -0
  83. package/dist/contacts/contactsTypes.d.ts +81 -0
  84. package/dist/contacts/contactsTypes.d.ts.map +1 -0
  85. package/dist/contacts/contactsTypes.js +4 -0
  86. package/dist/contacts/contactsTypes.js.map +1 -0
  87. package/dist/drive/DriveRepository.d.ts +88 -0
  88. package/dist/drive/DriveRepository.d.ts.map +1 -0
  89. package/dist/drive/DriveRepository.js +156 -0
  90. package/dist/drive/DriveRepository.js.map +1 -0
  91. package/dist/drive/crontab.d.ts +7 -0
  92. package/dist/drive/crontab.d.ts.map +1 -0
  93. package/dist/drive/crontab.js +374 -0
  94. package/dist/drive/crontab.js.map +1 -0
  95. package/dist/drive/crontabTypes.d.ts +136 -0
  96. package/dist/drive/crontabTypes.d.ts.map +1 -0
  97. package/dist/drive/crontabTypes.js +2 -0
  98. package/dist/drive/crontabTypes.js.map +1 -0
  99. package/dist/drive/drive.d.ts +8 -0
  100. package/dist/drive/drive.d.ts.map +1 -0
  101. package/dist/drive/drive.js +711 -0
  102. package/dist/drive/drive.js.map +1 -0
  103. package/dist/drive/driveDb.d.ts +6 -0
  104. package/dist/drive/driveDb.d.ts.map +1 -0
  105. package/dist/drive/driveDb.js +220 -0
  106. package/dist/drive/driveDb.js.map +1 -0
  107. package/dist/drive/driveDbTypes.d.ts +138 -0
  108. package/dist/drive/driveDbTypes.d.ts.map +1 -0
  109. package/dist/drive/driveDbTypes.js +5 -0
  110. package/dist/drive/driveDbTypes.js.map +1 -0
  111. package/dist/drive/driveTypes.d.ts +322 -0
  112. package/dist/drive/driveTypes.d.ts.map +1 -0
  113. package/dist/drive/driveTypes.js +5 -0
  114. package/dist/drive/driveTypes.js.map +1 -0
  115. package/dist/drive/rpc.d.ts +14 -0
  116. package/dist/drive/rpc.d.ts.map +1 -0
  117. package/dist/drive/rpc.js +48 -0
  118. package/dist/drive/rpc.js.map +1 -0
  119. package/dist/drive/session.d.ts +7 -0
  120. package/dist/drive/session.d.ts.map +1 -0
  121. package/dist/drive/session.js +450 -0
  122. package/dist/drive/session.js.map +1 -0
  123. package/dist/drive/sessionBuilder.d.ts +33 -0
  124. package/dist/drive/sessionBuilder.d.ts.map +1 -0
  125. package/dist/drive/sessionBuilder.js +77 -0
  126. package/dist/drive/sessionBuilder.js.map +1 -0
  127. package/dist/drive/sessionObject.d.ts +57 -0
  128. package/dist/drive/sessionObject.d.ts.map +1 -0
  129. package/dist/drive/sessionObject.js +191 -0
  130. package/dist/drive/sessionObject.js.map +1 -0
  131. package/dist/drive/sessionTypes.d.ts +182 -0
  132. package/dist/drive/sessionTypes.d.ts.map +1 -0
  133. package/dist/drive/sessionTypes.js +2 -0
  134. package/dist/drive/sessionTypes.js.map +1 -0
  135. package/dist/drive/typeorm/DriveDriver.d.ts +27 -0
  136. package/dist/drive/typeorm/DriveDriver.d.ts.map +1 -0
  137. package/dist/drive/typeorm/DriveDriver.js +86 -0
  138. package/dist/drive/typeorm/DriveDriver.js.map +1 -0
  139. package/dist/drive/typeorm/DriveQueryRunner.d.ts +15 -0
  140. package/dist/drive/typeorm/DriveQueryRunner.d.ts.map +1 -0
  141. package/dist/drive/typeorm/DriveQueryRunner.js +76 -0
  142. package/dist/drive/typeorm/DriveQueryRunner.js.map +1 -0
  143. package/dist/drive/typeorm/createDriveDataSource.d.ts +3 -0
  144. package/dist/drive/typeorm/createDriveDataSource.d.ts.map +1 -0
  145. package/dist/drive/typeorm/createDriveDataSource.js +36 -0
  146. package/dist/drive/typeorm/createDriveDataSource.js.map +1 -0
  147. package/dist/drive/typeorm/datasourceTypes.d.ts +56 -0
  148. package/dist/drive/typeorm/datasourceTypes.d.ts.map +1 -0
  149. package/dist/drive/typeorm/datasourceTypes.js +5 -0
  150. package/dist/drive/typeorm/datasourceTypes.js.map +1 -0
  151. package/dist/drive/types.d.ts +48 -0
  152. package/dist/drive/types.d.ts.map +1 -0
  153. package/dist/drive/types.js +2 -0
  154. package/dist/drive/types.js.map +1 -0
  155. package/dist/env/apiKey.d.ts +2 -0
  156. package/dist/env/apiKey.d.ts.map +1 -0
  157. package/dist/env/apiKey.js +11 -0
  158. package/dist/env/apiKey.js.map +1 -0
  159. package/dist/env/baseUrl.d.ts +3 -0
  160. package/dist/env/baseUrl.d.ts.map +1 -0
  161. package/dist/env/baseUrl.js +31 -0
  162. package/dist/env/baseUrl.js.map +1 -0
  163. package/dist/inbox/inboxTypes.d.ts +34 -0
  164. package/dist/inbox/inboxTypes.d.ts.map +1 -0
  165. package/dist/inbox/inboxTypes.js +5 -0
  166. package/dist/inbox/inboxTypes.js.map +1 -0
  167. package/dist/index.d.ts +56 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +43 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/llmRouter/llmRouter.d.ts +23 -0
  172. package/dist/llmRouter/llmRouter.d.ts.map +1 -0
  173. package/dist/llmRouter/llmRouter.js +566 -0
  174. package/dist/llmRouter/llmRouter.js.map +1 -0
  175. package/dist/llmRouter/llmRouterTypes.d.ts +350 -0
  176. package/dist/llmRouter/llmRouterTypes.d.ts.map +1 -0
  177. package/dist/llmRouter/llmRouterTypes.js +5 -0
  178. package/dist/llmRouter/llmRouterTypes.js.map +1 -0
  179. package/dist/mcpHub/mcpHub.d.ts +23 -0
  180. package/dist/mcpHub/mcpHub.d.ts.map +1 -0
  181. package/dist/mcpHub/mcpHub.js +223 -0
  182. package/dist/mcpHub/mcpHub.js.map +1 -0
  183. package/dist/mcpHub/mcpHubTypes.d.ts +228 -0
  184. package/dist/mcpHub/mcpHubTypes.d.ts.map +1 -0
  185. package/dist/mcpHub/mcpHubTypes.js +5 -0
  186. package/dist/mcpHub/mcpHubTypes.js.map +1 -0
  187. package/dist/mcpTools/mcpTools.d.ts +31 -0
  188. package/dist/mcpTools/mcpTools.d.ts.map +1 -0
  189. package/dist/mcpTools/mcpTools.js +144 -0
  190. package/dist/mcpTools/mcpTools.js.map +1 -0
  191. package/dist/mcpTools/mcpToolsTypes.d.ts +45 -0
  192. package/dist/mcpTools/mcpToolsTypes.d.ts.map +1 -0
  193. package/dist/mcpTools/mcpToolsTypes.js +5 -0
  194. package/dist/mcpTools/mcpToolsTypes.js.map +1 -0
  195. package/dist/messagesStore/messagesStore.d.ts +22 -0
  196. package/dist/messagesStore/messagesStore.d.ts.map +1 -0
  197. package/dist/messagesStore/messagesStore.js +402 -0
  198. package/dist/messagesStore/messagesStore.js.map +1 -0
  199. package/dist/messagesStore/messagesStoreTypes.d.ts +327 -0
  200. package/dist/messagesStore/messagesStoreTypes.d.ts.map +1 -0
  201. package/dist/messagesStore/messagesStoreTypes.js +11 -0
  202. package/dist/messagesStore/messagesStoreTypes.js.map +1 -0
  203. package/dist/node/fastDns.d.ts +2 -0
  204. package/dist/node/fastDns.d.ts.map +1 -0
  205. package/dist/node/fastDns.js +119 -0
  206. package/dist/node/fastDns.js.map +1 -0
  207. package/dist/operatives/operatives.d.ts +22 -0
  208. package/dist/operatives/operatives.d.ts.map +1 -0
  209. package/dist/operatives/operatives.js +199 -0
  210. package/dist/operatives/operatives.js.map +1 -0
  211. package/dist/operatives/operativesTypes.d.ts +141 -0
  212. package/dist/operatives/operativesTypes.d.ts.map +1 -0
  213. package/dist/operatives/operativesTypes.js +6 -0
  214. package/dist/operatives/operativesTypes.js.map +1 -0
  215. package/dist/platformEvents/platformEvents.d.ts +14 -0
  216. package/dist/platformEvents/platformEvents.d.ts.map +1 -0
  217. package/dist/platformEvents/platformEvents.js +70 -0
  218. package/dist/platformEvents/platformEvents.js.map +1 -0
  219. package/dist/platformEvents/platformEventsTypes.d.ts +31 -0
  220. package/dist/platformEvents/platformEventsTypes.d.ts.map +1 -0
  221. package/dist/platformEvents/platformEventsTypes.js +8 -0
  222. package/dist/platformEvents/platformEventsTypes.js.map +1 -0
  223. package/dist/projects/projects.d.ts +19 -0
  224. package/dist/projects/projects.d.ts.map +1 -0
  225. package/dist/projects/projects.js +52 -0
  226. package/dist/projects/projects.js.map +1 -0
  227. package/dist/projects/projectsTypes.d.ts +47 -0
  228. package/dist/projects/projectsTypes.d.ts.map +1 -0
  229. package/dist/projects/projectsTypes.js +4 -0
  230. package/dist/projects/projectsTypes.js.map +1 -0
  231. package/dist/routineRuns/routineRuns.d.ts +19 -0
  232. package/dist/routineRuns/routineRuns.d.ts.map +1 -0
  233. package/dist/routineRuns/routineRuns.js +47 -0
  234. package/dist/routineRuns/routineRuns.js.map +1 -0
  235. package/dist/routineRuns/routineRunsTypes.d.ts +39 -0
  236. package/dist/routineRuns/routineRunsTypes.d.ts.map +1 -0
  237. package/dist/routineRuns/routineRunsTypes.js +4 -0
  238. package/dist/routineRuns/routineRunsTypes.js.map +1 -0
  239. package/dist/routines/routines.d.ts +19 -0
  240. package/dist/routines/routines.d.ts.map +1 -0
  241. package/dist/routines/routines.js +77 -0
  242. package/dist/routines/routines.js.map +1 -0
  243. package/dist/routines/routinesTypes.d.ts +106 -0
  244. package/dist/routines/routinesTypes.d.ts.map +1 -0
  245. package/dist/routines/routinesTypes.js +4 -0
  246. package/dist/routines/routinesTypes.js.map +1 -0
  247. package/dist/sdk/diskd.d.ts +3 -0
  248. package/dist/sdk/diskd.d.ts.map +1 -0
  249. package/dist/sdk/diskd.js +126 -0
  250. package/dist/sdk/diskd.js.map +1 -0
  251. package/dist/sdk/http.d.ts +13 -0
  252. package/dist/sdk/http.d.ts.map +1 -0
  253. package/dist/sdk/http.js +80 -0
  254. package/dist/sdk/http.js.map +1 -0
  255. package/dist/sdk/types.d.ts +115 -0
  256. package/dist/sdk/types.d.ts.map +1 -0
  257. package/dist/sdk/types.js +2 -0
  258. package/dist/sdk/types.js.map +1 -0
  259. package/dist/testing/auth.d.ts +8 -0
  260. package/dist/testing/auth.d.ts.map +1 -0
  261. package/dist/testing/auth.js +14 -0
  262. package/dist/testing/auth.js.map +1 -0
  263. package/dist/testing/fetchMock.d.ts +17 -0
  264. package/dist/testing/fetchMock.d.ts.map +1 -0
  265. package/dist/testing/fetchMock.js +46 -0
  266. package/dist/testing/fetchMock.js.map +1 -0
  267. package/dist/testing/index.d.ts +11 -0
  268. package/dist/testing/index.d.ts.map +1 -0
  269. package/dist/testing/index.js +11 -0
  270. package/dist/testing/index.js.map +1 -0
  271. package/dist/testing/integration.d.ts +33 -0
  272. package/dist/testing/integration.d.ts.map +1 -0
  273. package/dist/testing/integration.js +32 -0
  274. package/dist/testing/integration.js.map +1 -0
  275. package/dist/testing/jsonRpc.d.ts +9 -0
  276. package/dist/testing/jsonRpc.d.ts.map +1 -0
  277. package/dist/testing/jsonRpc.js +24 -0
  278. package/dist/testing/jsonRpc.js.map +1 -0
  279. package/dist/testing/rpcMock.d.ts +16 -0
  280. package/dist/testing/rpcMock.d.ts.map +1 -0
  281. package/dist/testing/rpcMock.js +28 -0
  282. package/dist/testing/rpcMock.js.map +1 -0
  283. package/dist/tgUserbot/tgUserbot.d.ts +23 -0
  284. package/dist/tgUserbot/tgUserbot.d.ts.map +1 -0
  285. package/dist/tgUserbot/tgUserbot.js +314 -0
  286. package/dist/tgUserbot/tgUserbot.js.map +1 -0
  287. package/dist/tgUserbot/tgUserbotTypes.d.ts +124 -0
  288. package/dist/tgUserbot/tgUserbotTypes.d.ts.map +1 -0
  289. package/dist/tgUserbot/tgUserbotTypes.js +5 -0
  290. package/dist/tgUserbot/tgUserbotTypes.js.map +1 -0
  291. package/dist/webNavigator/webNavigator.d.ts +22 -0
  292. package/dist/webNavigator/webNavigator.d.ts.map +1 -0
  293. package/dist/webNavigator/webNavigator.js +46 -0
  294. package/dist/webNavigator/webNavigator.js.map +1 -0
  295. package/dist/webNavigator/webNavigatorTypes.d.ts +133 -0
  296. package/dist/webNavigator/webNavigatorTypes.d.ts.map +1 -0
  297. package/dist/webNavigator/webNavigatorTypes.js +5 -0
  298. package/dist/webNavigator/webNavigatorTypes.js.map +1 -0
  299. package/package.json +90 -0
@@ -0,0 +1,55 @@
1
+ /**
2
+ * StreamProtocolFetcher -- fluent SSE stream consumer using Web API (fetch + ReadableStream).
3
+ *
4
+ * Unlike the agent-hub SDK version (which depends on node-fetch), this
5
+ * implementation uses the standard Web Fetch API so it works in both
6
+ * Node.js 18+ and browser environments.
7
+ */
8
+ type EventCallback<T> = (event: T) => void;
9
+ /**
10
+ * Fluent wrapper around an SSE response stream.
11
+ *
12
+ * Usage:
13
+ * ```ts
14
+ * const stream = await StreamProtocolFetcher.fetchStream(url, { body: payload });
15
+ * stream
16
+ * .map((event) => handler.handle(event))
17
+ * .stop(() => console.log('stream ended'))
18
+ * .catch((err) => console.error(err));
19
+ * ```
20
+ */
21
+ export declare class StreamProtocolStream<T = unknown> {
22
+ private readonly mapCallbacks;
23
+ private readonly successCallbacks;
24
+ private readonly stopCallbacks;
25
+ private readonly errorCallbacks;
26
+ private readonly response;
27
+ private buffer;
28
+ private isActive;
29
+ constructor(response: Response);
30
+ /** Register a callback to process each parsed event. */
31
+ map(callback: EventCallback<T>): this;
32
+ /** Register a callback for successful completion ([DONE] received). */
33
+ success(callback: EventCallback<void>): this;
34
+ /** Register a callback for when the stream ends (natural or manual close). */
35
+ stop(callback: EventCallback<void>): this;
36
+ /** Register a callback for stream errors. */
37
+ catch(callback: EventCallback<Error>): this;
38
+ /** Manually close the stream. */
39
+ close(): void;
40
+ private processStream;
41
+ }
42
+ export declare const StreamProtocolFetcher: {
43
+ /**
44
+ * Opens an SSE stream to the given URL and returns a `StreamProtocolStream`
45
+ * for fluent event processing.
46
+ */
47
+ readonly fetchStream: <T = unknown>(url: string, options?: {
48
+ readonly method?: string;
49
+ readonly headers?: Readonly<Record<string, string>>;
50
+ readonly body?: string | object;
51
+ readonly signal?: AbortSignal;
52
+ }) => Promise<StreamProtocolStream<T>>;
53
+ };
54
+ export {};
55
+ //# sourceMappingURL=StreamProtocolFetcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamProtocolFetcher.d.ts","sourceRoot":"","sources":["../../src/agentHub/StreamProtocolFetcher.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAE3C;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAoB,CAAC,CAAC,GAAG,OAAO;IAC3C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA6B;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAiB;gBAErB,QAAQ,EAAE,QAAQ;IAK9B,wDAAwD;IACxD,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAKrC,uEAAuE;IACvE,OAAO,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI;IAK5C,8EAA8E;IAC9E,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI;IAKzC,6CAA6C;IAC7C,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;IAK3C,iCAAiC;IACjC,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,aAAa;CAoFtB;AAMD,eAAO,MAAM,qBAAqB;IAChC;;;OAGG;2BACe,CAAC,iBACZ,MAAM,YACF;QACP,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,KACA,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAyB3B,CAAC"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * StreamProtocolFetcher -- fluent SSE stream consumer using Web API (fetch + ReadableStream).
3
+ *
4
+ * Unlike the agent-hub SDK version (which depends on node-fetch), this
5
+ * implementation uses the standard Web Fetch API so it works in both
6
+ * Node.js 18+ and browser environments.
7
+ */
8
+ /**
9
+ * Fluent wrapper around an SSE response stream.
10
+ *
11
+ * Usage:
12
+ * ```ts
13
+ * const stream = await StreamProtocolFetcher.fetchStream(url, { body: payload });
14
+ * stream
15
+ * .map((event) => handler.handle(event))
16
+ * .stop(() => console.log('stream ended'))
17
+ * .catch((err) => console.error(err));
18
+ * ```
19
+ */
20
+ export class StreamProtocolStream {
21
+ mapCallbacks = [];
22
+ successCallbacks = [];
23
+ stopCallbacks = [];
24
+ errorCallbacks = [];
25
+ response;
26
+ buffer = '';
27
+ isActive = true;
28
+ constructor(response) {
29
+ this.response = response;
30
+ this.processStream();
31
+ }
32
+ /** Register a callback to process each parsed event. */
33
+ map(callback) {
34
+ this.mapCallbacks.push(callback);
35
+ return this;
36
+ }
37
+ /** Register a callback for successful completion ([DONE] received). */
38
+ success(callback) {
39
+ this.successCallbacks.push(callback);
40
+ return this;
41
+ }
42
+ /** Register a callback for when the stream ends (natural or manual close). */
43
+ stop(callback) {
44
+ this.stopCallbacks.push(callback);
45
+ return this;
46
+ }
47
+ /** Register a callback for stream errors. */
48
+ catch(callback) {
49
+ this.errorCallbacks.push(callback);
50
+ return this;
51
+ }
52
+ /** Manually close the stream. */
53
+ close() {
54
+ if (this.isActive) {
55
+ this.isActive = false;
56
+ for (const cb of this.stopCallbacks)
57
+ cb();
58
+ }
59
+ }
60
+ // -------------------------------------------------------------------------
61
+ // Private: stream processing via ReadableStream (Web API)
62
+ // -------------------------------------------------------------------------
63
+ processStream() {
64
+ const { body } = this.response;
65
+ if (body === null) {
66
+ const error = new Error('No response body received');
67
+ for (const cb of this.errorCallbacks)
68
+ cb(error);
69
+ return;
70
+ }
71
+ const reader = body.getReader();
72
+ const decoder = new TextDecoder();
73
+ const pump = () => {
74
+ reader
75
+ .read()
76
+ .then(({ value, done }) => {
77
+ if (!this.isActive)
78
+ return;
79
+ if (done) {
80
+ this.isActive = false;
81
+ for (const cb of this.stopCallbacks)
82
+ cb();
83
+ return;
84
+ }
85
+ const text = decoder.decode(value, { stream: true });
86
+ this.buffer += text;
87
+ const parts = this.buffer.split('\n\n');
88
+ this.buffer = parts.pop() ?? '';
89
+ for (const part of parts) {
90
+ if (!this.isActive)
91
+ break;
92
+ const trimmed = part.trim();
93
+ if (trimmed.length === 0)
94
+ continue;
95
+ // Skip SSE comments (e.g., `:keepalive`)
96
+ if (trimmed.startsWith(':'))
97
+ continue;
98
+ // Extract `data:` line from SSE block
99
+ let dataLine;
100
+ for (const line of trimmed.split('\n')) {
101
+ if (line.startsWith('data:')) {
102
+ dataLine = line.slice('data:'.length).trim();
103
+ }
104
+ }
105
+ if (dataLine === undefined) {
106
+ // Try parsing the raw block as JSON (non-SSE format)
107
+ try {
108
+ const parsed = JSON.parse(trimmed);
109
+ for (const cb of this.mapCallbacks)
110
+ cb(parsed);
111
+ }
112
+ catch {
113
+ // Not JSON -- skip silently
114
+ }
115
+ continue;
116
+ }
117
+ // [DONE] sentinel -- stream complete
118
+ if (dataLine === '[DONE]') {
119
+ for (const cb of this.successCallbacks)
120
+ cb();
121
+ continue;
122
+ }
123
+ try {
124
+ const parsed = JSON.parse(dataLine);
125
+ for (const cb of this.mapCallbacks)
126
+ cb(parsed);
127
+ }
128
+ catch {
129
+ // Malformed JSON line -- skip
130
+ }
131
+ }
132
+ pump();
133
+ })
134
+ .catch((err) => {
135
+ if (this.isActive) {
136
+ this.isActive = false;
137
+ const error = err instanceof Error ? err : new Error(String(err));
138
+ for (const cb of this.errorCallbacks)
139
+ cb(error);
140
+ }
141
+ });
142
+ };
143
+ pump();
144
+ }
145
+ }
146
+ // ---------------------------------------------------------------------------
147
+ // Static factory
148
+ // ---------------------------------------------------------------------------
149
+ export const StreamProtocolFetcher = {
150
+ /**
151
+ * Opens an SSE stream to the given URL and returns a `StreamProtocolStream`
152
+ * for fluent event processing.
153
+ */
154
+ async fetchStream(url, options = {}) {
155
+ const headers = {
156
+ 'Content-Type': 'application/json',
157
+ Accept: 'text/event-stream',
158
+ ...(options.headers ?? {}),
159
+ };
160
+ let body;
161
+ if (options.body !== undefined) {
162
+ body = typeof options.body === 'string' ? options.body : JSON.stringify(options.body);
163
+ }
164
+ const response = await fetch(url, {
165
+ method: options.method ?? 'POST',
166
+ headers,
167
+ body,
168
+ signal: options.signal,
169
+ });
170
+ if (!response.ok) {
171
+ throw new Error(`HTTP Error: ${response.status} ${response.statusText}`);
172
+ }
173
+ return new StreamProtocolStream(response);
174
+ },
175
+ };
176
+ //# sourceMappingURL=StreamProtocolFetcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamProtocolFetcher.js","sourceRoot":"","sources":["../../src/agentHub/StreamProtocolFetcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { StreamProtocolMap } from './streamProtocolMap.js';
2
+ /**
3
+ * Strongly-typed fluent API for routing stream protocol events to handlers.
4
+ *
5
+ * Usage:
6
+ * ```ts
7
+ * const handler = new StreamProtocolHandler()
8
+ * .on('response.output_text.delta', (event) => process.stdout.write(event.delta))
9
+ * .on('response.completed', (event) => console.log('done', event.response.usage))
10
+ * .on('error', (event) => console.error(event.message));
11
+ * ```
12
+ */
13
+ export declare class StreamProtocolHandler {
14
+ private readonly handlers;
15
+ on<K extends keyof StreamProtocolMap>(type: K, handler: StreamProtocolMap[K]): this;
16
+ handle(event: unknown): void;
17
+ }
18
+ //# sourceMappingURL=StreamProtocolHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamProtocolHandler.d.ts","sourceRoot":"","sources":["../../src/agentHub/StreamProtocolHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAMhE;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAE7C,EAAE,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI;IAKnF,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;CAqD7B"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Strongly-typed fluent API for routing stream protocol events to handlers.
3
+ *
4
+ * Usage:
5
+ * ```ts
6
+ * const handler = new StreamProtocolHandler()
7
+ * .on('response.output_text.delta', (event) => process.stdout.write(event.delta))
8
+ * .on('response.completed', (event) => console.log('done', event.response.usage))
9
+ * .on('error', (event) => console.error(event.message));
10
+ * ```
11
+ */
12
+ export class StreamProtocolHandler {
13
+ handlers = {};
14
+ on(type, handler) {
15
+ this.handlers[type] = handler;
16
+ return this;
17
+ }
18
+ handle(event) {
19
+ if (!event)
20
+ return;
21
+ // Handle raw string events
22
+ if (typeof event === 'string') {
23
+ const h = this.handlers.string;
24
+ if (h)
25
+ h(event);
26
+ return;
27
+ }
28
+ if (typeof event !== 'object')
29
+ return;
30
+ const eventObj = event;
31
+ // Handle OpenAI-compatible streaming format (choices[0].delta.content)
32
+ if ('choices' in eventObj && Array.isArray(eventObj.choices)) {
33
+ const choices = eventObj.choices;
34
+ const delta = choices[0]?.delta;
35
+ if (delta?.content && this.handlers['response.output_text.delta']) {
36
+ this.handlers['response.output_text.delta']({
37
+ type: 'response.output_text.delta',
38
+ delta: delta.content,
39
+ });
40
+ return;
41
+ }
42
+ }
43
+ // Direct event type dispatch
44
+ if ('type' in eventObj && typeof eventObj.type === 'string') {
45
+ const eventType = eventObj.type;
46
+ const h = this.handlers[eventType];
47
+ if (h) {
48
+ h(event);
49
+ return;
50
+ }
51
+ }
52
+ // Fallback: content without specific type
53
+ if (!('type' in eventObj) && 'content' in eventObj && this.handlers.content) {
54
+ this.handlers.content(event);
55
+ return;
56
+ }
57
+ // Generic content fallback
58
+ if (this.handlers.content) {
59
+ this.handlers.content(event);
60
+ }
61
+ }
62
+ }
63
+ //# sourceMappingURL=StreamProtocolHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StreamProtocolHandler.js","sourceRoot":"","sources":["../../src/agentHub/StreamProtocolHandler.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,MAAM,OAAO,qBAAqB;IACf,QAAQ,GAAiB,EAAE,CAAC;IAE7C,EAAE,CAAoC,IAAO,EAAE,OAA6B;QAC1E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAc;QACnB,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,2BAA2B;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC;gBAAG,CAAyB,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO;QAEtC,MAAM,QAAQ,GAAG,KAAgC,CAAC;QAElD,uEAAuE;QACvE,IAAI,SAAS,IAAI,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAsD,CAAC;YAChF,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC;YAChC,IAAI,KAAK,EAAE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;gBAEhE,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAI3C,CAAC;oBACA,IAAI,EAAE,4BAA4B;oBAClC,KAAK,EAAE,KAAK,CAAC,OAAO;iBACrB,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,IAAI,MAAM,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5D,MAAM,SAAS,GAAG,QAAQ,CAAC,IAA+B,CAAC;YAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC;gBACL,CAA0B,CAAC,KAAK,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC3E,IAAI,CAAC,QAAQ,CAAC,OAAgC,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC,OAAgC,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ import type { AuthModule } from '../auth/types.js';
2
+ import type { AgentHubClient } from './agentHubTypes.js';
3
+ /**
4
+ * Creates an Agent Hub client bound to a given auth module and workspace.
5
+ *
6
+ * The URL defaults to the centralized `APIS_BASE_URL` gateway with the
7
+ * `/v1/os/agents` path prefix.
8
+ *
9
+ * The workspace is derived from `auth.getWorkspaceId()` on each request.
10
+ *
11
+ * The `invoke` method returns a `StreamProtocolStream` for fluent event handling
12
+ * via `StreamProtocolHandler`:
13
+ *
14
+ * ```ts
15
+ * const hub = createAgentHubClient({ auth });
16
+ * const handler = new StreamProtocolHandler()
17
+ * .on('response.output_text.delta', (e) => process.stdout.write(e.delta))
18
+ * .on('response.completed', () => console.log('done'));
19
+ *
20
+ * const stream = await hub.invoke({ agentName: 'assistant', query: 'Hello' });
21
+ * stream.map((event) => handler.handle(event))
22
+ * .stop(() => console.log('closed'))
23
+ * .catch((err) => console.error(err));
24
+ * ```
25
+ */
26
+ export declare const createAgentHubClient: (params: {
27
+ readonly auth: AuthModule;
28
+ readonly url?: string;
29
+ }) => AgentHubClient;
30
+ //# sourceMappingURL=agentHub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentHub.d.ts","sourceRoot":"","sources":["../../src/agentHub/agentHub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EACV,cAAc,EAKf,MAAM,oBAAoB,CAAC;AA+G5B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,oBAAoB,GAAI,QAAQ;IAC3C,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB,KAAG,cAuHH,CAAC"}
@@ -0,0 +1,200 @@
1
+ import { resolveDiskdGatewayUrl } from '../env/baseUrl.js';
2
+ import { StreamProtocolFetcher } from './StreamProtocolFetcher.js';
3
+ const isObject = (value) => typeof value === 'object' && value !== null;
4
+ const str = (obj, key) => {
5
+ const v = obj[key];
6
+ return typeof v === 'string' ? v : undefined;
7
+ };
8
+ const bool = (obj, key) => {
9
+ const v = obj[key];
10
+ return typeof v === 'boolean' ? v : undefined;
11
+ };
12
+ const strArray = (obj, key) => {
13
+ const v = obj[key];
14
+ if (!Array.isArray(v))
15
+ return undefined;
16
+ return v.filter((item) => typeof item === 'string');
17
+ };
18
+ const buildQueryString = (params) => {
19
+ const entries = Object.entries(params).filter(([, v]) => v !== undefined && v !== '');
20
+ if (entries.length === 0)
21
+ return '';
22
+ const searchParams = new URLSearchParams();
23
+ for (const [key, value] of entries) {
24
+ searchParams.set(key, String(value));
25
+ }
26
+ return `?${searchParams.toString()}`;
27
+ };
28
+ // ---------------------------------------------------------------------------
29
+ // Response decoders
30
+ // ---------------------------------------------------------------------------
31
+ const decodeAgentInfo = (o) => {
32
+ if (!isObject(o))
33
+ throw new Error('Invalid Agent Hub response: agent info must be an object');
34
+ return {
35
+ id: str(o, 'id') ?? '',
36
+ displayName: str(o, 'displayName') ?? str(o, 'display_name') ?? '',
37
+ };
38
+ };
39
+ const httpRequest = async (options) => {
40
+ const headers = {
41
+ ...options.authHeaders,
42
+ 'X-Workspace-Id': options.workspaceId,
43
+ };
44
+ if (options.body !== undefined) {
45
+ headers['Content-Type'] = 'application/json';
46
+ }
47
+ const response = await fetch(options.url, {
48
+ method: options.method,
49
+ headers,
50
+ body: options.body !== undefined ? JSON.stringify(options.body) : undefined,
51
+ });
52
+ if (!response.ok) {
53
+ let message = `HTTP ${response.status}`;
54
+ try {
55
+ const errorData = (await response.json());
56
+ if (isObject(errorData)) {
57
+ const err = errorData.error;
58
+ if (isObject(err) && typeof err.message === 'string') {
59
+ message = err.message;
60
+ }
61
+ else if (typeof errorData.message === 'string') {
62
+ message = errorData.message;
63
+ }
64
+ }
65
+ }
66
+ catch {
67
+ // Could not parse error body -- use default message
68
+ }
69
+ throw new Error(`Agent Hub request failed (${response.status}): ${message}`);
70
+ }
71
+ if (response.status === 204) {
72
+ return undefined;
73
+ }
74
+ return (await response.json());
75
+ };
76
+ // ---------------------------------------------------------------------------
77
+ // Client factory
78
+ // ---------------------------------------------------------------------------
79
+ /**
80
+ * Creates an Agent Hub client bound to a given auth module and workspace.
81
+ *
82
+ * The URL defaults to the centralized `APIS_BASE_URL` gateway with the
83
+ * `/v1/os/agents` path prefix.
84
+ *
85
+ * The workspace is derived from `auth.getWorkspaceId()` on each request.
86
+ *
87
+ * The `invoke` method returns a `StreamProtocolStream` for fluent event handling
88
+ * via `StreamProtocolHandler`:
89
+ *
90
+ * ```ts
91
+ * const hub = createAgentHubClient({ auth });
92
+ * const handler = new StreamProtocolHandler()
93
+ * .on('response.output_text.delta', (e) => process.stdout.write(e.delta))
94
+ * .on('response.completed', () => console.log('done'));
95
+ *
96
+ * const stream = await hub.invoke({ agentName: 'assistant', query: 'Hello' });
97
+ * stream.map((event) => handler.handle(event))
98
+ * .stop(() => console.log('closed'))
99
+ * .catch((err) => console.error(err));
100
+ * ```
101
+ */
102
+ export const createAgentHubClient = (params) => {
103
+ const baseUrl = (params.url ?? resolveDiskdGatewayUrl('os/agents')).replace(/\/+$/, '');
104
+ const resolveWorkspaceId = async () => await params.auth.getWorkspaceId();
105
+ const getAuthHeaders = async () => {
106
+ if (params.auth.getRequestHeaders) {
107
+ return params.auth.getRequestHeaders();
108
+ }
109
+ const token = await params.auth.getAccessToken();
110
+ return { Authorization: `Bearer ${token}` };
111
+ };
112
+ const request = async (method, path, opts = {}) => {
113
+ const authHeaders = await getAuthHeaders();
114
+ const workspaceId = await resolveWorkspaceId();
115
+ const qs = opts.query ? buildQueryString(opts.query) : '';
116
+ return httpRequest({
117
+ method,
118
+ url: `${baseUrl}${path}${qs}`,
119
+ authHeaders,
120
+ workspaceId,
121
+ body: opts.body,
122
+ });
123
+ };
124
+ return {
125
+ invoke: async (invokeParams) => {
126
+ const authHeaders = await getAuthHeaders();
127
+ const workspaceId = await resolveWorkspaceId();
128
+ return StreamProtocolFetcher.fetchStream(`${baseUrl}/invoke`, {
129
+ method: 'POST',
130
+ headers: {
131
+ ...authHeaders,
132
+ 'X-Workspace-Id': workspaceId,
133
+ },
134
+ body: invokeParams,
135
+ });
136
+ },
137
+ agents: {
138
+ list: async () => {
139
+ const raw = await request('GET', '/supported-agents');
140
+ return Array.isArray(raw) ? raw.map(decodeAgentInfo) : [];
141
+ },
142
+ getSupportedModels: async (agentId) => {
143
+ const raw = await request('GET', '/supported-models', {
144
+ query: { agent: agentId },
145
+ });
146
+ const modelsRaw = raw.models;
147
+ if (!Array.isArray(modelsRaw))
148
+ return { models: [] };
149
+ return {
150
+ models: modelsRaw.map((m) => {
151
+ if (!isObject(m))
152
+ throw new Error('Invalid Agent Hub response: model info must be an object');
153
+ return {
154
+ provider: str(m, 'provider') ?? '',
155
+ model: str(m, 'model') ?? '',
156
+ displayName: str(m, 'displayName') ?? str(m, 'display_name') ?? '',
157
+ description: str(m, 'description') ?? '',
158
+ supportedTypes: strArray(m, 'supportedTypes') ?? strArray(m, 'supported_types'),
159
+ isStreamModel: bool(m, 'isStreamModel') ?? bool(m, 'is_stream_model'),
160
+ };
161
+ }),
162
+ };
163
+ },
164
+ },
165
+ billing: {
166
+ getAliases: async () => {
167
+ const raw = await request('GET', '/billing-aliases');
168
+ const modelsRaw = raw.models;
169
+ const providersRaw = raw.providers;
170
+ const agentsRaw = raw.agents;
171
+ const models = Array.isArray(modelsRaw)
172
+ ? modelsRaw.map((m) => {
173
+ if (!isObject(m))
174
+ throw new Error('Invalid Agent Hub response: billing alias model must be an object');
175
+ return {
176
+ billingAlias: str(m, 'billingAlias') ?? str(m, 'billing_alias') ?? '',
177
+ provider: str(m, 'provider') ?? '',
178
+ model: str(m, 'model') ?? '',
179
+ displayName: str(m, 'displayName') ?? str(m, 'display_name') ?? '',
180
+ description: str(m, 'description') ?? '',
181
+ usedBy: strArray(m, 'usedBy') ?? strArray(m, 'used_by') ?? [],
182
+ supportedTypes: strArray(m, 'supportedTypes') ?? strArray(m, 'supported_types') ?? [],
183
+ isStreamModel: bool(m, 'isStreamModel') ?? bool(m, 'is_stream_model') ?? false,
184
+ };
185
+ })
186
+ : [];
187
+ const providers = Array.isArray(providersRaw)
188
+ ? providersRaw.map((p) => {
189
+ if (!isObject(p))
190
+ throw new Error('Invalid Agent Hub response: provider must be an object');
191
+ return { id: str(p, 'id') ?? '' };
192
+ })
193
+ : [];
194
+ const agents = Array.isArray(agentsRaw) ? agentsRaw.map(decodeAgentInfo) : [];
195
+ return { models, providers, agents };
196
+ },
197
+ },
198
+ };
199
+ };
200
+ //# sourceMappingURL=agentHub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentHub.js","sourceRoot":"","sources":["../../src/agentHub/agentHub.ts"],"names":[],"mappings":"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"}