create-spatius-app 0.1.0-beta.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.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +57 -0
  3. package/dist/cli.js +9046 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/templates.js +2856 -0
  6. package/dist/templates.js.map +1 -0
  7. package/package.json +79 -0
  8. package/schemas/result-v1.schema.json +129 -0
  9. package/schemas/result-v2.schema.json +146 -0
  10. package/templates/cloudflare-livekit/.editorconfig +15 -0
  11. package/templates/cloudflare-livekit/.prettierignore +6 -0
  12. package/templates/cloudflare-livekit/.prettierrc.json +4 -0
  13. package/templates/cloudflare-livekit/AGENTS.md +41 -0
  14. package/templates/cloudflare-livekit/README.md +37 -0
  15. package/templates/cloudflare-livekit/agent/Dockerfile.pip +31 -0
  16. package/templates/cloudflare-livekit/agent/Dockerfile.uv +29 -0
  17. package/templates/cloudflare-livekit/agent/README.md +84 -0
  18. package/templates/cloudflare-livekit/agent/dockerignore +11 -0
  19. package/templates/cloudflare-livekit/agent/env.example +8 -0
  20. package/templates/cloudflare-livekit/agent/pyproject.toml +21 -0
  21. package/templates/cloudflare-livekit/agent/python-version +1 -0
  22. package/templates/cloudflare-livekit/agent/src/__init__.py +1 -0
  23. package/templates/cloudflare-livekit/agent/src/agent.py +97 -0
  24. package/templates/cloudflare-livekit/agent/src/dispatch_metadata.py +64 -0
  25. package/templates/cloudflare-livekit/agent/tests/test_agent_startup.py +211 -0
  26. package/templates/cloudflare-livekit/agent/tests/test_dispatch_metadata.py +97 -0
  27. package/templates/cloudflare-livekit/agent/uv.lock +2272 -0
  28. package/templates/cloudflare-livekit/components.json +23 -0
  29. package/templates/cloudflare-livekit/contracts/agent-dispatch-metadata.schema.json +40 -0
  30. package/templates/cloudflare-livekit/dev.vars.example +12 -0
  31. package/templates/cloudflare-livekit/eslint.config.mjs +41 -0
  32. package/templates/cloudflare-livekit/gitignore +30 -0
  33. package/templates/cloudflare-livekit/index.html +17 -0
  34. package/templates/cloudflare-livekit/npmrc +4 -0
  35. package/templates/cloudflare-livekit/package-lock.json +6514 -0
  36. package/templates/cloudflare-livekit/package.json +66 -0
  37. package/templates/cloudflare-livekit/playwright.config.ts +29 -0
  38. package/templates/cloudflare-livekit/pnpm-lock.yaml +4012 -0
  39. package/templates/cloudflare-livekit/pnpm-workspace.yaml +8 -0
  40. package/templates/cloudflare-livekit/scripts/agent-runtime.mjs +129 -0
  41. package/templates/cloudflare-livekit/scripts/command.mjs +52 -0
  42. package/templates/cloudflare-livekit/scripts/dev-agent.mjs +77 -0
  43. package/templates/cloudflare-livekit/scripts/dev-web.mjs +18 -0
  44. package/templates/cloudflare-livekit/scripts/managed-process.mjs +144 -0
  45. package/templates/cloudflare-livekit/scripts/process-tree.mjs +111 -0
  46. package/templates/cloudflare-livekit/scripts/run-agent-python.mjs +25 -0
  47. package/templates/cloudflare-livekit/tests/dev-agent.test.mjs +327 -0
  48. package/templates/cloudflare-livekit/tests/dev-fixtures.mjs +235 -0
  49. package/templates/cloudflare-livekit/tests/dev-supervision.test.mjs +203 -0
  50. package/templates/cloudflare-livekit/tests/e2e/conversation.spec.ts +376 -0
  51. package/templates/cloudflare-livekit/tests/e2e/fake-avatar.ts +24 -0
  52. package/templates/cloudflare-livekit/tests/e2e/fake-components.tsx +173 -0
  53. package/templates/cloudflare-livekit/tests/e2e/fake-livekit.ts +123 -0
  54. package/templates/cloudflare-livekit/tests/e2e/harness.html +12 -0
  55. package/templates/cloudflare-livekit/tests/e2e/harness.tsx +1 -0
  56. package/templates/cloudflare-livekit/tests/e2e/vite.config.ts +48 -0
  57. package/templates/cloudflare-livekit/tests/web/api.test.ts +64 -0
  58. package/templates/cloudflare-livekit/tests/web/app.test.tsx +125 -0
  59. package/templates/cloudflare-livekit/tests/web/audio-visualizer.test.tsx +53 -0
  60. package/templates/cloudflare-livekit/tests/web/avatar-session.test.ts +119 -0
  61. package/templates/cloudflare-livekit/tests/web/components.test.tsx +152 -0
  62. package/templates/cloudflare-livekit/tests/web/conversation.test.tsx +76 -0
  63. package/templates/cloudflare-livekit/tests/web/session-attempt.test.ts +178 -0
  64. package/templates/cloudflare-livekit/tsconfig.json +9 -0
  65. package/templates/cloudflare-livekit/tsconfig.node.json +23 -0
  66. package/templates/cloudflare-livekit/tsconfig.web.json +26 -0
  67. package/templates/cloudflare-livekit/tsconfig.worker.json +22 -0
  68. package/templates/cloudflare-livekit/vite.config.ts +49 -0
  69. package/templates/cloudflare-livekit/vitest.config.ts +11 -0
  70. package/templates/cloudflare-livekit/web/App.tsx +176 -0
  71. package/templates/cloudflare-livekit/web/api.ts +69 -0
  72. package/templates/cloudflare-livekit/web/assets/FONT-PROVENANCE.md +8 -0
  73. package/templates/cloudflare-livekit/web/assets/OFL.txt +92 -0
  74. package/templates/cloudflare-livekit/web/assets/inter-latin.woff2 +0 -0
  75. package/templates/cloudflare-livekit/web/avatar-session.ts +67 -0
  76. package/templates/cloudflare-livekit/web/components/agents-ui/LICENSE +201 -0
  77. package/templates/cloudflare-livekit/web/components/agents-ui/PROVENANCE.md +32 -0
  78. package/templates/cloudflare-livekit/web/components/agents-ui/agent-audio-visualizer-bar.tsx +43 -0
  79. package/templates/cloudflare-livekit/web/components/agents-ui/agent-chat-input.tsx +78 -0
  80. package/templates/cloudflare-livekit/web/components/agents-ui/agent-chat-transcript.tsx +145 -0
  81. package/templates/cloudflare-livekit/web/components/agents-ui/agent-disconnect-button.tsx +27 -0
  82. package/templates/cloudflare-livekit/web/components/agents-ui/agent-session-provider.tsx +29 -0
  83. package/templates/cloudflare-livekit/web/components/agents-ui/agent-track-toggle.tsx +51 -0
  84. package/templates/cloudflare-livekit/web/components/agents-ui/start-audio-button.tsx +13 -0
  85. package/templates/cloudflare-livekit/web/components/conversation.tsx +352 -0
  86. package/templates/cloudflare-livekit/web/components/icons.tsx +39 -0
  87. package/templates/cloudflare-livekit/web/components/transcript-panel.tsx +12 -0
  88. package/templates/cloudflare-livekit/web/main.tsx +17 -0
  89. package/templates/cloudflare-livekit/web/session-attempt.ts +110 -0
  90. package/templates/cloudflare-livekit/web/styles.css +571 -0
  91. package/templates/cloudflare-livekit/worker/dispatch-metadata.ts +22 -0
  92. package/templates/cloudflare-livekit/worker/index.test.ts +152 -0
  93. package/templates/cloudflare-livekit/worker/index.ts +61 -0
  94. package/templates/cloudflare-livekit/worker/session.ts +103 -0
  95. package/templates/cloudflare-livekit/worker-configuration.d.ts +17184 -0
  96. package/templates/cloudflare-livekit/wrangler.jsonc +27 -0
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "new-york",
4
+ "rsc": false,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "",
8
+ "css": "web/styles.css",
9
+ "baseColor": "neutral",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "ui": "@/components/ui",
16
+ "utils": "@/lib/utils",
17
+ "lib": "@/lib",
18
+ "hooks": "@/hooks"
19
+ },
20
+ "registries": {
21
+ "@agents-ui": "https://livekit.com/ui/r/{name}.json"
22
+ }
23
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Spatius agent dispatch metadata",
4
+ "description": "Session-specific configuration passed from the business layer to the LiveKit agent through explicit dispatch metadata.",
5
+ "type": "object",
6
+ "additionalProperties": true,
7
+ "required": ["version", "avatar"],
8
+ "properties": {
9
+ "voice": {
10
+ "type": "object",
11
+ "additionalProperties": true,
12
+ "required": ["id"],
13
+ "properties": {
14
+ "id": {
15
+ "type": "string",
16
+ "minLength": 1,
17
+ "pattern": "\\S",
18
+ "description": "Cartesia voice ID. Omit voice for the backwards-compatible Jacqueline default."
19
+ }
20
+ }
21
+ },
22
+ "version": {
23
+ "const": 1,
24
+ "description": "Major version of the dispatch metadata contract."
25
+ },
26
+ "avatar": {
27
+ "type": "object",
28
+ "additionalProperties": true,
29
+ "required": ["id"],
30
+ "properties": {
31
+ "id": {
32
+ "type": "string",
33
+ "minLength": 1,
34
+ "pattern": "\\S",
35
+ "description": "Spatius avatar ID selected for this session."
36
+ }
37
+ }
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,12 @@
1
+ # Used by the Cloudflare Worker during local development.
2
+ # Standard voices: Jacqueline (feminine); Blake (masculine): a167e0f3-df7e-4d52-a9c3-f949145efdab
3
+ CARTESIA_VOICE_ID=9626c31c-bec5-4cca-baa8-f8ba9e84c8bc
4
+ LIVEKIT_URL=wss://your-project.livekit.cloud
5
+ LIVEKIT_API_KEY=your-livekit-api-key
6
+ LIVEKIT_API_SECRET=your-livekit-api-secret
7
+ LIVEKIT_AGENT_NAME=spatius-agent
8
+ SPATIUS_APP_ID=your-spatius-app-id
9
+ SPATIUS_AVATAR_ID=your-spatius-avatar-id
10
+
11
+ # Optional public image URL, filled automatically when selecting a public avatar.
12
+ SPATIUS_AVATAR_BACKGROUND_URL=
@@ -0,0 +1,41 @@
1
+ import eslint from '@eslint/js';
2
+ import prettier from 'eslint-config-prettier';
3
+ import globals from 'globals';
4
+ import tseslint from 'typescript-eslint';
5
+
6
+ export default tseslint.config(
7
+ {
8
+ ignores: [
9
+ 'agent/.ruff_cache/',
10
+ 'agent/.venv/',
11
+ 'dist/',
12
+ 'worker-configuration.d.ts',
13
+ ],
14
+ },
15
+ eslint.configs.recommended,
16
+ ...tseslint.configs.recommendedTypeChecked.map((config) => ({
17
+ ...config,
18
+ files: ['**/*.{ts,tsx}'],
19
+ })),
20
+ {
21
+ files: ['**/*.{ts,tsx}'],
22
+ languageOptions: {
23
+ globals: {
24
+ ...globals.browser,
25
+ ...globals.node,
26
+ ...globals.serviceworker,
27
+ },
28
+ parserOptions: {
29
+ projectService: true,
30
+ tsconfigRootDir: import.meta.dirname,
31
+ },
32
+ },
33
+ },
34
+ {
35
+ files: ['scripts/**/*.mjs'],
36
+ languageOptions: {
37
+ globals: globals.node,
38
+ },
39
+ },
40
+ prettier,
41
+ );
@@ -0,0 +1,30 @@
1
+ # JavaScript
2
+ node_modules/
3
+ dist/
4
+ coverage/
5
+ test-results/
6
+ playwright-report/
7
+ *.tsbuildinfo
8
+
9
+ # Cloudflare
10
+ .wrangler/
11
+ .dev.vars
12
+ .dev.vars.*
13
+ !.dev.vars.example
14
+
15
+ # Python
16
+ agent/.venv/
17
+ agent/.pytest_cache/
18
+ agent/.ruff_cache/
19
+ agent/.env
20
+ agent/.env.*
21
+ !agent/.env.example
22
+ agent/**/__pycache__/
23
+ agent/**/*.py[cod]
24
+ agent/livekit.toml
25
+
26
+ # Local tooling
27
+ .DS_Store
28
+ *.log
29
+ .idea/
30
+ .vscode/
@@ -0,0 +1,17 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta
7
+ name="description"
8
+ content="A real-time voice avatar powered by Spatius and LiveKit."
9
+ />
10
+ <meta name="theme-color" content="#111310" />
11
+ <title>Spatius Voice</title>
12
+ </head>
13
+ <body>
14
+ <div id="root"></div>
15
+ <script type="module" src="/web/main.tsx"></script>
16
+ </body>
17
+ </html>
@@ -0,0 +1,4 @@
1
+ auto-install-peers=false
2
+ prefer-frozen-lockfile=true
3
+ save-exact=true
4
+ strict-peer-dependencies=true