@assemblyline-agents/livekit 1.0.0 → 2.0.0
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assemblyline-agents/livekit",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@assemblyline-agents/core": "
|
|
13
|
-
"@assemblyline-agents/runtime": "
|
|
12
|
+
"@assemblyline-agents/core": "2.0.0",
|
|
13
|
+
"@assemblyline-agents/runtime": "2.0.0"
|
|
14
14
|
},
|
|
15
15
|
"description": "Official Assembly Line LiveKit voice, telephony, and agent-dispatch plugin.",
|
|
16
16
|
"files": [
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { AdapterProviderMetadata, ProviderModule } from "@openeve/core";
|
|
2
|
-
import type { SubagentHarness } from "@openeve/runtime";
|
|
3
|
-
import { type LiveKitVoiceSubagentHarnessOptions } from "./types.js";
|
|
4
|
-
export declare function liveKitVoiceSubagentHarness(options?: LiveKitVoiceSubagentHarnessOptions): SubagentHarness;
|
|
5
|
-
/** Metadata owned by this package; the core registry mirrors it as an offline default. */
|
|
6
|
-
export declare const LIVEKIT_SUBAGENT_PROVIDER_METADATA: AdapterProviderMetadata;
|
|
7
|
-
export declare const openeveProvider: ProviderModule;
|
|
8
|
-
//# sourceMappingURL=subagent-harness.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-harness.d.ts","sourceRoot":"","sources":["../src/subagent-harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAc,cAAc,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAuD,MAAM,kBAAkB,CAAC;AAE7G,OAAO,EAKL,KAAK,kCAAkC,EACxC,MAAM,YAAY,CAAC;AAGpB,wBAAgB,2BAA2B,CAAC,OAAO,GAAE,kCAAuC,GAAG,eAAe,CAE7G;AAED,0FAA0F;AAC1F,eAAO,MAAM,kCAAkC,EAAE,uBAQhD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,cAO7B,CAAC"}
|
package/dist/subagent-harness.js
DELETED
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { createLiveKitClient } from "./client.js";
|
|
2
|
-
import { LIVEKIT_OPTIONAL_ENV, LIVEKIT_REQUIRED_ENV } from "./types.js";
|
|
3
|
-
import { booleanFrom, compactJsonObject, generatedRoomName, isJsonObject, processEnv, publicJson, recordValue, stringFrom, stringValue, valueAt } from "./util.js";
|
|
4
|
-
export function liveKitVoiceSubagentHarness(options = {}) {
|
|
5
|
-
return new LiveKitVoiceSubagentHarness(options);
|
|
6
|
-
}
|
|
7
|
-
/** Metadata owned by this package; the core registry mirrors it as an offline default. */
|
|
8
|
-
export const LIVEKIT_SUBAGENT_PROVIDER_METADATA = {
|
|
9
|
-
kind: "livekit",
|
|
10
|
-
role: "subagent",
|
|
11
|
-
stability: "preview",
|
|
12
|
-
packageName: "@openeve/livekit",
|
|
13
|
-
requiredEnv: [...LIVEKIT_REQUIRED_ENV],
|
|
14
|
-
optionalEnv: [...LIVEKIT_OPTIONAL_ENV],
|
|
15
|
-
capabilities: ["external-session", "voice-agent", "phone-call", "sip", "agent-dispatch"]
|
|
16
|
-
};
|
|
17
|
-
export const openeveProvider = {
|
|
18
|
-
providers: [
|
|
19
|
-
{
|
|
20
|
-
metadata: LIVEKIT_SUBAGENT_PROVIDER_METADATA,
|
|
21
|
-
create: (ctx) => liveKitVoiceSubagentHarness({ env: ctx.env, fetch: ctx.fetch })
|
|
22
|
-
}
|
|
23
|
-
]
|
|
24
|
-
};
|
|
25
|
-
class LiveKitVoiceSubagentHarness {
|
|
26
|
-
options;
|
|
27
|
-
constructor(options = {}) {
|
|
28
|
-
this.options = options;
|
|
29
|
-
}
|
|
30
|
-
async start(input) {
|
|
31
|
-
const harnessOptions = recordValue(input.subagent.harness.options) ?? {};
|
|
32
|
-
const task = input.task;
|
|
33
|
-
const env = { ...processEnv(), ...(this.options.env ?? {}) };
|
|
34
|
-
const clientOptions = { env };
|
|
35
|
-
if (this.options.fetch)
|
|
36
|
-
clientOptions.fetch = this.options.fetch;
|
|
37
|
-
if (this.options.now)
|
|
38
|
-
clientOptions.now = this.options.now;
|
|
39
|
-
const client = createLiveKitClient(clientOptions);
|
|
40
|
-
const roomName = stringFrom(task, "roomName", "room") ??
|
|
41
|
-
stringFrom(harnessOptions, "roomName", "room") ??
|
|
42
|
-
generatedRoomName(stringFrom(harnessOptions, "roomPrefix") ?? "openeve-voice", input.childRun.id);
|
|
43
|
-
const phoneNumber = stringFrom(task, "phoneNumber", "phone_number", "to");
|
|
44
|
-
const agentName = stringFrom(task, "agentName", "agent_name") ??
|
|
45
|
-
stringFrom(harnessOptions, "agentName", "agent_name") ??
|
|
46
|
-
env.LIVEKIT_VOICE_AGENT_NAME;
|
|
47
|
-
const outboundTrunkId = stringFrom(task, "outboundTrunkId", "outbound_trunk_id", "sipTrunkId", "sip_trunk_id") ??
|
|
48
|
-
stringFrom(harnessOptions, "outboundTrunkId", "outbound_trunk_id", "sipTrunkId", "sip_trunk_id") ??
|
|
49
|
-
env.LIVEKIT_OUTBOUND_TRUNK_ID;
|
|
50
|
-
if (!agentName && !phoneNumber) {
|
|
51
|
-
throw new Error("LiveKit voice subagents require an agentName to dispatch, a phoneNumber to call, or both.");
|
|
52
|
-
}
|
|
53
|
-
const dispatchMetadata = metadataFromTask(input);
|
|
54
|
-
await input.emit({ type: "progress", title: "livekit.voice_session.starting", data: { roomName, agentName: agentName ?? null, outboundCall: Boolean(phoneNumber) } });
|
|
55
|
-
const dispatch = agentName
|
|
56
|
-
? await client.createDispatch({ roomName, agentName, metadata: dispatchMetadata })
|
|
57
|
-
: undefined;
|
|
58
|
-
let participant;
|
|
59
|
-
if (phoneNumber) {
|
|
60
|
-
const sipInput = {
|
|
61
|
-
phoneNumber,
|
|
62
|
-
roomName,
|
|
63
|
-
participantIdentity: stringFrom(task, "participantIdentity", "participant_identity") ?? phoneNumber,
|
|
64
|
-
participantMetadata: { openeve_child_run_id: input.childRun.id, openeve_parent_run_id: input.parentRun.id },
|
|
65
|
-
waitUntilAnswered: booleanFrom(task, "waitUntilAnswered", "wait_until_answered") ??
|
|
66
|
-
booleanFrom(harnessOptions, "waitUntilAnswered", "wait_until_answered") ??
|
|
67
|
-
true
|
|
68
|
-
};
|
|
69
|
-
if (outboundTrunkId)
|
|
70
|
-
sipInput.outboundTrunkId = outboundTrunkId;
|
|
71
|
-
const participantName = stringFrom(task, "participantName", "participant_name");
|
|
72
|
-
const dtmf = stringFrom(task, "dtmf");
|
|
73
|
-
const krispEnabled = booleanFrom(task, "krispEnabled", "krisp_enabled");
|
|
74
|
-
const displayName = stringFrom(task, "displayName", "display_name");
|
|
75
|
-
if (participantName)
|
|
76
|
-
sipInput.participantName = participantName;
|
|
77
|
-
if (dtmf)
|
|
78
|
-
sipInput.dtmf = dtmf;
|
|
79
|
-
if (krispEnabled !== undefined)
|
|
80
|
-
sipInput.krispEnabled = krispEnabled;
|
|
81
|
-
if (displayName)
|
|
82
|
-
sipInput.displayName = displayName;
|
|
83
|
-
participant = await client.createSipParticipant(sipInput);
|
|
84
|
-
}
|
|
85
|
-
const state = {
|
|
86
|
-
adapter: "livekit",
|
|
87
|
-
externalSessionId: stringValue(dispatch?.id) ?? stringValue(participant?.sip_call_id) ?? roomName,
|
|
88
|
-
status: "completed",
|
|
89
|
-
metadata: publicJson(compactJsonObject({
|
|
90
|
-
roomName,
|
|
91
|
-
agentName,
|
|
92
|
-
dispatchId: stringValue(dispatch?.id),
|
|
93
|
-
participantIdentity: stringValue(participant?.participant_identity),
|
|
94
|
-
sipCallId: stringValue(participant?.sip_call_id),
|
|
95
|
-
outboundCall: Boolean(phoneNumber)
|
|
96
|
-
}))
|
|
97
|
-
};
|
|
98
|
-
await input.checkpoint(state);
|
|
99
|
-
const completedEvent = {
|
|
100
|
-
type: "completed",
|
|
101
|
-
summary: `LiveKit voice session started in ${roomName}.`
|
|
102
|
-
};
|
|
103
|
-
if (state.metadata)
|
|
104
|
-
completedEvent.result = state.metadata;
|
|
105
|
-
await input.emit(completedEvent);
|
|
106
|
-
return {
|
|
107
|
-
status: "completed",
|
|
108
|
-
response: `LiveKit voice session started in ${roomName}.`,
|
|
109
|
-
summary: `LiveKit voice session started in ${roomName}.`,
|
|
110
|
-
state
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function metadataFromTask(input) {
|
|
115
|
-
const metadata = valueAt(input.task, "metadata");
|
|
116
|
-
const base = isJsonObject(metadata) ? metadata : {};
|
|
117
|
-
return compactJsonObject({
|
|
118
|
-
...base,
|
|
119
|
-
phone_number: stringFrom(input.task, "phoneNumber", "phone_number", "to"),
|
|
120
|
-
openeve_parent_run_id: input.parentRun.id,
|
|
121
|
-
openeve_child_run_id: input.childRun.id,
|
|
122
|
-
openeve_subagent: input.subagent.name,
|
|
123
|
-
openeve_task: publicJson(input.task)
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=subagent-harness.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-harness.js","sourceRoot":"","sources":["../src/subagent-harness.ts"],"names":[],"mappings":"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"}
|