@pinecall/room 0.1.2 → 0.1.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/README.md +42 -4
- package/dist/code.d.ts +14 -0
- package/dist/code.d.ts.map +1 -0
- package/dist/code.js +46 -0
- package/dist/code.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/log/backoff.d.ts +11 -0
- package/dist/log/backoff.d.ts.map +1 -0
- package/dist/log/backoff.js +30 -0
- package/dist/log/backoff.js.map +1 -0
- package/dist/log/follow.d.ts.map +1 -1
- package/dist/log/follow.js +4 -20
- package/dist/log/follow.js.map +1 -1
- package/dist/react/index.d.ts +1 -1
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +5 -2
- package/dist/react/index.js.map +1 -1
- package/dist/reading.d.ts +11 -0
- package/dist/reading.d.ts.map +1 -0
- package/dist/reading.js +18 -0
- package/dist/reading.js.map +1 -0
- package/dist/room.d.ts +13 -4
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +42 -21
- package/dist/room.js.map +1 -1
- package/dist/server/index.d.ts +22 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +15 -1
- package/dist/server/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@ that change it. The package has three entry points, and each one is for a differ
|
|
|
13
13
|
|---|---|---|
|
|
14
14
|
| `@pinecall/room` | the page | `room()`, the store of one conversation, `rowsOf`, `knownBy`, `brief` to draw it, and the karaoke of what is being said |
|
|
15
15
|
| `@pinecall/room/react` | the page, in React | `useRoom()` and `useStore()` |
|
|
16
|
-
| `@pinecall/room/server` | your server | `mint()`, `dial()` and `GatewayRefused`: the only code that touches the key |
|
|
16
|
+
| `@pinecall/room/server` | your server | `mint()`, `dial()`, `expect()` and `GatewayRefused`: the only code that touches the key |
|
|
17
17
|
|
|
18
18
|
A conversation has two parts, and they are not the same thing. **The seat** is a LiveKit room: it
|
|
19
19
|
carries the audio and the typed lines. **The log** is the call's record on the gateway, read
|
|
@@ -101,7 +101,7 @@ export function Visitor() {
|
|
|
101
101
|
`useRoom` makes one room per mounted component and closes it when the component unmounts. The
|
|
102
102
|
options are read when they are used, not when the room is made, so a `tokens` written inline — a
|
|
103
103
|
new function every render — is fine: the one from the last render is the one that runs. It hands
|
|
104
|
-
back the state with the
|
|
104
|
+
back the state with the six verbs beside it.
|
|
105
105
|
|
|
106
106
|
`useStore(store)` is the plain version: any store of this package, read with React's
|
|
107
107
|
`useSyncExternalStore`. `useRoom` is `useStore` over a room it owns.
|
|
@@ -188,6 +188,39 @@ The gateway refuses a dial to a number that has never called or written to the o
|
|
|
188
188
|
dials per minute and per day. Those refusals reach the page as a failed call with the gateway's
|
|
189
189
|
sentence.
|
|
190
190
|
|
|
191
|
+
## Let the visitor call you
|
|
192
|
+
|
|
193
|
+
Give `room()` an `expect`, and the page can show the agent's phone number and a four-digit code
|
|
194
|
+
instead: the visitor calls the number, keys the code on the phone (or says it, and the agent
|
|
195
|
+
claims it), and from that moment the page follows that call. Your server asks for the code:
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
import { expect } from "@pinecall/room/server";
|
|
199
|
+
|
|
200
|
+
app.post("/api/expect", async (c) => expect(KEY, { url, agent, log: "tenant" }).then((code) => c.json(code), refused));
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
The page hands the answer to the room as it came, and calls `byPhone()`:
|
|
204
|
+
|
|
205
|
+
```ts
|
|
206
|
+
const call = room({ tokens, expect: async () => (await fetch("/api/expect", { method: "POST" })).json() });
|
|
207
|
+
|
|
208
|
+
await call.byPhone();
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
The phase is `expecting` while the page waits, and `state.code` is `{code, number, expiresAt}`:
|
|
212
|
+
show "call `number` and key `code`", and `expiresAt` (seconds since the epoch) as a countdown if
|
|
213
|
+
you like. The page asks the gateway about the code with the code's own token, which reads that
|
|
214
|
+
code and nothing else; the gateway holds each ask up to 25 seconds, and a network that fails or a
|
|
215
|
+
`5xx` is asked again the way the log is. When a call claims the code the phase goes straight to
|
|
216
|
+
`live` — the caller is on the phone already — and the call is followed like any other: `call`,
|
|
217
|
+
the log, `speaking`, `ended`. A code lives ten minutes unless `ttl_s` says otherwise (60 to 1800
|
|
218
|
+
seconds); an expired one fails with "the code expired: ask for another". `leave()` while
|
|
219
|
+
`expecting` stops the asking at once.
|
|
220
|
+
|
|
221
|
+
The agent must answer at a phone number in the key's world, or `expect()` throws the gateway's
|
|
222
|
+
409 naming the fix.
|
|
223
|
+
|
|
191
224
|
## Relaying the log yourself
|
|
192
225
|
|
|
193
226
|
A page that must not reach the gateway — a network that only lets it talk to your own domain —
|
|
@@ -204,7 +237,7 @@ handed is never changed afterwards, so it can be compared by reference and kept.
|
|
|
204
237
|
|
|
205
238
|
| field | what it is |
|
|
206
239
|
|---|---|
|
|
207
|
-
| `phase` | `idle` · `opening` (minting, joining) · `ringing` (a phone call not yet answered) · `live` · `ended` · `failed` |
|
|
240
|
+
| `phase` | `idle` · `opening` (minting, joining) · `expecting` (a code shown, no call has claimed it yet) · `ringing` (a phone call not yet answered) · `live` · `ended` · `failed` |
|
|
208
241
|
| `mode` | `talk`, `chat`, `phone`, or `null` before anything started |
|
|
209
242
|
| `call` | the call id, once the tokens or the dial answered it; `""` before |
|
|
210
243
|
| `error` | the sentence to show when `phase` is `failed`; `""` otherwise |
|
|
@@ -214,6 +247,7 @@ handed is never changed afterwards, so it can be compared by reference and kept.
|
|
|
214
247
|
| `connection` | the log's stream: `connecting` · `live` · `reconnecting` · `ended` (also before anything opened) |
|
|
215
248
|
| `wantsSound` | `true` when the browser has not let the page play sound yet: show a button that calls `playSound()` |
|
|
216
249
|
| `speaking` | `{agent, user, level}`: who is making a sound right now, and how loud the agent is, 0 to 1 |
|
|
250
|
+
| `code` | `{code, number, expiresAt}` once `byPhone()` has a code to show; `null` otherwise |
|
|
217
251
|
|
|
218
252
|
The phase and everything around it — `error`, `connection`, `wantsSound`, `speaking` — are
|
|
219
253
|
published the moment they change. The log is painted at most ten times a second: a burst of
|
|
@@ -309,6 +343,10 @@ Nothing fails silently. Every refusal is a phase and a sentence, or a rejected p
|
|
|
309
343
|
| `livekit-client` could not be loaded | `failed`, `error` is the loader's message |
|
|
310
344
|
| `callMe` threw | `failed`, `error` is its message |
|
|
311
345
|
| `callMe()` on a room given no `callMe` | `failed`, `error` says so |
|
|
346
|
+
| `expect` threw | `failed`, `error` is its message |
|
|
347
|
+
| `byPhone()` on a room given no `expect` | `failed`, `error` says so |
|
|
348
|
+
| the code expired before a call claimed it | `failed`, "the code expired: ask for another" |
|
|
349
|
+
| the gateway answered a `4xx` about the code | `failed`, "the code answered 403" |
|
|
312
350
|
| the log answered a `4xx` | on the phone: `failed`, "the log answered 401". In a room: `connection` is `ended` and the phase is left to the seat, which is the call |
|
|
313
351
|
| the log answered a `5xx`, or its stream dropped | `connection` is `reconnecting`, and it resumes where it was; nothing ends |
|
|
314
352
|
| `tokens` or `callMe` answered no `log_token`, and there is no `log` to relay it | `failed`, `error` says so |
|
|
@@ -316,7 +354,7 @@ Nothing fails silently. Every refusal is a phase and a sentence, or a rejected p
|
|
|
316
354
|
| an entry of the log this version cannot read | skipped; `onSkipped(why)` is called, and the rest of the call still draws |
|
|
317
355
|
| `send()` outside a live seat | the promise rejects with "not in a call"; an empty line is nothing |
|
|
318
356
|
|
|
319
|
-
On the server, `mint` and `
|
|
357
|
+
On the server, `mint`, `dial` and `expect` throw `GatewayRefused` for a refusal: `status` is the gateway's,
|
|
320
358
|
and `detail` its sentence when it sent one (`null` when the body was not the gateway's JSON). The
|
|
321
359
|
sentence names the fix — a quota, a scope the key does not hold, a number the org cannot call —
|
|
322
360
|
so pass it on rather than rewording it.
|
package/dist/code.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** A code the page shows a caller, waited on: the gateway asked with the code's token until a call claims it or it expires. */
|
|
2
|
+
import type { Code } from "./server/index.js";
|
|
3
|
+
/** How the wait came out: the call that claimed the code, or the sentence to show instead. */
|
|
4
|
+
export type Claim = {
|
|
5
|
+
kind: "claimed";
|
|
6
|
+
call: string;
|
|
7
|
+
log_token: string | null;
|
|
8
|
+
} | {
|
|
9
|
+
kind: "failed";
|
|
10
|
+
error: string;
|
|
11
|
+
};
|
|
12
|
+
/** Ask `gateway` about `code` until a call claims it or it expires. Null when `signal` stopped it first. */
|
|
13
|
+
export declare function claimOf(gateway: string, code: Code, fetcher: typeof fetch, signal: AbortSignal): Promise<Claim | null>;
|
|
14
|
+
//# sourceMappingURL=code.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code.d.ts","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":"AAAA,+HAA+H;AAS/H,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,8FAA8F;AAC9F,MAAM,MAAM,KAAK,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAKpH,4GAA4G;AAC5G,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CA4B5H"}
|
package/dist/code.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/** A code the page shows a caller, waited on: the gateway asked with the code's token until a call claims it or it expires. */
|
|
2
|
+
//
|
|
3
|
+
// The gateway holds each ask up to 25 s and answers `waiting` when nothing happened, so the page
|
|
4
|
+
// asks again at once. A network that fails or a `5xx` — a gateway restarting under a deploy — is
|
|
5
|
+
// asked again the way the log's stream is, backing off; a `4xx` is the gateway saying no.
|
|
6
|
+
import { CodeStandingSchema } from "@pinecall/protocol";
|
|
7
|
+
import { AWAY, Backoff } from "./log/backoff.js";
|
|
8
|
+
const EXPIRED = "the code expired: ask for another";
|
|
9
|
+
const UNKNOWN = "the gateway answered the code with a shape this package does not know";
|
|
10
|
+
/** Ask `gateway` about `code` until a call claims it or it expires. Null when `signal` stopped it first. */
|
|
11
|
+
export async function claimOf(gateway, code, fetcher, signal) {
|
|
12
|
+
const url = `${gateway}/v1/codes/${encodeURIComponent(code.code)}?wait=1&token=${encodeURIComponent(code.code_token)}`;
|
|
13
|
+
const backoff = new Backoff();
|
|
14
|
+
while (!signal.aborted) {
|
|
15
|
+
let body;
|
|
16
|
+
try {
|
|
17
|
+
const answer = await fetcher(url, { signal });
|
|
18
|
+
if (answer.status >= AWAY) {
|
|
19
|
+
await answer.body?.cancel().catch(() => undefined);
|
|
20
|
+
await backoff.wait(signal);
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (!answer.ok)
|
|
24
|
+
return { kind: "failed", error: `the code answered ${answer.status}` };
|
|
25
|
+
body = await answer.json();
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// The network failed, or the answer broke before it was whole: the same as a 5xx.
|
|
29
|
+
if (signal.aborted)
|
|
30
|
+
return null;
|
|
31
|
+
await backoff.wait(signal);
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const standing = CodeStandingSchema.safeParse(body);
|
|
35
|
+
if (!standing.success)
|
|
36
|
+
return { kind: "failed", error: UNKNOWN };
|
|
37
|
+
backoff.reset();
|
|
38
|
+
const { status, call, log_token } = standing.data;
|
|
39
|
+
if (status === "expired")
|
|
40
|
+
return { kind: "failed", error: EXPIRED };
|
|
41
|
+
if (status === "claimed")
|
|
42
|
+
return call === null ? { kind: "failed", error: UNKNOWN } : { kind: "claimed", call, log_token };
|
|
43
|
+
}
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=code.js.map
|
package/dist/code.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code.js","sourceRoot":"","sources":["../src/code.ts"],"names":[],"mappings":"AAAA,+HAA+H;AAC/H,EAAE;AACF,iGAAiG;AACjG,iGAAiG;AACjG,0FAA0F;AAE1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAMjD,MAAM,OAAO,GAAG,mCAAmC,CAAC;AACpD,MAAM,OAAO,GAAG,uEAAuE,CAAC;AAExF,4GAA4G;AAC5G,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,IAAU,EAAE,OAAqB,EAAE,MAAmB;IACnG,MAAM,GAAG,GAAG,GAAG,OAAO,aAAa,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;IACvH,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC1B,MAAM,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACnD,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,EAAE;gBAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACvF,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,kFAAkF;YAClF,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO,IAAI,CAAC;YAChC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACjE,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;QAClD,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACpE,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7H,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
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 { Minted, Mode, Phase, RoomOptions, RoomState, RoomStore } from "./room.js";
|
|
3
|
+
export type { Code, Minted, Mode, Phase, RoomOptions, RoomState, RoomStore } from "./room.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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,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,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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** How a gateway that is away is asked again: half a second, doubling to eight, for as long as it takes. */
|
|
2
|
+
/** From here up the gateway, or the proxy in front of it, is away rather than saying no. */
|
|
3
|
+
export declare const AWAY = 500;
|
|
4
|
+
/** One asker's pause between tries. `reset` once the gateway has answered. */
|
|
5
|
+
export declare class Backoff {
|
|
6
|
+
#private;
|
|
7
|
+
/** Sleeps the current pause, cut short by `signal`, and doubles the next one. */
|
|
8
|
+
wait(signal: AbortSignal): Promise<void>;
|
|
9
|
+
reset(): void;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=backoff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backoff.d.ts","sourceRoot":"","sources":["../../src/log/backoff.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAQ5G,4FAA4F;AAC5F,eAAO,MAAM,IAAI,MAAM,CAAC;AAExB,8EAA8E;AAC9E,qBAAa,OAAO;;IAGlB,iFAAiF;IAC3E,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7C;IAED,KAAK,IAAI,IAAI,CAEZ;CACF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** How a gateway that is away is asked again: half a second, doubling to eight, for as long as it takes. */
|
|
2
|
+
// A dropped stream is opened again after this, doubling to the ceiling: a gateway restarting is
|
|
3
|
+
// seconds, and a page hammering it every 100 ms would only make those seconds longer. A 5xx is the
|
|
4
|
+
// same thing seen from a proxy — the gateway behind it is restarting — and is asked again too.
|
|
5
|
+
const FIRST_MS = 500;
|
|
6
|
+
const CEILING_MS = 8_000;
|
|
7
|
+
/** From here up the gateway, or the proxy in front of it, is away rather than saying no. */
|
|
8
|
+
export const AWAY = 500;
|
|
9
|
+
/** One asker's pause between tries. `reset` once the gateway has answered. */
|
|
10
|
+
export class Backoff {
|
|
11
|
+
#ms = FIRST_MS;
|
|
12
|
+
/** Sleeps the current pause, cut short by `signal`, and doubles the next one. */
|
|
13
|
+
async wait(signal) {
|
|
14
|
+
await slept(this.#ms, signal);
|
|
15
|
+
this.#ms = Math.min(this.#ms * 2, CEILING_MS);
|
|
16
|
+
}
|
|
17
|
+
reset() {
|
|
18
|
+
this.#ms = FIRST_MS;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function slept(ms, signal) {
|
|
22
|
+
return new Promise((wake) => {
|
|
23
|
+
const timer = setTimeout(wake, ms);
|
|
24
|
+
signal.addEventListener("abort", () => {
|
|
25
|
+
clearTimeout(timer);
|
|
26
|
+
wake();
|
|
27
|
+
}, { once: true });
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=backoff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backoff.js","sourceRoot":"","sources":["../../src/log/backoff.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAE5G,gGAAgG;AAChG,mGAAmG;AACnG,+FAA+F;AAC/F,MAAM,QAAQ,GAAG,GAAG,CAAC;AACrB,MAAM,UAAU,GAAG,KAAK,CAAC;AAEzB,4FAA4F;AAC5F,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC;AAExB,8EAA8E;AAC9E,MAAM,OAAO,OAAO;IAClB,GAAG,GAAG,QAAQ,CAAC;IAEf,iFAAiF;IACjF,KAAK,CAAC,IAAI,CAAC,MAAmB;QAC5B,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;IACtB,CAAC;CACF;AAED,SAAS,KAAK,CAAC,EAAU,EAAE,MAAmB;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,gBAAgB,CACrB,OAAO,EACP,GAAG,EAAE;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,EAAE,CAAC;QACT,CAAC,EACD,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/log/follow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"follow.d.ts","sourceRoot":"","sources":["../../src/log/follow.ts"],"names":[],"mappings":"AAAA,iGAAiG;
|
|
1
|
+
{"version":3,"file":"follow.d.ts","sourceRoot":"","sources":["../../src/log/follow.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAKjG,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtD,gFAAgF;AAChF,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,MAAM,GAAG,cAAc,GAAG,OAAO,CAAC;AAE1E,sGAAsG;AACtG,MAAM,MAAM,MAAM,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG,kGAAkG;AAClG,MAAM,WAAW,SAAS;IACxB,kGAAkG;IAClG,SAAS,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,CAAC;IACzC,YAAY,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,gGAAgG;IAChG,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAKD,8FAA8F;AAC9F,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,KAAK,GAAG,MAAM,IAAI,CA0E3F"}
|
package/dist/log/follow.js
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
/** Follow a call's log over fetch: from where it was, through a dropped stream, to the score. */
|
|
2
2
|
import { TERMINAL_EVENT } from "@pinecall/protocol";
|
|
3
|
+
import { AWAY, Backoff } from "./backoff.js";
|
|
3
4
|
import { SseParser } from "./sse.js";
|
|
4
|
-
// A dropped stream is opened again after this, doubling to the ceiling: a gateway restarting is
|
|
5
|
-
// seconds, and a page hammering it every 100 ms would only make those seconds longer. A 5xx is the
|
|
6
|
-
// same thing seen from a proxy — the gateway behind it is restarting — and is asked again too.
|
|
7
|
-
const RECONNECT_MS = 500;
|
|
8
|
-
const RECONNECT_CEILING_MS = 8_000;
|
|
9
5
|
// The relay answers 204 to a sealed call whose cursor is at the end: nothing more will be said.
|
|
10
6
|
const NOTHING_MORE = 204;
|
|
11
|
-
// From here up the gateway, or the proxy in front of it, is away rather than saying no.
|
|
12
|
-
const AWAY = 500;
|
|
13
7
|
/** Open the log at `url`. Returns the call that stops it; stopping twice is stopping once. */
|
|
14
8
|
export function followLog(url, reader, fetcher) {
|
|
15
9
|
const controller = new AbortController();
|
|
16
10
|
let lastId = null;
|
|
17
|
-
|
|
11
|
+
const backoff = new Backoff();
|
|
18
12
|
let ours = true;
|
|
19
13
|
const stop = () => {
|
|
20
14
|
ours = false;
|
|
@@ -26,8 +20,7 @@ export function followLog(url, reader, fetcher) {
|
|
|
26
20
|
};
|
|
27
21
|
const again = async () => {
|
|
28
22
|
reader.onConnection("reconnecting");
|
|
29
|
-
await
|
|
30
|
-
backoff = Math.min(backoff * 2, RECONNECT_CEILING_MS);
|
|
23
|
+
await backoff.wait(controller.signal);
|
|
31
24
|
};
|
|
32
25
|
const read = async (body) => {
|
|
33
26
|
const parser = new SseParser();
|
|
@@ -75,7 +68,7 @@ export function followLog(url, reader, fetcher) {
|
|
|
75
68
|
if (!answer.ok || answer.body === null)
|
|
76
69
|
return end({ kind: "refused", status: answer.status });
|
|
77
70
|
reader.onConnection("live");
|
|
78
|
-
backoff
|
|
71
|
+
backoff.reset();
|
|
79
72
|
try {
|
|
80
73
|
await read(answer.body);
|
|
81
74
|
}
|
|
@@ -92,13 +85,4 @@ export function followLog(url, reader, fetcher) {
|
|
|
92
85
|
void connect();
|
|
93
86
|
return stop;
|
|
94
87
|
}
|
|
95
|
-
function slept(ms, signal) {
|
|
96
|
-
return new Promise((wake) => {
|
|
97
|
-
const timer = setTimeout(wake, ms);
|
|
98
|
-
signal.addEventListener("abort", () => {
|
|
99
|
-
clearTimeout(timer);
|
|
100
|
-
wake();
|
|
101
|
-
}, { once: true });
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
88
|
//# sourceMappingURL=follow.js.map
|
package/dist/log/follow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"follow.js","sourceRoot":"","sources":["../../src/log/follow.ts"],"names":[],"mappings":"AAAA,iGAAiG;AAEjG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"follow.js","sourceRoot":"","sources":["../../src/log/follow.ts"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { type Lit, type RoomOptions, type RoomState, type RoomStore, type Store
|
|
|
3
3
|
/** The store's state, re-rendering when it changes. Any store of this package. */
|
|
4
4
|
export declare function useStore<T>(store: Store<T>): T;
|
|
5
5
|
/** What `useRoom` hands a component: the state, and the verbs to change it. */
|
|
6
|
-
export type RoomHandle = RoomState & Pick<RoomStore, "start" | "send" | "callMe" | "leave" | "playSound">;
|
|
6
|
+
export type RoomHandle = RoomState & Pick<RoomStore, "start" | "send" | "callMe" | "byPhone" | "leave" | "playSound">;
|
|
7
7
|
/**
|
|
8
8
|
* One room for as long as the component is mounted, closed when it unmounts. The options are read
|
|
9
9
|
* when they are used, never when the room was made: a `tokens` written inline, new every render,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAItG,OAAO,EAAyB,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAE5H,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAI9C;AAED,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAItG,OAAO,EAAyB,KAAK,GAAG,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AAE5H,kFAAkF;AAClF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAI9C;AAED,+EAA+E;AAC/E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;AAEtH;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,UAAU,CAuBxD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,GAAG,GAAG,IAAI,CAqBpE"}
|
package/dist/react/index.js
CHANGED
|
@@ -33,8 +33,8 @@ export function useRoom(options) {
|
|
|
33
33
|
};
|
|
34
34
|
}, [store]);
|
|
35
35
|
const state = useStore(store);
|
|
36
|
-
const { start, send, callMe, leave, playSound } = store;
|
|
37
|
-
return { ...state, start, send, callMe, leave, playSound };
|
|
36
|
+
const { start, send, callMe, byPhone, leave, playSound } = store;
|
|
37
|
+
return { ...state, start, send, callMe, byPhone, leave, playSound };
|
|
38
38
|
}
|
|
39
39
|
/**
|
|
40
40
|
* The agent's reply as the voice says it: `lit` has sounded, `coming` has not, or null when nobody
|
|
@@ -77,6 +77,9 @@ function readingLatest(latest) {
|
|
|
77
77
|
get callMe() {
|
|
78
78
|
return latest.current.callMe;
|
|
79
79
|
},
|
|
80
|
+
get expect() {
|
|
81
|
+
return latest.current.expect;
|
|
82
|
+
},
|
|
80
83
|
get linger() {
|
|
81
84
|
return latest.current.linger;
|
|
82
85
|
},
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAEtG,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAEvF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAA0E,MAAM,aAAa,CAAC;AAE5H,kFAAkF;AAClF,MAAM,UAAU,QAAQ,CAAI,KAAe;IACzC,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,OAAmB,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,GAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IAClC,OAAO,oBAAoB,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAKD;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,OAAoB;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,4FAA4F;QAC5F,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Where a call is read: the tenant's relay when it gave one, the gateway with the call's own token otherwise. */
|
|
2
|
+
import type { Minted } from "./server/index.js";
|
|
3
|
+
import type { RoomOptions } from "./room.js";
|
|
4
|
+
/** The gateway the page asks, with no slash at the end. */
|
|
5
|
+
export declare function gatewayOf(options: Pick<RoomOptions, "gateway">): string;
|
|
6
|
+
/** The call's log and its recording. None when neither a relay nor a token is there to read it with. */
|
|
7
|
+
export declare function readingOf(options: Pick<RoomOptions, "gateway" | "log">, call: string, token: string | undefined, minted?: Minted): {
|
|
8
|
+
log: string;
|
|
9
|
+
recording: string;
|
|
10
|
+
} | null;
|
|
11
|
+
//# sourceMappingURL=reading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reading.d.ts","sourceRoot":"","sources":["../src/reading.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAElH,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"}
|
package/dist/reading.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Where a call is read: the tenant's relay when it gave one, the gateway with the call's own token otherwise. */
|
|
2
|
+
const GATEWAY = "https://box.pinecall.io";
|
|
3
|
+
/** The gateway the page asks, with no slash at the end. */
|
|
4
|
+
export function gatewayOf(options) {
|
|
5
|
+
return (options.gateway ?? GATEWAY).replace(/\/+$/, "");
|
|
6
|
+
}
|
|
7
|
+
/** The call's log and its recording. None when neither a relay nor a token is there to read it with. */
|
|
8
|
+
export function readingOf(options, call, token, minted) {
|
|
9
|
+
if (options.log !== undefined) {
|
|
10
|
+
return { log: minted === undefined ? options.log(call) : options.log(call, minted), recording: "" };
|
|
11
|
+
}
|
|
12
|
+
if (typeof token !== "string" || token === "")
|
|
13
|
+
return null;
|
|
14
|
+
const at = `${gatewayOf(options)}/v1/calls/${encodeURIComponent(call)}`;
|
|
15
|
+
const ticket = `?token=${encodeURIComponent(token)}`;
|
|
16
|
+
return { log: `${at}/events${ticket}`, recording: `${at}/recording${ticket}` };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=reading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reading.js","sourceRoot":"","sources":["../src/reading.ts"],"names":[],"mappings":"AAAA,kHAAkH;AAKlH,MAAM,OAAO,GAAG,yBAAyB,CAAC;AAE1C,2DAA2D;AAC3D,MAAM,UAAU,SAAS,CAAC,OAAqC;IAC7D,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,SAAS,CACvB,OAA6C,EAC7C,IAAY,EACZ,KAAyB,EACzB,MAAe;IAEf,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACtG,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,EAAE,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;IACxE,MAAM,MAAM,GAAG,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,MAAM,EAAE,EAAE,CAAC;AACjF,CAAC"}
|
package/dist/room.d.ts
CHANGED
|
@@ -3,11 +3,11 @@ import { type Entry, type State } from "@pinecall/protocol";
|
|
|
3
3
|
import { type Connection } from "./log/follow.js";
|
|
4
4
|
import { type Speaking } from "./seat/join.js";
|
|
5
5
|
import { type LivekitModule } from "./seat/livekit.js";
|
|
6
|
-
import type { Minted } from "./server/index.js";
|
|
6
|
+
import type { Code, Minted } from "./server/index.js";
|
|
7
7
|
import { type Store } from "./store.js";
|
|
8
|
-
export type { Minted };
|
|
9
|
-
/** Where the conversation is. `ringing
|
|
10
|
-
export type Phase = "idle" | "opening" | "ringing" | "live" | "ended" | "failed";
|
|
8
|
+
export type { Code, Minted };
|
|
9
|
+
/** Where the conversation is. `ringing`: a phone call nobody answered yet; `expecting`: a code no call claimed yet. */
|
|
10
|
+
export type Phase = "idle" | "opening" | "expecting" | "ringing" | "live" | "ended" | "failed";
|
|
11
11
|
/** Spoken, written, or on the visitor's own phone. The same agent every way. */
|
|
12
12
|
export type Mode = "talk" | "chat" | "phone";
|
|
13
13
|
/** Everything the page draws from. Every field is the truth at the moment it was published. */
|
|
@@ -26,6 +26,12 @@ export interface RoomState {
|
|
|
26
26
|
/** True when the browser has not been told it may make a sound: ask for a click. */
|
|
27
27
|
wantsSound: boolean;
|
|
28
28
|
speaking: Speaking;
|
|
29
|
+
/** The code to show beside the number to call, from `expecting` on; `expiresAt` in seconds since the epoch. */
|
|
30
|
+
code: {
|
|
31
|
+
code: string;
|
|
32
|
+
number: string;
|
|
33
|
+
expiresAt: number;
|
|
34
|
+
} | null;
|
|
29
35
|
}
|
|
30
36
|
export interface RoomOptions {
|
|
31
37
|
/** A ticket for a seat, from the tenant's own server. The page never holds a key. */
|
|
@@ -40,6 +46,8 @@ export interface RoomOptions {
|
|
|
40
46
|
call: string;
|
|
41
47
|
log_token?: string | undefined;
|
|
42
48
|
}>) | undefined;
|
|
49
|
+
/** Ask the tenant's server for a code the visitor keys when they call the agent's number. */
|
|
50
|
+
expect?: (() => Promise<Code>) | undefined;
|
|
43
51
|
/** How long the log is read after the seat closes, waiting for the score. Default 60 000 ms: a worker
|
|
44
52
|
* notices a caller has gone some twenty seconds after the fact, and the score comes after that. */
|
|
45
53
|
linger?: number | undefined;
|
|
@@ -52,6 +60,7 @@ export interface RoomStore extends Store<RoomState> {
|
|
|
52
60
|
start(mode: "talk" | "chat"): Promise<void>;
|
|
53
61
|
send(text: string): Promise<void>;
|
|
54
62
|
callMe(to: string): Promise<void>;
|
|
63
|
+
byPhone(): Promise<void>;
|
|
55
64
|
leave(): Promise<void>;
|
|
56
65
|
playSound(): void;
|
|
57
66
|
}
|
package/dist/room.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"AAAA,kHAAkH;
|
|
1
|
+
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
|
package/dist/room.js
CHANGED
|
@@ -5,11 +5,14 @@
|
|
|
5
5
|
// org's key never reaches a browser. The call's LOG, read straight from the gateway with the token
|
|
6
6
|
// minted beside that ticket for that one call, carries what the agent is actually doing: the turns, every tool it called and what came back, its declared state.
|
|
7
7
|
// The log is folded by the protocol's own reducer, so what the page draws is what the console
|
|
8
|
-
// draws, from the same bytes. A phone call has no seat at all: the log is the whole of it
|
|
8
|
+
// draws, from the same bytes. A phone call has no seat at all: the log is the whole of it — and
|
|
9
|
+
// when the visitor calls the agent, a code they key on the phone names the call the page follows.
|
|
9
10
|
import { initialState } from "@pinecall/protocol";
|
|
11
|
+
import { claimOf } from "./code.js";
|
|
10
12
|
import { LogFold } from "./log/fold.js";
|
|
11
13
|
import { followLog } from "./log/follow.js";
|
|
12
14
|
import { joinSeat } from "./seat/join.js";
|
|
15
|
+
import { gatewayOf, readingOf } from "./reading.js";
|
|
13
16
|
import { loadLivekit } from "./seat/livekit.js";
|
|
14
17
|
import { hiddenSink } from "./seat/sink.js";
|
|
15
18
|
import { cell } from "./store.js";
|
|
@@ -19,8 +22,8 @@ const PARTING_MS = 3_000;
|
|
|
19
22
|
const QUIET = { agent: false, user: false, level: 0 };
|
|
20
23
|
const NO_MICROPHONE = "I could not get to your microphone. Check the browser's permission, or write instead.";
|
|
21
24
|
const NO_CALL_ME = "room() was given no callMe: the call is placed by your server";
|
|
25
|
+
const NO_EXPECT = "room() was given no expect: the code is asked for by your server";
|
|
22
26
|
const NO_LOG_TOKEN = "the server answered no log_token, and room() was given no log to relay it through";
|
|
23
|
-
const GATEWAY = "https://box.pinecall.io";
|
|
24
27
|
/** A room for one visitor. Nothing opens until a verb is called. */
|
|
25
28
|
export function room(options) {
|
|
26
29
|
const store = cell(idle());
|
|
@@ -28,12 +31,13 @@ export function room(options) {
|
|
|
28
31
|
const parting = new Set();
|
|
29
32
|
let now = null;
|
|
30
33
|
let closed = false;
|
|
31
|
-
const busy = () => ["opening", "ringing", "live"].includes(store.state.phase);
|
|
34
|
+
const busy = () => ["opening", "expecting", "ringing", "live"].includes(store.state.phase);
|
|
32
35
|
const current = (c) => now === c;
|
|
33
36
|
// The follow and the seat down, now. Returns the seat's leaving, for a caller that waits on it.
|
|
34
37
|
const shut = (c) => {
|
|
35
38
|
c.stopFollow?.();
|
|
36
39
|
c.stopFollow = null;
|
|
40
|
+
c.waiting?.abort();
|
|
37
41
|
if (c.linger !== null)
|
|
38
42
|
clearTimeout(c.linger);
|
|
39
43
|
c.linger = null;
|
|
@@ -41,18 +45,6 @@ export function room(options) {
|
|
|
41
45
|
c.seat = null;
|
|
42
46
|
return seat === null ? Promise.resolve() : seat.leave().catch(() => undefined);
|
|
43
47
|
};
|
|
44
|
-
// Where the call is read: the tenant's relay when it gave one, the gateway with the call's own
|
|
45
|
-
// token otherwise. None when neither is there to read it with.
|
|
46
|
-
const read = (call, token, minted) => {
|
|
47
|
-
if (options.log !== undefined) {
|
|
48
|
-
return { log: minted === undefined ? options.log(call) : options.log(call, minted), recording: "" };
|
|
49
|
-
}
|
|
50
|
-
if (typeof token !== "string" || token === "")
|
|
51
|
-
return null;
|
|
52
|
-
const at = `${bare(options.gateway ?? GATEWAY)}/v1/calls/${encodeURIComponent(call)}`;
|
|
53
|
-
const ticket = `?token=${encodeURIComponent(token)}`;
|
|
54
|
-
return { log: `${at}/events${ticket}`, recording: `${at}/recording${ticket}` };
|
|
55
|
-
};
|
|
56
48
|
// A verb's first move, read from the store and never from a closure: a second click while the
|
|
57
49
|
// first is still opening is nothing, and an old conversation is shut before a new one opens.
|
|
58
50
|
const begin = (mode) => {
|
|
@@ -61,7 +53,7 @@ export function room(options) {
|
|
|
61
53
|
if (now !== null)
|
|
62
54
|
void shut(now);
|
|
63
55
|
const fold = new LogFold((why) => options.onSkipped?.(why));
|
|
64
|
-
const c = { mode, fold, seat: null, stopFollow: null, linger: null };
|
|
56
|
+
const c = { mode, fold, seat: null, stopFollow: null, waiting: null, linger: null };
|
|
65
57
|
now = c;
|
|
66
58
|
publish({ ...idle(), phase: "opening", mode, connection: "connecting" });
|
|
67
59
|
return c;
|
|
@@ -76,6 +68,7 @@ export function room(options) {
|
|
|
76
68
|
// the agent's last words, the cost and the score are entries that arrive after the room closed.
|
|
77
69
|
const end = (c) => {
|
|
78
70
|
publish({ phase: "ended", wantsSound: false, speaking: QUIET });
|
|
71
|
+
c.waiting?.abort();
|
|
79
72
|
const seat = c.seat;
|
|
80
73
|
c.seat = null;
|
|
81
74
|
if (c.stopFollow !== null && c.linger === null) {
|
|
@@ -209,7 +202,7 @@ export function room(options) {
|
|
|
209
202
|
}
|
|
210
203
|
if (!current(c) || store.state.phase !== "opening")
|
|
211
204
|
return;
|
|
212
|
-
const reading =
|
|
205
|
+
const reading = readingOf(options, minted.call, minted.log_token, minted);
|
|
213
206
|
if (reading === null)
|
|
214
207
|
return fail(c, NO_LOG_TOKEN);
|
|
215
208
|
publish({ call: minted.call, recording: reading.recording });
|
|
@@ -234,12 +227,42 @@ export function room(options) {
|
|
|
234
227
|
}
|
|
235
228
|
if (!current(c) || store.state.phase !== "opening")
|
|
236
229
|
return;
|
|
237
|
-
const reading =
|
|
230
|
+
const reading = readingOf(options, placed.call, placed.log_token);
|
|
238
231
|
if (reading === null)
|
|
239
232
|
return fail(c, NO_LOG_TOKEN);
|
|
240
233
|
publish({ call: placed.call, phase: "ringing", recording: reading.recording });
|
|
241
234
|
follow(c, reading.log);
|
|
242
235
|
},
|
|
236
|
+
async byPhone() {
|
|
237
|
+
const c = begin("phone");
|
|
238
|
+
if (c === null)
|
|
239
|
+
return;
|
|
240
|
+
const ask = options.expect;
|
|
241
|
+
if (ask === undefined)
|
|
242
|
+
return fail(c, NO_EXPECT);
|
|
243
|
+
let code;
|
|
244
|
+
try {
|
|
245
|
+
code = await ask();
|
|
246
|
+
}
|
|
247
|
+
catch (refused) {
|
|
248
|
+
return fail(c, messageOf(refused));
|
|
249
|
+
}
|
|
250
|
+
if (!current(c) || store.state.phase !== "opening")
|
|
251
|
+
return;
|
|
252
|
+
publish({ phase: "expecting", code: { code: code.code, number: code.number, expiresAt: code.expires_at } });
|
|
253
|
+
c.waiting = new AbortController();
|
|
254
|
+
const claim = await claimOf(gatewayOf(options), code, options.fetch ?? fetch, c.waiting.signal);
|
|
255
|
+
// Leaving, closing or failing aborted the asking. A claim is a call already answered: it is live.
|
|
256
|
+
if (claim === null || c.waiting.signal.aborted)
|
|
257
|
+
return;
|
|
258
|
+
if (claim.kind === "failed")
|
|
259
|
+
return fail(c, claim.error);
|
|
260
|
+
const reading = readingOf(options, claim.call, claim.log_token ?? undefined);
|
|
261
|
+
if (reading === null)
|
|
262
|
+
return fail(c, NO_LOG_TOKEN);
|
|
263
|
+
publish({ call: claim.call, phase: "live", recording: reading.recording });
|
|
264
|
+
follow(c, reading.log);
|
|
265
|
+
},
|
|
243
266
|
async send(text) {
|
|
244
267
|
if (text.trim() === "")
|
|
245
268
|
return;
|
|
@@ -296,11 +319,9 @@ function idle() {
|
|
|
296
319
|
connection: "ended",
|
|
297
320
|
wantsSound: false,
|
|
298
321
|
speaking: QUIET,
|
|
322
|
+
code: null,
|
|
299
323
|
};
|
|
300
324
|
}
|
|
301
|
-
function bare(url) {
|
|
302
|
-
return url.replace(/\/+$/, "");
|
|
303
|
-
}
|
|
304
325
|
function messageOf(refused) {
|
|
305
326
|
return refused instanceof Error ? refused.message : String(refused);
|
|
306
327
|
}
|
package/dist/room.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @pinecall/room/server: what a tenant's server does with its key — a ticket for a seat, a call placed. */
|
|
1
|
+
/** @pinecall/room/server: what a tenant's server does with its key — a ticket for a seat, a call placed, a code to call with. */
|
|
2
2
|
/** What `POST /v1/tokens` answers: where the room is, the ticket into it, the call's id, and the
|
|
3
3
|
* token the page reads that call's log and recording with. The protocol's `Minted`, in rest.json. */
|
|
4
4
|
export interface Minted {
|
|
@@ -7,6 +7,15 @@ export interface Minted {
|
|
|
7
7
|
call: string;
|
|
8
8
|
log_token: string;
|
|
9
9
|
}
|
|
10
|
+
/** What `POST /v1/codes` answers: the four digits a page shows beside the agent's number, when
|
|
11
|
+
* they stop being a code (seconds since the epoch), and the token the page asks about them with.
|
|
12
|
+
* The protocol's `Code`, in rest.json. */
|
|
13
|
+
export interface Code {
|
|
14
|
+
code: string;
|
|
15
|
+
number: string;
|
|
16
|
+
expires_at: number;
|
|
17
|
+
code_token: string;
|
|
18
|
+
}
|
|
10
19
|
/** What `POST /v1/agents/{agent}/dial` answers: the call's id, before anything has rung. */
|
|
11
20
|
export interface Dialed {
|
|
12
21
|
call: string;
|
|
@@ -42,6 +51,15 @@ export interface DialOptions {
|
|
|
42
51
|
log?: LogProjection | undefined;
|
|
43
52
|
fetch?: typeof fetch | undefined;
|
|
44
53
|
}
|
|
54
|
+
export interface ExpectOptions {
|
|
55
|
+
url: string;
|
|
56
|
+
agent: string;
|
|
57
|
+
/** How long the code lives. The gateway's default is 600 s: 60 s the least, 1800 s the most. */
|
|
58
|
+
ttl_s?: number | undefined;
|
|
59
|
+
/** What the log token the page is handed once a call claims the code reads it through. */
|
|
60
|
+
log?: LogProjection | undefined;
|
|
61
|
+
fetch?: typeof fetch | undefined;
|
|
62
|
+
}
|
|
45
63
|
/** The gateway said no. `detail` is its own sentence when it sent one; it names the fix. */
|
|
46
64
|
export declare class GatewayRefused extends Error {
|
|
47
65
|
readonly name = "GatewayRefused";
|
|
@@ -53,4 +71,7 @@ export declare class GatewayRefused extends Error {
|
|
|
53
71
|
export declare function mint(key: string, options: MintOptions): Promise<Minted>;
|
|
54
72
|
/** Have the agent call `to`. The key needs the `talk` scope; the number must have reached the org before. */
|
|
55
73
|
export declare function dial(key: string, options: DialOptions): Promise<Dialed>;
|
|
74
|
+
/** A code for a page to show beside the agent's number, for the visitor to key when they call it.
|
|
75
|
+
* The key needs the `talk` scope; the agent must answer at a phone number in the key's world. */
|
|
76
|
+
export declare function expect(key: string, options: ExpectOptions): Promise<Code>;
|
|
56
77
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,iIAAiI;AAMjI;qGACqG;AACrG,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;0CAE0C;AAC1C,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,4FAA4F;AAC5F,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;kEACkE;AAClE,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,GAAG,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,8FAA8F;IAC9F,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,0FAA0F;IAC1F,GAAG,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,KAAK,GAAG,SAAS,CAAC;CAClC;AAED,4FAA4F;AAC5F,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAkB,IAAI,oBAAoB;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,YAAY,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAIhD;CACF;AAKD,6EAA6E;AAC7E,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7E;AAED,6GAA6G;AAC7G,wBAAsB,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAM7E;AAED;iGACiG;AACjG,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAK/E"}
|
package/dist/server/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @pinecall/room/server: what a tenant's server does with its key — a ticket for a seat, a call placed. */
|
|
1
|
+
/** @pinecall/room/server: what a tenant's server does with its key — a ticket for a seat, a call placed, a code to call with. */
|
|
2
2
|
//
|
|
3
3
|
// The key never reaches a page. The page asks the tenant's own server, the server asks the gateway
|
|
4
4
|
// with the key, and what comes back to the page is a ticket for one call. Nothing here is imported
|
|
@@ -34,6 +34,15 @@ export async function dial(key, options) {
|
|
|
34
34
|
throw new Error("the gateway answered the dial with a shape this package does not know");
|
|
35
35
|
return body;
|
|
36
36
|
}
|
|
37
|
+
/** A code for a page to show beside the agent's number, for the visitor to key when they call it.
|
|
38
|
+
* The key needs the `talk` scope; the agent must answer at a phone number in the key's world. */
|
|
39
|
+
export async function expect(key, options) {
|
|
40
|
+
const { url, agent, ttl_s, log } = options;
|
|
41
|
+
const body = await post(key, `${bare(url)}/v1/codes`, { agent, ttl_s, log }, options.fetch);
|
|
42
|
+
if (!isCode(body))
|
|
43
|
+
throw new Error("the gateway answered /v1/codes with a shape this package does not know");
|
|
44
|
+
return body;
|
|
45
|
+
}
|
|
37
46
|
async function post(key, url, body, fetcher = fetch) {
|
|
38
47
|
const answer = await fetcher(url, {
|
|
39
48
|
method: "POST",
|
|
@@ -68,6 +77,11 @@ function isMinted(body) {
|
|
|
68
77
|
function isDialed(body) {
|
|
69
78
|
return hasStrings(body, ["call", "agent", "to", "from", "env", "log_token"]);
|
|
70
79
|
}
|
|
80
|
+
function isCode(body) {
|
|
81
|
+
if (!hasStrings(body, ["code", "number", "code_token"]) || typeof body !== "object" || body === null)
|
|
82
|
+
return false;
|
|
83
|
+
return typeof Reflect.get(body, "expires_at") === "number";
|
|
84
|
+
}
|
|
71
85
|
function hasStrings(body, fields) {
|
|
72
86
|
return typeof body === "object" && body !== null && fields.every((field) => typeof Reflect.get(body, field) === "string");
|
|
73
87
|
}
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pinecall/room",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "The caller's side of a Pinecall call in a browser: one store, the seat and the log joined, no framework",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Pinecall <hello@pinecall.io>",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "git+https://github.com/pinecall/
|
|
9
|
+
"url": "git+https://github.com/pinecall/rooms.git"
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
12
12
|
"sideEffects": false,
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"dist"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@pinecall/protocol": "^0.6.
|
|
33
|
+
"@pinecall/protocol": "^0.6.9"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"livekit-client": "^2.0.0",
|