openbase-coder 0.1.2__tar.gz → 0.1.3__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.
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/PKG-INFO +33 -21
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/README.md +32 -20
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/_version.py +2 -2
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/node.py +22 -1
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/setup.py +24 -1
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/asgi.py +4 -4
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/authentication.py +2 -1
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/livekit.py +13 -14
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/apps.py +0 -2
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/middleware.py +1 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/serializers.py +0 -1
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/boilersync.py +0 -1
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/installation.py +0 -1
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/.gitignore +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/LICENSE +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/__main__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cartesia_voice_catalog.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/auth.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/boilersync.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/bootstrap.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/claude_chrome.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/codex_sync.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/computer_use.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/doctor.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/local_server.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/plugins.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/restart.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/routines.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/server.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/services.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/super_agent_name.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/user.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli/utils.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/cli_helpers.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/jwt_validation.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/proxy.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/serializers.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/settings.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/token_manager.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/urls.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/viewsets.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/config/wsgi.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/dispatcher_config.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/entrypoint/manage.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/errors.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/codex_app_client.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/codex_thread_state.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/codex_transport.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/codex_turns.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/speech_formatter.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/speech_replacements.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_announcer.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_start_announcer.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_voice_history.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_voice_route.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/logging.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/mcp/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/mcp/apps.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/mcp/mcp.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/mcp/models.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/mcp/projects.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/mcp/session_manager.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/mcp/thread_import.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/multi_config.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/agents_md.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/approvals.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/auth.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/brain_readiness.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/common.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/consumers.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/diagnostics.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/livekit.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/migrations/0001_initial.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/migrations/0002_remove_cron_models.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/migrations/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/models.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/plugins_tools.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/projects.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/reports.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/routines.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/routing.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/services_views.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/skills.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/thread_cache.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/thread_metadata.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/threads.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/urls.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/views.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/paths.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/api.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/console.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/install.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/manager.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/models.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/skills.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/sources.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/spec.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/plugins/store.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/__init__.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/console_settings.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/definitions.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/launchctl_tools.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/launchd.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/openbase_services.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/registry.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/restart.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/tailnet_devices.py +1 -1
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/uv_tools.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/voice_warning.py +0 -0
- {openbase_coder-0.1.2 → openbase_coder-0.1.3}/pyproject.toml +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openbase-coder
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: OpenBase Coder CLI with embedded server
|
|
5
5
|
Project-URL: Repository, https://github.com/openbase-community/openbase-coder
|
|
6
6
|
Project-URL: Issues, https://github.com/openbase-community/openbase-coder/issues
|
|
@@ -87,25 +87,35 @@ runtime.
|
|
|
87
87
|
- macOS for full setup and launchd service management
|
|
88
88
|
- Python 3.13+
|
|
89
89
|
- Git
|
|
90
|
-
- `uv` recommended
|
|
90
|
+
- `uv` for the recommended install/setup flow and local development
|
|
91
91
|
- Node package tooling for the bundled console build
|
|
92
92
|
- `livekit-server` on `PATH` for voice services
|
|
93
93
|
|
|
94
|
-
##
|
|
94
|
+
## Quick Start
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
Recommended one-line setup with `uvx`:
|
|
97
97
|
|
|
98
98
|
```bash
|
|
99
|
-
|
|
99
|
+
uvx --python 3.13 openbase-coder setup
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
This runs the latest published `openbase-coder` package in an isolated `uv`
|
|
103
|
+
tool environment and starts the normal first-time setup flow.
|
|
104
|
+
|
|
105
|
+
For a persistent command on your `PATH` after setup, install with `uv tool`:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
uv tool install --python 3.13 openbase-coder
|
|
109
|
+
openbase-coder setup
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
`pipx` is also supported when you already manage Python tools that way:
|
|
103
113
|
|
|
104
114
|
```bash
|
|
105
|
-
pipx install openbase-coder
|
|
115
|
+
pipx install --python python3.13 openbase-coder
|
|
106
116
|
```
|
|
107
117
|
|
|
108
|
-
Verify
|
|
118
|
+
Verify a persistent install:
|
|
109
119
|
|
|
110
120
|
```bash
|
|
111
121
|
openbase-coder --version
|
|
@@ -113,7 +123,7 @@ openbase-coder --version
|
|
|
113
123
|
|
|
114
124
|
## First-Time Setup
|
|
115
125
|
|
|
116
|
-
|
|
126
|
+
If you already installed the persistent `openbase-coder` command, run:
|
|
117
127
|
|
|
118
128
|
```bash
|
|
119
129
|
openbase-coder setup
|
|
@@ -127,8 +137,8 @@ used by voice sessions.
|
|
|
127
137
|
After setup, check the local runtime:
|
|
128
138
|
|
|
129
139
|
```bash
|
|
130
|
-
openbase-coder doctor
|
|
131
|
-
openbase-coder services status
|
|
140
|
+
uvx --python 3.13 openbase-coder doctor
|
|
141
|
+
uvx --python 3.13 openbase-coder services status
|
|
132
142
|
```
|
|
133
143
|
|
|
134
144
|
## Run The Server
|
|
@@ -136,28 +146,30 @@ openbase-coder services status
|
|
|
136
146
|
For foreground development:
|
|
137
147
|
|
|
138
148
|
```bash
|
|
139
|
-
openbase-coder server --host 0.0.0.0 --port 7999
|
|
149
|
+
uvx --python 3.13 openbase-coder server --host 0.0.0.0 --port 7999
|
|
140
150
|
```
|
|
141
151
|
|
|
142
152
|
For normal macOS background operation:
|
|
143
153
|
|
|
144
154
|
```bash
|
|
145
|
-
openbase-coder services start
|
|
146
|
-
openbase-coder services status
|
|
155
|
+
uvx --python 3.13 openbase-coder services start
|
|
156
|
+
uvx --python 3.13 openbase-coder services status
|
|
147
157
|
```
|
|
148
158
|
|
|
149
159
|
## Common Commands
|
|
150
160
|
|
|
151
161
|
```bash
|
|
152
|
-
openbase-coder setup
|
|
153
|
-
openbase-coder doctor
|
|
154
|
-
openbase-coder login
|
|
155
|
-
openbase-coder services status
|
|
156
|
-
openbase-coder services logs django-cli
|
|
157
|
-
openbase-coder plugins list
|
|
158
|
-
openbase-coder bootstrap --help
|
|
162
|
+
uvx --python 3.13 openbase-coder setup
|
|
163
|
+
uvx --python 3.13 openbase-coder doctor
|
|
164
|
+
uvx --python 3.13 openbase-coder login
|
|
165
|
+
uvx --python 3.13 openbase-coder services status
|
|
166
|
+
uvx --python 3.13 openbase-coder services logs django-cli
|
|
167
|
+
uvx --python 3.13 openbase-coder plugins list
|
|
168
|
+
uvx --python 3.13 openbase-coder bootstrap --help
|
|
159
169
|
```
|
|
160
170
|
|
|
171
|
+
If you installed with `uv tool`, omit `uvx --python 3.13` from those commands.
|
|
172
|
+
|
|
161
173
|
## Documentation
|
|
162
174
|
|
|
163
175
|
- [Getting Started](docs/getting-started.md)
|
|
@@ -27,25 +27,35 @@ runtime.
|
|
|
27
27
|
- macOS for full setup and launchd service management
|
|
28
28
|
- Python 3.13+
|
|
29
29
|
- Git
|
|
30
|
-
- `uv` recommended
|
|
30
|
+
- `uv` for the recommended install/setup flow and local development
|
|
31
31
|
- Node package tooling for the bundled console build
|
|
32
32
|
- `livekit-server` on `PATH` for voice services
|
|
33
33
|
|
|
34
|
-
##
|
|
34
|
+
## Quick Start
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
Recommended one-line setup with `uvx`:
|
|
37
37
|
|
|
38
38
|
```bash
|
|
39
|
-
|
|
39
|
+
uvx --python 3.13 openbase-coder setup
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
This runs the latest published `openbase-coder` package in an isolated `uv`
|
|
43
|
+
tool environment and starts the normal first-time setup flow.
|
|
44
|
+
|
|
45
|
+
For a persistent command on your `PATH` after setup, install with `uv tool`:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
uv tool install --python 3.13 openbase-coder
|
|
49
|
+
openbase-coder setup
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`pipx` is also supported when you already manage Python tools that way:
|
|
43
53
|
|
|
44
54
|
```bash
|
|
45
|
-
pipx install openbase-coder
|
|
55
|
+
pipx install --python python3.13 openbase-coder
|
|
46
56
|
```
|
|
47
57
|
|
|
48
|
-
Verify
|
|
58
|
+
Verify a persistent install:
|
|
49
59
|
|
|
50
60
|
```bash
|
|
51
61
|
openbase-coder --version
|
|
@@ -53,7 +63,7 @@ openbase-coder --version
|
|
|
53
63
|
|
|
54
64
|
## First-Time Setup
|
|
55
65
|
|
|
56
|
-
|
|
66
|
+
If you already installed the persistent `openbase-coder` command, run:
|
|
57
67
|
|
|
58
68
|
```bash
|
|
59
69
|
openbase-coder setup
|
|
@@ -67,8 +77,8 @@ used by voice sessions.
|
|
|
67
77
|
After setup, check the local runtime:
|
|
68
78
|
|
|
69
79
|
```bash
|
|
70
|
-
openbase-coder doctor
|
|
71
|
-
openbase-coder services status
|
|
80
|
+
uvx --python 3.13 openbase-coder doctor
|
|
81
|
+
uvx --python 3.13 openbase-coder services status
|
|
72
82
|
```
|
|
73
83
|
|
|
74
84
|
## Run The Server
|
|
@@ -76,28 +86,30 @@ openbase-coder services status
|
|
|
76
86
|
For foreground development:
|
|
77
87
|
|
|
78
88
|
```bash
|
|
79
|
-
openbase-coder server --host 0.0.0.0 --port 7999
|
|
89
|
+
uvx --python 3.13 openbase-coder server --host 0.0.0.0 --port 7999
|
|
80
90
|
```
|
|
81
91
|
|
|
82
92
|
For normal macOS background operation:
|
|
83
93
|
|
|
84
94
|
```bash
|
|
85
|
-
openbase-coder services start
|
|
86
|
-
openbase-coder services status
|
|
95
|
+
uvx --python 3.13 openbase-coder services start
|
|
96
|
+
uvx --python 3.13 openbase-coder services status
|
|
87
97
|
```
|
|
88
98
|
|
|
89
99
|
## Common Commands
|
|
90
100
|
|
|
91
101
|
```bash
|
|
92
|
-
openbase-coder setup
|
|
93
|
-
openbase-coder doctor
|
|
94
|
-
openbase-coder login
|
|
95
|
-
openbase-coder services status
|
|
96
|
-
openbase-coder services logs django-cli
|
|
97
|
-
openbase-coder plugins list
|
|
98
|
-
openbase-coder bootstrap --help
|
|
102
|
+
uvx --python 3.13 openbase-coder setup
|
|
103
|
+
uvx --python 3.13 openbase-coder doctor
|
|
104
|
+
uvx --python 3.13 openbase-coder login
|
|
105
|
+
uvx --python 3.13 openbase-coder services status
|
|
106
|
+
uvx --python 3.13 openbase-coder services logs django-cli
|
|
107
|
+
uvx --python 3.13 openbase-coder plugins list
|
|
108
|
+
uvx --python 3.13 openbase-coder bootstrap --help
|
|
99
109
|
```
|
|
100
110
|
|
|
111
|
+
If you installed with `uv tool`, omit `uvx --python 3.13` from those commands.
|
|
112
|
+
|
|
101
113
|
## Documentation
|
|
102
114
|
|
|
103
115
|
- [Getting Started](docs/getting-started.md)
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.1.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
21
|
+
__version__ = version = '0.1.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 1, 3)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -16,8 +16,13 @@ def run_workspace_package_command(workspace_dir: Path, package_dir: Path, *args:
|
|
|
16
16
|
return False
|
|
17
17
|
|
|
18
18
|
executable, command_prefix = package_manager
|
|
19
|
+
command_args = _normalize_package_manager_args(
|
|
20
|
+
executable,
|
|
21
|
+
workspace_dir,
|
|
22
|
+
args,
|
|
23
|
+
)
|
|
19
24
|
subprocess.run(
|
|
20
|
-
[executable, *command_prefix, *
|
|
25
|
+
[executable, *command_prefix, *command_args],
|
|
21
26
|
cwd=str(package_dir),
|
|
22
27
|
check=True,
|
|
23
28
|
)
|
|
@@ -81,3 +86,19 @@ def _which_node_binary(name: str) -> str | None:
|
|
|
81
86
|
return str(candidate)
|
|
82
87
|
|
|
83
88
|
return None
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def _normalize_package_manager_args(
|
|
92
|
+
executable: str,
|
|
93
|
+
workspace_dir: Path,
|
|
94
|
+
args: tuple[str, ...],
|
|
95
|
+
) -> tuple[str, ...]:
|
|
96
|
+
"""Keep managed workspace installs reproducible when using pnpm."""
|
|
97
|
+
if (
|
|
98
|
+
Path(executable).name == "pnpm"
|
|
99
|
+
and args == ("install",)
|
|
100
|
+
and (workspace_dir / "pnpm-lock.yaml").is_file()
|
|
101
|
+
):
|
|
102
|
+
return ("install", "--frozen-lockfile")
|
|
103
|
+
|
|
104
|
+
return args
|
|
@@ -141,7 +141,7 @@ def _clone_workspace(workspace_dir: str) -> None:
|
|
|
141
141
|
ws = Path(workspace_dir)
|
|
142
142
|
if ws.exists() and (ws / ".git").is_dir():
|
|
143
143
|
click.echo(f"Workspace already exists at {ws}, pulling latest...")
|
|
144
|
-
|
|
144
|
+
_update_existing_workspace(ws)
|
|
145
145
|
_multi_sync(ws)
|
|
146
146
|
return
|
|
147
147
|
|
|
@@ -153,6 +153,29 @@ def _clone_workspace(workspace_dir: str) -> None:
|
|
|
153
153
|
_multi_sync(ws)
|
|
154
154
|
|
|
155
155
|
|
|
156
|
+
def _update_existing_workspace(ws: Path) -> None:
|
|
157
|
+
if ws.resolve() == DEFAULT_WORKSPACE_DIR.resolve():
|
|
158
|
+
dirty = subprocess.run(
|
|
159
|
+
["git", "-C", str(ws), "status", "--porcelain"],
|
|
160
|
+
check=True,
|
|
161
|
+
capture_output=True,
|
|
162
|
+
text=True,
|
|
163
|
+
).stdout.strip()
|
|
164
|
+
if dirty:
|
|
165
|
+
click.echo(
|
|
166
|
+
"Resetting managed install workspace before update; "
|
|
167
|
+
"local generated changes are discarded."
|
|
168
|
+
)
|
|
169
|
+
subprocess.run(["git", "-C", str(ws), "fetch", "origin", "main"], check=True)
|
|
170
|
+
subprocess.run(
|
|
171
|
+
["git", "-C", str(ws), "reset", "--hard", "origin/main"],
|
|
172
|
+
check=True,
|
|
173
|
+
)
|
|
174
|
+
return
|
|
175
|
+
|
|
176
|
+
subprocess.run(["git", "-C", str(ws), "pull", "--ff-only"], check=True)
|
|
177
|
+
|
|
178
|
+
|
|
156
179
|
def _multi_sync(ws_path: Path) -> None:
|
|
157
180
|
click.echo(f"Running multi sync --install-set {WORKSPACE_INSTALL_SET}...")
|
|
158
181
|
sync_workspace(ws_path, install_set=WORKSPACE_INSTALL_SET)
|
|
@@ -18,11 +18,11 @@ django_asgi_app = get_asgi_application()
|
|
|
18
18
|
|
|
19
19
|
from channels.routing import ProtocolTypeRouter, URLRouter # noqa: E402
|
|
20
20
|
|
|
21
|
-
from openbase_coder_cli.openbase_coder_cli_app.middleware import (
|
|
22
|
-
TokenAuthMiddleware,
|
|
21
|
+
from openbase_coder_cli.openbase_coder_cli_app.middleware import ( # noqa: E402
|
|
22
|
+
TokenAuthMiddleware,
|
|
23
23
|
)
|
|
24
|
-
from openbase_coder_cli.openbase_coder_cli_app.routing import (
|
|
25
|
-
websocket_urlpatterns,
|
|
24
|
+
from openbase_coder_cli.openbase_coder_cli_app.routing import ( # noqa: E402
|
|
25
|
+
websocket_urlpatterns,
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
_inner = ProtocolTypeRouter(
|
|
@@ -7,9 +7,10 @@ import logging
|
|
|
7
7
|
import httpx
|
|
8
8
|
from django.conf import settings
|
|
9
9
|
from django.contrib.auth import get_user_model
|
|
10
|
-
from openbase_coder_cli.config.jwt_validation import InvalidTokenError, JWKSValidator
|
|
11
10
|
from rest_framework import authentication, exceptions
|
|
12
11
|
|
|
12
|
+
from openbase_coder_cli.config.jwt_validation import InvalidTokenError, JWKSValidator
|
|
13
|
+
|
|
13
14
|
logger = logging.getLogger(__name__)
|
|
14
15
|
|
|
15
16
|
_validator: JWKSValidator | None = None
|
|
@@ -1688,20 +1688,19 @@ class SpeechFormattingSynthesizeStream:
|
|
|
1688
1688
|
if self._buffer:
|
|
1689
1689
|
spoken_text = format_for_speech(self._buffer)
|
|
1690
1690
|
final_text = spoken_text or "Technical output omitted, shown on screen."
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
)
|
|
1691
|
+
logger.info(
|
|
1692
|
+
"dispatch_timing stage=tts_stream_flush role=%s voice_id=%s "
|
|
1693
|
+
"voice_name=%s flush_count=%d original_len=%d text_len=%d "
|
|
1694
|
+
"text_hash=%s text_excerpt=%r",
|
|
1695
|
+
self._role,
|
|
1696
|
+
self._voice_id or "",
|
|
1697
|
+
self._voice_name or "",
|
|
1698
|
+
self._flush_count,
|
|
1699
|
+
len(self._buffer),
|
|
1700
|
+
len(final_text),
|
|
1701
|
+
hashlib.sha256(final_text.encode("utf-8")).hexdigest()[:12],
|
|
1702
|
+
final_text[:160],
|
|
1703
|
+
)
|
|
1705
1704
|
self._stream.push_text(final_text)
|
|
1706
1705
|
self._buffer = ""
|
|
1707
1706
|
elif LIVEKIT_VERBOSE_LOGGING:
|
|
@@ -8,6 +8,7 @@ from urllib.parse import parse_qs
|
|
|
8
8
|
import httpx
|
|
9
9
|
from channels.middleware import BaseMiddleware
|
|
10
10
|
from django.conf import settings
|
|
11
|
+
|
|
11
12
|
from openbase_coder_cli.config.jwt_validation import InvalidTokenError, JWKSValidator
|
|
12
13
|
|
|
13
14
|
logger = logging.getLogger(__name__)
|
|
@@ -6,7 +6,6 @@ Add your DRF serializers here.
|
|
|
6
6
|
|
|
7
7
|
from __future__ import annotations
|
|
8
8
|
|
|
9
|
-
from openbase_coder_cli.config.serializers import TimestampedModelSerializer
|
|
10
9
|
|
|
11
10
|
# Example serializer - replace with your own serializers
|
|
12
11
|
# from openbase_coder_cli.openbase_coder_cli_app.models import Item
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/codex_app_client.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/codex_thread_state.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/codex_transport.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/codex_turns.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/livekit_agent/speech_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/__init__.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/agents_md.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/approvals.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/auth.py
RENAMED
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/common.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/consumers.py
RENAMED
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/livekit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/models.py
RENAMED
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/projects.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/reports.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/routines.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/routing.py
RENAMED
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/skills.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/threads.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/urls.py
RENAMED
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/openbase_coder_cli_app/views.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/console_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/launchctl_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{openbase_coder-0.1.2 → openbase_coder-0.1.3}/openbase_coder_cli/services/openbase_services.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -95,10 +95,10 @@ version-file = "openbase_coder_cli/_version.py"
|
|
|
95
95
|
|
|
96
96
|
[tool.ruff]
|
|
97
97
|
target-version = "py313"
|
|
98
|
-
select = ["E", "F", "I", "B", "W", "C90"]
|
|
99
|
-
ignore = ["C901", "E501", "F821"]
|
|
100
98
|
|
|
101
99
|
[tool.ruff.lint]
|
|
100
|
+
select = ["E", "F", "I", "B", "W", "C90"]
|
|
101
|
+
ignore = ["C901", "E501", "F821"]
|
|
102
102
|
fixable = ["ALL"]
|
|
103
103
|
unfixable = []
|
|
104
104
|
|