@vent-hq/livekit 0.1.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 +72 -0
- package/dist/index.d.ts +98 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +224 -0
- package/dist/index.js.map +1 -0
- package/package.json +47 -0
package/README.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# @vent-hq/livekit
|
|
2
|
+
|
|
3
|
+
Thin helper for forwarding LiveKit Agents SDK observability into Vent.
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
Once the package is published to the `vent-hq` npm org:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @vent-hq/livekit
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Until then, consume it from this repo/workspace.
|
|
14
|
+
|
|
15
|
+
## What it does
|
|
16
|
+
|
|
17
|
+
`instrumentLiveKitAgent()` automatically publishes the existing `vent:*` topics that the Vent LiveKit adapter already understands:
|
|
18
|
+
|
|
19
|
+
- `vent:metrics`
|
|
20
|
+
- `vent:function-tools-executed`
|
|
21
|
+
- `vent:conversation-item`
|
|
22
|
+
- `vent:user-input-transcribed`
|
|
23
|
+
- `vent:session-report`
|
|
24
|
+
|
|
25
|
+
It subscribes to:
|
|
26
|
+
|
|
27
|
+
- `metrics_collected`
|
|
28
|
+
- `function_tools_executed`
|
|
29
|
+
- `conversation_item_added`
|
|
30
|
+
- `user_input_transcribed`
|
|
31
|
+
- `close`
|
|
32
|
+
|
|
33
|
+
And, when `ctx.addShutdownCallback()` / `ctx.makeSessionReport()` are available, it flushes a session report on shutdown.
|
|
34
|
+
|
|
35
|
+
It does not mirror room-visible signals or redundant derived events:
|
|
36
|
+
|
|
37
|
+
- no transcript forwarding
|
|
38
|
+
- no agent-state timing forwarding
|
|
39
|
+
- no room/session ID mirroring
|
|
40
|
+
- no separate transfer stream when handoffs can be derived from the forwarded LiveKit events
|
|
41
|
+
|
|
42
|
+
## Example
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
import { instrumentLiveKitAgent } from "@vent-hq/livekit";
|
|
46
|
+
|
|
47
|
+
const vent = instrumentLiveKitAgent({
|
|
48
|
+
ctx,
|
|
49
|
+
session,
|
|
50
|
+
});
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If you are not using the room from `ctx`, you can also pass `room` or `participant` directly.
|
|
54
|
+
|
|
55
|
+
If you have extra metadata that the outside room observer cannot already see, you can pass it explicitly:
|
|
56
|
+
|
|
57
|
+
```ts
|
|
58
|
+
const vent = instrumentLiveKitAgent({
|
|
59
|
+
ctx,
|
|
60
|
+
session,
|
|
61
|
+
sessionMetadata: {
|
|
62
|
+
provider_call_id: "pstn-call-123",
|
|
63
|
+
provider_debug_urls: { insight: "https://..." },
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Notes
|
|
69
|
+
|
|
70
|
+
- This keeps `vent:*` as the internal wire format, but the user no longer needs to hand-author those messages.
|
|
71
|
+
- Transcript, room/session identity, and timing should still come from native LiveKit room signals (`lk.transcription`, `lk.agent.state`, room name/sid).
|
|
72
|
+
- This helper is Node-focused. There is no Python helper yet.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
type EventHandler = (...args: unknown[]) => void;
|
|
2
|
+
export type VentCallTransferStatus = "attempted" | "completed" | "cancelled" | "failed" | "unknown";
|
|
3
|
+
export type VentCallTransferSource = "platform_event" | "platform_metadata" | "tool_call";
|
|
4
|
+
export interface VentCostBreakdown {
|
|
5
|
+
stt_usd?: number;
|
|
6
|
+
llm_usd?: number;
|
|
7
|
+
tts_usd?: number;
|
|
8
|
+
transport_usd?: number;
|
|
9
|
+
platform_usd?: number;
|
|
10
|
+
total_usd?: number;
|
|
11
|
+
llm_prompt_tokens?: number;
|
|
12
|
+
llm_completion_tokens?: number;
|
|
13
|
+
}
|
|
14
|
+
export interface VentProviderWarning {
|
|
15
|
+
message?: string;
|
|
16
|
+
code?: string;
|
|
17
|
+
detail?: unknown;
|
|
18
|
+
}
|
|
19
|
+
export interface VentCallTransfer {
|
|
20
|
+
type: string;
|
|
21
|
+
destination?: string;
|
|
22
|
+
status: VentCallTransferStatus;
|
|
23
|
+
sources: VentCallTransferSource[];
|
|
24
|
+
timestamp_ms?: number;
|
|
25
|
+
}
|
|
26
|
+
export interface VentCallMetadata {
|
|
27
|
+
platform: string;
|
|
28
|
+
provider_call_id?: string;
|
|
29
|
+
provider_session_id?: string;
|
|
30
|
+
ended_reason?: string;
|
|
31
|
+
duration_s?: number;
|
|
32
|
+
cost_usd?: number;
|
|
33
|
+
cost_breakdown?: VentCostBreakdown;
|
|
34
|
+
recording_url?: string;
|
|
35
|
+
recording_variants?: Record<string, string>;
|
|
36
|
+
provider_debug_urls?: Record<string, string>;
|
|
37
|
+
summary?: string;
|
|
38
|
+
success_evaluation?: string;
|
|
39
|
+
user_sentiment?: string;
|
|
40
|
+
call_successful?: boolean;
|
|
41
|
+
answered_by?: string;
|
|
42
|
+
variables?: Record<string, unknown>;
|
|
43
|
+
provider_warnings?: VentProviderWarning[];
|
|
44
|
+
provider_metadata?: Record<string, unknown>;
|
|
45
|
+
transfers?: VentCallTransfer[];
|
|
46
|
+
}
|
|
47
|
+
export interface LiveKitDataPublishOptions {
|
|
48
|
+
reliable?: boolean;
|
|
49
|
+
topic?: string;
|
|
50
|
+
destination_identities?: string[];
|
|
51
|
+
}
|
|
52
|
+
export interface LiveKitLocalParticipantLike {
|
|
53
|
+
publishData(data: Uint8Array, options: LiveKitDataPublishOptions): Promise<void>;
|
|
54
|
+
}
|
|
55
|
+
export interface LiveKitRoomLike {
|
|
56
|
+
name?: string;
|
|
57
|
+
sid?: string;
|
|
58
|
+
localParticipant?: LiveKitLocalParticipantLike;
|
|
59
|
+
}
|
|
60
|
+
export interface LiveKitEventEmitterLike {
|
|
61
|
+
on(event: string, listener: EventHandler): unknown;
|
|
62
|
+
off?(event: string, listener: EventHandler): unknown;
|
|
63
|
+
removeListener?(event: string, listener: EventHandler): unknown;
|
|
64
|
+
}
|
|
65
|
+
export interface LiveKitSessionLike extends LiveKitEventEmitterLike {
|
|
66
|
+
history?: unknown;
|
|
67
|
+
}
|
|
68
|
+
export interface LiveKitJobContextLike {
|
|
69
|
+
room?: LiveKitRoomLike;
|
|
70
|
+
addShutdownCallback?(callback: () => void | Promise<void>): void;
|
|
71
|
+
makeSessionReport?(session?: unknown): unknown | Promise<unknown>;
|
|
72
|
+
make_session_report?(session?: unknown): unknown | Promise<unknown>;
|
|
73
|
+
}
|
|
74
|
+
export interface VentLiveKitLogger {
|
|
75
|
+
warn(message: string, error?: unknown): void;
|
|
76
|
+
}
|
|
77
|
+
export interface InstrumentLiveKitAgentOptions {
|
|
78
|
+
room?: LiveKitRoomLike;
|
|
79
|
+
participant?: LiveKitLocalParticipantLike;
|
|
80
|
+
session?: LiveKitSessionLike;
|
|
81
|
+
ctx?: LiveKitJobContextLike;
|
|
82
|
+
reliable?: boolean;
|
|
83
|
+
logger?: VentLiveKitLogger;
|
|
84
|
+
/** Optional extra metadata not already visible from the LiveKit room itself. */
|
|
85
|
+
sessionMetadata?: Partial<VentCallMetadata>;
|
|
86
|
+
debugUrls?: Record<string, string>;
|
|
87
|
+
}
|
|
88
|
+
export interface VentLiveKitBridge {
|
|
89
|
+
publishCallMetadata(metadata: Partial<VentCallMetadata>): Promise<void>;
|
|
90
|
+
publishDebugUrl(label: string, url: string): Promise<void>;
|
|
91
|
+
publishWarning(message: string, extras?: Record<string, unknown>): Promise<void>;
|
|
92
|
+
publishSessionUsage(usage: Record<string, unknown>): Promise<void>;
|
|
93
|
+
flushSessionReport(): Promise<void>;
|
|
94
|
+
dispose(): void;
|
|
95
|
+
}
|
|
96
|
+
export declare function instrumentLiveKitAgent(options: InstrumentLiveKitAgentOptions): VentLiveKitBridge;
|
|
97
|
+
export {};
|
|
98
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
const LIVEKIT_VENT_TOPICS = {
|
|
2
|
+
callMetadata: "vent:call-metadata",
|
|
3
|
+
debugUrl: "vent:debug-url",
|
|
4
|
+
warning: "vent:warning",
|
|
5
|
+
sessionReport: "vent:session-report",
|
|
6
|
+
metrics: "vent:metrics",
|
|
7
|
+
functionToolsExecuted: "vent:function-tools-executed",
|
|
8
|
+
conversationItem: "vent:conversation-item",
|
|
9
|
+
userInputTranscribed: "vent:user-input-transcribed",
|
|
10
|
+
sessionUsage: "vent:session-usage",
|
|
11
|
+
};
|
|
12
|
+
const textEncoder = new TextEncoder();
|
|
13
|
+
export function instrumentLiveKitAgent(options) {
|
|
14
|
+
const room = options.room ?? options.ctx?.room;
|
|
15
|
+
const participant = options.participant ?? room?.localParticipant;
|
|
16
|
+
if (!participant) {
|
|
17
|
+
throw new Error("instrumentLiveKitAgent requires a LiveKit localParticipant or room.");
|
|
18
|
+
}
|
|
19
|
+
const logger = options.logger ?? defaultLogger;
|
|
20
|
+
const reliable = options.reliable ?? true;
|
|
21
|
+
const teardownFns = [];
|
|
22
|
+
let sessionReportPublished = false;
|
|
23
|
+
const publish = async (topic, payload) => {
|
|
24
|
+
const message = {
|
|
25
|
+
type: topic,
|
|
26
|
+
...payload,
|
|
27
|
+
};
|
|
28
|
+
await participant.publishData(textEncoder.encode(JSON.stringify(sanitizeForJson(message))), { reliable, topic });
|
|
29
|
+
};
|
|
30
|
+
const publishCallMetadata = async (metadata) => {
|
|
31
|
+
await publish(LIVEKIT_VENT_TOPICS.callMetadata, {
|
|
32
|
+
call_metadata: compactRecord({
|
|
33
|
+
platform: "livekit",
|
|
34
|
+
...metadata,
|
|
35
|
+
}) ?? { platform: "livekit" },
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
const publishDebugUrl = async (label, url) => {
|
|
39
|
+
await publish(LIVEKIT_VENT_TOPICS.debugUrl, { label, url });
|
|
40
|
+
};
|
|
41
|
+
const publishWarning = async (message, extras) => {
|
|
42
|
+
await publish(LIVEKIT_VENT_TOPICS.warning, {
|
|
43
|
+
message,
|
|
44
|
+
...asRecord(extras ?? {}),
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const publishMetrics = async (event) => {
|
|
48
|
+
await publish(LIVEKIT_VENT_TOPICS.metrics, {
|
|
49
|
+
event: "metrics_collected",
|
|
50
|
+
...event,
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
const publishFunctionToolsExecuted = async (event) => {
|
|
54
|
+
await publish(LIVEKIT_VENT_TOPICS.functionToolsExecuted, {
|
|
55
|
+
event: "function_tools_executed",
|
|
56
|
+
...event,
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
const publishConversationItem = async (event) => {
|
|
60
|
+
await publish(LIVEKIT_VENT_TOPICS.conversationItem, {
|
|
61
|
+
event: "conversation_item_added",
|
|
62
|
+
...event,
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
const publishUserInputTranscribed = async (event) => {
|
|
66
|
+
await publish(LIVEKIT_VENT_TOPICS.userInputTranscribed, {
|
|
67
|
+
event: "user_input_transcribed",
|
|
68
|
+
...event,
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
const publishSessionUsage = async (usage) => {
|
|
72
|
+
await publish(LIVEKIT_VENT_TOPICS.sessionUsage, { usage });
|
|
73
|
+
};
|
|
74
|
+
const flushSessionReport = async () => {
|
|
75
|
+
if (sessionReportPublished || !options.ctx)
|
|
76
|
+
return;
|
|
77
|
+
const makeSessionReport = options.ctx.makeSessionReport ?? options.ctx.make_session_report;
|
|
78
|
+
if (!makeSessionReport)
|
|
79
|
+
return;
|
|
80
|
+
sessionReportPublished = true;
|
|
81
|
+
try {
|
|
82
|
+
const report = await makeSessionReport(options.session);
|
|
83
|
+
if (report && typeof report === "object") {
|
|
84
|
+
await publish(LIVEKIT_VENT_TOPICS.sessionReport, { report: sanitizeForJson(report) });
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch (error) {
|
|
88
|
+
sessionReportPublished = false;
|
|
89
|
+
logger.warn("Failed to publish LiveKit session report", error);
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const safePublish = (operation, context) => {
|
|
93
|
+
void operation().catch((error) => {
|
|
94
|
+
logger.warn(`Failed to publish LiveKit ${context}`, error);
|
|
95
|
+
});
|
|
96
|
+
};
|
|
97
|
+
if (options.session) {
|
|
98
|
+
const unsubscribe = subscribe(options.session, "metrics_collected", (event) => {
|
|
99
|
+
safePublish(() => publishMetrics(asRecord(event)), "metrics_collected event");
|
|
100
|
+
});
|
|
101
|
+
teardownFns.push(unsubscribe);
|
|
102
|
+
teardownFns.push(subscribe(options.session, "function_tools_executed", (event) => {
|
|
103
|
+
safePublish(() => publishFunctionToolsExecuted(asRecord(event)), "function_tools_executed event");
|
|
104
|
+
}));
|
|
105
|
+
teardownFns.push(subscribe(options.session, "conversation_item_added", (event) => {
|
|
106
|
+
safePublish(() => publishConversationItem(asRecord(event)), "conversation_item_added event");
|
|
107
|
+
}));
|
|
108
|
+
teardownFns.push(subscribe(options.session, "user_input_transcribed", (event) => {
|
|
109
|
+
safePublish(() => publishUserInputTranscribed(asRecord(event)), "user_input_transcribed event");
|
|
110
|
+
}));
|
|
111
|
+
teardownFns.push(subscribe(options.session, "close", (event) => {
|
|
112
|
+
const payload = asRecord(event);
|
|
113
|
+
const closeError = payload["error"];
|
|
114
|
+
if (closeError != null) {
|
|
115
|
+
safePublish(() => publishWarning("LiveKit session closed with error", { error: sanitizeForJson(closeError) }), "close warning");
|
|
116
|
+
}
|
|
117
|
+
safePublish(flushSessionReport, "session report");
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
if (options.ctx?.addShutdownCallback) {
|
|
121
|
+
options.ctx.addShutdownCallback(async () => {
|
|
122
|
+
await flushSessionReport();
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
const extraMetadata = filterSessionMetadataForInAgentOnlySignals(options.sessionMetadata, room);
|
|
126
|
+
if (extraMetadata) {
|
|
127
|
+
safePublish(() => publishCallMetadata(extraMetadata), "call metadata");
|
|
128
|
+
}
|
|
129
|
+
for (const [label, url] of Object.entries(options.debugUrls ?? {})) {
|
|
130
|
+
safePublish(() => publishDebugUrl(label, url), `debug url (${label})`);
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
publishCallMetadata,
|
|
134
|
+
publishDebugUrl,
|
|
135
|
+
publishWarning,
|
|
136
|
+
publishSessionUsage,
|
|
137
|
+
flushSessionReport,
|
|
138
|
+
dispose() {
|
|
139
|
+
for (const teardown of teardownFns.splice(0)) {
|
|
140
|
+
teardown();
|
|
141
|
+
}
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
function subscribe(emitter, eventName, listener) {
|
|
146
|
+
emitter.on(eventName, listener);
|
|
147
|
+
return () => {
|
|
148
|
+
if (typeof emitter.off === "function") {
|
|
149
|
+
emitter.off(eventName, listener);
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (typeof emitter.removeListener === "function") {
|
|
153
|
+
emitter.removeListener(eventName, listener);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
function filterSessionMetadataForInAgentOnlySignals(metadata, room) {
|
|
158
|
+
if (!metadata)
|
|
159
|
+
return undefined;
|
|
160
|
+
const providerSessionId = metadata.provider_session_id;
|
|
161
|
+
const roomVisibleSessionId = room?.name ?? room?.sid;
|
|
162
|
+
const filtered = compactRecord({
|
|
163
|
+
...metadata,
|
|
164
|
+
platform: undefined,
|
|
165
|
+
provider_session_id: providerSessionId && providerSessionId !== roomVisibleSessionId
|
|
166
|
+
? providerSessionId
|
|
167
|
+
: undefined,
|
|
168
|
+
});
|
|
169
|
+
if (!filtered)
|
|
170
|
+
return undefined;
|
|
171
|
+
const keys = Object.keys(filtered);
|
|
172
|
+
return keys.length > 0 ? filtered : undefined;
|
|
173
|
+
}
|
|
174
|
+
function compactRecord(record) {
|
|
175
|
+
const entries = Object.entries(record).filter(([, value]) => value != null);
|
|
176
|
+
return entries.length > 0 ? Object.fromEntries(entries) : undefined;
|
|
177
|
+
}
|
|
178
|
+
function asRecord(value) {
|
|
179
|
+
return sanitizeForJson(value);
|
|
180
|
+
}
|
|
181
|
+
function sanitizeForJson(value, depth = 0) {
|
|
182
|
+
if (value == null || depth > 8)
|
|
183
|
+
return value ?? null;
|
|
184
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean")
|
|
185
|
+
return value;
|
|
186
|
+
if (typeof value === "bigint")
|
|
187
|
+
return value.toString();
|
|
188
|
+
if (value instanceof Date)
|
|
189
|
+
return value.toISOString();
|
|
190
|
+
if (value instanceof Error) {
|
|
191
|
+
return compactRecord({
|
|
192
|
+
name: value.name,
|
|
193
|
+
message: value.message,
|
|
194
|
+
stack: value.stack,
|
|
195
|
+
}) ?? { message: value.message };
|
|
196
|
+
}
|
|
197
|
+
if (Array.isArray(value)) {
|
|
198
|
+
return value.map((item) => sanitizeForJson(item, depth + 1));
|
|
199
|
+
}
|
|
200
|
+
if (value instanceof Map) {
|
|
201
|
+
return Object.fromEntries(Array.from(value.entries()).map(([key, mapValue]) => [String(key), sanitizeForJson(mapValue, depth + 1)]));
|
|
202
|
+
}
|
|
203
|
+
if (value instanceof Set) {
|
|
204
|
+
return Array.from(value.values()).map((item) => sanitizeForJson(item, depth + 1));
|
|
205
|
+
}
|
|
206
|
+
if (typeof value === "object") {
|
|
207
|
+
const entries = Object.entries(value)
|
|
208
|
+
.filter(([, nested]) => typeof nested !== "function" && typeof nested !== "symbol")
|
|
209
|
+
.map(([key, nested]) => [key, sanitizeForJson(nested, depth + 1)]);
|
|
210
|
+
return Object.fromEntries(entries);
|
|
211
|
+
}
|
|
212
|
+
return String(value);
|
|
213
|
+
}
|
|
214
|
+
const defaultLogger = {
|
|
215
|
+
warn(message, error) {
|
|
216
|
+
if (error) {
|
|
217
|
+
console.warn(`[vent-livekit] ${message}`, error);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
console.warn(`[vent-livekit] ${message}`);
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vent-hq/livekit",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Vent helper for forwarding LiveKit Agents SDK observability",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc -p tsconfig.json",
|
|
19
|
+
"typecheck": "tsc --noEmit",
|
|
20
|
+
"clean": "rm -rf dist"
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"vent",
|
|
24
|
+
"livekit",
|
|
25
|
+
"voice",
|
|
26
|
+
"agents",
|
|
27
|
+
"observability"
|
|
28
|
+
],
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"sideEffects": false,
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public"
|
|
33
|
+
},
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/vent-hq/vent.git",
|
|
37
|
+
"directory": "packages/livekit"
|
|
38
|
+
},
|
|
39
|
+
"homepage": "https://ventmcp.dev",
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"@livekit/agents": "^1.0.0",
|
|
42
|
+
"@livekit/rtc-node": "^0.13.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"typescript": "catalog:"
|
|
46
|
+
}
|
|
47
|
+
}
|