@otonoma/paracord-panels-interface 0.21.0 → 0.22.0-rc.3
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/client/abstractClient.d.ts +6 -2
- package/dist/client/abstractClient.d.ts.map +1 -1
- package/dist/client/managedPncpClient.d.ts +2 -0
- package/dist/client/managedPncpClient.d.ts.map +1 -1
- package/dist/client/managedPncpClient.js +5 -0
- package/dist/client/paracordClient.d.ts +4 -3
- package/dist/client/paracordClient.d.ts.map +1 -1
- package/dist/client/paracordClient.js +23 -17
- package/dist/client/pncpClient.d.ts +8 -6
- package/dist/client/pncpClient.d.ts.map +1 -1
- package/dist/client/pncpClient.js +49 -48
- package/package.json +2 -2
- package/src/client/abstractClient.ts +5 -1
- package/src/client/managedPncpClient.ts +9 -0
- package/src/client/paracordClient.ts +26 -19
- package/src/client/pncpClient.ts +56 -54
|
@@ -1,16 +1,20 @@
|
|
|
1
|
-
import { DocumentArgs, LoginCredentials, ObservationCallbackObject, PncpMessageCallbackObject, PncpMessageObject, PncpRequestCallbackObject, SkillRequest } from "@otonoma/paranet-client";
|
|
1
|
+
import { DocumentArgs, LoginCredentials, ObservationCallbackObject, PncpMessageCallbackObject, PncpMessageObject, PncpRequestCallbackObject, SkillRequest, TokenResponse } from "@otonoma/paranet-client";
|
|
2
2
|
import { FetchDocumentResponse, GraphqlCallArgs, GraphqlCallResponse, PncpCallResponse, PncpMessageResponse, RegisterObserverCallback, RegisterObserverResponse, RegisterSkillCallback, UploadDocumentArgs, UploadDocumentResponse } from "../interface";
|
|
3
3
|
export interface PncpClientInit {
|
|
4
4
|
skill?: (msg: PncpRequestCallbackObject) => void;
|
|
5
5
|
msg?: (msg: PncpMessageCallbackObject) => void;
|
|
6
6
|
obs?: (msg: ObservationCallbackObject, callback?: any) => void;
|
|
7
|
+
error?: (err: any) => void;
|
|
7
8
|
}
|
|
8
9
|
export declare abstract class AbstractPncpClient {
|
|
9
10
|
skillCb?: (msg: PncpRequestCallbackObject) => void;
|
|
10
11
|
msgCb?: (msg: PncpMessageCallbackObject) => void;
|
|
11
12
|
obsCb?: (msg: ObservationCallbackObject, callback?: any) => void;
|
|
12
13
|
constructor(init?: PncpClientInit);
|
|
13
|
-
abstract login(creds: LoginCredentials): Promise<
|
|
14
|
+
abstract login(creds: LoginCredentials): Promise<TokenResponse>;
|
|
15
|
+
abstract connect(config?: {
|
|
16
|
+
additionalActors?: string[];
|
|
17
|
+
}): Promise<void>;
|
|
14
18
|
abstract pncpRequest(req: SkillRequest): Promise<PncpCallResponse>;
|
|
15
19
|
abstract pncpResponse(req: PncpMessageResponse): Promise<PncpCallResponse>;
|
|
16
20
|
abstract pncpMessage(req: PncpMessageObject): Promise<PncpCallResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractClient.d.ts","sourceRoot":"","sources":["../../src/client/abstractClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"abstractClient.d.ts","sourceRoot":"","sources":["../../src/client/abstractClient.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,YAAY,EAChJ,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAC1N,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACjD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC/C,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/D,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC5B;AAID,8BAAsB,kBAAkB;IACtC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACnD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACjD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;gBACrD,IAAI,CAAC,EAAE,cAAc;aAMjB,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;aAEtD,OAAO,CAAC,MAAM,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;aAChE,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;aACzD,YAAY,CAC1B,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,gBAAgB,CAAC;aAEZ,WAAW,CACzB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,gBAAgB,CAAC;aAGZ,qBAAqB,CAAC,GAAG,EAAE,qBAAqB,GAAG,GAAG;aACtD,wBAAwB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;aAC1F,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGnD,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,GAAG,IAAI;IAKjE,eAAe,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,GAAG,IAAI;IAKnE,mBAAmB,CACxB,EAAE,EAAE,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,IAAI,GAC3D,IAAI;aAKS,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;aACzE,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC;aACjE,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;aAEhE,UAAU,IAAI,MAAM;aAEpB,KAAK,IAAI,IAAI;CAC9B"}
|
|
@@ -7,9 +7,11 @@ export declare class ManagedPncpClient {
|
|
|
7
7
|
private observs;
|
|
8
8
|
private skills;
|
|
9
9
|
private id;
|
|
10
|
+
private defaultActor?;
|
|
10
11
|
client: AbstractPncpClient;
|
|
11
12
|
constructor(base: AbstractPncpClient);
|
|
12
13
|
close(): void;
|
|
14
|
+
setDefaultActor(actor: string | undefined): void;
|
|
13
15
|
sendRequest(req: SkillRequest): Promise<ConversationResponse>;
|
|
14
16
|
createConversation(req: SkillRequest): Promise<ConversationHandler>;
|
|
15
17
|
createObserver(obs: RegisterObserverCallback, cb: (msg: ObservationCallbackObject) => void): Promise<ObserverHandle>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managedPncpClient.d.ts","sourceRoot":"","sources":["../../src/client/managedPncpClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,KAAK,CAAC;AAC5G,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,YAAY,EAAE,yBAAyB,EAAqB,cAAc,EAAE,mBAAmB,EAAmB,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrP,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAwD;IACrE,OAAO,CAAC,WAAW,CAAqD;IACxE,OAAO,CAAC,OAAO,CAAwD;IACvE,OAAO,CAAC,MAAM,CAAgG;IAC9G,OAAO,CAAC,EAAE,CAAS;IACnB,MAAM,EAAE,kBAAkB,CAAC;gBAEf,IAAI,EAAE,kBAAkB;IA4D7B,KAAK;
|
|
1
|
+
{"version":3,"file":"managedPncpClient.d.ts","sourceRoot":"","sources":["../../src/client/managedPncpClient.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,KAAK,CAAC;AAC5G,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,YAAY,EAAE,yBAAyB,EAAqB,cAAc,EAAE,mBAAmB,EAAmB,iBAAiB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrP,OAAO,UAAU,MAAM,qBAAqB,CAAC;AAE7C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAAwD;IACrE,OAAO,CAAC,WAAW,CAAqD;IACxE,OAAO,CAAC,OAAO,CAAwD;IACvE,OAAO,CAAC,MAAM,CAAgG;IAC9G,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,MAAM,EAAE,kBAAkB,CAAC;gBAEf,IAAI,EAAE,kBAAkB;IA4D7B,KAAK;IAIL,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS;IAMnC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmB7D,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiBnE,cAAc,CAAC,GAAG,EAAE,wBAAwB,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC;IAcpH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAKtC,mBAAmB,CAAC,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,yBAAyB,EAAE,IAAI,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;CAYtJ;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,yBAAyB,CAAC;CACjC;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,KAAK,CAA4C;IACzD,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,OAAO,CAAU;gBAEb,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,CAAC,yBAAyB,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO;IAOlH,cAAc,IAAI,cAAc;IAI1B,IAAI,IAAI,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAIjD,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUjE,UAAU,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAU7D,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAY7E;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,MAAM,CAAoB;gBAEtB,MAAM,EAAE,iBAAiB,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAMjD,KAAK;CAGnB"}
|
|
@@ -65,6 +65,9 @@ export class ManagedPncpClient {
|
|
|
65
65
|
close() {
|
|
66
66
|
this.client.close();
|
|
67
67
|
}
|
|
68
|
+
setDefaultActor(actor) {
|
|
69
|
+
this.defaultActor = actor;
|
|
70
|
+
}
|
|
68
71
|
// A simple send request which expects _one_ response message.
|
|
69
72
|
// To make a call which can expect multiple responses, use `createConversation`.
|
|
70
73
|
async sendRequest(req) {
|
|
@@ -72,6 +75,7 @@ export class ManagedPncpClient {
|
|
|
72
75
|
if (!req.callback) {
|
|
73
76
|
req.callback = {};
|
|
74
77
|
}
|
|
78
|
+
req.actorId = req.actorId || this.defaultActor;
|
|
75
79
|
req.callback['pn/req/id'] = id;
|
|
76
80
|
let promise = new Promise((res) => {
|
|
77
81
|
this.convs.set(id, (pncp) => res(pncp));
|
|
@@ -87,6 +91,7 @@ export class ManagedPncpClient {
|
|
|
87
91
|
if (!req.callback) {
|
|
88
92
|
req.callback = {};
|
|
89
93
|
}
|
|
94
|
+
req.actorId = req.actorId || this.defaultActor;
|
|
90
95
|
req.callback['pn/req/id'] = id;
|
|
91
96
|
let queue = new AsyncQueue();
|
|
92
97
|
this.convStreams.set(id, queue);
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { DocumentArgs, LoginCredentials, ObservationCallbackObject, PncpMessageCallbackObject, PncpMessageObject, PncpRequestCallbackObject, SkillRequest } from "@otonoma/paranet-client";
|
|
1
|
+
import { DocumentArgs, LoginCredentials, ObservationCallbackObject, PncpMessageCallbackObject, PncpMessageObject, PncpRequestCallbackObject, SkillRequest, TokenResponse } from "@otonoma/paranet-client";
|
|
2
2
|
import { Channel } from "../channel";
|
|
3
3
|
import { PncpMessageResponse, MethodCall, RegisterSkillCallback, PncpCallResponse, RegisterObserverCallback, GraphqlCallArgs, GraphqlCallResponse, UploadDocumentArgs, UploadDocumentResponse, FetchDocumentResponse, RegisterObserverResponse } from "../interface/methods";
|
|
4
4
|
import { AbstractPncpClient, PncpClientInit } from "./abstractClient";
|
|
5
5
|
export declare class ParacordClient extends AbstractPncpClient {
|
|
6
|
-
channel
|
|
6
|
+
channel?: Channel;
|
|
7
7
|
skillCb?: (msg: PncpRequestCallbackObject) => void;
|
|
8
8
|
msgCb?: (msg: PncpMessageCallbackObject) => void;
|
|
9
9
|
obsCb?: (msg: ObservationCallbackObject, callback?: any) => void;
|
|
10
10
|
constructor(init?: PncpClientInit);
|
|
11
11
|
issueCall(call: MethodCall): Promise<any>;
|
|
12
|
-
login(_creds: LoginCredentials): Promise<
|
|
12
|
+
login(_creds: LoginCredentials): Promise<TokenResponse>;
|
|
13
|
+
connect(): Promise<void>;
|
|
13
14
|
pncpRequest(req: SkillRequest): Promise<PncpCallResponse>;
|
|
14
15
|
pncpResponse(req: PncpMessageResponse): Promise<PncpCallResponse>;
|
|
15
16
|
pncpMessage(req: PncpMessageObject): Promise<PncpCallResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paracordClient.d.ts","sourceRoot":"","sources":["../../src/client/paracordClient.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,
|
|
1
|
+
{"version":3,"file":"paracordClient.d.ts","sourceRoot":"","sources":["../../src/client/paracordClient.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,yBAAyB,EACzB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EACzB,YAAY,EACZ,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAMrC,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEtE,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACnD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACjD,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;gBACrD,IAAI,CAAC,EAAE,cAAc;IAI3B,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAmBlC,KAAK,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IACvD,OAAO;IA2BP,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIzD,YAAY,CACvB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAIf,WAAW,CACtB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,gBAAgB,CAAC;IAKf,qBAAqB,CAAC,GAAG,EAAE,qBAAqB;IAIhD,wBAAwB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAO1F,cAAc,CAAC,GAAG,EAAE,MAAM;IAI1B,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOzE,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAOjE,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAOtE,UAAU,IAAI,MAAM;IAIpB,KAAK;CAIb;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACjD,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC/C,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CAChE"}
|
|
@@ -5,6 +5,28 @@ import { AbstractPncpClient } from "./abstractClient";
|
|
|
5
5
|
export class ParacordClient extends AbstractPncpClient {
|
|
6
6
|
constructor(init) {
|
|
7
7
|
super(init);
|
|
8
|
+
}
|
|
9
|
+
async issueCall(call) {
|
|
10
|
+
if (!this.channel) {
|
|
11
|
+
throw new Error("call `connect()` first.");
|
|
12
|
+
}
|
|
13
|
+
const body = {
|
|
14
|
+
type: "call",
|
|
15
|
+
body: call,
|
|
16
|
+
};
|
|
17
|
+
const response = await this.channel.asyncSend(body);
|
|
18
|
+
if (response.type == "callReturn") {
|
|
19
|
+
return response.body;
|
|
20
|
+
}
|
|
21
|
+
else if (response.type == "paracordError") {
|
|
22
|
+
throw Error(response.error);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
throw Error("Incorrect response type.");
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async login(_creds) { return { access_token: "", refresh_token: "" }; }
|
|
29
|
+
async connect() {
|
|
8
30
|
// Provided by Paracord.
|
|
9
31
|
const panelId = window.name;
|
|
10
32
|
const message = {
|
|
@@ -30,23 +52,6 @@ export class ParacordClient extends AbstractPncpClient {
|
|
|
30
52
|
// Call the background.
|
|
31
53
|
top?.postMessage(message, "*", [msgChan.port2]);
|
|
32
54
|
}
|
|
33
|
-
async issueCall(call) {
|
|
34
|
-
const body = {
|
|
35
|
-
type: "call",
|
|
36
|
-
body: call,
|
|
37
|
-
};
|
|
38
|
-
const response = await this.channel.asyncSend(body);
|
|
39
|
-
if (response.type == "callReturn") {
|
|
40
|
-
return response.body;
|
|
41
|
-
}
|
|
42
|
-
else if (response.type == "paracordError") {
|
|
43
|
-
throw Error(response.error);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
throw Error("Incorrect response type.");
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async login(_creds) { }
|
|
50
55
|
async pncpRequest(req) {
|
|
51
56
|
return await this.issueCall({ method: "pncpRequest", args: req });
|
|
52
57
|
}
|
|
@@ -91,5 +96,6 @@ export class ParacordClient extends AbstractPncpClient {
|
|
|
91
96
|
throw new Error("TODO - Cannot get actor ID in paracord context");
|
|
92
97
|
}
|
|
93
98
|
close() {
|
|
99
|
+
// TODO: Could send a close message and close the `channel`.
|
|
94
100
|
}
|
|
95
101
|
}
|
|
@@ -5,13 +5,15 @@ export type ConnectionState = "connected" | "disconnected" | "pending" | "unauth
|
|
|
5
5
|
export declare class PncpRpcClient extends AbstractPncpClient {
|
|
6
6
|
private client;
|
|
7
7
|
private svcClient;
|
|
8
|
-
private listener
|
|
8
|
+
private listener?;
|
|
9
9
|
private observerState;
|
|
10
|
-
|
|
11
|
-
actorVersion: string;
|
|
10
|
+
sendOpenRequests: boolean;
|
|
12
11
|
connectionState: ConnectionState;
|
|
13
12
|
constructor(init: PncpRpcClientInit);
|
|
14
|
-
login(creds: LoginCredentials): Promise<
|
|
13
|
+
login(creds: LoginCredentials): Promise<TokenResponse>;
|
|
14
|
+
connect(config?: {
|
|
15
|
+
additionalActors?: string[];
|
|
16
|
+
}): Promise<void>;
|
|
15
17
|
pncpRequest(req: SkillRequest): Promise<PncpCallResponse>;
|
|
16
18
|
pncpResponse(req: PncpMessageResponse): Promise<PncpCallResponse>;
|
|
17
19
|
pncpMessage(data: PncpMessageObject): Promise<PncpCallResponse>;
|
|
@@ -27,8 +29,8 @@ export declare class PncpRpcClient extends AbstractPncpClient {
|
|
|
27
29
|
}
|
|
28
30
|
export interface PncpRpcClientInit {
|
|
29
31
|
init?: PncpClientInit;
|
|
30
|
-
actorId
|
|
31
|
-
actorVersion
|
|
32
|
+
actorId?: string;
|
|
33
|
+
actorVersion?: string;
|
|
32
34
|
broker: string;
|
|
33
35
|
service: string;
|
|
34
36
|
tokens?: TokenResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pncpClient.d.ts","sourceRoot":"","sources":["../../src/client/pncpClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAA+L,iBAAiB,EAAqD,YAAY,EAAa,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACpX,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEzP,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,cAAc,GACd,SAAS,GACT,iBAAiB,GACjB,QAAQ,CAAC;AAOb,qBAAa,aAAc,SAAQ,kBAAkB;IAEnD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAe;
|
|
1
|
+
{"version":3,"file":"pncpClient.d.ts","sourceRoot":"","sources":["../../src/client/pncpClient.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAA+L,iBAAiB,EAAqD,YAAY,EAAa,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACpX,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEzP,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,cAAc,GACd,SAAS,GACT,iBAAiB,GACjB,QAAQ,CAAC;AAOb,qBAAa,aAAc,SAAQ,kBAAkB;IAEnD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,aAAa,CAA6B;IAElD,gBAAgB,EAAE,OAAO,CAAC;IAG1B,eAAe,EAAE,eAAe,CAAC;gBAErB,IAAI,EAAE,iBAAiB;IA+BtB,KAAK,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAK5D,OAAO,CAAC,MAAM,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C1D,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAezD,YAAY,CACvB,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAoBf,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAa/D,qBAAqB,CAAC,IAAI,EAAE,qBAAqB;IAKjD,wBAAwB,CAAC,GAAG,EAAE,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAsCvG,OAAO,CAAC,yBAAyB;IA8CpB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1C,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAQzE,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAgBjE,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAUtE,UAAU,IAAI,MAAM;IAIpB,KAAK;CAGb;AAQD,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B"}
|
|
@@ -18,11 +18,10 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
18
18
|
refreshToken: init.tokens?.refresh_token,
|
|
19
19
|
fetch: init.fetch,
|
|
20
20
|
});
|
|
21
|
-
this.
|
|
22
|
-
this.actorVersion = init.actorVersion;
|
|
21
|
+
this.sendOpenRequests = init.sendOpenRequests || false;
|
|
23
22
|
this.svcClient = new ParanetServiceClient({
|
|
24
|
-
actorId: init.actorId,
|
|
25
23
|
endpoint: init.service,
|
|
24
|
+
actorId: init.actorId,
|
|
26
25
|
});
|
|
27
26
|
this.client.setTokenCb((token, refresh) => {
|
|
28
27
|
this.svcClient.setTokens(token, refresh);
|
|
@@ -30,51 +29,52 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
30
29
|
if (init.tokens) {
|
|
31
30
|
this.svcClient.setTokens(init.tokens.access_token, init.tokens.refresh_token);
|
|
32
31
|
}
|
|
33
|
-
// TODO: Manage connection state, same as PncpRpcClient.
|
|
34
|
-
const listener = this.client
|
|
35
|
-
.pncpListener({ sendOpen: init.sendOpenRequests })
|
|
36
|
-
.onstart(() => {
|
|
37
|
-
this.connectionState = "connected";
|
|
38
|
-
// TODO: Trigger a callback here.
|
|
39
|
-
// useConnectionStore
|
|
40
|
-
// .getState()
|
|
41
|
-
// .setConnectionState(this.connectionState);
|
|
42
|
-
// resolve();
|
|
43
|
-
})
|
|
44
|
-
.ondisconnect(() => {
|
|
45
|
-
this.connectionState = "disconnected";
|
|
46
|
-
})
|
|
47
|
-
.onreconnect(() => {
|
|
48
|
-
this.connectionState = "connected";
|
|
49
|
-
})
|
|
50
|
-
.onmessage((msg) => {
|
|
51
|
-
const simplified = simplifyPncpCallback(msg);
|
|
52
|
-
switch (simplified.type) {
|
|
53
|
-
case "skill":
|
|
54
|
-
{
|
|
55
|
-
this.skillCb?.(simplified);
|
|
56
|
-
}
|
|
57
|
-
break;
|
|
58
|
-
case "message":
|
|
59
|
-
{
|
|
60
|
-
this.msgCb?.(simplified);
|
|
61
|
-
}
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
})
|
|
65
|
-
.onerror((err, isFatal) => {
|
|
66
|
-
// this.error = decodeURIComponent(err);
|
|
67
|
-
this.connectionState = isFatal ? "unauthenticated" : "failed";
|
|
68
|
-
// reject(this.error);
|
|
69
|
-
})
|
|
70
|
-
.autoReconnect(true);
|
|
71
|
-
listener.connect();
|
|
72
|
-
this.listener = listener;
|
|
73
32
|
this.observerState = new Map();
|
|
74
33
|
}
|
|
75
34
|
async login(creds) {
|
|
76
35
|
let tokens = await this.client.login(creds);
|
|
77
|
-
|
|
36
|
+
return tokens;
|
|
37
|
+
}
|
|
38
|
+
connect(config) {
|
|
39
|
+
return new Promise((resolve, reject) => {
|
|
40
|
+
// TODO: Manage connection state, same as PncpRpcClient.
|
|
41
|
+
const listener = this.client
|
|
42
|
+
.pncpListener({ sendOpen: this.sendOpenRequests, actorIds: config?.additionalActors })
|
|
43
|
+
.onstart(() => {
|
|
44
|
+
this.connectionState = "connected";
|
|
45
|
+
resolve();
|
|
46
|
+
})
|
|
47
|
+
.ondisconnect(() => {
|
|
48
|
+
this.connectionState = "disconnected";
|
|
49
|
+
})
|
|
50
|
+
.onreconnect(() => {
|
|
51
|
+
this.connectionState = "connected";
|
|
52
|
+
})
|
|
53
|
+
.onmessage((msg) => {
|
|
54
|
+
const simplified = simplifyPncpCallback(msg);
|
|
55
|
+
switch (simplified.type) {
|
|
56
|
+
case "skill":
|
|
57
|
+
{
|
|
58
|
+
this.skillCb?.(simplified);
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
case "message":
|
|
62
|
+
{
|
|
63
|
+
this.msgCb?.(simplified);
|
|
64
|
+
}
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
})
|
|
68
|
+
.onerror((err, isFatal) => {
|
|
69
|
+
console.log(err);
|
|
70
|
+
// this.error = decodeURIComponent(err);
|
|
71
|
+
this.connectionState = isFatal ? "unauthenticated" : "failed";
|
|
72
|
+
reject(err);
|
|
73
|
+
})
|
|
74
|
+
.autoReconnect(true);
|
|
75
|
+
listener.connect();
|
|
76
|
+
this.listener = listener;
|
|
77
|
+
});
|
|
78
78
|
}
|
|
79
79
|
async pncpRequest(req) {
|
|
80
80
|
let res = await this.client.pncpRequest(req);
|
|
@@ -176,8 +176,9 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
176
176
|
: ObservationStartPoint.OBS_START_HEAD;
|
|
177
177
|
const listener = this.client.observerListener({
|
|
178
178
|
author: {
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
// TODO: Handle if these aren't present.
|
|
180
|
+
id: this.client.actorId,
|
|
181
|
+
version: this.client.actorVersion,
|
|
181
182
|
},
|
|
182
183
|
body,
|
|
183
184
|
startPoint,
|
|
@@ -234,9 +235,9 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
234
235
|
};
|
|
235
236
|
}
|
|
236
237
|
getActorId() {
|
|
237
|
-
return this.actorId;
|
|
238
|
+
return this.client.actorId;
|
|
238
239
|
}
|
|
239
240
|
close() {
|
|
240
|
-
this.listener
|
|
241
|
+
this.listener?.disconnect();
|
|
241
242
|
}
|
|
242
243
|
}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"url": "git+https://github.com/otonoma/paracord.git"
|
|
6
6
|
},
|
|
7
7
|
"license": "SEE LICENSE IN LICENSE",
|
|
8
|
-
"version": "0.
|
|
8
|
+
"version": "0.22.0-rc.3",
|
|
9
9
|
"description": "Paracord Panels common interface",
|
|
10
10
|
"main": "dist/index.js",
|
|
11
11
|
"types": "dist/index.d.ts",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@ai-zen/async-queue": "1.3.1",
|
|
20
|
-
"@otonoma/paranet-client": "^2.
|
|
20
|
+
"@otonoma/paranet-client": "^2.14.0-rc.12"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
23
|
"@eslint/js": "^9.9.1",
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import {
|
|
3
3
|
DocumentArgs, LoginCredentials, ObservationCallbackObject, PncpMessageCallbackObject, PncpMessageObject, PncpRequestCallbackObject, SkillRequest,
|
|
4
|
+
TokenResponse,
|
|
4
5
|
} from "@otonoma/paranet-client";
|
|
5
6
|
import {
|
|
6
7
|
FetchDocumentResponse, GraphqlCallArgs, GraphqlCallResponse, PncpCallResponse, PncpMessageResponse, RegisterObserverCallback, RegisterObserverResponse, RegisterSkillCallback, UploadDocumentArgs, UploadDocumentResponse
|
|
@@ -10,6 +11,7 @@ export interface PncpClientInit {
|
|
|
10
11
|
skill?: (msg: PncpRequestCallbackObject) => void;
|
|
11
12
|
msg?: (msg: PncpMessageCallbackObject) => void;
|
|
12
13
|
obs?: (msg: ObservationCallbackObject, callback?: any) => void;
|
|
14
|
+
error?: (err: any) => void;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
// TODO: Make a better name for this
|
|
@@ -24,7 +26,9 @@ export abstract class AbstractPncpClient {
|
|
|
24
26
|
this.obsCb = init?.obs;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
public abstract login(creds: LoginCredentials): Promise<
|
|
29
|
+
public abstract login(creds: LoginCredentials): Promise<TokenResponse>;
|
|
30
|
+
// Creates the connection.
|
|
31
|
+
public abstract connect(config?: { additionalActors?: string[] }): Promise<void>;
|
|
28
32
|
public abstract pncpRequest(req: SkillRequest): Promise<PncpCallResponse>;
|
|
29
33
|
public abstract pncpResponse(
|
|
30
34
|
req: PncpMessageResponse
|
|
@@ -11,6 +11,7 @@ export class ManagedPncpClient {
|
|
|
11
11
|
private observs: Map<number, (msg: ObservationCallbackObject) => void>;
|
|
12
12
|
private skills: Map<string, Map<number, (msg: PncpRequestCallbackObject, conv: ConversationHandler) => void>>;
|
|
13
13
|
private id: number;
|
|
14
|
+
private defaultActor?: string;
|
|
14
15
|
client: AbstractPncpClient;
|
|
15
16
|
|
|
16
17
|
constructor(base: AbstractPncpClient) {
|
|
@@ -77,6 +78,10 @@ export class ManagedPncpClient {
|
|
|
77
78
|
this.client.close();
|
|
78
79
|
}
|
|
79
80
|
|
|
81
|
+
public setDefaultActor(actor: string | undefined) {
|
|
82
|
+
this.defaultActor = actor;
|
|
83
|
+
}
|
|
84
|
+
|
|
80
85
|
// A simple send request which expects _one_ response message.
|
|
81
86
|
// To make a call which can expect multiple responses, use `createConversation`.
|
|
82
87
|
public async sendRequest(req: SkillRequest): Promise<ConversationResponse> {
|
|
@@ -85,6 +90,8 @@ export class ManagedPncpClient {
|
|
|
85
90
|
req.callback = {};
|
|
86
91
|
}
|
|
87
92
|
|
|
93
|
+
req.actorId = req.actorId || this.defaultActor;
|
|
94
|
+
|
|
88
95
|
req.callback['pn/req/id'] = id;
|
|
89
96
|
let promise = new Promise<PncpMessageCallbackObject>((res) => {
|
|
90
97
|
this.convs.set(id, (pncp) => res(pncp));
|
|
@@ -102,6 +109,8 @@ export class ManagedPncpClient {
|
|
|
102
109
|
req.callback = {};
|
|
103
110
|
}
|
|
104
111
|
|
|
112
|
+
req.actorId = req.actorId || this.defaultActor;
|
|
113
|
+
|
|
105
114
|
req.callback['pn/req/id'] = id;
|
|
106
115
|
|
|
107
116
|
let queue: AsyncQueue<PncpMessageCallbackObject> = new AsyncQueue();
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
PncpMessageObject,
|
|
9
9
|
PncpRequestCallbackObject,
|
|
10
10
|
SkillRequest,
|
|
11
|
+
TokenResponse,
|
|
11
12
|
} from "@otonoma/paranet-client";
|
|
12
13
|
import { Channel } from "../channel";
|
|
13
14
|
import {
|
|
@@ -31,12 +32,35 @@ import {
|
|
|
31
32
|
import { AbstractPncpClient, PncpClientInit } from "./abstractClient";
|
|
32
33
|
|
|
33
34
|
export class ParacordClient extends AbstractPncpClient {
|
|
34
|
-
channel
|
|
35
|
+
channel?: Channel;
|
|
35
36
|
skillCb?: (msg: PncpRequestCallbackObject) => void;
|
|
36
37
|
msgCb?: (msg: PncpMessageCallbackObject) => void;
|
|
37
38
|
obsCb?: (msg: ObservationCallbackObject, callback?: any) => void;
|
|
38
39
|
constructor(init?: PncpClientInit) {
|
|
39
40
|
super(init);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async issueCall(call: MethodCall): Promise<any> {
|
|
44
|
+
if (!this.channel) {
|
|
45
|
+
throw new Error("call `connect()` first.");
|
|
46
|
+
}
|
|
47
|
+
const body: PanelMethodCall = {
|
|
48
|
+
type: "call",
|
|
49
|
+
body: call,
|
|
50
|
+
};
|
|
51
|
+
const response = await this.channel.asyncSend(body);
|
|
52
|
+
if (response.type == "callReturn") {
|
|
53
|
+
return response.body;
|
|
54
|
+
} else if (response.type == "paracordError") {
|
|
55
|
+
throw Error(response.error);
|
|
56
|
+
} else {
|
|
57
|
+
throw Error("Incorrect response type.");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
public async login(_creds: LoginCredentials): Promise<TokenResponse> { return { access_token: "", refresh_token: "" }; }
|
|
63
|
+
public async connect() {
|
|
40
64
|
// Provided by Paracord.
|
|
41
65
|
const panelId = window.name;
|
|
42
66
|
const message: PanelConnect = {
|
|
@@ -63,24 +87,6 @@ export class ParacordClient extends AbstractPncpClient {
|
|
|
63
87
|
top?.postMessage(message, "*", [msgChan.port2]);
|
|
64
88
|
}
|
|
65
89
|
|
|
66
|
-
async issueCall(call: MethodCall): Promise<any> {
|
|
67
|
-
const body: PanelMethodCall = {
|
|
68
|
-
type: "call",
|
|
69
|
-
body: call,
|
|
70
|
-
};
|
|
71
|
-
const response = await this.channel.asyncSend(body);
|
|
72
|
-
if (response.type == "callReturn") {
|
|
73
|
-
return response.body;
|
|
74
|
-
} else if (response.type == "paracordError") {
|
|
75
|
-
throw Error(response.error);
|
|
76
|
-
} else {
|
|
77
|
-
throw Error("Incorrect response type.");
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
public async login(_creds: LoginCredentials) { }
|
|
83
|
-
|
|
84
90
|
public async pncpRequest(req: SkillRequest): Promise<PncpCallResponse> {
|
|
85
91
|
return await this.issueCall({ method: "pncpRequest", args: req });
|
|
86
92
|
}
|
|
@@ -139,6 +145,7 @@ export class ParacordClient extends AbstractPncpClient {
|
|
|
139
145
|
}
|
|
140
146
|
|
|
141
147
|
public close() {
|
|
148
|
+
// TODO: Could send a close message and close the `channel`.
|
|
142
149
|
}
|
|
143
150
|
|
|
144
151
|
}
|
package/src/client/pncpClient.ts
CHANGED
|
@@ -23,11 +23,10 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
23
23
|
// TODO: We need a service client too for graphql calls.
|
|
24
24
|
private client: PncpClient;
|
|
25
25
|
private svcClient: ParanetServiceClient;
|
|
26
|
-
private listener
|
|
26
|
+
private listener?: PncpListener;
|
|
27
27
|
private observerState: Map<string, ObserverState>;
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
actorVersion: string;
|
|
29
|
+
sendOpenRequests: boolean;
|
|
31
30
|
|
|
32
31
|
// Maps `name -> ${subject}/${action} -> ObserverState` style key to an observer set.
|
|
33
32
|
connectionState: ConnectionState;
|
|
@@ -45,12 +44,11 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
45
44
|
fetch: init.fetch,
|
|
46
45
|
});
|
|
47
46
|
|
|
48
|
-
this.
|
|
49
|
-
this.actorVersion = init.actorVersion;
|
|
47
|
+
this.sendOpenRequests = init.sendOpenRequests || false;
|
|
50
48
|
|
|
51
49
|
this.svcClient = new ParanetServiceClient({
|
|
52
|
-
actorId: init.actorId,
|
|
53
50
|
endpoint: init.service,
|
|
51
|
+
actorId: init.actorId,
|
|
54
52
|
});
|
|
55
53
|
|
|
56
54
|
this.client.setTokenCb((token, refresh) => {
|
|
@@ -60,53 +58,56 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
60
58
|
if (init.tokens) {
|
|
61
59
|
this.svcClient.setTokens(init.tokens.access_token, init.tokens.refresh_token);
|
|
62
60
|
}
|
|
63
|
-
// TODO: Manage connection state, same as PncpRpcClient.
|
|
64
|
-
const listener = this.client
|
|
65
|
-
.pncpListener({ sendOpen: init.sendOpenRequests })
|
|
66
|
-
.onstart(() => {
|
|
67
|
-
this.connectionState = "connected";
|
|
68
|
-
// TODO: Trigger a callback here.
|
|
69
|
-
// useConnectionStore
|
|
70
|
-
// .getState()
|
|
71
|
-
// .setConnectionState(this.connectionState);
|
|
72
|
-
// resolve();
|
|
73
|
-
})
|
|
74
|
-
.ondisconnect(() => {
|
|
75
|
-
this.connectionState = "disconnected";
|
|
76
|
-
})
|
|
77
|
-
.onreconnect(() => {
|
|
78
|
-
this.connectionState = "connected";
|
|
79
|
-
})
|
|
80
|
-
.onmessage((msg: PncpCallback) => {
|
|
81
|
-
const simplified = simplifyPncpCallback(msg);
|
|
82
|
-
switch (simplified.type) {
|
|
83
|
-
case "skill":
|
|
84
|
-
{
|
|
85
|
-
this.skillCb?.(simplified);
|
|
86
|
-
}
|
|
87
|
-
break;
|
|
88
|
-
case "message":
|
|
89
|
-
{
|
|
90
|
-
this.msgCb?.(simplified);
|
|
91
|
-
}
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
})
|
|
95
|
-
.onerror((err, isFatal) => {
|
|
96
|
-
// this.error = decodeURIComponent(err);
|
|
97
|
-
this.connectionState = isFatal ? "unauthenticated" : "failed";
|
|
98
|
-
// reject(this.error);
|
|
99
|
-
})
|
|
100
|
-
.autoReconnect(true);
|
|
101
|
-
listener.connect();
|
|
102
61
|
|
|
103
|
-
this.listener = listener;
|
|
104
62
|
this.observerState = new Map();
|
|
105
63
|
}
|
|
106
64
|
|
|
107
|
-
public async login(creds: LoginCredentials) {
|
|
65
|
+
public async login(creds: LoginCredentials): Promise<TokenResponse> {
|
|
108
66
|
let tokens = await this.client.login(creds);
|
|
109
|
-
|
|
67
|
+
return tokens;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public connect(config?: { additionalActors?: string[] }): Promise<void> {
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
// TODO: Manage connection state, same as PncpRpcClient.
|
|
73
|
+
const listener = this.client
|
|
74
|
+
.pncpListener({ sendOpen: this.sendOpenRequests, actorIds: config?.additionalActors })
|
|
75
|
+
.onstart(() => {
|
|
76
|
+
this.connectionState = "connected";
|
|
77
|
+
resolve();
|
|
78
|
+
})
|
|
79
|
+
.ondisconnect(() => {
|
|
80
|
+
this.connectionState = "disconnected";
|
|
81
|
+
})
|
|
82
|
+
.onreconnect(() => {
|
|
83
|
+
this.connectionState = "connected";
|
|
84
|
+
})
|
|
85
|
+
.onmessage((msg: PncpCallback) => {
|
|
86
|
+
const simplified = simplifyPncpCallback(msg);
|
|
87
|
+
switch (simplified.type) {
|
|
88
|
+
case "skill":
|
|
89
|
+
{
|
|
90
|
+
this.skillCb?.(simplified);
|
|
91
|
+
}
|
|
92
|
+
break;
|
|
93
|
+
case "message":
|
|
94
|
+
{
|
|
95
|
+
this.msgCb?.(simplified);
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
.onerror((err, isFatal) => {
|
|
101
|
+
console.log(err);
|
|
102
|
+
// this.error = decodeURIComponent(err);
|
|
103
|
+
this.connectionState = isFatal ? "unauthenticated" : "failed";
|
|
104
|
+
reject(err);
|
|
105
|
+
})
|
|
106
|
+
.autoReconnect(true);
|
|
107
|
+
listener.connect();
|
|
108
|
+
|
|
109
|
+
this.listener = listener;
|
|
110
|
+
});
|
|
110
111
|
}
|
|
111
112
|
|
|
112
113
|
public async pncpRequest(req: SkillRequest): Promise<PncpCallResponse> {
|
|
@@ -227,8 +228,9 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
227
228
|
: ObservationStartPoint.OBS_START_HEAD;
|
|
228
229
|
const listener = this.client.observerListener({
|
|
229
230
|
author: {
|
|
230
|
-
|
|
231
|
-
|
|
231
|
+
// TODO: Handle if these aren't present.
|
|
232
|
+
id: this.client.actorId!,
|
|
233
|
+
version: this.client.actorVersion!,
|
|
232
234
|
},
|
|
233
235
|
body,
|
|
234
236
|
startPoint,
|
|
@@ -291,11 +293,11 @@ export class PncpRpcClient extends AbstractPncpClient {
|
|
|
291
293
|
|
|
292
294
|
|
|
293
295
|
public getActorId(): string {
|
|
294
|
-
return this.actorId
|
|
296
|
+
return this.client.actorId!;
|
|
295
297
|
}
|
|
296
298
|
|
|
297
299
|
public close() {
|
|
298
|
-
this.listener
|
|
300
|
+
this.listener?.disconnect();
|
|
299
301
|
}
|
|
300
302
|
}
|
|
301
303
|
|
|
@@ -307,8 +309,8 @@ interface ObserverState {
|
|
|
307
309
|
|
|
308
310
|
export interface PncpRpcClientInit {
|
|
309
311
|
init?: PncpClientInit,
|
|
310
|
-
actorId
|
|
311
|
-
actorVersion
|
|
312
|
+
actorId?: string,
|
|
313
|
+
actorVersion?: string,
|
|
312
314
|
broker: string,
|
|
313
315
|
service: string,
|
|
314
316
|
tokens?: TokenResponse,
|