@pinecall/room 0.11.19 → 0.11.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +15 -6
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/reading.d.ts +1 -1
  5. package/dist/reading.d.ts.map +1 -1
  6. package/dist/room.d.ts +2 -71
  7. package/dist/room.d.ts.map +1 -1
  8. package/dist/room.js +17 -4
  9. package/dist/room.js.map +1 -1
  10. package/dist/seat/join.d.ts +6 -0
  11. package/dist/seat/join.d.ts.map +1 -1
  12. package/dist/seat/join.js +36 -3
  13. package/dist/seat/join.js.map +1 -1
  14. package/dist/seat/livekit.d.ts +9 -2
  15. package/dist/seat/livekit.d.ts.map +1 -1
  16. package/dist/seat/livekit.js.map +1 -1
  17. package/dist/surface.d.ts +80 -0
  18. package/dist/surface.d.ts.map +1 -0
  19. package/dist/surface.js +4 -0
  20. package/dist/surface.js.map +1 -0
  21. package/dist/wire/envelope.d.ts +2 -2
  22. package/dist/wire/envelope.d.ts.map +1 -1
  23. package/dist/wire/envelope.js +4 -2
  24. package/dist/wire/envelope.js.map +1 -1
  25. package/dist/wire/events-call.d.ts +19 -19
  26. package/dist/wire/events-call.d.ts.map +1 -1
  27. package/dist/wire/events-call.js +15 -11
  28. package/dist/wire/events-call.js.map +1 -1
  29. package/dist/wire/events.d.ts +22 -22
  30. package/dist/wire/events.d.ts.map +1 -1
  31. package/dist/wire/events.js +18 -14
  32. package/dist/wire/events.js.map +1 -1
  33. package/dist/wire/reduce.d.ts.map +1 -1
  34. package/dist/wire/reduce.js +22 -13
  35. package/dist/wire/reduce.js.map +1 -1
  36. package/dist/wire/registry.d.ts +45 -45
  37. package/dist/wire/room.d.ts +4 -4
  38. package/dist/wire/room.d.ts.map +1 -1
  39. package/dist/wire/room.js +6 -3
  40. package/dist/wire/room.js.map +1 -1
  41. package/dist/wire/state.d.ts +15 -15
  42. package/dist/wire/state.d.ts.map +1 -1
  43. package/dist/wire/state.js +8 -5
  44. package/dist/wire/state.js.map +1 -1
  45. package/package.json +1 -1
package/README.md CHANGED
@@ -160,8 +160,7 @@ state the agent declared public; `tenant` is everything — the tools, the laten
160
160
  ## Resume a conversation
161
161
 
162
162
  A conversation outlives the page. Every mint answers a `resume_token`, which `state.resume` holds
163
- once the call is open: keep it beside the conversation (`localStorage` is enough), and hand it back
164
- to resume it.
163
+ once the call is open: keep it beside the conversation (`localStorage` is enough), and hand it back to resume it.
165
164
 
166
165
  ```ts
167
166
  // tokens(scope, resume) sends both on to your server: `body: JSON.stringify({ scope, resume })`.
@@ -262,7 +261,8 @@ org. `recording` is then `""`, and the recording is yours to relay too.
262
261
  ## What `state` says
263
262
 
264
263
  Every field is the truth at the moment it was published. A new state is a new object; one you were
265
- handed is never changed afterwards, so it can be compared by reference and kept.
264
+ handed is never changed afterwards, so it can be compared by reference and kept. Read with the call's
265
+ own token, `log` is the public projection: no agent, no numbers, no attributes, no tool names.
266
266
 
267
267
  | field | what it is |
268
268
  |---|---|
@@ -276,6 +276,7 @@ handed is never changed afterwards, so it can be compared by reference and kept.
276
276
  | `connection` | the log's stream: `connecting` · `live` · `reconnecting` · `ended` (also before anything opened) |
277
277
  | `wantsSound` | `true` when the browser has not let the page play sound yet: show a button that calls `playSound()` |
278
278
  | `speaking` | `{agent, user, level}`: who is making a sound right now, and how loud the agent is, 0 to 1 |
279
+ | `voice` | the `<audio>` element the agent's voice plays in during a spoken call, for a page that listens to it (`@pinecall/dot`'s face does); `null` otherwise |
279
280
  | `code` | `{code, number, expiresAt}` once `byPhone()` has a code to show; `null` otherwise |
280
281
 
281
282
  The phase and everything around it — `error`, `connection`, `wantsSound`, `speaking` — are
@@ -313,8 +314,7 @@ JSON, cut at `max` characters. A field that is an object is opened one level —
313
314
  Both sides of a spoken call can be drawn as they happen, karaoke-style.
314
315
 
315
316
  **The visitor** — `state.log.live.user` is what the recogniser has heard so far of the turn in
316
- progress, rewritten as they speak ("Hi", "Hi ther", "Hi there. I would…"), and `null` once the
317
- turn closes.
317
+ progress, rewritten as they speak ("Hi", "Hi ther", "Hi there. I would…"), and `null` once the turn closes.
318
318
 
319
319
  **The agent** — a voice call's log carries its reply one word at a time, each with the second it
320
320
  is spoken at. The words usually reach the page before the voice says them, so a page can draw the
@@ -346,6 +346,15 @@ A written call's reply comes as model tokens with no timing: every token is lit
346
346
  which reads as the agent typing. Once the turn closes, the reply is a turn in `rowsOf` like any
347
347
  other, and `useKaraoke` returns `null`.
348
348
 
349
+ ## Telling the agent what the visitor does
350
+
351
+ `call.event(name, data)` tells the agent what the visitor did on the page: the section they opened,
352
+ the plan they chose (`call.event("plan.chosen", { plan: "pro" })`). The agent's `onEvent(name, data)`
353
+ runs when its class accepts that name from a participant, and the runtime drops any other; a state
354
+ field the hook writes is in the view at the next turn, and the hook may `reply()` at once. Anybody
355
+ can send what a browser sends, so keep `data` to values the view reads, never words the model obeys.
356
+ What the agent puts on the screen with `call.send("pinecall.ui", data)` reaches `onUi(data)`.
357
+
349
358
  ## Sound and the browser's permission
350
359
 
351
360
  In `talk`, the microphone is turned on once the room is joined, and the agent's voice plays through
@@ -381,7 +390,7 @@ Nothing fails silently. Every refusal is a phase and a sentence, or a rejected p
381
390
  | `tokens` or `callMe` answered no `log_token`, and there is no `log` to relay it | `failed`, `error` says so |
382
391
  | the room closed from the other side | `ended`; the log is read on until the score |
383
392
  | an entry of the log this version cannot read | skipped; `onSkipped(why)` is called, and the rest of the call still draws |
384
- | `send()` outside a live room | the promise rejects with "not in a call"; an empty line is nothing |
393
+ | `send()` or `event()` outside a live room | the promise rejects with "not in a call"; an empty line is nothing |
385
394
 
386
395
  On the server, `mint`, `dial` and `expect` throw `GatewayRefused` for a refusal: `status` is the gateway's,
387
396
  and `detail` its sentence when it sent one (`null` when the body was not the gateway's JSON). The
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /** @pinecall/room: the caller's side of a Pinecall call in a browser — one store, no framework. */
2
2
  export { room } from "./room.js";
3
- export type { Code, Minted, Mode, Phase, RoomOptions, RoomState, RoomStore } from "./room.js";
3
+ export type { Code, Minted, Mode, Phase, RoomOptions, RoomState, RoomStore } from "./surface.js";
4
4
  export type { Store } from "./store.js";
5
5
  export type { Connection } from "./log/follow.js";
6
6
  export type { Speaking } from "./seat/join.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC9F,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAEnG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACjG,YAAY,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,cAAc,CAAC"}
package/dist/reading.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /** Where a call is read — the tenant's relay when it gave one, the gateway with the call's own token otherwise — and where its hang-up is said. */
2
2
  import type { Minted } from "./server/index.js";
3
- import type { RoomOptions } from "./room.js";
3
+ import type { RoomOptions } from "./surface.js";
4
4
  /** The gateway the page asks, with no slash at the end. */
5
5
  export declare function gatewayOf(options: Pick<RoomOptions, "gateway">): string;
6
6
  /** The call's log and its recording. None when neither a relay nor a token is there to read it with. */
@@ -1 +1 @@
1
- {"version":3,"file":"reading.d.ts","sourceRoot":"","sources":["../src/reading.ts"],"names":[],"mappings":"AAAA,mJAAmJ;AAEnJ,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,MAAM,CAEvE;AAED,wGAAwG;AACxG,wBAAgB,SAAS,CACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,KAAK,CAAC,EAC7C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,CAAC,EAAE,MAAM,GACd;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ3C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,IAAI,CAIlH"}
1
+ {"version":3,"file":"reading.d.ts","sourceRoot":"","sources":["../src/reading.ts"],"names":[],"mappings":"AAAA,mJAAmJ;AAEnJ,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,2DAA2D;AAC3D,wBAAgB,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,MAAM,CAEvE;AAED,wGAAwG;AACxG,wBAAgB,SAAS,CACvB,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,KAAK,CAAC,EAC7C,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,CAAC,EAAE,MAAM,GACd;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQ3C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,IAAI,CAIlH"}
package/dist/room.d.ts CHANGED
@@ -1,75 +1,6 @@
1
1
  /** One conversation, as the page sees it: the phases, the verbs, and the seat and the log joined in one store. */
2
- import { type Entry } from "./wire/envelope.js";
3
- import { type State } from "./wire/state.js";
4
- import { type Connection } from "./log/follow.js";
5
- import { type Speaking } from "./seat/join.js";
6
- import { type LivekitModule } from "./seat/livekit.js";
7
- import type { Code, Minted } from "./server/index.js";
8
- import { type Store } from "./store.js";
9
- export type { Code, Minted };
10
- /** Where the conversation is. `ringing`: a phone call nobody answered yet; `expecting`: a code no call claimed yet. */
11
- export type Phase = "idle" | "opening" | "expecting" | "ringing" | "live" | "ended" | "failed";
12
- /** Spoken, written, or on the visitor's own phone. The same agent every way. */
13
- export type Mode = "talk" | "chat" | "phone";
14
- /** Everything the page draws from. Every field is the truth at the moment it was published. */
15
- export interface RoomState {
16
- phase: Phase;
17
- mode: Mode | null;
18
- call: string;
19
- /** The sentence to show when phase is "failed". */
20
- error: string;
21
- /** Where the call's recording plays from once it has ended, or "" when the log is relayed. */
22
- recording: string;
23
- /** The call as the protocol folds it: turns, tools, the agent's state, the cost once it is known. */
24
- log: State;
25
- entries: Entry[];
26
- connection: Connection;
27
- /** True when the browser has not been told it may make a sound: ask for a click. */
28
- wantsSound: boolean;
29
- speaking: Speaking;
30
- /** The code to show beside the number to call, from `expecting` on; `expiresAt` in seconds since the epoch. */
31
- code: {
32
- code: string;
33
- number: string;
34
- expiresAt: number;
35
- } | null;
36
- /** What to keep to resume this conversation later with `start(mode, resume)`; "" when the gateway gave none. */
37
- resume: string;
38
- }
39
- export interface RoomOptions {
40
- /** A ticket for a seat, from the tenant's own server. The page never holds a key. `resume` is the
41
- * token a resumed conversation was kept with: the server sends it on as `resume` in its mint. */
42
- tokens: (scope: "talk" | "chat", resume?: string) => Promise<Minted>;
43
- /** The gateway the log is read from with the call's own token. Default `https://cloud.pinecall.io`. */
44
- gateway?: string | undefined;
45
- /** The URL the call's log is relayed at by the tenant's server, for a page that must not reach
46
- * the gateway itself. Given, the log token is not used. */
47
- log?: ((call: string, minted?: Minted) => string) | undefined;
48
- /** Ask the tenant's server to have the agent call `to`: the call, and its log token. */
49
- callMe?: ((to: string) => Promise<{
50
- call: string;
51
- log_token?: string | undefined;
52
- }>) | undefined;
53
- /** Ask the tenant's server for a code the visitor keys when they call the agent's number. */
54
- expect?: (() => Promise<Code>) | undefined;
55
- /** How long the log is read after the seat closes, waiting for the score. Default 60 000 ms: a worker
56
- * notices a caller has gone some twenty seconds after the fact, and the score comes after that. */
57
- linger?: number | undefined;
58
- fetch?: typeof fetch | undefined;
59
- livekit?: (() => Promise<LivekitModule>) | undefined;
60
- /** An entry of the log this copy of the wire could not read. The rest of the call still draws. */
61
- onSkipped?: ((why: string) => void) | undefined;
62
- }
63
- export interface RoomStore extends Store<RoomState> {
64
- /** A new conversation; with `resume`, the one kept under it: the same call while it still waits for
65
- * the visitor, else a new call whose agent opens on what was said. */
66
- start(mode: "talk" | "chat", resume?: string): Promise<void>;
67
- send(text: string): Promise<void>;
68
- callMe(to: string): Promise<void>;
69
- byPhone(): Promise<void>;
70
- leave(): Promise<void>;
71
- playSound(): void;
72
- }
2
+ import type { RoomOptions, RoomStore } from "./surface.js";
3
+ export type { Code, Minted, Mode, Phase, RoomOptions, RoomState, RoomStore } from "./surface.js";
73
4
  /** A room for one visitor. Nothing opens until a verb is called. */
74
5
  export declare function room(options: RoomOptions): RoomStore;
75
6
  //# sourceMappingURL=room.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAsBlH,OAAO,KAAK,EAAQ,WAAW,EAAa,SAAS,EAAE,MAAM,cAAc,CAAC;AAE5E,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAwBjG,oEAAoE;AACpE,wBAAgB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAsRpD"}
package/dist/room.js CHANGED
@@ -7,9 +7,7 @@
7
7
  // The log is folded by the protocol's own reducer, so what the page draws is what the console
8
8
  // draws, from the same bytes. A phone call has no seat at all: the log is the whole of it — and
9
9
  // when the visitor calls the agent, a code they key on the phone names the call the page follows.
10
- import {} from "./wire/envelope.js";
11
10
  import { initialState } from "./wire/reduce.js";
12
- import {} from "./wire/state.js";
13
11
  import { claimOf } from "./code.js";
14
12
  import { LogFold } from "./log/fold.js";
15
13
  import { followLog } from "./log/follow.js";
@@ -64,13 +62,13 @@ export function room(options) {
64
62
  if (!current(c))
65
63
  return;
66
64
  void shut(c);
67
- publish({ phase: "failed", error, connection: "ended", wantsSound: false, speaking: QUIET });
65
+ publish({ phase: "failed", error, connection: "ended", wantsSound: false, speaking: QUIET, voice: null });
68
66
  };
69
67
  // The call is over for the visitor. The seat goes now; the log is read a while longer, because
70
68
  // the agent's last words, the cost and the score are entries that arrive after the room closed.
71
69
  // A seat the visitor left by choice says it hung up, at the door and in the room; any other leaves the call to wait.
72
70
  const end = (c, parting = (seat) => seat.leave()) => {
73
- publish({ phase: "ended", wantsSound: false, speaking: QUIET });
71
+ publish({ phase: "ended", wantsSound: false, speaking: QUIET, voice: null });
74
72
  c.waiting?.abort();
75
73
  const seat = c.seat;
76
74
  c.seat = null;
@@ -173,6 +171,14 @@ export function room(options) {
173
171
  if (current(c))
174
172
  publish({ wantsSound });
175
173
  },
174
+ voice: (voice) => {
175
+ if (current(c))
176
+ publish({ voice });
177
+ },
178
+ ui: (data) => {
179
+ if (current(c))
180
+ options.onUi?.(data);
181
+ },
176
182
  },
177
183
  });
178
184
  }
@@ -215,6 +221,12 @@ export function room(options) {
215
221
  follow(c, reading.log);
216
222
  await seated(c, mode, minted);
217
223
  },
224
+ async event(name, data = {}) {
225
+ const seat = now?.seat ?? null;
226
+ if (store.state.phase !== "live" || seat === null)
227
+ throw new Error("not in a call");
228
+ await seat.event(name, data);
229
+ },
218
230
  async callMe(to) {
219
231
  const c = begin("phone");
220
232
  if (c === null)
@@ -328,6 +340,7 @@ function idle() {
328
340
  connection: "ended",
329
341
  wantsSound: false,
330
342
  speaking: QUIET,
343
+ voice: null,
331
344
  code: null,
332
345
  resume: "",
333
346
  };
package/dist/room.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAClH,EAAE;AACF,+FAA+F;AAC/F,gGAAgG;AAChG,mGAAmG;AACnG,iKAAiK;AACjK,8FAA8F;AAC9F,gGAAgG;AAChG,kGAAkG;AAElG,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAc,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,SAAS,EAAgC,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAA4B,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAsB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AAiE9C,MAAM,SAAS,GAAG,MAAM,CAAC;AACzB,+FAA+F;AAC/F,MAAM,UAAU,GAAG,KAAK,CAAC;AACzB,MAAM,KAAK,GAAa,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAChE,MAAM,aAAa,GAAG,uFAAuF,CAAC;AAC9G,MAAM,UAAU,GAAG,+DAA+D,CAAC;AACnF,MAAM,SAAS,GAAG,kEAAkE,CAAC;AACrF,MAAM,YAAY,GAAG,mFAAmF,CAAC;AAezG,oEAAoE;AACpE,MAAM,UAAU,IAAI,CAAC,OAAoB;IACvC,MAAM,KAAK,GAAG,IAAI,CAAY,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAC;IACtC,IAAI,GAAG,GAAwB,IAAI,CAAC;IACpC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,IAAI,GAAG,GAAY,EAAE,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpG,MAAM,OAAO,GAAG,CAAC,CAAe,EAAW,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;IAExD,gGAAgG;IAChG,MAAM,IAAI,GAAG,CAAC,CAAe,EAAiB,EAAE;QAC9C,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;QACjB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI;YAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAChB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACd,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACjF,CAAC,CAAC;IAEF,8FAA8F;IAC9F,6FAA6F;IAC7F,MAAM,KAAK,GAAG,CAAC,IAAU,EAAuB,EAAE;QAChD,IAAI,MAAM,IAAI,IAAI,EAAE;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,GAAG,KAAK,IAAI;YAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAiB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAChH,GAAG,GAAG,CAAC,CAAC;QACR,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,CAAC,CAAe,EAAE,KAAa,EAAQ,EAAE;QACpD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO;QACxB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,OAAO,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC;IAEF,+FAA+F;IAC/F,gGAAgG;IAChG,qHAAqH;IACrH,MAAM,GAAG,GAAG,CAAC,CAAe,EAAE,OAAO,GAAkC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAiB,EAAE;QAC9G,OAAO,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACd,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC/C,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE;gBACzB,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBAChB,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC;gBACjB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;gBACpB,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;YACnC,CAAC,EAAE,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,CAAe,EAAE,OAAmB,EAAQ,EAAE;QAC3D,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI;YAAE,OAAO;QAC1C,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC;YAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACxG,4FAA4F;QAC5F,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YACvD,MAAM,QAAQ,GAAG,CAAC,KAAe,EAAW,EAAE,CAC5C,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;YACvF,GAAG,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,CAAC,CAAe,EAAE,MAAc,EAAQ,EAAE;QACtD,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI;YAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAChB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC,CAAC;QAChF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,EAAE,CAAC;YACzC,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,oBAAoB,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACjH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACjF,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAe,EAAE,GAAW,EAAQ,EAAE;QACpD,CAAC,CAAC,UAAU,GAAG,SAAS,CACtB,GAAG,EACH;YACE,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACrB,IAAI,OAAO,CAAC,CAAC,CAAC;oBAAE,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,YAAY,EAAE,CAAC,UAAU,EAAE,EAAE;gBAC3B,IAAI,OAAO,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;gBAClB,IAAI,OAAO,CAAC,CAAC,CAAC;oBAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;SACF,EACD,OAAO,CAAC,KAAK,IAAI,KAAK,CACvB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,QAAkB,EAAQ,EAAE;QACvC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;QACjC,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAAE,OAAO;QACvG,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,EAAE,CAAe,EAAE,IAAqB,EAAE,MAAc,EAAiB,EAAE;QAC7F,IAAI,OAAsB,CAAC;QAC3B,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,EAAE,CAAC;QACrD,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QAC3D,IAAI,IAAU,CAAC;QACf,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC;gBACpB,OAAO;gBACP,IAAI;gBACJ,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,IAAI,EAAE,UAAU,EAAE;gBAClB,EAAE,EAAE;oBACF,YAAY,EAAE,GAAG,EAAE;wBACjB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;4BAAE,OAAO;wBACxB,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;wBACd,IAAI,IAAI,EAAE;4BAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1B,CAAC;oBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;wBACrB,IAAI,OAAO,CAAC,CAAC,CAAC;4BAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAChC,CAAC;oBACD,UAAU,EAAE,CAAC,UAAU,EAAE,EAAE;wBACzB,IAAI,OAAO,CAAC,CAAC,CAAC;4BAAE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;oBAC1C,CAAC;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,uFAAuF;QACvF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACnD,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QACD,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACd,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,KAAK;YACP,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB,CAAC;QACD,SAAS,EAAE,KAAK,CAAC,SAAS;QAE1B,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM;YACtB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO;YACvB,IAAI,MAAc,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9F,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO;YAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1E,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACnD,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACzF,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC;YAChG,4FAA4F;YAC5F,uDAAuD;YACvD,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,EAAE;YACb,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO;YACvB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;YAC5B,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACnD,IAAI,MAAwD,CAAC;YAC7D,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO;YAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAClE,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACnD,IAAI,MAAM,CAAC,SAAS;gBAAE,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACnF,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YAC/E,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,OAAO;YACX,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK,IAAI;gBAAE,OAAO;YACvB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YAC3B,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YACjD,IAAI,IAAU,CAAC;YACf,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,OAAO,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACrC,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO;YAC3D,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC5G,CAAC,CAAC,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChG,kGAAkG;YAClG,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO;YACvD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC;YAC7E,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACnD,IAAI,KAAK,CAAC,SAAS;gBAAE,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAChF,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI;YACb,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,OAAO;YAC/B,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC;YAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACpF,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,KAAK,CAAC,KAAK;YACT,MAAM,CAAC,GAAG,GAAG,CAAC;YACd,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;gBAAE,OAAO;YAClC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAChD,IAAI,IAAI,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,IAAI,EAAE,EAAE;gBACxC,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3C,IAAI,GAAG,GAAG,EAAE;oBACV,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,IAAI,EAAE,CAAC;gBACT,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACtC,IAAI,EAAE,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QAED,SAAS;YACP,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;QAED,KAAK;YACH,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,IAAI,GAAG,KAAK,IAAI;gBAAE,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,GAAG,GAAG,IAAI,CAAC;YACX,KAAK,MAAM,IAAI,IAAI,OAAO;gBAAE,IAAI,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,IAAI;IACX,OAAO;QACL,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,EAAE;QACb,GAAG,EAAE,YAAY,EAAE;QACnB,OAAO,EAAE,EAAE;QACX,UAAU,EAAE,OAAO;QACnB,UAAU,EAAE,KAAK;QACjB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,EAAE;KACX,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,OAAgB;IACjC,OAAO,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,10 @@ export interface SeatHears {
14
14
  speaking: (speaking: Speaking) => void;
15
15
  /** True when the browser has not been told it may make a sound. */
16
16
  wantsSound: (wanted: boolean) => void;
17
+ /** The element the agent's voice plays in, as it arrives; null once it has gone. */
18
+ voice: (element: HTMLMediaElement | null) => void;
19
+ /** What the agent put on the visitor's screen (`pinecall.ui`), decoded; never a line of the conversation. */
20
+ ui: (data: unknown) => void;
17
21
  }
18
22
  export interface SeatOptions {
19
23
  livekit: LivekitModule;
@@ -26,6 +30,8 @@ export interface SeatOptions {
26
30
  /** A taken seat. Leaving is final; `on.disconnected` is not called for a seat that left. */
27
31
  export interface Seat {
28
32
  send(text: string): Promise<void>;
33
+ /** A fact about the page, for the agent's `onEvent`: `{name, data}` on `pinecall.event`. */
34
+ event(name: string, data: Record<string, unknown>): Promise<void>;
29
35
  /** Leave, the call going on without the page: a reload looks like this, and the call waits for it. */
30
36
  leave(): Promise<void>;
31
37
  /** Say the visitor hung up, then leave: the call ends at once instead of waiting for them. */
@@ -1 +1 @@
1
- {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/seat/join.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAE/F,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,2EAA2E;AAC3E,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mEAAmE;AACnE,MAAM,WAAW,SAAS;IACxB,mFAAmF;IACnF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,mEAAmE;IACnE,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,SAAS,CAAC;CACf;AAED,4FAA4F;AAC5F,MAAM,WAAW,IAAI;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,sGAAsG;IACtG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,8FAA8F;IAC9F,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,SAAS,IAAI,IAAI,CAAC;IAClB,gBAAgB,IAAI,OAAO,CAAC;CAC7B;AAQD,sGAAsG;AACtG,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DlE"}
1
+ {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/seat/join.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAE/F,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,cAAc,CAAC;AACnE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,2EAA2E;AAC3E,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mEAAmE;AACnE,MAAM,WAAW,SAAS;IACxB,mFAAmF;IACnF,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IACvC,mEAAmE;IACnE,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,oFAAoF;IACpF,KAAK,EAAE,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,6GAA6G;IAC7G,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,EAAE,EAAE,SAAS,CAAC;CACf;AAED,4FAA4F;AAC5F,MAAM,WAAW,IAAI;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,4FAA4F;IAC5F,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,sGAAsG;IACtG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,8FAA8F;IAC9F,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,SAAS,IAAI,IAAI,CAAC;IAClB,gBAAgB,IAAI,OAAO,CAAC;CAC7B;AAcD,sGAAsG;AACtG,wBAAsB,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4ElE"}
package/dist/seat/join.js CHANGED
@@ -3,6 +3,10 @@
3
3
  const CHAT = "lk.chat";
4
4
  /** The topic a hang-up is said on: a hang-up and a reload both disconnect the seat alike. */
5
5
  const HANGUP = "pinecall.hangup";
6
+ /** The topic a fact about the page rides on; the runtime hands it to the agent's `onEvent`. */
7
+ const EVENT = "pinecall.event";
8
+ /** The topic the agent shows things on: `call.send("pinecall.ui", data)`. */
9
+ const UI = "pinecall.ui";
6
10
  /** Join the room. Rejects with the room's own error when it cannot connect or hear the microphone. */
7
11
  export async function joinSeat(options) {
8
12
  const { livekit, mode, sink, on } = options;
@@ -15,13 +19,29 @@ export async function joinSeat(options) {
15
19
  return room.disconnect();
16
20
  };
17
21
  // Chat never plays the agent: a written conversation that starts talking out loud is a bug.
22
+ // Every audio track plays; the voice is the one published as a microphone. The agent's hold
23
+ // melody is a second audio track, and taken for the voice it left the face hearing silence.
18
24
  room.on(RoomEvent.TrackSubscribed, (track) => {
19
- if (mode === "talk" && track.kind === livekit.Track.Kind.Audio)
20
- sink.add(track.attach());
25
+ if (mode !== "talk" || track.kind !== livekit.Track.Kind.Audio)
26
+ return;
27
+ const element = track.attach();
28
+ sink.add(element);
29
+ if (track.source === livekit.Track.Source.Microphone)
30
+ on.voice(element);
21
31
  });
22
32
  room.on(RoomEvent.TrackUnsubscribed, (track) => {
23
- for (const element of track.detach())
33
+ const gone = track.detach();
34
+ for (const element of gone)
24
35
  sink.remove(element);
36
+ if (gone.length > 0 && track.source === livekit.Track.Source.Microphone)
37
+ on.voice(null);
38
+ });
39
+ room.on(RoomEvent.DataReceived, (payload, _from, _kind, topic) => {
40
+ if (topic !== UI)
41
+ return;
42
+ const data = decoded(payload);
43
+ if (data !== undefined)
44
+ on.ui(data);
25
45
  });
26
46
  room.on(RoomEvent.Disconnected, () => {
27
47
  if (left)
@@ -46,6 +66,10 @@ export async function joinSeat(options) {
46
66
  async send(text) {
47
67
  await room.localParticipant.sendText(text, { topic: CHAT });
48
68
  },
69
+ async event(name, data) {
70
+ const packed = new TextEncoder().encode(JSON.stringify({ name, data }));
71
+ await room.localParticipant.publishData(packed, { topic: EVENT, reliable: true });
72
+ },
49
73
  leave,
50
74
  async hangUp() {
51
75
  // Said or not, the seat goes: a network that has gone leaves the call to wait, as for a reload.
@@ -70,4 +94,13 @@ function speakingOf(speakers, me) {
70
94
  level: remote?.audioLevel ?? 0,
71
95
  };
72
96
  }
97
+ /** A payload as JSON, or undefined when it is not: an agent's bad bytes are not the page's error. */
98
+ function decoded(payload) {
99
+ try {
100
+ return JSON.parse(new TextDecoder().decode(payload));
101
+ }
102
+ catch {
103
+ return undefined;
104
+ }
105
+ }
73
106
  //# sourceMappingURL=join.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/seat/join.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAyC/F,wFAAwF;AACxF,MAAM,IAAI,GAAG,SAAS,CAAC;AAEvB,6FAA6F;AAC7F,MAAM,MAAM,GAAG,iBAAiB,CAAC;AAEjC,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAoB;IACjD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,IAAI,GAAG,KAAK,CAAC;IAEjB,MAAM,KAAK,GAAG,GAAkB,EAAE;QAChC,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,4FAA4F;IAC5F,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3C,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;QAC7C,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,EAAE;QACnC,IAAI,IAAI;YAAE,OAAO;QACjB,IAAI,GAAG,IAAI,CAAC;QACZ,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,EAAE,CAAC,YAAY,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,0BAA0B,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC3F,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,QAAQ,EAAE,EAAE,CACpD,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAClE,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAClE,IAAI,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC;IAAC,OAAO,OAAO,EAAE,CAAC;QACjB,qFAAqF;QACrF,MAAM,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,OAAO,CAAC;IAChB,CAAC;IAED,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,IAAI;YACb,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,KAAK;QACL,KAAK,CAAC,MAAM;YACV,gGAAgG;YAChG,MAAM,IAAI,CAAC,gBAAgB;iBACxB,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;iBAC9E,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1B,MAAM,KAAK,EAAE,CAAC;QAChB,CAAC;QACD,SAAS;YACP,kFAAkF;YAClF,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CACpB,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAC3C,GAAG,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAC5C,CAAC;QACJ,CAAC;QACD,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB;KAC9C,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,SAAS,UAAU,CAAC,QAA2B,EAAE,EAAU;IACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;IACnE,OAAO;QACL,KAAK,EAAE,MAAM,KAAK,SAAS;QAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC;QACzD,KAAK,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC;KAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/seat/join.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  /** The one door to livekit-client: loaded when a seat is taken, and the little of it the seat uses. */
2
- /** A remote track as the seat handles it: its kind, and the element that plays it. */
2
+ /** A remote track as the seat handles it: its kind, what it carries, and the element that plays it. */
3
3
  export interface SeatTrack {
4
4
  readonly kind: string;
5
+ /** The agent's voice is its microphone; the hold melody beside it is another source. */
6
+ readonly source: string;
5
7
  attach(): HTMLMediaElement;
6
8
  detach(): HTMLMediaElement[];
7
9
  }
@@ -21,7 +23,7 @@ export interface SeatLocal extends SeatParticipant {
21
23
  reliable: boolean;
22
24
  }): Promise<unknown>;
23
25
  }
24
- /** The room the page joins. Five events are listened to; nothing else of LiveKit's is named. */
26
+ /** The room the page joins. Six events are listened to; nothing else of LiveKit's is named. */
25
27
  export interface SeatRoom {
26
28
  readonly localParticipant: SeatLocal;
27
29
  readonly canPlaybackAudio: boolean;
@@ -33,6 +35,7 @@ export interface SeatRoom {
33
35
  on(event: "disconnected", listener: () => void): this;
34
36
  on(event: "audioPlaybackChanged", listener: (playing: boolean) => void): this;
35
37
  on(event: "activeSpeakersChanged", listener: (speakers: SeatParticipant[]) => void): this;
38
+ on(event: "dataReceived", listener: (payload: Uint8Array, from?: SeatParticipant, kind?: unknown, topic?: string) => void): this;
36
39
  }
37
40
  /** What `import("livekit-client")` has to offer the seat. A test hands in a fake of this shape. */
38
41
  export interface LivekitModule {
@@ -43,11 +46,15 @@ export interface LivekitModule {
43
46
  readonly Disconnected: "disconnected";
44
47
  readonly AudioPlaybackStatusChanged: "audioPlaybackChanged";
45
48
  readonly ActiveSpeakersChanged: "activeSpeakersChanged";
49
+ readonly DataReceived: "dataReceived";
46
50
  };
47
51
  Track: {
48
52
  Kind: {
49
53
  readonly Audio: "audio";
50
54
  };
55
+ Source: {
56
+ readonly Microphone: "microphone";
57
+ };
51
58
  };
52
59
  }
53
60
  /** livekit-client, the moment a seat is needed. */
@@ -1 +1 @@
1
- {"version":3,"file":"livekit.d.ts","sourceRoot":"","sources":["../../src/seat/livekit.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAEvG,sFAAsF;AACtF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,IAAI,gBAAgB,CAAC;IAC3B,MAAM,IAAI,gBAAgB,EAAE,CAAC;CAC9B;AAED,kEAAkE;AAClE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,qGAAqG;AACrG,MAAM,WAAW,SAAU,SAAQ,eAAe;IAChD,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChG;AAED,gGAAgG;AAChG,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,EAAE,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI,CAAC;IACzE,EAAE,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3E,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IACtD,EAAE,CAAC,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9E,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,IAAI,GAAG,IAAI,CAAC;CAC3F;AAED,mGAAmG;AACnG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,UAAU,QAAQ,CAAC;IACzB,SAAS,EAAE;QACT,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;QAC5C,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;QAChD,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;QACtC,QAAQ,CAAC,0BAA0B,EAAE,sBAAsB,CAAC;QAC5D,QAAQ,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;KACzD,CAAC;IACF,KAAK,EAAE;QAAE,IAAI,EAAE;YAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;CAC9C;AAID,mDAAmD;AACnD,wBAAgB,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,CAEpD"}
1
+ {"version":3,"file":"livekit.d.ts","sourceRoot":"","sources":["../../src/seat/livekit.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"livekit.js","sourceRoot":"","sources":["../../src/seat/livekit.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAiDvG,kGAAkG;AAClG,qEAAqE;AACrE,mDAAmD;AACnD,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"livekit.js","sourceRoot":"","sources":["../../src/seat/livekit.ts"],"names":[],"mappings":"AAAA,uGAAuG;AAqDvG,kGAAkG;AAClG,qEAAqE;AACrE,mDAAmD;AACnD,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,80 @@
1
+ /** What a room is to the page: its phases, the state it publishes, the options it takes and its verbs. */
2
+ import { type Entry } from "./wire/envelope.js";
3
+ import { type State } from "./wire/state.js";
4
+ import type { Connection } from "./log/follow.js";
5
+ import type { Speaking } from "./seat/join.js";
6
+ import type { LivekitModule } from "./seat/livekit.js";
7
+ import type { Code, Minted } from "./server/index.js";
8
+ import type { Store } from "./store.js";
9
+ export type { Code, Minted };
10
+ /** Where the conversation is. `ringing`: a phone call nobody answered yet; `expecting`: a code no call claimed yet. */
11
+ export type Phase = "idle" | "opening" | "expecting" | "ringing" | "live" | "ended" | "failed";
12
+ /** Spoken, written, or on the visitor's own phone. The same agent every way. */
13
+ export type Mode = "talk" | "chat" | "phone";
14
+ /** Everything the page draws from. Every field is the truth at the moment it was published. */
15
+ export interface RoomState {
16
+ phase: Phase;
17
+ mode: Mode | null;
18
+ call: string;
19
+ /** The sentence to show when phase is "failed". */
20
+ error: string;
21
+ /** Where the call's recording plays from once it has ended, or "" when the log is relayed. */
22
+ recording: string;
23
+ /** The call as the protocol folds it: turns, tools, the agent's state, the cost once it is known. */
24
+ log: State;
25
+ entries: Entry[];
26
+ connection: Connection;
27
+ /** True when the browser has not been told it may make a sound: ask for a click. */
28
+ wantsSound: boolean;
29
+ speaking: Speaking;
30
+ /** The element the agent's voice plays in, for a page that listens to it; null outside a spoken call. */
31
+ voice: HTMLMediaElement | null;
32
+ /** The code to show beside the number to call, from `expecting` on; `expiresAt` in seconds since the epoch. */
33
+ code: {
34
+ code: string;
35
+ number: string;
36
+ expiresAt: number;
37
+ } | null;
38
+ /** What to keep to resume this conversation later with `start(mode, resume)`; "" when the gateway gave none. */
39
+ resume: string;
40
+ }
41
+ export interface RoomOptions {
42
+ /** A ticket for a seat, from the tenant's own server. The page never holds a key. `resume` is the
43
+ * token a resumed conversation was kept with: the server sends it on as `resume` in its mint. */
44
+ tokens: (scope: "talk" | "chat", resume?: string) => Promise<Minted>;
45
+ /** The gateway the log is read from with the call's own token. Default `https://cloud.pinecall.io`. */
46
+ gateway?: string | undefined;
47
+ /** The URL the call's log is relayed at by the tenant's server, for a page that must not reach
48
+ * the gateway itself. Given, the log token is not used. */
49
+ log?: ((call: string, minted?: Minted) => string) | undefined;
50
+ /** Ask the tenant's server to have the agent call `to`: the call, and its log token. */
51
+ callMe?: ((to: string) => Promise<{
52
+ call: string;
53
+ log_token?: string | undefined;
54
+ }>) | undefined;
55
+ /** Ask the tenant's server for a code the visitor keys when they call the agent's number. */
56
+ expect?: (() => Promise<Code>) | undefined;
57
+ /** How long the log is read after the seat closes, waiting for the score. Default 60 000 ms: a worker
58
+ * notices a caller has gone some twenty seconds after the fact, and the score comes after that. */
59
+ linger?: number | undefined;
60
+ fetch?: typeof fetch | undefined;
61
+ livekit?: (() => Promise<LivekitModule>) | undefined;
62
+ /** An entry of the log this copy of the wire could not read. The rest of the call still draws. */
63
+ onSkipped?: ((why: string) => void) | undefined;
64
+ /** What the agent put on the visitor's screen with `call.send("pinecall.ui", data)`, as it sent it. */
65
+ onUi?: ((data: unknown) => void) | undefined;
66
+ }
67
+ export interface RoomStore extends Store<RoomState> {
68
+ /** A new conversation; with `resume`, the one kept under it: the same call while it still waits for
69
+ * the visitor, else a new call whose agent opens on what was said. */
70
+ start(mode: "talk" | "chat", resume?: string): Promise<void>;
71
+ send(text: string): Promise<void>;
72
+ /** Tell the agent what the visitor did on the page. Its `onEvent(name, data)` runs when its class
73
+ * accepts `name` from a participant; any other name is dropped by the runtime. */
74
+ event(name: string, data?: Record<string, unknown>): Promise<void>;
75
+ callMe(to: string): Promise<void>;
76
+ byPhone(): Promise<void>;
77
+ leave(): Promise<void>;
78
+ playSound(): void;
79
+ }
80
+ //# sourceMappingURL=surface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.d.ts","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** What a room is to the page: its phases, the state it publishes, the options it takes and its verbs. */
2
+ import {} from "./wire/envelope.js";
3
+ import {} from "./wire/state.js";
4
+ //# sourceMappingURL=surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.ts"],"names":[],"mappings":"AAAA,0GAA0G;AAE1G,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAc,MAAM,iBAAiB,CAAC"}
@@ -7,8 +7,8 @@ import { z } from "zod";
7
7
  export declare const EntrySchema: z.ZodObject<{
8
8
  seq: z.ZodInt;
9
9
  ts: z.ZodNumber;
10
- call: z.ZodNullable<z.ZodString>;
11
- agent: z.ZodString;
10
+ call: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11
+ agent: z.ZodOptional<z.ZodString>;
12
12
  type: z.ZodString;
13
13
  ephemeral: z.ZodBoolean;
14
14
  data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/wire/envelope.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;kBAQtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/wire/envelope.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAE9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;;;;kBAUtB,CAAC;AACH,MAAM,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC"}
@@ -7,8 +7,10 @@ import { z } from "zod";
7
7
  export const EntrySchema = z.strictObject({
8
8
  seq: z.int(),
9
9
  ts: z.number(),
10
- call: z.string().nullable(),
11
- agent: z.string(),
10
+ // The public projection, what a call's own token reads, leaves both out: a participant learns
11
+ // nothing of the tenant's setup (docs/protocol/projections.md).
12
+ call: z.string().nullable().optional(),
13
+ agent: z.string().optional(),
12
14
  type: z.string(),
13
15
  ephemeral: z.boolean(),
14
16
  data: z.record(z.string(), z.unknown()),