@pinecall/room 0.1.3 → 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.
- package/README.md +2 -2
- package/dist/code.js +1 -1
- package/dist/code.js.map +1 -1
- package/dist/karaoke.d.ts +1 -1
- package/dist/karaoke.d.ts.map +1 -1
- package/dist/karaoke.js +2 -1
- package/dist/karaoke.js.map +1 -1
- package/dist/log/fold.d.ts +2 -1
- package/dist/log/fold.d.ts.map +1 -1
- package/dist/log/fold.js +4 -1
- package/dist/log/fold.js.map +1 -1
- package/dist/log/follow.js +1 -1
- package/dist/log/follow.js.map +1 -1
- package/dist/room.d.ts +2 -1
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +3 -1
- package/dist/room.js.map +1 -1
- package/dist/rows.d.ts +1 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +1 -0
- package/dist/rows.js.map +1 -1
- package/dist/wire/codec.d.ts +22 -0
- package/dist/wire/codec.d.ts.map +1 -0
- package/dist/wire/codec.js +23 -0
- package/dist/wire/codec.js.map +1 -0
- package/dist/wire/defs.d.ts +302 -0
- package/dist/wire/defs.d.ts.map +1 -0
- package/dist/wire/defs.js +171 -0
- package/dist/wire/defs.js.map +1 -0
- package/dist/wire/envelope.d.ts +17 -0
- package/dist/wire/envelope.d.ts.map +1 -0
- package/dist/wire/envelope.js +16 -0
- package/dist/wire/envelope.js.map +1 -0
- package/dist/wire/events-call.d.ts +422 -0
- package/dist/wire/events-call.d.ts.map +1 -0
- package/dist/wire/events-call.js +182 -0
- package/dist/wire/events-call.js.map +1 -0
- package/dist/wire/events.d.ts +923 -0
- package/dist/wire/events.d.ts.map +1 -0
- package/dist/wire/events.js +292 -0
- package/dist/wire/events.js.map +1 -0
- package/dist/wire/metrics.d.ts +366 -0
- package/dist/wire/metrics.d.ts.map +1 -0
- package/dist/wire/metrics.js +269 -0
- package/dist/wire/metrics.js.map +1 -0
- package/dist/wire/reduce.d.ts +12 -0
- package/dist/wire/reduce.d.ts.map +1 -0
- package/dist/wire/reduce.js +375 -0
- package/dist/wire/reduce.js.map +1 -0
- package/dist/wire/registry.d.ts +1395 -0
- package/dist/wire/registry.d.ts.map +1 -0
- package/dist/wire/registry.js +81 -0
- package/dist/wire/registry.js.map +1 -0
- package/dist/wire/rest.d.ts +18 -0
- package/dist/wire/rest.d.ts.map +1 -0
- package/dist/wire/rest.js +14 -0
- package/dist/wire/rest.js.map +1 -0
- package/dist/wire/room.d.ts +106 -0
- package/dist/wire/room.d.ts.map +1 -0
- package/dist/wire/room.js +73 -0
- package/dist/wire/room.js.map +1 -0
- package/dist/wire/state.d.ts +915 -0
- package/dist/wire/state.d.ts.map +1 -0
- package/dist/wire/state.js +189 -0
- package/dist/wire/state.js.map +1 -0
- package/package.json +2 -2
|
@@ -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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"}
|