@pinecall/room 0.1.2 → 0.1.4

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 (87) hide show
  1. package/README.md +44 -6
  2. package/dist/code.d.ts +14 -0
  3. package/dist/code.d.ts.map +1 -0
  4. package/dist/code.js +46 -0
  5. package/dist/code.js.map +1 -0
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/karaoke.d.ts +1 -1
  9. package/dist/karaoke.d.ts.map +1 -1
  10. package/dist/karaoke.js +2 -1
  11. package/dist/karaoke.js.map +1 -1
  12. package/dist/log/backoff.d.ts +11 -0
  13. package/dist/log/backoff.d.ts.map +1 -0
  14. package/dist/log/backoff.js +30 -0
  15. package/dist/log/backoff.js.map +1 -0
  16. package/dist/log/fold.d.ts +2 -1
  17. package/dist/log/fold.d.ts.map +1 -1
  18. package/dist/log/fold.js +4 -1
  19. package/dist/log/fold.js.map +1 -1
  20. package/dist/log/follow.d.ts.map +1 -1
  21. package/dist/log/follow.js +5 -21
  22. package/dist/log/follow.js.map +1 -1
  23. package/dist/react/index.d.ts +1 -1
  24. package/dist/react/index.d.ts.map +1 -1
  25. package/dist/react/index.js +5 -2
  26. package/dist/react/index.js.map +1 -1
  27. package/dist/reading.d.ts +11 -0
  28. package/dist/reading.d.ts.map +1 -0
  29. package/dist/reading.js +18 -0
  30. package/dist/reading.js.map +1 -0
  31. package/dist/room.d.ts +15 -5
  32. package/dist/room.d.ts.map +1 -1
  33. package/dist/room.js +45 -22
  34. package/dist/room.js.map +1 -1
  35. package/dist/rows.d.ts +1 -1
  36. package/dist/rows.d.ts.map +1 -1
  37. package/dist/rows.js +1 -0
  38. package/dist/rows.js.map +1 -1
  39. package/dist/server/index.d.ts +22 -1
  40. package/dist/server/index.d.ts.map +1 -1
  41. package/dist/server/index.js +15 -1
  42. package/dist/server/index.js.map +1 -1
  43. package/dist/wire/codec.d.ts +22 -0
  44. package/dist/wire/codec.d.ts.map +1 -0
  45. package/dist/wire/codec.js +23 -0
  46. package/dist/wire/codec.js.map +1 -0
  47. package/dist/wire/defs.d.ts +302 -0
  48. package/dist/wire/defs.d.ts.map +1 -0
  49. package/dist/wire/defs.js +171 -0
  50. package/dist/wire/defs.js.map +1 -0
  51. package/dist/wire/envelope.d.ts +17 -0
  52. package/dist/wire/envelope.d.ts.map +1 -0
  53. package/dist/wire/envelope.js +16 -0
  54. package/dist/wire/envelope.js.map +1 -0
  55. package/dist/wire/events-call.d.ts +422 -0
  56. package/dist/wire/events-call.d.ts.map +1 -0
  57. package/dist/wire/events-call.js +182 -0
  58. package/dist/wire/events-call.js.map +1 -0
  59. package/dist/wire/events.d.ts +923 -0
  60. package/dist/wire/events.d.ts.map +1 -0
  61. package/dist/wire/events.js +292 -0
  62. package/dist/wire/events.js.map +1 -0
  63. package/dist/wire/metrics.d.ts +366 -0
  64. package/dist/wire/metrics.d.ts.map +1 -0
  65. package/dist/wire/metrics.js +269 -0
  66. package/dist/wire/metrics.js.map +1 -0
  67. package/dist/wire/reduce.d.ts +12 -0
  68. package/dist/wire/reduce.d.ts.map +1 -0
  69. package/dist/wire/reduce.js +375 -0
  70. package/dist/wire/reduce.js.map +1 -0
  71. package/dist/wire/registry.d.ts +1395 -0
  72. package/dist/wire/registry.d.ts.map +1 -0
  73. package/dist/wire/registry.js +81 -0
  74. package/dist/wire/registry.js.map +1 -0
  75. package/dist/wire/rest.d.ts +18 -0
  76. package/dist/wire/rest.d.ts.map +1 -0
  77. package/dist/wire/rest.js +14 -0
  78. package/dist/wire/rest.js.map +1 -0
  79. package/dist/wire/room.d.ts +106 -0
  80. package/dist/wire/room.d.ts.map +1 -0
  81. package/dist/wire/room.js +73 -0
  82. package/dist/wire/room.js.map +1 -0
  83. package/dist/wire/state.d.ts +915 -0
  84. package/dist/wire/state.d.ts.map +1 -0
  85. package/dist/wire/state.js +189 -0
  86. package/dist/wire/state.js.map +1 -0
  87. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduce.d.ts","sourceRoot":"","sources":["../../src/wire/reduce.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAGjF,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAkC,KAAK,KAAK,EAAgB,MAAM,YAAY,CAAC;AAEtF,qFAAqF;AACrF,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CAMtD;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,IAAI,KAAK,CAyCpC;AAED,iEAAiE;AACjE,eAAO,MAAM,UAAU,eAAe,CAAC;AAkBvC,+DAA+D;AAC/D,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,CAyBvD"}
@@ -0,0 +1,375 @@
1
+ /** Folds a log into its State, entry by entry, as the runtime's reducer does. */
2
+ import { eventOf } from "./codec.js";
3
+ import {} from "./envelope.js";
4
+ import {} from "./room.js";
5
+ import {} from "./state.js";
6
+ /** Fold every entry, in the order given, into the state an empty log starts from. */
7
+ export function reduce(entries) {
8
+ let state = initialState();
9
+ for (const entry of entries) {
10
+ state = apply(state, entry);
11
+ }
12
+ return state;
13
+ }
14
+ /** The state of an empty log: nothing known, every list empty, status idle. */
15
+ export function initialState() {
16
+ return {
17
+ seq: 0,
18
+ agent: "",
19
+ call: null,
20
+ status: "idle",
21
+ channel: null,
22
+ direction: null,
23
+ from: null,
24
+ to: null,
25
+ caller: null,
26
+ room: null,
27
+ started_at: null,
28
+ ended_at: null,
29
+ end_reason: null,
30
+ outcome: null,
31
+ user_state: null,
32
+ agent_state: null,
33
+ live: { user: null, agent: null },
34
+ turns: [],
35
+ metrics: { llm: [], stt: [], tts: [], vad: [], eou: [], eot: [], interruption: [], realtime: [], avatar: [] },
36
+ tools: [],
37
+ app_state: {},
38
+ events: [],
39
+ prompt: {},
40
+ tools_visible: [],
41
+ confirms: [],
42
+ memory: [],
43
+ sources: [],
44
+ handoff: { active: false, by: null },
45
+ held: false,
46
+ muted: false,
47
+ transfer: null,
48
+ attention: null,
49
+ usage: [],
50
+ cost: null,
51
+ routes: [],
52
+ gaps: [],
53
+ errors: [],
54
+ custom: [],
55
+ };
56
+ }
57
+ /** Error code recorded for an entry the reader cannot decode. */
58
+ export const UNREADABLE = "unreadable";
59
+ // Old logs may hold entries in shapes this reader no longer accepts. Record one error and keep
60
+ // folding instead of rejecting the whole call, as the runtime does.
61
+ function unreadable(state, entry, why) {
62
+ const said = why instanceof Error ? why.message : String(why);
63
+ state.errors.push({
64
+ seq: entry.seq,
65
+ code: UNREADABLE,
66
+ message: `${entry.type} at seq ${entry.seq} is not the shape this reader knows: ${said.split("\n")[0]?.trim() ?? said}`,
67
+ });
68
+ return state;
69
+ }
70
+ // A gap with a snapshot replaces the state; every other entry mutates it in place. The seq always
71
+ // advances to the entry's.
72
+ /** Fold one entry in and return the state to continue with. */
73
+ export function apply(state, entry) {
74
+ let event;
75
+ try {
76
+ event = eventOf(entry);
77
+ }
78
+ catch (why) {
79
+ const said = unreadable(state, entry, why);
80
+ said.seq = entry.seq;
81
+ said.agent = entry.agent;
82
+ if (entry.call !== null) {
83
+ said.call = entry.call;
84
+ }
85
+ return said;
86
+ }
87
+ let next = state;
88
+ if (event.type === "log.gap") {
89
+ next = onLogGap(state, event);
90
+ }
91
+ else {
92
+ applyEvent(state, entry, event);
93
+ }
94
+ next.seq = entry.seq;
95
+ next.agent = entry.agent;
96
+ if (entry.call !== null) {
97
+ next.call = entry.call;
98
+ }
99
+ return next;
100
+ }
101
+ function applyEvent(state, entry, event) {
102
+ switch (event.type) {
103
+ // ── the call ──
104
+ case "call.ringing":
105
+ state.status = "ringing";
106
+ state.direction = "inbound";
107
+ rememberTheLine(state, event.data);
108
+ return;
109
+ case "call.dialing":
110
+ state.status = "dialing";
111
+ state.direction = "outbound";
112
+ rememberTheLine(state, event.data);
113
+ return;
114
+ case "call.started":
115
+ state.status = "active";
116
+ state.direction = event.data.direction;
117
+ state.started_at = event.data.started_at;
118
+ rememberTheLine(state, event.data);
119
+ return;
120
+ case "call.ended":
121
+ state.status = "ended";
122
+ state.ended_at = event.data.ended_at;
123
+ state.end_reason = event.data.reason;
124
+ state.live = { user: null, agent: null };
125
+ // A caller who hung up while waiting for a person was never answered.
126
+ if (state.attention?.status === "open")
127
+ state.attention = { ...state.attention, status: "lapsed" };
128
+ return;
129
+ case "call.transferred":
130
+ state.transfer = {
131
+ to: event.data.to,
132
+ mode: event.data.mode,
133
+ status: event.data.ok ? "done" : "failed",
134
+ by: state.transfer?.by ?? "agent",
135
+ };
136
+ return;
137
+ case "call.line":
138
+ state.held = event.data.held;
139
+ state.muted = event.data.muted;
140
+ return;
141
+ case "call.summary":
142
+ state.usage = [...event.data.usage];
143
+ state.cost = event.data.cost;
144
+ state.outcome = event.data.outcome;
145
+ state.end_reason ??= event.data.reason;
146
+ return;
147
+ // ── the conversation ──
148
+ case "user.state":
149
+ state.user_state = event.data.state;
150
+ return;
151
+ case "agent.state":
152
+ state.agent_state = event.data.state;
153
+ return;
154
+ case "user.transcript":
155
+ state.live.user = event.data.final ? null : event.data.text;
156
+ return;
157
+ case "agent.transcript":
158
+ // A delta: one word of a spoken reply, or one token of a written one.
159
+ state.live.agent = event.data.final ? null : saidSoFar(state.live.agent, event.data);
160
+ return;
161
+ case "turn.user":
162
+ state.turns.push({ role: "user", ...event.data });
163
+ state.live.user = null;
164
+ return;
165
+ case "turn.agent":
166
+ state.turns.push({ role: "agent", ...event.data });
167
+ state.live.agent = null;
168
+ return;
169
+ case "memory.ops":
170
+ state.memory.push(...event.data.ops);
171
+ return;
172
+ case "docs.sources":
173
+ state.sources = [...event.data.sources];
174
+ return;
175
+ // ── metrics: every block is kept, in order, by kind ──
176
+ case "metrics.llm":
177
+ state.metrics.llm.push(event.data);
178
+ return;
179
+ case "metrics.stt":
180
+ state.metrics.stt.push(event.data);
181
+ return;
182
+ case "metrics.tts":
183
+ state.metrics.tts.push(event.data);
184
+ return;
185
+ case "metrics.vad":
186
+ state.metrics.vad.push(event.data);
187
+ return;
188
+ case "metrics.eou":
189
+ state.metrics.eou.push(event.data);
190
+ return;
191
+ case "metrics.eot":
192
+ state.metrics.eot.push(event.data);
193
+ return;
194
+ case "metrics.interruption":
195
+ state.metrics.interruption.push(event.data);
196
+ return;
197
+ case "metrics.realtime":
198
+ state.metrics.realtime.push(event.data);
199
+ return;
200
+ case "metrics.avatar":
201
+ state.metrics.avatar.push(event.data);
202
+ return;
203
+ // ── tools, state, confirmation ──
204
+ case "tool.call":
205
+ state.tools.push({ ...event.data, status: "running", seq: entry.seq });
206
+ return;
207
+ case "tool.result":
208
+ onToolResult(state, event.data);
209
+ return;
210
+ case "state.changed":
211
+ state.app_state = { ...event.data.state };
212
+ return;
213
+ case "prompt.changed":
214
+ state.prompt[event.data.name] = { hash: event.data.hash, chars: event.data.chars, seq: entry.seq };
215
+ return;
216
+ case "tools.changed":
217
+ state.tools_visible = [...event.data.visible];
218
+ return;
219
+ case "confirm.request":
220
+ state.confirms.push({
221
+ tool: event.data.tool,
222
+ call_id: event.data.call_id,
223
+ audience: event.data.audience,
224
+ phrase: event.data.phrase,
225
+ status: "pending",
226
+ });
227
+ return;
228
+ case "confirm.granted":
229
+ settleConfirm(state, event.data.call_id, { status: "granted", said: event.data.said });
230
+ return;
231
+ case "confirm.declined":
232
+ settleConfirm(state, event.data.call_id, {
233
+ status: "declined",
234
+ reason: event.data.reason,
235
+ ...(event.data.said !== undefined ? { said: event.data.said } : {}),
236
+ });
237
+ return;
238
+ // ── supervision, the agent, markers ──
239
+ case "supervisor.took_over":
240
+ state.handoff = { active: true, by: event.data.by };
241
+ return;
242
+ case "supervisor.released":
243
+ state.handoff = { active: false, by: null };
244
+ return;
245
+ case "supervisor.transferred":
246
+ state.transfer = { to: event.data.to, mode: event.data.mode, status: "requested", by: "supervisor" };
247
+ return;
248
+ case "attention.requested":
249
+ state.attention = { reason: event.data.reason, wait_s: event.data.wait_s, status: "open", asked_at: entry.ts, by: null };
250
+ return;
251
+ case "attention.answered":
252
+ if (state.attention !== null && state.attention !== undefined) {
253
+ state.attention = { ...state.attention, status: event.data.ok ? "answered" : "lapsed", by: event.data.by };
254
+ }
255
+ return;
256
+ case "agent.registered":
257
+ state.routes = [...event.data.routes];
258
+ return;
259
+ case "error":
260
+ state.errors.push({ seq: entry.seq, code: event.data.code, message: event.data.message });
261
+ return;
262
+ case "custom":
263
+ state.custom.push({ seq: entry.seq, name: event.data.name, data: { ...event.data.data } });
264
+ return;
265
+ // ── the room and the outside world ──
266
+ case "room.opened":
267
+ state.room = { name: event.data.name, sid: event.data.sid, participants: [], caller: null };
268
+ return;
269
+ case "participant.joined":
270
+ onParticipantJoined(state, entry, event.data);
271
+ return;
272
+ case "participant.left":
273
+ onParticipantLeft(state, event.data.identity);
274
+ return;
275
+ case "participant.speaking": {
276
+ const who = participantIn(state, event.data.identity);
277
+ if (who !== undefined) {
278
+ who.speaking = event.data.speaking;
279
+ }
280
+ return;
281
+ }
282
+ // The fact is kept by name and origin; its data stays in the log at that seq.
283
+ case "event.received": {
284
+ const { data: _data, ...fact } = event.data;
285
+ state.events.push({ ...fact, seq: entry.seq });
286
+ return;
287
+ }
288
+ // Not reduced: supervisor.said/.whispered surface as turns and prompt changes, supervisor.ended
289
+ // as call.ended, and the rest are kept in the log only.
290
+ case "track.published":
291
+ case "track.unpublished":
292
+ case "room.sent":
293
+ case "supervisor.said":
294
+ case "supervisor.whispered":
295
+ case "supervisor.ended":
296
+ case "agent.configured":
297
+ case "pong":
298
+ case "log.caught_up":
299
+ case "log.gap":
300
+ return;
301
+ }
302
+ }
303
+ function rememberTheLine(state, line) {
304
+ state.channel = line.channel;
305
+ state.from = line.from;
306
+ state.to = line.to;
307
+ state.caller = line.caller;
308
+ }
309
+ function onToolResult(state, result) {
310
+ const index = lastIndex(state.tools, (run) => run.call_id === result.call_id);
311
+ if (index === -1) {
312
+ return;
313
+ }
314
+ const { call_id: _callId, name: _name, ...outcome } = result;
315
+ const run = state.tools[index];
316
+ state.tools[index] = { ...run, ...outcome, status: outcome.error !== undefined ? "failed" : "done" };
317
+ }
318
+ function settleConfirm(state, callId, verdict) {
319
+ const index = lastIndex(state.confirms, (confirm) => confirm.call_id === callId);
320
+ if (index === -1) {
321
+ return;
322
+ }
323
+ const confirm = state.confirms[index];
324
+ state.confirms[index] = { ...confirm, ...verdict };
325
+ }
326
+ // joined_at is the entry's ts; the event does not repeat it.
327
+ function onParticipantJoined(state, entry, joined) {
328
+ if (state.room === null) {
329
+ return;
330
+ }
331
+ state.room.participants.push({ ...joined, joined_at: entry.ts, speaking: false });
332
+ if (joined.kind === "caller") {
333
+ state.room.caller = joined.identity;
334
+ }
335
+ }
336
+ // An identity is unique within a room: LiveKit disconnects the first of two that share one.
337
+ function onParticipantLeft(state, identity) {
338
+ if (state.room === null) {
339
+ return;
340
+ }
341
+ const seat = state.room.participants.findIndex((one) => one.identity === identity);
342
+ if (seat !== -1) {
343
+ state.room.participants.splice(seat, 1);
344
+ }
345
+ if (state.room.caller === identity) {
346
+ state.room.caller = null;
347
+ }
348
+ }
349
+ function participantIn(state, identity) {
350
+ return state.room?.participants.find((one) => one.identity === identity);
351
+ }
352
+ function onLogGap(state, event) {
353
+ const next = event.data.snapshot !== null ? structuredClone(event.data.snapshot) : state;
354
+ next.gaps.push({ from_seq: event.data.from_seq, to_seq: event.data.to_seq });
355
+ return next;
356
+ }
357
+ function lastIndex(items, matches) {
358
+ for (let index = items.length - 1; index >= 0; index -= 1) {
359
+ if (matches(items[index])) {
360
+ return index;
361
+ }
362
+ }
363
+ return -1;
364
+ }
365
+ /**
366
+ * Append a delta to the reply in flight. Aligned voice words arrive bare and are joined with a
367
+ * space; written tokens carry their own spacing ("clean" + "ing" must not gain a space).
368
+ */
369
+ function saidSoFar(soFar, delta) {
370
+ if (soFar === null || soFar === "")
371
+ return delta.text;
372
+ const apart = /\s$/.test(soFar) || /^\s/.test(delta.text);
373
+ return delta.start != null && !apart ? `${soFar} ${delta.text}` : `${soFar}${delta.text}`;
374
+ }
375
+ //# sourceMappingURL=reduce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduce.js","sourceRoot":"","sources":["../../src/wire/reduce.ts"],"names":[],"mappings":"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"}