yumii 0.11.0__tar.gz

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 (170) hide show
  1. yumii-0.11.0/.env.example +27 -0
  2. yumii-0.11.0/.github/scripts/check_versions.py +51 -0
  3. yumii-0.11.0/.github/workflows/ci.yml +67 -0
  4. yumii-0.11.0/.github/workflows/release.yml +76 -0
  5. yumii-0.11.0/.gitignore +37 -0
  6. yumii-0.11.0/.python-version +1 -0
  7. yumii-0.11.0/CHANGELOG.md +661 -0
  8. yumii-0.11.0/CLAUDE.md +114 -0
  9. yumii-0.11.0/CONTRIBUTING.md +92 -0
  10. yumii-0.11.0/LICENSE +21 -0
  11. yumii-0.11.0/MANIFEST.in +1 -0
  12. yumii-0.11.0/PKG-INFO +245 -0
  13. yumii-0.11.0/README.md +167 -0
  14. yumii-0.11.0/ROADMAP.md +241 -0
  15. yumii-0.11.0/VISION.md +67 -0
  16. yumii-0.11.0/desktop/.gitignore +6 -0
  17. yumii-0.11.0/desktop/app-icon.png +0 -0
  18. yumii-0.11.0/desktop/src-tauri/Cargo.lock +4500 -0
  19. yumii-0.11.0/desktop/src-tauri/Cargo.toml +17 -0
  20. yumii-0.11.0/desktop/src-tauri/build.rs +3 -0
  21. yumii-0.11.0/desktop/src-tauri/capabilities/default.json +14 -0
  22. yumii-0.11.0/desktop/src-tauri/icons/128x128.png +0 -0
  23. yumii-0.11.0/desktop/src-tauri/icons/128x128@2x.png +0 -0
  24. yumii-0.11.0/desktop/src-tauri/icons/32x32.png +0 -0
  25. yumii-0.11.0/desktop/src-tauri/icons/icon.icns +0 -0
  26. yumii-0.11.0/desktop/src-tauri/icons/icon.ico +0 -0
  27. yumii-0.11.0/desktop/src-tauri/icons/icon.png +0 -0
  28. yumii-0.11.0/desktop/src-tauri/src/main.rs +215 -0
  29. yumii-0.11.0/desktop/src-tauri/tauri.conf.json +42 -0
  30. yumii-0.11.0/docs/.gitignore +29 -0
  31. yumii-0.11.0/docs/app/(docs)/[...slug]/page.tsx +153 -0
  32. yumii-0.11.0/docs/app/(docs)/layout.tsx +35 -0
  33. yumii-0.11.0/docs/app/CodeBlock.tsx +37 -0
  34. yumii-0.11.0/docs/app/CopyButton.tsx +28 -0
  35. yumii-0.11.0/docs/app/MDXPre.tsx +114 -0
  36. yumii-0.11.0/docs/app/Sidebar.tsx +90 -0
  37. yumii-0.11.0/docs/app/TableOfContents.tsx +128 -0
  38. yumii-0.11.0/docs/app/TopNav.tsx +156 -0
  39. yumii-0.11.0/docs/app/components/docs/Callout.tsx +38 -0
  40. yumii-0.11.0/docs/app/components/docs/CodeCard.tsx +74 -0
  41. yumii-0.11.0/docs/app/components/docs/ContentCard.tsx +13 -0
  42. yumii-0.11.0/docs/app/components/docs/DocsCard.tsx +53 -0
  43. yumii-0.11.0/docs/app/components/docs/DocsHero.tsx +105 -0
  44. yumii-0.11.0/docs/app/components/docs/FeatureList.tsx +14 -0
  45. yumii-0.11.0/docs/app/components/docs/OrbHero.tsx +21 -0
  46. yumii-0.11.0/docs/app/components/docs/SectionContainer.tsx +14 -0
  47. yumii-0.11.0/docs/app/components/docs/StepsList.tsx +82 -0
  48. yumii-0.11.0/docs/app/globals.css +1328 -0
  49. yumii-0.11.0/docs/app/icon.png +0 -0
  50. yumii-0.11.0/docs/app/layout.tsx +74 -0
  51. yumii-0.11.0/docs/app/nav.ts +44 -0
  52. yumii-0.11.0/docs/content/development/architecture.mdx +103 -0
  53. yumii-0.11.0/docs/content/development/contributing.mdx +61 -0
  54. yumii-0.11.0/docs/content/development/from-source.mdx +75 -0
  55. yumii-0.11.0/docs/content/development/packaging.mdx +80 -0
  56. yumii-0.11.0/docs/content/docs.json +161 -0
  57. yumii-0.11.0/docs/content/get-started/first-conversation.mdx +78 -0
  58. yumii-0.11.0/docs/content/get-started/installation.mdx +94 -0
  59. yumii-0.11.0/docs/content/get-started/what-is-yumii.mdx +85 -0
  60. yumii-0.11.0/docs/content/guide/dashboard.mdx +65 -0
  61. yumii-0.11.0/docs/content/guide/memory.mdx +72 -0
  62. yumii-0.11.0/docs/content/guide/personalities.mdx +76 -0
  63. yumii-0.11.0/docs/content/guide/talking.mdx +67 -0
  64. yumii-0.11.0/docs/content/guide/tools.mdx +90 -0
  65. yumii-0.11.0/docs/content/images/yumi-nav.png +0 -0
  66. yumii-0.11.0/docs/content/introduction.mdx +87 -0
  67. yumii-0.11.0/docs/content/providers/llm.mdx +77 -0
  68. yumii-0.11.0/docs/content/providers/stt.mdx +59 -0
  69. yumii-0.11.0/docs/content/providers/tts.mdx +65 -0
  70. yumii-0.11.0/docs/content/quickstart.mdx +67 -0
  71. yumii-0.11.0/docs/content/reference/api.mdx +101 -0
  72. yumii-0.11.0/docs/content/reference/cli.mdx +54 -0
  73. yumii-0.11.0/docs/content/reference/files.mdx +61 -0
  74. yumii-0.11.0/docs/content/reference/settings.mdx +71 -0
  75. yumii-0.11.0/docs/content/reference/troubleshooting.mdx +103 -0
  76. yumii-0.11.0/docs/next-env.d.ts +5 -0
  77. yumii-0.11.0/docs/next.config.mjs +17 -0
  78. yumii-0.11.0/docs/package-lock.json +8843 -0
  79. yumii-0.11.0/docs/package.json +32 -0
  80. yumii-0.11.0/docs/public/favicon.svg +1 -0
  81. yumii-0.11.0/docs/public/icons.svg +24 -0
  82. yumii-0.11.0/docs/public/images/orb-logo.png +0 -0
  83. yumii-0.11.0/docs/public/images/yumi-nav.png +0 -0
  84. yumii-0.11.0/docs/public/mascot.png +0 -0
  85. yumii-0.11.0/docs/tsconfig.json +41 -0
  86. yumii-0.11.0/install.ps1 +89 -0
  87. yumii-0.11.0/install.sh +52 -0
  88. yumii-0.11.0/pyproject.toml +86 -0
  89. yumii-0.11.0/src/yumii/__init__.py +1 -0
  90. yumii-0.11.0/src/yumii/__main__.py +6 -0
  91. yumii-0.11.0/src/yumii/agent/__init__.py +1 -0
  92. yumii-0.11.0/src/yumii/agent/fact_extractor.py +340 -0
  93. yumii-0.11.0/src/yumii/agent/graph.py +565 -0
  94. yumii-0.11.0/src/yumii/agent/llm.py +255 -0
  95. yumii-0.11.0/src/yumii/agent/nodes.py +46 -0
  96. yumii-0.11.0/src/yumii/agent/personality_manager.py +92 -0
  97. yumii-0.11.0/src/yumii/agent/synthesizer.py +297 -0
  98. yumii-0.11.0/src/yumii/api/__init__.py +1 -0
  99. yumii-0.11.0/src/yumii/api/server.py +705 -0
  100. yumii-0.11.0/src/yumii/assets/models/silero_vad.onnx +0 -0
  101. yumii-0.11.0/src/yumii/assets/prompts/_core.txt +43 -0
  102. yumii-0.11.0/src/yumii/assets/prompts/caring.txt +35 -0
  103. yumii-0.11.0/src/yumii/assets/prompts/dandere.txt +35 -0
  104. yumii-0.11.0/src/yumii/assets/prompts/genki.txt +35 -0
  105. yumii-0.11.0/src/yumii/assets/prompts/kuudere.txt +35 -0
  106. yumii-0.11.0/src/yumii/assets/prompts/tsundere.txt +35 -0
  107. yumii-0.11.0/src/yumii/assets/prompts/yandere.txt +35 -0
  108. yumii-0.11.0/src/yumii/assets/webui/_companion_live2d.reference.html +784 -0
  109. yumii-0.11.0/src/yumii/assets/webui/dashboard.html +491 -0
  110. yumii-0.11.0/src/yumii/assets/webui/index.html +808 -0
  111. yumii-0.11.0/src/yumii/audio/__init__.py +1 -0
  112. yumii-0.11.0/src/yumii/audio/silero_vad.py +85 -0
  113. yumii-0.11.0/src/yumii/audio/stt.py +247 -0
  114. yumii-0.11.0/src/yumii/audio/stt_factory.py +22 -0
  115. yumii-0.11.0/src/yumii/audio/stt_providers.py +130 -0
  116. yumii-0.11.0/src/yumii/audio/vosk_model.py +52 -0
  117. yumii-0.11.0/src/yumii/audio/vosk_provider.py +84 -0
  118. yumii-0.11.0/src/yumii/cli.py +76 -0
  119. yumii-0.11.0/src/yumii/core/__init__.py +1 -0
  120. yumii-0.11.0/src/yumii/core/config.py +89 -0
  121. yumii-0.11.0/src/yumii/core/credential_store.py +208 -0
  122. yumii-0.11.0/src/yumii/core/engine.py +877 -0
  123. yumii-0.11.0/src/yumii/core/global_config.py +49 -0
  124. yumii-0.11.0/src/yumii/core/interfaces.py +45 -0
  125. yumii-0.11.0/src/yumii/core/logging.py +71 -0
  126. yumii-0.11.0/src/yumii/core/memory_db.py +158 -0
  127. yumii-0.11.0/src/yumii/core/memory_manager.py +388 -0
  128. yumii-0.11.0/src/yumii/core/session_manager.py +190 -0
  129. yumii-0.11.0/src/yumii/core/summarizer.py +212 -0
  130. yumii-0.11.0/src/yumii/core/transcript.py +224 -0
  131. yumii-0.11.0/src/yumii/core/types.py +9 -0
  132. yumii-0.11.0/src/yumii/tools/__init__.py +72 -0
  133. yumii-0.11.0/src/yumii/tools/composio_loader.py +205 -0
  134. yumii-0.11.0/src/yumii/tools/mcp_config.py +174 -0
  135. yumii-0.11.0/src/yumii/tools/memory_tool.py +144 -0
  136. yumii-0.11.0/src/yumii/tools/policy.py +105 -0
  137. yumii-0.11.0/src/yumii/tools/registry.py +327 -0
  138. yumii-0.11.0/src/yumii/tools/session_search_tool.py +145 -0
  139. yumii-0.11.0/src/yumii/tools/time_tool.py +67 -0
  140. yumii-0.11.0/src/yumii/tools/web_search_tool.py +78 -0
  141. yumii-0.11.0/src/yumii/tts/__init__.py +1 -0
  142. yumii-0.11.0/src/yumii/tts/camb_speaker.py +125 -0
  143. yumii-0.11.0/src/yumii/tts/factory.py +24 -0
  144. yumii-0.11.0/src/yumii/tts/kokoro_model.py +84 -0
  145. yumii-0.11.0/src/yumii/tts/kokoro_speaker.py +191 -0
  146. yumii-0.11.0/src/yumii/tts/speaker.py +122 -0
  147. yumii-0.11.0/tests/test_agent_memory.py +258 -0
  148. yumii-0.11.0/tests/test_audio_pipeline.py +191 -0
  149. yumii-0.11.0/tests/test_composio_loader.py +149 -0
  150. yumii-0.11.0/tests/test_credential_store.py +127 -0
  151. yumii-0.11.0/tests/test_duplicate_tool_calls.py +123 -0
  152. yumii-0.11.0/tests/test_fact_extractor.py +177 -0
  153. yumii-0.11.0/tests/test_global_config.py +55 -0
  154. yumii-0.11.0/tests/test_kokoro_chunking.py +55 -0
  155. yumii-0.11.0/tests/test_memory_db.py +76 -0
  156. yumii-0.11.0/tests/test_memory_manager.py +140 -0
  157. yumii-0.11.0/tests/test_personality_manager.py +101 -0
  158. yumii-0.11.0/tests/test_personality_switch.py +42 -0
  159. yumii-0.11.0/tests/test_prompt_assembly.py +64 -0
  160. yumii-0.11.0/tests/test_request_size_guards.py +193 -0
  161. yumii-0.11.0/tests/test_schema_sanitizer.py +99 -0
  162. yumii-0.11.0/tests/test_session_manager.py +139 -0
  163. yumii-0.11.0/tests/test_session_summaries.py +219 -0
  164. yumii-0.11.0/tests/test_silero_vad.py +52 -0
  165. yumii-0.11.0/tests/test_state_types.py +17 -0
  166. yumii-0.11.0/tests/test_synthesizer_think_strip.py +36 -0
  167. yumii-0.11.0/tests/test_tool_registry.py +201 -0
  168. yumii-0.11.0/tests/test_transcript_search.py +198 -0
  169. yumii-0.11.0/tests/test_tts_streaming.py +118 -0
  170. yumii-0.11.0/uv.lock +4514 -0
@@ -0,0 +1,27 @@
1
+ # Yumii — Configuration
2
+
3
+ ## ⚠️ Do NOT create a .env file to configure Yumii.
4
+
5
+ Yumii stores API keys in **~/.yumii/auth.json** (an owner-only local file,
6
+ the same model Claude Code and opencode use) and preferences in
7
+ ~/.yumii/config.json. Setting up via a .env file will have **no effect** —
8
+ pydantic-settings is not loading it.
9
+
10
+ ## How to configure Yumii
11
+
12
+ Run the interactive setup wizard:
13
+
14
+ ```bash
15
+ uv run yumii
16
+ ```
17
+
18
+ On first launch, the wizard will walk you through:
19
+ 1. Choosing your LLM provider (Groq / OpenAI / Anthropic) and entering your API key
20
+ 2. Choosing your TTS provider (ElevenLabs) and entering your API key + Voice ID
21
+ 3. Choosing your STT backend (Local Whisper or Groq Whisper) and model size
22
+ 4. Setting Yumii's personality
23
+
24
+ All API keys are stored in ~/.yumii/auth.json with owner-only permissions.
25
+
26
+ You can re-run configuration at any time via:
27
+ Dashboard → ⚙️ Configure Senses
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env python3
2
+ """Fail if the product version differs across the files that declare it.
3
+
4
+ pyproject.toml (the Python package), tauri.conf.json (the desktop app
5
+ metadata), and Cargo.toml (the Rust shell) each carry their own version
6
+ string. They drifted once (0.9.0 vs 0.1.0), which would have shipped a
7
+ packaged app labelled v0.1.0. CI runs this so the release routine can't
8
+ silently forget one again. Runnable locally too: ``python
9
+ .github/scripts/check_versions.py``.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ import json
15
+ import sys
16
+ import tomllib
17
+ from pathlib import Path
18
+
19
+ ROOT = Path(__file__).resolve().parents[2]
20
+
21
+
22
+ def _load() -> dict[str, str]:
23
+ pyproject = tomllib.loads(
24
+ (ROOT / "pyproject.toml").read_text(encoding="utf-8")
25
+ )["project"]["version"]
26
+ tauri = json.loads(
27
+ (ROOT / "desktop/src-tauri/tauri.conf.json").read_text(encoding="utf-8")
28
+ )["version"]
29
+ cargo = tomllib.loads(
30
+ (ROOT / "desktop/src-tauri/Cargo.toml").read_text(encoding="utf-8")
31
+ )["package"]["version"]
32
+ return {
33
+ "pyproject.toml": pyproject,
34
+ "desktop/src-tauri/tauri.conf.json": tauri,
35
+ "desktop/src-tauri/Cargo.toml": cargo,
36
+ }
37
+
38
+
39
+ def main() -> int:
40
+ versions = _load()
41
+ if len(set(versions.values())) != 1:
42
+ print("Version drift detected — these must all match:")
43
+ for name, ver in versions.items():
44
+ print(f" {ver:<10} {name}")
45
+ return 1
46
+ print(f"All versions aligned: {next(iter(versions.values()))}")
47
+ return 0
48
+
49
+
50
+ if __name__ == "__main__":
51
+ sys.exit(main())
@@ -0,0 +1,67 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ "master", "feat/one-command-install" ]
6
+ pull_request:
7
+ branches: [ "master" ]
8
+
9
+ jobs:
10
+ build:
11
+ name: ${{ matrix.os }} · Python ${{ matrix.python-version }}
12
+ runs-on: ${{ matrix.os }}
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ os: [ubuntu-latest, windows-latest]
17
+ python-version: ["3.12"]
18
+
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+
22
+ - name: Set up Python
23
+ uses: actions/setup-python@v5
24
+ with:
25
+ python-version: ${{ matrix.python-version }}
26
+
27
+ - name: Install uv
28
+ uses: astral-sh/setup-uv@v3
29
+ with:
30
+ version: "latest"
31
+
32
+ - name: Install dependencies
33
+ run: uv sync --extra dev
34
+
35
+ - name: Lint with ruff
36
+ run: uv run ruff check .
37
+
38
+ - name: Test with pytest
39
+ run: uv run pytest tests/
40
+
41
+ versions:
42
+ name: Version consistency
43
+ runs-on: ubuntu-latest
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+ - uses: actions/setup-python@v5
47
+ with:
48
+ python-version: "3.12"
49
+ - name: Versions must match across pyproject / tauri.conf / Cargo
50
+ run: python .github/scripts/check_versions.py
51
+
52
+ desktop:
53
+ name: Desktop shell build (Windows)
54
+ runs-on: windows-latest
55
+ steps:
56
+ - uses: actions/checkout@v4
57
+
58
+ - name: Install Rust
59
+ uses: dtolnay/rust-toolchain@stable
60
+
61
+ - name: Cache cargo
62
+ uses: Swatinem/rust-cache@v2
63
+ with:
64
+ workspaces: desktop/src-tauri
65
+
66
+ - name: Build the Tauri shell
67
+ run: cargo build --manifest-path desktop/src-tauri/Cargo.toml
@@ -0,0 +1,76 @@
1
+ name: Release
2
+
3
+ # Machine plumbing for the one-command installer at https://yumii.me —
4
+ # humans never download anything from this page by hand.
5
+ #
6
+ # git tag v0.11.0 && git push origin v0.11.0
7
+ #
8
+ # publishes two artifacts:
9
+ # * the `yumii` wheel to PyPI (installed via `uv tool install yumii`)
10
+ # * the bare desktop shell Yumii.exe (fetched by install.ps1 from
11
+ # .../releases/latest/download/Yumii.exe)
12
+ #
13
+ # PyPI auth is Trusted Publishing (GitHub OIDC) — no tokens, no secrets.
14
+ # The PyPI project's publisher must point at THIS workflow filename and
15
+ # the `pypi` environment.
16
+
17
+ on:
18
+ push:
19
+ tags:
20
+ - "v*"
21
+
22
+ permissions:
23
+ contents: write # create the release + upload the shell exe
24
+
25
+ jobs:
26
+ pypi:
27
+ name: Publish wheel to PyPI
28
+ runs-on: ubuntu-latest
29
+ environment: pypi
30
+ permissions:
31
+ id-token: write # OIDC for PyPI trusted publishing
32
+ steps:
33
+ - uses: actions/checkout@v4
34
+
35
+ - name: Install uv
36
+ uses: astral-sh/setup-uv@v3
37
+ with:
38
+ version: "latest"
39
+
40
+ - name: Build the wheel + sdist
41
+ run: uv build
42
+
43
+ - name: Publish to PyPI (trusted publishing)
44
+ uses: pypa/gh-action-pypi-publish@release/v1
45
+
46
+ shell:
47
+ name: Desktop shell (Windows)
48
+ runs-on: windows-latest
49
+ steps:
50
+ - uses: actions/checkout@v4
51
+
52
+ - name: Install Rust
53
+ uses: dtolnay/rust-toolchain@stable
54
+
55
+ - name: Cache cargo
56
+ uses: Swatinem/rust-cache@v2
57
+ with:
58
+ workspaces: desktop/src-tauri
59
+
60
+ - name: Build the bare shell (no bundling)
61
+ working-directory: desktop
62
+ run: npx @tauri-apps/cli@latest build
63
+
64
+ - name: Stage the exe under its public name
65
+ run: Copy-Item desktop/src-tauri/target/release/yumii-desktop.exe Yumii.exe
66
+
67
+ - name: Publish release with the shell exe
68
+ uses: softprops/action-gh-release@v2
69
+ with:
70
+ name: Yumii ${{ github.ref_name }}
71
+ body: |
72
+ **Don't download anything here.** Install Yumii with one command — see https://yumii.me
73
+
74
+ This page is plumbing for the installer: it fetches `Yumii.exe`
75
+ (the desktop shell) from here, and the backend comes from PyPI.
76
+ files: Yumii.exe
@@ -0,0 +1,37 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ .env
12
+
13
+ Trash/
14
+ src/yumii/Yumii_Avatar/
15
+ src/yumii/webui/test.html
16
+
17
+ # Old docs backup
18
+ docs-old/
19
+
20
+ # Documentation Journey
21
+ docs/thought_process.md
22
+
23
+ # Experiments and temporary assets
24
+ Experiments/
25
+ *.wav
26
+
27
+ # Assets — user-provided Live2D models live in ~/.yumii/avatar/, not here
28
+ assets/avatar/
29
+
30
+ # IDE / OS clutter
31
+ .idea/
32
+ .vscode/
33
+ .DS_Store
34
+ Thumbs.db
35
+
36
+ # Staged model files for the installer (fetched at build time)
37
+ packaging/build-models/
@@ -0,0 +1 @@
1
+ 3.12