@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.
@@ -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<void>;
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,EACjJ,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;CAChE;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,IAAI,CAAC;aAC7C,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"}
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;IAMC,WAAW,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiB7D,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAenE,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"}
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: 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<void>;
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,EACb,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,EAAE,OAAO,CAAC;IACjB,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;IA4B3B,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC;IAgBlC,KAAK,CAAC,MAAM,EAAE,gBAAgB;IAE9B,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;CAGb;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"}
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
- actorId: string;
11
- actorVersion: string;
10
+ sendOpenRequests: boolean;
12
11
  connectionState: ConnectionState;
13
12
  constructor(init: PncpRpcClientInit);
14
- login(creds: LoginCredentials): Promise<void>;
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: string;
31
- actorVersion: string;
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;IAC/B,OAAO,CAAC,aAAa,CAA6B;IAElD,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IAGrB,eAAe,EAAE,eAAe,CAAC;gBAErB,IAAI,EAAE,iBAAiB;IAwEtB,KAAK,CAAC,KAAK,EAAE,gBAAgB;IAK7B,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;IA6CpB,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,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,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"}
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.actorId = init.actorId;
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
- this.svcClient.setTokens(tokens.access_token, tokens.refresh_token);
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
- id: this.actorId,
180
- version: this.actorVersion,
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.disconnect();
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.21.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.13.0-rc.12"
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<void>;
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: 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
  }
@@ -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: PncpListener;
26
+ private listener?: PncpListener;
27
27
  private observerState: Map<string, ObserverState>;
28
28
 
29
- actorId: string;
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.actorId = init.actorId;
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
- this.svcClient.setTokens(tokens.access_token, tokens.refresh_token);
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
- id: this.actorId,
231
- version: this.actorVersion,
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.disconnect();
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: string,
311
- actorVersion: string,
312
+ actorId?: string,
313
+ actorVersion?: string,
312
314
  broker: string,
313
315
  service: string,
314
316
  tokens?: TokenResponse,