@assemblyline-agents/livekit 0.1.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/README.md CHANGED
@@ -12,7 +12,7 @@ npm install @assemblyline-agents/livekit
12
12
 
13
13
  ## Part of Assembly Line
14
14
 
15
- This package is part of [Assembly Line](https://github.com/jasonbadeaux/openeve), a vendor-neutral, filesystem-first framework for durable AI agents. See the developer documentation in [docs/developers/](https://github.com/jasonbadeaux/openeve/tree/main/docs/developers) for setup, agent authoring, and deployment guides.
15
+ This package is part of [Assembly Line](https://github.com/jasonbadeaux/assembly-line), a vendor-neutral, filesystem-first framework for durable AI agents. See the developer documentation in [docs/developers/](https://github.com/jasonbadeaux/assembly-line/tree/main/docs/developers) for setup, agent authoring, and deployment guides.
16
16
 
17
17
  ## License
18
18
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assemblyline-agents/livekit",
3
- "version": "0.1.0",
3
+ "version": "2.0.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -9,10 +9,10 @@
9
9
  }
10
10
  },
11
11
  "dependencies": {
12
- "@assemblyline-agents/core": "0.1.0",
13
- "@assemblyline-agents/runtime": "0.1.0"
12
+ "@assemblyline-agents/core": "2.0.0",
13
+ "@assemblyline-agents/runtime": "2.0.0"
14
14
  },
15
- "description": "Official OpenEve LiveKit voice, telephony, and agent-dispatch plugin.",
15
+ "description": "Official Assembly Line LiveKit voice, telephony, and agent-dispatch plugin.",
16
16
  "files": [
17
17
  "dist"
18
18
  ],
@@ -22,16 +22,16 @@
22
22
  "license": "MIT",
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "git+https://github.com/jasonbadeaux/openeve.git",
25
+ "url": "git+https://github.com/jasonbadeaux/assembly-line.git",
26
26
  "directory": "capabilities/livekit"
27
27
  },
28
28
  "bugs": {
29
- "url": "https://github.com/jasonbadeaux/openeve/issues"
29
+ "url": "https://github.com/jasonbadeaux/assembly-line/issues"
30
30
  },
31
- "homepage": "https://github.com/jasonbadeaux/openeve#readme",
32
- "author": "OpenEve contributors",
31
+ "homepage": "https://github.com/jasonbadeaux/assembly-line#readme",
32
+ "author": "Assembly Line contributors",
33
33
  "keywords": [
34
- "openeve",
34
+ "assembly-line",
35
35
  "ai",
36
36
  "agents",
37
37
  "livekit",
@@ -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"}
@@ -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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"}