create-spatius-app 0.1.2 → 0.1.3-beta.2
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 +18 -6
- package/dist/cli.js +647 -144
- package/dist/templates.js +529 -66
- package/package.json +4 -4
- package/schemas/result-v3.schema.json +6 -2
- package/schemas/result-v4.schema.json +170 -0
- package/templates/cloudflare-livekit/AGENTS.md +2 -0
- package/templates/cloudflare-livekit/agent/README.md +13 -0
- package/templates/cloudflare-livekit/agent/env.example +3 -0
- package/templates/cloudflare-livekit/agent/pyproject.toml +1 -1
- package/templates/cloudflare-livekit/agent/src/agent.py +7 -4
- package/templates/cloudflare-livekit/agent/tests/test_agent_startup.py +49 -0
- package/templates/cloudflare-livekit/agent/uv.lock +14 -14
- package/templates/cloudflare-livekit/gitignore +1 -0
- package/templates/cloudflare-livekit/package-lock.json +247 -158
- package/templates/cloudflare-livekit/package.json +9 -8
- package/templates/cloudflare-livekit/pnpm-lock.yaml +200 -177
- package/templates/cloudflare-livekit/tests/dev-events.test.mjs +23 -0
- package/templates/cloudflare-livekit/tests/dev-fixtures.mjs +14 -5
- package/templates/cloudflare-livekit/tests/dev-supervision.test.mjs +17 -14
- package/templates/cloudflare-livekit/tsconfig.web.json +1 -0
- package/templates/cloudflare-livekit/tsconfig.worker.json +1 -0
- package/templates/cloudflare-livekit/web/api.ts +12 -0
- package/templates/cloudflare-livekit/web/components/agents-ui/agent-chat-transcript.tsx +6 -90
- package/templates/cloudflare-livekit/web/components/transcript-view.tsx +90 -0
- package/templates/cloudflare-livekit/web/session-attempt.ts +23 -2
- package/templates/cloudflare-livekit/worker/capability.test.ts +31 -0
- package/templates/cloudflare-livekit/worker/capability.ts +72 -0
- package/templates/cloudflare-livekit/worker/index.test.ts +2 -2
- package/templates/cloudflare-livekit/worker/index.ts +15 -3
- package/templates/cloudflare-livekit/worker/session.ts +34 -0
- package/templates/layers/agora/AGENTS.md +13 -0
- package/templates/layers/agora/README.md +25 -0
- package/templates/layers/agora/dev.vars.example +9 -0
- package/templates/layers/agora/package-lock.json +6988 -0
- package/templates/layers/agora/package.json +60 -0
- package/templates/layers/agora/pnpm-lock.yaml +4648 -0
- package/templates/layers/agora/scripts/check-worker.mjs +98 -0
- package/templates/layers/agora/tsconfig.worker.json +23 -0
- package/templates/layers/agora/vitest.config.ts +4 -0
- package/templates/layers/agora/web/App.tsx +174 -0
- package/templates/layers/agora/web/agora-session.test.ts +70 -0
- package/templates/layers/agora/web/agora-session.ts +267 -0
- package/templates/layers/agora/worker/agora.test.ts +62 -0
- package/templates/layers/agora/worker/agora.ts +156 -0
- package/templates/layers/agora/worker/index.test.ts +66 -0
- package/templates/layers/agora/worker/index.ts +54 -0
- package/templates/layers/agora/wrangler.jsonc +24 -0
- package/templates/layers/catalog/DEPLOYMENT.md +3 -0
- package/templates/layers/catalog/spatius.config.json +1 -0
- package/dist/cli.js.map +0 -1
- package/dist/templates.js.map +0 -1
- package/templates/cloudflare-livekit/worker-configuration.d.ts +0 -17184
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-spatius-app",
|
|
3
|
-
"version": "0.1.2",
|
|
4
|
-
"description": "Create a Spatius app with
|
|
3
|
+
"version": "0.1.3-beta.2",
|
|
4
|
+
"description": "Create a Spatius voice-avatar app with LiveKit or Agora Conversational AI on Cloudflare Workers.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"create-spatius-app": "./dist/cli.js"
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"@eslint/js": "^10.0.1",
|
|
61
61
|
"@types/node": "^26.4.1",
|
|
62
62
|
"@vercel/detect-agent": "1.2.5",
|
|
63
|
-
"@vitest/coverage-v8": "
|
|
63
|
+
"@vitest/coverage-v8": "5.0.0",
|
|
64
64
|
"ajv": "8.20.0",
|
|
65
65
|
"commander": "^15.0.0",
|
|
66
66
|
"concurrently": "10.0.5",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"tsx": "^4.23.13",
|
|
74
74
|
"typescript": "^6.0.2",
|
|
75
75
|
"typescript-eslint": "^8.69.0",
|
|
76
|
-
"vitest": "^
|
|
76
|
+
"vitest": "^5.0.0",
|
|
77
77
|
"yaml": "2.9.0"
|
|
78
78
|
}
|
|
79
79
|
}
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
"actions",
|
|
27
27
|
"packageManagers",
|
|
28
28
|
"nextSteps",
|
|
29
|
+
"stack",
|
|
29
30
|
"humanSteps"
|
|
30
31
|
],
|
|
31
32
|
"properties": {
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"type": "string"
|
|
49
50
|
},
|
|
50
51
|
"template": {
|
|
51
|
-
"
|
|
52
|
+
"type": "string"
|
|
52
53
|
},
|
|
53
54
|
"created": {
|
|
54
55
|
"type": "array",
|
|
@@ -81,7 +82,7 @@
|
|
|
81
82
|
"packageManagers": {
|
|
82
83
|
"type": "object",
|
|
83
84
|
"additionalProperties": false,
|
|
84
|
-
"required": ["javascript"
|
|
85
|
+
"required": ["javascript"],
|
|
85
86
|
"properties": {
|
|
86
87
|
"javascript": {
|
|
87
88
|
"enum": ["npm", "pnpm", "bun"]
|
|
@@ -97,6 +98,9 @@
|
|
|
97
98
|
"type": "string"
|
|
98
99
|
}
|
|
99
100
|
},
|
|
101
|
+
"stack": {
|
|
102
|
+
"type": "string"
|
|
103
|
+
},
|
|
100
104
|
"humanSteps": {
|
|
101
105
|
"type": "array",
|
|
102
106
|
"description": "Human prerequisites before running the app. Commands run from projectDirectory. On dry runs these are planned steps after creation, not actions already performed.",
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"title": "create-spatius-app result v4",
|
|
4
|
+
"oneOf": [
|
|
5
|
+
{
|
|
6
|
+
"$ref": "#/$defs/success"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"$ref": "#/$defs/failure"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"$defs": {
|
|
13
|
+
"success": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"required": [
|
|
17
|
+
"schemaVersion",
|
|
18
|
+
"ok",
|
|
19
|
+
"command",
|
|
20
|
+
"dryRun",
|
|
21
|
+
"generatorVersion",
|
|
22
|
+
"projectDirectory",
|
|
23
|
+
"created",
|
|
24
|
+
"wouldCreate",
|
|
25
|
+
"actions",
|
|
26
|
+
"packageManagers",
|
|
27
|
+
"nextSteps",
|
|
28
|
+
"stack",
|
|
29
|
+
"humanSteps"
|
|
30
|
+
],
|
|
31
|
+
"properties": {
|
|
32
|
+
"schemaVersion": {
|
|
33
|
+
"const": 4
|
|
34
|
+
},
|
|
35
|
+
"ok": {
|
|
36
|
+
"const": true
|
|
37
|
+
},
|
|
38
|
+
"command": {
|
|
39
|
+
"const": "create"
|
|
40
|
+
},
|
|
41
|
+
"dryRun": {
|
|
42
|
+
"type": "boolean"
|
|
43
|
+
},
|
|
44
|
+
"generatorVersion": {
|
|
45
|
+
"type": "string"
|
|
46
|
+
},
|
|
47
|
+
"projectDirectory": {
|
|
48
|
+
"type": "string"
|
|
49
|
+
},
|
|
50
|
+
"created": {
|
|
51
|
+
"type": "array",
|
|
52
|
+
"items": {
|
|
53
|
+
"type": "string"
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"wouldCreate": {
|
|
57
|
+
"type": "array",
|
|
58
|
+
"items": {
|
|
59
|
+
"type": "string"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"actions": {
|
|
63
|
+
"type": "object",
|
|
64
|
+
"additionalProperties": false,
|
|
65
|
+
"required": ["dependenciesInstalled", "gitInitialized", "deployed"],
|
|
66
|
+
"properties": {
|
|
67
|
+
"dependenciesInstalled": {
|
|
68
|
+
"type": "boolean"
|
|
69
|
+
},
|
|
70
|
+
"gitInitialized": {
|
|
71
|
+
"const": false
|
|
72
|
+
},
|
|
73
|
+
"deployed": {
|
|
74
|
+
"const": false
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"packageManagers": {
|
|
79
|
+
"type": "object",
|
|
80
|
+
"additionalProperties": false,
|
|
81
|
+
"required": ["javascript"],
|
|
82
|
+
"properties": {
|
|
83
|
+
"javascript": {
|
|
84
|
+
"enum": ["npm", "pnpm", "bun"]
|
|
85
|
+
},
|
|
86
|
+
"python": {
|
|
87
|
+
"enum": ["pip", "uv"]
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"nextSteps": {
|
|
92
|
+
"type": "array",
|
|
93
|
+
"items": {
|
|
94
|
+
"type": "string"
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
"stack": {
|
|
98
|
+
"type": "string"
|
|
99
|
+
},
|
|
100
|
+
"humanSteps": {
|
|
101
|
+
"type": "array",
|
|
102
|
+
"description": "Human prerequisites before running the app. Commands run from projectDirectory. On dry runs these are planned steps after creation, not actions already performed.",
|
|
103
|
+
"items": {
|
|
104
|
+
"type": "object",
|
|
105
|
+
"additionalProperties": false,
|
|
106
|
+
"required": ["command", "reason", "requiresHuman", "requiresTty"],
|
|
107
|
+
"properties": {
|
|
108
|
+
"command": {
|
|
109
|
+
"type": "string"
|
|
110
|
+
},
|
|
111
|
+
"reason": {
|
|
112
|
+
"type": "string"
|
|
113
|
+
},
|
|
114
|
+
"requiresHuman": {
|
|
115
|
+
"const": true
|
|
116
|
+
},
|
|
117
|
+
"requiresTty": {
|
|
118
|
+
"const": true
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"failure": {
|
|
126
|
+
"type": "object",
|
|
127
|
+
"additionalProperties": false,
|
|
128
|
+
"required": ["schemaVersion", "ok", "error"],
|
|
129
|
+
"properties": {
|
|
130
|
+
"schemaVersion": {
|
|
131
|
+
"const": 4
|
|
132
|
+
},
|
|
133
|
+
"ok": {
|
|
134
|
+
"const": false
|
|
135
|
+
},
|
|
136
|
+
"error": {
|
|
137
|
+
"type": "object",
|
|
138
|
+
"additionalProperties": false,
|
|
139
|
+
"required": ["code", "message"],
|
|
140
|
+
"properties": {
|
|
141
|
+
"code": {
|
|
142
|
+
"enum": [
|
|
143
|
+
"CANCELLED",
|
|
144
|
+
"FILESYSTEM_ERROR",
|
|
145
|
+
"INSTALL_FAILED",
|
|
146
|
+
"INVALID_ARGUMENT",
|
|
147
|
+
"PACKAGE_MANAGER_NOT_FOUND",
|
|
148
|
+
"PACKAGE_MANAGER_UNAVAILABLE",
|
|
149
|
+
"TARGET_NOT_DIRECTORY",
|
|
150
|
+
"TARGET_NOT_EMPTY",
|
|
151
|
+
"TEMPLATE_NOT_FOUND",
|
|
152
|
+
"UNSAFE_TARGET",
|
|
153
|
+
"UNKNOWN_ERROR"
|
|
154
|
+
]
|
|
155
|
+
},
|
|
156
|
+
"message": {
|
|
157
|
+
"type": "string"
|
|
158
|
+
},
|
|
159
|
+
"path": {
|
|
160
|
+
"type": "string"
|
|
161
|
+
},
|
|
162
|
+
"recovery": {
|
|
163
|
+
"type": "string"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -22,6 +22,8 @@ Run from the project root:
|
|
|
22
22
|
|
|
23
23
|
All checks can run after dependency installation, before credential setup.
|
|
24
24
|
Browser tests require Chromium; see README.md for the installation command.
|
|
25
|
+
Wrangler generates the ignored `worker-configuration.d.ts` during installation
|
|
26
|
+
and before lint, type checking, and builds. Update `wrangler.jsonc` to change bindings.
|
|
25
27
|
|
|
26
28
|
## Working guidelines
|
|
27
29
|
|
|
@@ -6,6 +6,19 @@ and turn detection. The Spatius plugin sends the generated speech through the
|
|
|
6
6
|
Spatius motion service and publishes synchronized avatar data into the same
|
|
7
7
|
LiveKit room as the browser.
|
|
8
8
|
|
|
9
|
+
## Session startup
|
|
10
|
+
|
|
11
|
+
The worker runs `spatius.prewarm` through `AgentServer`'s `setup_fnc` when each
|
|
12
|
+
job process initializes. It prepares automatic region selection, TLS connections,
|
|
13
|
+
and a session token using the same Spatius environment variables as the avatar
|
|
14
|
+
session, so a warm process can skip that setup when a room is dispatched.
|
|
15
|
+
The avatar ID still comes from the job's dispatch metadata.
|
|
16
|
+
|
|
17
|
+
Warm-up is best effort: missing configuration or a failed warm-up leaves normal
|
|
18
|
+
session startup responsible for resolving the region and fetching a token.
|
|
19
|
+
LiveKit keeps idle processes ready in production; development mode initializes
|
|
20
|
+
processes on demand, so its first session still pays the warm-up cost.
|
|
21
|
+
|
|
9
22
|
## Voice configuration
|
|
10
23
|
|
|
11
24
|
- TTS uses `cartesia/sonic-3.6` through LiveKit Inference. Setup offers
|
|
@@ -5,7 +5,7 @@ description = "A LiveKit voice agent with a Spatius avatar"
|
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11,<3.15"
|
|
7
7
|
dependencies = [
|
|
8
|
-
"livekit-agents[spatius]~=1.8.
|
|
8
|
+
"livekit-agents[spatius]~=1.8.1",
|
|
9
9
|
"livekit-plugins-noise-cancellation~=0.3.0",
|
|
10
10
|
"python-dotenv>=1.2.1,<2",
|
|
11
11
|
]
|
|
@@ -25,10 +25,11 @@ load_dotenv(".env.local")
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
class Assistant(Agent):
|
|
28
|
-
def __init__(self) -> None:
|
|
28
|
+
def __init__(self, instructions: str | None = None) -> None:
|
|
29
29
|
super().__init__(
|
|
30
30
|
llm=inference.LLM(model="google/gemma-4-31b-it"),
|
|
31
|
-
instructions=
|
|
31
|
+
instructions=instructions
|
|
32
|
+
or textwrap.dedent(
|
|
32
33
|
"""\
|
|
33
34
|
You are a warm, concise voice assistant speaking through a digital
|
|
34
35
|
avatar. Help the user directly and conversationally.
|
|
@@ -42,7 +43,8 @@ class Assistant(Agent):
|
|
|
42
43
|
)
|
|
43
44
|
|
|
44
45
|
|
|
45
|
-
|
|
46
|
+
# Warm region, TLS, and session-token caches in each job process before dispatch.
|
|
47
|
+
server = AgentServer(setup_fnc=spatius.prewarm)
|
|
46
48
|
|
|
47
49
|
|
|
48
50
|
@server.on("worker_registered")
|
|
@@ -82,8 +84,9 @@ async def spatius_agent(ctx: JobContext) -> None:
|
|
|
82
84
|
avatar = spatius.AvatarSession(avatar_id=dispatch_metadata.avatar_id)
|
|
83
85
|
await avatar.start(session, room=ctx.room)
|
|
84
86
|
|
|
87
|
+
assistant = Assistant()
|
|
85
88
|
await session.start(
|
|
86
|
-
agent=
|
|
89
|
+
agent=assistant,
|
|
87
90
|
room=ctx.room,
|
|
88
91
|
room_options=room_io.RoomOptions(
|
|
89
92
|
audio_input=room_io.AudioInputOptions(
|
|
@@ -11,6 +11,55 @@ with patch("dotenv.load_dotenv"):
|
|
|
11
11
|
from src import agent as agent_module
|
|
12
12
|
|
|
13
13
|
|
|
14
|
+
class ProcessPrewarmTests(unittest.TestCase):
|
|
15
|
+
def setUp(self) -> None:
|
|
16
|
+
self.enterContext(
|
|
17
|
+
patch.dict(
|
|
18
|
+
"os.environ",
|
|
19
|
+
{"SPATIUS_APP_ID": "app-test", "SPATIUS_API_KEY": "key-test"},
|
|
20
|
+
clear=True,
|
|
21
|
+
)
|
|
22
|
+
)
|
|
23
|
+
# Exercise the registered hook and installed plugin without provider calls.
|
|
24
|
+
self.sdk_prewarm = self.enterContext(
|
|
25
|
+
patch(
|
|
26
|
+
"spatius.prewarm",
|
|
27
|
+
new_callable=AsyncMock,
|
|
28
|
+
return_value=SimpleNamespace(
|
|
29
|
+
region="test-region",
|
|
30
|
+
tls_warmed=True,
|
|
31
|
+
session_token_prefetched=True,
|
|
32
|
+
),
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
def test_process_setup_warms_connection_state_without_an_avatar(self) -> None:
|
|
37
|
+
with patch.object(agent_module.spatius, "AvatarSession") as avatar:
|
|
38
|
+
agent_module.server.setup_fnc(SimpleNamespace())
|
|
39
|
+
|
|
40
|
+
self.sdk_prewarm.assert_awaited_once()
|
|
41
|
+
options = self.sdk_prewarm.call_args.kwargs
|
|
42
|
+
self.assertEqual(options["app_id"], "app-test")
|
|
43
|
+
self.assertEqual(options["api_key"], "key-test")
|
|
44
|
+
self.assertEqual(options["region"], "auto")
|
|
45
|
+
self.assertTrue(options["prefetch_session_token"])
|
|
46
|
+
avatar.assert_not_called()
|
|
47
|
+
|
|
48
|
+
def test_warmup_failure_does_not_fail_process_setup(self) -> None:
|
|
49
|
+
self.sdk_prewarm.side_effect = ConnectionError("warm-up unavailable")
|
|
50
|
+
|
|
51
|
+
with self.assertLogs("livekit.plugins.spatius", level="WARNING"):
|
|
52
|
+
agent_module.server.setup_fnc(SimpleNamespace())
|
|
53
|
+
|
|
54
|
+
self.sdk_prewarm.assert_awaited_once()
|
|
55
|
+
|
|
56
|
+
def test_process_setup_without_configuration_skips_warmup(self) -> None:
|
|
57
|
+
with patch.dict("os.environ", {}, clear=True):
|
|
58
|
+
agent_module.server.setup_fnc(SimpleNamespace())
|
|
59
|
+
|
|
60
|
+
self.sdk_prewarm.assert_not_awaited()
|
|
61
|
+
|
|
62
|
+
|
|
14
63
|
class AgentStartupTests(unittest.IsolatedAsyncioTestCase):
|
|
15
64
|
def setUp(self) -> None:
|
|
16
65
|
self.events: list[str] = []
|
|
@@ -777,7 +777,7 @@ wheels = [
|
|
|
777
777
|
|
|
778
778
|
[[package]]
|
|
779
779
|
name = "livekit"
|
|
780
|
-
version = "1.1.
|
|
780
|
+
version = "1.1.18"
|
|
781
781
|
source = { registry = "https://pypi.org/simple" }
|
|
782
782
|
dependencies = [
|
|
783
783
|
{ name = "aiofiles" },
|
|
@@ -786,18 +786,18 @@ dependencies = [
|
|
|
786
786
|
{ name = "protobuf" },
|
|
787
787
|
{ name = "types-protobuf" },
|
|
788
788
|
]
|
|
789
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
789
|
+
sdist = { url = "https://files.pythonhosted.org/packages/43/06/ed2cda99ce0c7f10f6599588b296d2bde08ec1235a97416e9986629ce131/livekit-1.1.18.tar.gz", hash = "sha256:1097b8613fa4625e3fb0bd4fe5b09a3b04b39151c08b78498831dfc57235d1d1", size = 386573, upload-time = "2026-09-08T01:50:55.05Z" }
|
|
790
790
|
wheels = [
|
|
791
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
792
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
793
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
794
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
795
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
791
|
+
{ url = "https://files.pythonhosted.org/packages/d3/b1/be04d760136480aa2d27f8247adc6d0a1e25395b146f04267fb8e716fe6a/livekit-1.1.18-py3-none-macosx_10_15_x86_64.whl", hash = "sha256:8337e956e9816814572c964e7553d66e4845bc3299cb5aeab8a0d671e293ed32", size = 10471856, upload-time = "2026-09-08T01:50:41.85Z" },
|
|
792
|
+
{ url = "https://files.pythonhosted.org/packages/d3/60/a0bf23774eecfc012b60bae84f329537053a0e0952d6f43dc6154d01ac5b/livekit-1.1.18-py3-none-macosx_11_0_arm64.whl", hash = "sha256:8557d6438da4b8968263b44920e7ab606a9ea34bc49fb8fd89054eb3e5cc162d", size = 9292804, upload-time = "2026-09-08T01:50:44.968Z" },
|
|
793
|
+
{ url = "https://files.pythonhosted.org/packages/f1/68/4b5e996660185f2db937a356c9e72981eab42c846f24ba992b997fa9f973/livekit-1.1.18-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:e9305aa097fe75f533db3205ab15868730e467130ffdda7d4adc3840f30b282a", size = 10584633, upload-time = "2026-09-08T01:50:47.735Z" },
|
|
794
|
+
{ url = "https://files.pythonhosted.org/packages/e0/5e/a0220ddf5e53bb3ee4f4969e9ca5e3a3e9567c584b66cd71355a45c069a8/livekit-1.1.18-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:dc2461b668ffa66ca504d05c88af7ea640372f53672ae367145412e374d6aff0", size = 11809468, upload-time = "2026-09-08T01:50:50.332Z" },
|
|
795
|
+
{ url = "https://files.pythonhosted.org/packages/f6/47/22455e01c76b271f7d9399546c2becabe4bf0f58a43e79859bb0ca4fc426/livekit-1.1.18-py3-none-win_amd64.whl", hash = "sha256:a61d4fd39392e7d28a7dbbe3b68be7b600115ed32501f5b016579846de945913", size = 10972019, upload-time = "2026-09-08T01:50:52.912Z" },
|
|
796
796
|
]
|
|
797
797
|
|
|
798
798
|
[[package]]
|
|
799
799
|
name = "livekit-agents"
|
|
800
|
-
version = "1.8.
|
|
800
|
+
version = "1.8.1"
|
|
801
801
|
source = { registry = "https://pypi.org/simple" }
|
|
802
802
|
dependencies = [
|
|
803
803
|
{ name = "aiofiles" },
|
|
@@ -833,9 +833,9 @@ dependencies = [
|
|
|
833
833
|
{ name = "typing-extensions" },
|
|
834
834
|
{ name = "watchfiles" },
|
|
835
835
|
]
|
|
836
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
836
|
+
sdist = { url = "https://files.pythonhosted.org/packages/5c/f1/cc1fcbc24da6f90cf38809c5ceafff1a1d1c1527a32431ce9b00e64deb95/livekit_agents-1.8.1.tar.gz", hash = "sha256:9319b4a7cf3891db4c1de9edd98fad4918919beadb2ceff5b3fbd34ae67384b5", size = 2712687, upload-time = "2026-09-10T18:59:30.729Z" }
|
|
837
837
|
wheels = [
|
|
838
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
838
|
+
{ url = "https://files.pythonhosted.org/packages/0e/2c/29419a913c57b863eba93cbb41df2f3e58b57c3d8f790c6f97be81203ef7/livekit_agents-1.8.1-py3-none-any.whl", hash = "sha256:3e9e4e732ecebcf0512d5eec25621a365c3572289d1f136396d8a1c5ea78e2ac", size = 2832498, upload-time = "2026-09-10T18:59:28.67Z" },
|
|
839
839
|
]
|
|
840
840
|
|
|
841
841
|
[package.optional-dependencies]
|
|
@@ -935,15 +935,15 @@ wheels = [
|
|
|
935
935
|
|
|
936
936
|
[[package]]
|
|
937
937
|
name = "livekit-plugins-spatius"
|
|
938
|
-
version = "1.8.
|
|
938
|
+
version = "1.8.1"
|
|
939
939
|
source = { registry = "https://pypi.org/simple" }
|
|
940
940
|
dependencies = [
|
|
941
941
|
{ name = "livekit-agents" },
|
|
942
942
|
{ name = "spatius", extra = ["opus"] },
|
|
943
943
|
]
|
|
944
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
944
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3f/a7/96d690fa9177fb29ae162fdd3957eee2c87ff3c0b9c4e85956532f94a779/livekit_plugins_spatius-1.8.1.tar.gz", hash = "sha256:d71b74eea79a58861c5893d67d4196d4a3deb2836c23cf4316759aae368b4b9d", size = 10093, upload-time = "2026-09-10T19:01:10.334Z" }
|
|
945
945
|
wheels = [
|
|
946
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
946
|
+
{ url = "https://files.pythonhosted.org/packages/f7/93/b562e8e3ff22b19f69575302b41649bcde379497b73b2fc003f76553a8c4/livekit_plugins_spatius-1.8.1-py3-none-any.whl", hash = "sha256:234d2d0817e43a0aa736c2bfc698b364f6ad64c2ba55c469bab35169099f928e", size = 11330, upload-time = "2026-09-10T19:01:09.016Z" },
|
|
947
947
|
]
|
|
948
948
|
|
|
949
949
|
[[package]]
|
|
@@ -1891,7 +1891,7 @@ dev = [
|
|
|
1891
1891
|
|
|
1892
1892
|
[package.metadata]
|
|
1893
1893
|
requires-dist = [
|
|
1894
|
-
{ name = "livekit-agents", extras = ["spatius"], specifier = "~=1.8.
|
|
1894
|
+
{ name = "livekit-agents", extras = ["spatius"], specifier = "~=1.8.1" },
|
|
1895
1895
|
{ name = "livekit-plugins-noise-cancellation", specifier = "~=0.3.0" },
|
|
1896
1896
|
{ name = "python-dotenv", specifier = ">=1.2.1,<2" },
|
|
1897
1897
|
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.15,<1" },
|