@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.
- package/LICENSE +190 -0
- package/README.md +1036 -0
- package/dist/agentHub/StreamProtocolFetcher.d.ts +55 -0
- package/dist/agentHub/StreamProtocolFetcher.d.ts.map +1 -0
- package/dist/agentHub/StreamProtocolFetcher.js +176 -0
- package/dist/agentHub/StreamProtocolFetcher.js.map +1 -0
- package/dist/agentHub/StreamProtocolHandler.d.ts +18 -0
- package/dist/agentHub/StreamProtocolHandler.d.ts.map +1 -0
- package/dist/agentHub/StreamProtocolHandler.js +63 -0
- package/dist/agentHub/StreamProtocolHandler.js.map +1 -0
- package/dist/agentHub/agentHub.d.ts +30 -0
- package/dist/agentHub/agentHub.d.ts.map +1 -0
- package/dist/agentHub/agentHub.js +200 -0
- package/dist/agentHub/agentHub.js.map +1 -0
- package/dist/agentHub/agentHubTypes.d.ts +110 -0
- package/dist/agentHub/agentHubTypes.d.ts.map +1 -0
- package/dist/agentHub/agentHubTypes.js +8 -0
- package/dist/agentHub/agentHubTypes.js.map +1 -0
- package/dist/agentHub/streamProtocolMap.d.ts +328 -0
- package/dist/agentHub/streamProtocolMap.d.ts.map +1 -0
- package/dist/agentHub/streamProtocolMap.js +8 -0
- package/dist/agentHub/streamProtocolMap.js.map +1 -0
- package/dist/auth/createApiKeyAuth.d.ts +11 -0
- package/dist/auth/createApiKeyAuth.d.ts.map +1 -0
- package/dist/auth/createApiKeyAuth.js +31 -0
- package/dist/auth/createApiKeyAuth.js.map +1 -0
- package/dist/auth/createAuth.d.ts +3 -0
- package/dist/auth/createAuth.d.ts.map +1 -0
- package/dist/auth/createAuth.js +128 -0
- package/dist/auth/createAuth.js.map +1 -0
- package/dist/auth/createAuthBrowser.d.ts +3 -0
- package/dist/auth/createAuthBrowser.d.ts.map +1 -0
- package/dist/auth/createAuthBrowser.js +104 -0
- package/dist/auth/createAuthBrowser.js.map +1 -0
- package/dist/auth/jwtClaims.d.ts +3 -0
- package/dist/auth/jwtClaims.d.ts.map +1 -0
- package/dist/auth/jwtClaims.js +23 -0
- package/dist/auth/jwtClaims.js.map +1 -0
- package/dist/auth/keyfile.d.ts +10 -0
- package/dist/auth/keyfile.d.ts.map +1 -0
- package/dist/auth/keyfile.js +28 -0
- package/dist/auth/keyfile.js.map +1 -0
- package/dist/auth/oidcDiscovery.d.ts +9 -0
- package/dist/auth/oidcDiscovery.d.ts.map +1 -0
- package/dist/auth/oidcDiscovery.js +27 -0
- package/dist/auth/oidcDiscovery.js.map +1 -0
- package/dist/auth/pkce.d.ts +4 -0
- package/dist/auth/pkce.d.ts.map +1 -0
- package/dist/auth/pkce.js +43 -0
- package/dist/auth/pkce.js.map +1 -0
- package/dist/auth/sessionStorage.d.ts +8 -0
- package/dist/auth/sessionStorage.d.ts.map +1 -0
- package/dist/auth/sessionStorage.js +8 -0
- package/dist/auth/sessionStorage.js.map +1 -0
- package/dist/auth/tokenRequests.d.ts +15 -0
- package/dist/auth/tokenRequests.d.ts.map +1 -0
- package/dist/auth/tokenRequests.js +89 -0
- package/dist/auth/tokenRequests.js.map +1 -0
- package/dist/auth/types.d.ts +35 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +2 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/urlRuntime.d.ts +7 -0
- package/dist/auth/urlRuntime.d.ts.map +1 -0
- package/dist/auth/urlRuntime.js +17 -0
- package/dist/auth/urlRuntime.js.map +1 -0
- package/dist/browser/index.d.ts +8 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +3 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/calendar/calendar.d.ts +21 -0
- package/dist/calendar/calendar.d.ts.map +1 -0
- package/dist/calendar/calendar.js +105 -0
- package/dist/calendar/calendar.js.map +1 -0
- package/dist/calendar/calendarTypes.d.ts +191 -0
- package/dist/calendar/calendarTypes.d.ts.map +1 -0
- package/dist/calendar/calendarTypes.js +4 -0
- package/dist/calendar/calendarTypes.js.map +1 -0
- package/dist/contacts/contacts.d.ts +10 -0
- package/dist/contacts/contacts.d.ts.map +1 -0
- package/dist/contacts/contacts.js +86 -0
- package/dist/contacts/contacts.js.map +1 -0
- package/dist/contacts/contactsTypes.d.ts +81 -0
- package/dist/contacts/contactsTypes.d.ts.map +1 -0
- package/dist/contacts/contactsTypes.js +4 -0
- package/dist/contacts/contactsTypes.js.map +1 -0
- package/dist/drive/DriveRepository.d.ts +88 -0
- package/dist/drive/DriveRepository.d.ts.map +1 -0
- package/dist/drive/DriveRepository.js +156 -0
- package/dist/drive/DriveRepository.js.map +1 -0
- package/dist/drive/crontab.d.ts +7 -0
- package/dist/drive/crontab.d.ts.map +1 -0
- package/dist/drive/crontab.js +374 -0
- package/dist/drive/crontab.js.map +1 -0
- package/dist/drive/crontabTypes.d.ts +136 -0
- package/dist/drive/crontabTypes.d.ts.map +1 -0
- package/dist/drive/crontabTypes.js +2 -0
- package/dist/drive/crontabTypes.js.map +1 -0
- package/dist/drive/drive.d.ts +8 -0
- package/dist/drive/drive.d.ts.map +1 -0
- package/dist/drive/drive.js +711 -0
- package/dist/drive/drive.js.map +1 -0
- package/dist/drive/driveDb.d.ts +6 -0
- package/dist/drive/driveDb.d.ts.map +1 -0
- package/dist/drive/driveDb.js +220 -0
- package/dist/drive/driveDb.js.map +1 -0
- package/dist/drive/driveDbTypes.d.ts +138 -0
- package/dist/drive/driveDbTypes.d.ts.map +1 -0
- package/dist/drive/driveDbTypes.js +5 -0
- package/dist/drive/driveDbTypes.js.map +1 -0
- package/dist/drive/driveTypes.d.ts +322 -0
- package/dist/drive/driveTypes.d.ts.map +1 -0
- package/dist/drive/driveTypes.js +5 -0
- package/dist/drive/driveTypes.js.map +1 -0
- package/dist/drive/rpc.d.ts +14 -0
- package/dist/drive/rpc.d.ts.map +1 -0
- package/dist/drive/rpc.js +48 -0
- package/dist/drive/rpc.js.map +1 -0
- package/dist/drive/session.d.ts +7 -0
- package/dist/drive/session.d.ts.map +1 -0
- package/dist/drive/session.js +450 -0
- package/dist/drive/session.js.map +1 -0
- package/dist/drive/sessionBuilder.d.ts +33 -0
- package/dist/drive/sessionBuilder.d.ts.map +1 -0
- package/dist/drive/sessionBuilder.js +77 -0
- package/dist/drive/sessionBuilder.js.map +1 -0
- package/dist/drive/sessionObject.d.ts +57 -0
- package/dist/drive/sessionObject.d.ts.map +1 -0
- package/dist/drive/sessionObject.js +191 -0
- package/dist/drive/sessionObject.js.map +1 -0
- package/dist/drive/sessionTypes.d.ts +182 -0
- package/dist/drive/sessionTypes.d.ts.map +1 -0
- package/dist/drive/sessionTypes.js +2 -0
- package/dist/drive/sessionTypes.js.map +1 -0
- package/dist/drive/typeorm/DriveDriver.d.ts +27 -0
- package/dist/drive/typeorm/DriveDriver.d.ts.map +1 -0
- package/dist/drive/typeorm/DriveDriver.js +86 -0
- package/dist/drive/typeorm/DriveDriver.js.map +1 -0
- package/dist/drive/typeorm/DriveQueryRunner.d.ts +15 -0
- package/dist/drive/typeorm/DriveQueryRunner.d.ts.map +1 -0
- package/dist/drive/typeorm/DriveQueryRunner.js +76 -0
- package/dist/drive/typeorm/DriveQueryRunner.js.map +1 -0
- package/dist/drive/typeorm/createDriveDataSource.d.ts +3 -0
- package/dist/drive/typeorm/createDriveDataSource.d.ts.map +1 -0
- package/dist/drive/typeorm/createDriveDataSource.js +36 -0
- package/dist/drive/typeorm/createDriveDataSource.js.map +1 -0
- package/dist/drive/typeorm/datasourceTypes.d.ts +56 -0
- package/dist/drive/typeorm/datasourceTypes.d.ts.map +1 -0
- package/dist/drive/typeorm/datasourceTypes.js +5 -0
- package/dist/drive/typeorm/datasourceTypes.js.map +1 -0
- package/dist/drive/types.d.ts +48 -0
- package/dist/drive/types.d.ts.map +1 -0
- package/dist/drive/types.js +2 -0
- package/dist/drive/types.js.map +1 -0
- package/dist/env/apiKey.d.ts +2 -0
- package/dist/env/apiKey.d.ts.map +1 -0
- package/dist/env/apiKey.js +11 -0
- package/dist/env/apiKey.js.map +1 -0
- package/dist/env/baseUrl.d.ts +3 -0
- package/dist/env/baseUrl.d.ts.map +1 -0
- package/dist/env/baseUrl.js +31 -0
- package/dist/env/baseUrl.js.map +1 -0
- package/dist/inbox/inboxTypes.d.ts +34 -0
- package/dist/inbox/inboxTypes.d.ts.map +1 -0
- package/dist/inbox/inboxTypes.js +5 -0
- package/dist/inbox/inboxTypes.js.map +1 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/llmRouter/llmRouter.d.ts +23 -0
- package/dist/llmRouter/llmRouter.d.ts.map +1 -0
- package/dist/llmRouter/llmRouter.js +566 -0
- package/dist/llmRouter/llmRouter.js.map +1 -0
- package/dist/llmRouter/llmRouterTypes.d.ts +350 -0
- package/dist/llmRouter/llmRouterTypes.d.ts.map +1 -0
- package/dist/llmRouter/llmRouterTypes.js +5 -0
- package/dist/llmRouter/llmRouterTypes.js.map +1 -0
- package/dist/mcpHub/mcpHub.d.ts +23 -0
- package/dist/mcpHub/mcpHub.d.ts.map +1 -0
- package/dist/mcpHub/mcpHub.js +223 -0
- package/dist/mcpHub/mcpHub.js.map +1 -0
- package/dist/mcpHub/mcpHubTypes.d.ts +228 -0
- package/dist/mcpHub/mcpHubTypes.d.ts.map +1 -0
- package/dist/mcpHub/mcpHubTypes.js +5 -0
- package/dist/mcpHub/mcpHubTypes.js.map +1 -0
- package/dist/mcpTools/mcpTools.d.ts +31 -0
- package/dist/mcpTools/mcpTools.d.ts.map +1 -0
- package/dist/mcpTools/mcpTools.js +144 -0
- package/dist/mcpTools/mcpTools.js.map +1 -0
- package/dist/mcpTools/mcpToolsTypes.d.ts +45 -0
- package/dist/mcpTools/mcpToolsTypes.d.ts.map +1 -0
- package/dist/mcpTools/mcpToolsTypes.js +5 -0
- package/dist/mcpTools/mcpToolsTypes.js.map +1 -0
- package/dist/messagesStore/messagesStore.d.ts +22 -0
- package/dist/messagesStore/messagesStore.d.ts.map +1 -0
- package/dist/messagesStore/messagesStore.js +402 -0
- package/dist/messagesStore/messagesStore.js.map +1 -0
- package/dist/messagesStore/messagesStoreTypes.d.ts +327 -0
- package/dist/messagesStore/messagesStoreTypes.d.ts.map +1 -0
- package/dist/messagesStore/messagesStoreTypes.js +11 -0
- package/dist/messagesStore/messagesStoreTypes.js.map +1 -0
- package/dist/node/fastDns.d.ts +2 -0
- package/dist/node/fastDns.d.ts.map +1 -0
- package/dist/node/fastDns.js +119 -0
- package/dist/node/fastDns.js.map +1 -0
- package/dist/operatives/operatives.d.ts +22 -0
- package/dist/operatives/operatives.d.ts.map +1 -0
- package/dist/operatives/operatives.js +199 -0
- package/dist/operatives/operatives.js.map +1 -0
- package/dist/operatives/operativesTypes.d.ts +141 -0
- package/dist/operatives/operativesTypes.d.ts.map +1 -0
- package/dist/operatives/operativesTypes.js +6 -0
- package/dist/operatives/operativesTypes.js.map +1 -0
- package/dist/platformEvents/platformEvents.d.ts +14 -0
- package/dist/platformEvents/platformEvents.d.ts.map +1 -0
- package/dist/platformEvents/platformEvents.js +70 -0
- package/dist/platformEvents/platformEvents.js.map +1 -0
- package/dist/platformEvents/platformEventsTypes.d.ts +31 -0
- package/dist/platformEvents/platformEventsTypes.d.ts.map +1 -0
- package/dist/platformEvents/platformEventsTypes.js +8 -0
- package/dist/platformEvents/platformEventsTypes.js.map +1 -0
- package/dist/projects/projects.d.ts +19 -0
- package/dist/projects/projects.d.ts.map +1 -0
- package/dist/projects/projects.js +52 -0
- package/dist/projects/projects.js.map +1 -0
- package/dist/projects/projectsTypes.d.ts +47 -0
- package/dist/projects/projectsTypes.d.ts.map +1 -0
- package/dist/projects/projectsTypes.js +4 -0
- package/dist/projects/projectsTypes.js.map +1 -0
- package/dist/routineRuns/routineRuns.d.ts +19 -0
- package/dist/routineRuns/routineRuns.d.ts.map +1 -0
- package/dist/routineRuns/routineRuns.js +47 -0
- package/dist/routineRuns/routineRuns.js.map +1 -0
- package/dist/routineRuns/routineRunsTypes.d.ts +39 -0
- package/dist/routineRuns/routineRunsTypes.d.ts.map +1 -0
- package/dist/routineRuns/routineRunsTypes.js +4 -0
- package/dist/routineRuns/routineRunsTypes.js.map +1 -0
- package/dist/routines/routines.d.ts +19 -0
- package/dist/routines/routines.d.ts.map +1 -0
- package/dist/routines/routines.js +77 -0
- package/dist/routines/routines.js.map +1 -0
- package/dist/routines/routinesTypes.d.ts +106 -0
- package/dist/routines/routinesTypes.d.ts.map +1 -0
- package/dist/routines/routinesTypes.js +4 -0
- package/dist/routines/routinesTypes.js.map +1 -0
- package/dist/sdk/diskd.d.ts +3 -0
- package/dist/sdk/diskd.d.ts.map +1 -0
- package/dist/sdk/diskd.js +126 -0
- package/dist/sdk/diskd.js.map +1 -0
- package/dist/sdk/http.d.ts +13 -0
- package/dist/sdk/http.d.ts.map +1 -0
- package/dist/sdk/http.js +80 -0
- package/dist/sdk/http.js.map +1 -0
- package/dist/sdk/types.d.ts +115 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/types.js +2 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/testing/auth.d.ts +8 -0
- package/dist/testing/auth.d.ts.map +1 -0
- package/dist/testing/auth.js +14 -0
- package/dist/testing/auth.js.map +1 -0
- package/dist/testing/fetchMock.d.ts +17 -0
- package/dist/testing/fetchMock.d.ts.map +1 -0
- package/dist/testing/fetchMock.js +46 -0
- package/dist/testing/fetchMock.js.map +1 -0
- package/dist/testing/index.d.ts +11 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +11 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/integration.d.ts +33 -0
- package/dist/testing/integration.d.ts.map +1 -0
- package/dist/testing/integration.js +32 -0
- package/dist/testing/integration.js.map +1 -0
- package/dist/testing/jsonRpc.d.ts +9 -0
- package/dist/testing/jsonRpc.d.ts.map +1 -0
- package/dist/testing/jsonRpc.js +24 -0
- package/dist/testing/jsonRpc.js.map +1 -0
- package/dist/testing/rpcMock.d.ts +16 -0
- package/dist/testing/rpcMock.d.ts.map +1 -0
- package/dist/testing/rpcMock.js +28 -0
- package/dist/testing/rpcMock.js.map +1 -0
- package/dist/tgUserbot/tgUserbot.d.ts +23 -0
- package/dist/tgUserbot/tgUserbot.d.ts.map +1 -0
- package/dist/tgUserbot/tgUserbot.js +314 -0
- package/dist/tgUserbot/tgUserbot.js.map +1 -0
- package/dist/tgUserbot/tgUserbotTypes.d.ts +124 -0
- package/dist/tgUserbot/tgUserbotTypes.d.ts.map +1 -0
- package/dist/tgUserbot/tgUserbotTypes.js +5 -0
- package/dist/tgUserbot/tgUserbotTypes.js.map +1 -0
- package/dist/webNavigator/webNavigator.d.ts +22 -0
- package/dist/webNavigator/webNavigator.d.ts.map +1 -0
- package/dist/webNavigator/webNavigator.js +46 -0
- package/dist/webNavigator/webNavigator.js.map +1 -0
- package/dist/webNavigator/webNavigatorTypes.d.ts +133 -0
- package/dist/webNavigator/webNavigatorTypes.d.ts.map +1 -0
- package/dist/webNavigator/webNavigatorTypes.js +5 -0
- package/dist/webNavigator/webNavigatorTypes.js.map +1 -0
- 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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"}
|