@asgard-js/core 0.2.53 → 0.2.55
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/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +193 -132
- package/dist/index.mjs.map +1 -1
- package/dist/lib/client.d.ts +33 -1
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/types/client.d.ts +5 -0
- package/dist/types/client.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/lib/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EventType } from '../constants/enum';
|
|
2
|
-
import { ClientConfig, IAsgardServiceClient, FetchSsePayload, FetchSseOptions, SseResponse, SseEvents, BlobUploadResponse } from '../types';
|
|
2
|
+
import { ClientConfig, IAsgardServiceClient, FetchSsePayload, FetchSseOptions, SseResponse, SseEvents, BlobUploadResponse, CwdDownloadResult } from '../types';
|
|
3
3
|
|
|
4
4
|
export default class AsgardServiceClient implements IAsgardServiceClient {
|
|
5
5
|
private apiKey?;
|
|
@@ -7,6 +7,10 @@ export default class AsgardServiceClient implements IAsgardServiceClient {
|
|
|
7
7
|
private botProviderEndpoint?;
|
|
8
8
|
private debugMode?;
|
|
9
9
|
private destroy$;
|
|
10
|
+
private closed;
|
|
11
|
+
private detached;
|
|
12
|
+
private detachTimer?;
|
|
13
|
+
private inFlight;
|
|
10
14
|
private sseEmitter;
|
|
11
15
|
private transformSsePayload?;
|
|
12
16
|
private customHeaders?;
|
|
@@ -14,15 +18,43 @@ export default class AsgardServiceClient implements IAsgardServiceClient {
|
|
|
14
18
|
on<K extends keyof SseEvents>(event: K, listener: SseEvents[K]): void;
|
|
15
19
|
handleEvent(response: SseResponse<EventType>): void;
|
|
16
20
|
fetchSse(payload: FetchSsePayload, options?: FetchSseOptions): void;
|
|
21
|
+
/**
|
|
22
|
+
* Detach the client from its owning component without aborting in-flight SSE
|
|
23
|
+
* runs. Used when a chatbot unmounts (e.g. the user navigates to another
|
|
24
|
+
* in-app page) but the current run should be allowed to finish on the
|
|
25
|
+
* backend instead of being cut off. After detaching, the stream is still
|
|
26
|
+
* drained to keep the connection open but consumer callbacks no longer fire.
|
|
27
|
+
*
|
|
28
|
+
* The connection cleans itself up in all cases:
|
|
29
|
+
* - No run in flight → close immediately (nothing to keep alive).
|
|
30
|
+
* - Runs in flight → close once they all settle (`onRunSettled`), so the
|
|
31
|
+
* client never lingers past the work it is keeping alive.
|
|
32
|
+
* - A run gets stuck (stream stays open, no `run.done`/error) → the safety
|
|
33
|
+
* timeout force-closes it so the orphaned connection cannot leak.
|
|
34
|
+
*/
|
|
35
|
+
detach(options: {
|
|
36
|
+
timeoutMs: number;
|
|
37
|
+
}): void;
|
|
38
|
+
private onRunSettled;
|
|
17
39
|
close(): void;
|
|
18
40
|
/**
|
|
19
41
|
* 上傳檔案到 Blob API
|
|
20
42
|
* 根據 API 文件:/ns/{namespace}/bot-provider/{bot_provider_name}/blob
|
|
21
43
|
*/
|
|
22
44
|
uploadFile(file: File, customChannelId: string): Promise<BlobUploadResponse>;
|
|
45
|
+
/**
|
|
46
|
+
* 下載 channel sandbox 工作目錄裡的檔案(cwd:// URI action)。
|
|
47
|
+
* 呼叫 Edge Server GET <base>/cwd/download?custom_channel_id=xxx&relative_path=xxx 取回 binary。
|
|
48
|
+
*/
|
|
49
|
+
downloadCwdFile(relativePath: string, customChannelId: string): Promise<CwdDownloadResult>;
|
|
23
50
|
/**
|
|
24
51
|
* 從 botProviderEndpoint 衍生 Blob API endpoint
|
|
25
52
|
*/
|
|
26
53
|
private deriveBlobEndpoint;
|
|
54
|
+
/**
|
|
55
|
+
* 衍生 bot provider 的 base endpoint(不含子路徑)。
|
|
56
|
+
* 優先用 botProviderEndpoint;若只有 deprecated 的 endpoint 則反推(移除 /message/sse)。已去除尾部斜線。
|
|
57
|
+
*/
|
|
58
|
+
private getBaseEndpoint;
|
|
27
59
|
}
|
|
28
60
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/lib/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,WAAW,EACX,SAAS,EACT,kBAAkB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/lib/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,CAAC,OAAO,OAAO,mBAAoB,YAAW,oBAAoB;IACtE,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,mBAAmB,CAAC,CAAS;IACrC,OAAO,CAAC,SAAS,CAAC,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,UAAU,CAAiC;IACnD,OAAO,CAAC,mBAAmB,CAAC,CAAgD;IAC5E,OAAO,CAAC,aAAa,CAAC,CAAyB;gBAEnC,MAAM,EAAE,YAAY;IAkChC,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;IAKrE,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI;IA0CnD,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI;IAsCnE;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAc5C,OAAO,CAAC,YAAY;IAUpB,KAAK,IAAI,IAAI;IAcb;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA4ClF;;;OAGG;IACG,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6ChG;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAM1B;;;OAGG;IACH,OAAO,CAAC,eAAe;CAexB"}
|
package/dist/types/client.d.ts
CHANGED
|
@@ -3,9 +3,14 @@ import { EventHandler } from './event-emitter';
|
|
|
3
3
|
import { SseResponse, ToolCallConsentAnswer } from './sse-response';
|
|
4
4
|
import { EventType, FetchSseAction } from '../constants/enum';
|
|
5
5
|
|
|
6
|
+
export interface CwdDownloadResult {
|
|
7
|
+
blob: Blob;
|
|
8
|
+
filename: string;
|
|
9
|
+
}
|
|
6
10
|
export interface IAsgardServiceClient {
|
|
7
11
|
fetchSse(payload: FetchSsePayload, options?: FetchSseOptions): void;
|
|
8
12
|
uploadFile?(file: File, customChannelId: string): Promise<BlobUploadResponse>;
|
|
13
|
+
downloadCwdFile?(relativePath: string, customChannelId: string): Promise<CwdDownloadResult>;
|
|
9
14
|
}
|
|
10
15
|
export type InitEventHandler = EventHandler<SseResponse<EventType.INIT>>;
|
|
11
16
|
export type MessageEventHandler = EventHandler<SseResponse<EventType.MESSAGE_START | EventType.MESSAGE_DELTA | EventType.MESSAGE_COMPLETE>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC;AAE5C,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACpE,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/types/client.ts"],"names":[],"mappings":"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"}
|