stravinsky 0.2.24__tar.gz → 0.2.37__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.
Potentially problematic release.
This version of stravinsky might be problematic. Click here for more details.
- {stravinsky-0.2.24 → stravinsky-0.2.37}/.github/workflows/publish.yml +3 -4
- {stravinsky-0.2.24 → stravinsky-0.2.37}/CLAUDE.md +5 -0
- stravinsky-0.2.37/INSTALL.md +484 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/PKG-INFO +6 -12
- {stravinsky-0.2.24 → stravinsky-0.2.37}/README.md +5 -11
- stravinsky-0.2.37/mcp_bridge/__init__.py +1 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/auth/cli.py +84 -46
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/auth/oauth.py +88 -63
- stravinsky-0.2.37/mcp_bridge/hooks/__init__.py +49 -0
- stravinsky-0.2.37/mcp_bridge/hooks/agent_reminder.py +61 -0
- stravinsky-0.2.37/mcp_bridge/hooks/auto_slash_command.py +186 -0
- stravinsky-0.2.37/mcp_bridge/hooks/comment_checker.py +136 -0
- stravinsky-0.2.37/mcp_bridge/hooks/context_monitor.py +58 -0
- stravinsky-0.2.37/mcp_bridge/hooks/empty_message_sanitizer.py +240 -0
- stravinsky-0.2.37/mcp_bridge/hooks/keyword_detector.py +122 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/hooks/manager.py +27 -8
- stravinsky-0.2.37/mcp_bridge/hooks/preemptive_compaction.py +157 -0
- stravinsky-0.2.37/mcp_bridge/hooks/session_recovery.py +186 -0
- stravinsky-0.2.37/mcp_bridge/hooks/todo_enforcer.py +75 -0
- stravinsky-0.2.37/mcp_bridge/native_hooks/stravinsky_mode.py +109 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/prompts/delphi.py +3 -2
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/prompts/dewey.py +105 -21
- stravinsky-0.2.37/mcp_bridge/prompts/stravinsky.py +660 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/server.py +224 -54
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/agent_manager.py +198 -155
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/model_invoke.py +365 -147
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/skill_loader.py +51 -47
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/task_runner.py +53 -35
- stravinsky-0.2.37/mcp_bridge/tools/templates.py +175 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/pyproject.toml +1 -1
- {stravinsky-0.2.24 → stravinsky-0.2.37}/uv.lock +1 -1
- stravinsky-0.2.24/.stravinsky/agents/agent_8e68511c.out +0 -1
- stravinsky-0.2.24/.stravinsky/agents/agent_9b9fd4f0.log +0 -0
- stravinsky-0.2.24/.stravinsky/agents/agent_9b9fd4f0.out +0 -1
- stravinsky-0.2.24/.stravinsky/agents/agent_e76617db.log +0 -0
- stravinsky-0.2.24/.stravinsky/agents/agent_e76617db.out +0 -1
- stravinsky-0.2.24/.stravinsky/agents.json +0 -34
- stravinsky-0.2.24/mcp_bridge/__init__.py +0 -1
- stravinsky-0.2.24/mcp_bridge/hooks/__init__.py +0 -28
- stravinsky-0.2.24/mcp_bridge/prompts/stravinsky.py +0 -345
- stravinsky-0.2.24/mcp_bridge/tools/templates.py +0 -94
- {stravinsky-0.2.24 → stravinsky-0.2.37}/.gitignore +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/.mcp.json +0 -0
- /stravinsky-0.2.24/.stravinsky/agents/agent_8e68511c.log → /stravinsky-0.2.37/.stravinsky/agents.json +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/assets/logo.png +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/assets/logo.png.txt +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/assets/logo_small.png +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/error.log +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/install_native_hooks.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/auth/__init__.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/auth/openai_oauth.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/auth/token_store.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/config/__init__.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/config/hooks.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/hooks/budget_optimizer.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/hooks/compaction.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/hooks/directory_context.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/hooks/edit_recovery.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/hooks/truncator.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/native_hooks/context.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/native_hooks/edit_recovery.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/native_hooks/truncator.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/prompts/__init__.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/prompts/document_writer.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/prompts/explore.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/prompts/frontend.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/prompts/multimodal.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/server_tools.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/__init__.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/background_tasks.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/code_search.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/continuous_loop.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/init.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/lsp/__init__.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/lsp/tools.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/project_context.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/tools/session_manager.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/mcp_bridge/utils/__init__.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/repro_spawn.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/stdout_handshake_auditor.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/tests/manual_test_hooks.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/tests/test_hooks.py +0 -0
- {stravinsky-0.2.24 → stravinsky-0.2.37}/verify_tools.py +0 -0
|
@@ -10,7 +10,6 @@ jobs:
|
|
|
10
10
|
build-and-publish:
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
12
|
permissions:
|
|
13
|
-
id-token: write # Required for trusted publishing
|
|
14
13
|
contents: read
|
|
15
14
|
|
|
16
15
|
steps:
|
|
@@ -33,6 +32,6 @@ jobs:
|
|
|
33
32
|
- name: Publish to PyPI
|
|
34
33
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
35
34
|
with:
|
|
36
|
-
#
|
|
37
|
-
|
|
38
|
-
password: ${{ secrets.
|
|
35
|
+
# Disable OIDC trusted publishing - use API token instead
|
|
36
|
+
attestations: false
|
|
37
|
+
password: ${{ secrets.PYPY_API_TOKEN }}
|
|
@@ -43,6 +43,11 @@ claude mcp add stravinsky -- stravinsky
|
|
|
43
43
|
|
|
44
44
|
### Slash Commands (Skills)
|
|
45
45
|
|
|
46
|
+
Skills are discovered from:
|
|
47
|
+
- Project-local: `.claude/commands/**/*.md` (recursive)
|
|
48
|
+
- User-global: `~/.claude/commands/**/*.md` (recursive)
|
|
49
|
+
|
|
50
|
+
Common commands:
|
|
46
51
|
- `/stravinsky`: Task Orchestrator & Planner
|
|
47
52
|
- `/delphi`: Architecture & Debug Advisor
|
|
48
53
|
- `/dewey`: Documentation & Research
|
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
# Stravinsky Installation & Removal Guide
|
|
2
|
+
|
|
3
|
+
Complete installation, configuration, and removal instructions for Stravinsky MCP Bridge.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Installation](#installation)
|
|
10
|
+
- [Method 1: One-Shot with uvx (Recommended)](#method-1-one-shot-with-uvx-recommended)
|
|
11
|
+
- [Method 2: Global Installation with uv](#method-2-global-installation-with-uv)
|
|
12
|
+
- [Method 3: From Source (Development)](#method-3-from-source-development)
|
|
13
|
+
- [Authentication Setup](#authentication-setup)
|
|
14
|
+
- [Project Initialization](#project-initialization)
|
|
15
|
+
- [Verification](#verification)
|
|
16
|
+
- [Removal](#removal)
|
|
17
|
+
- [Complete Uninstall](#complete-uninstall)
|
|
18
|
+
- [Remove from Specific Project](#remove-from-specific-project)
|
|
19
|
+
- [Remove Authentication Tokens Only](#remove-authentication-tokens-only)
|
|
20
|
+
- [Troubleshooting](#troubleshooting)
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
### Method 1: One-Shot with uvx (Recommended)
|
|
27
|
+
|
|
28
|
+
**Zero installation needed!** Claude Code will automatically download and run Stravinsky on demand.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Add to Claude Code MCP configuration
|
|
32
|
+
claude mcp add stravinsky -- uvx stravinsky
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Pros:**
|
|
36
|
+
- No manual installation
|
|
37
|
+
- Always uses latest version
|
|
38
|
+
- Automatic dependency management
|
|
39
|
+
- Minimal disk usage
|
|
40
|
+
|
|
41
|
+
**Cons:**
|
|
42
|
+
- Slightly slower first startup (downloads package)
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
### Method 2: Global Installation with uv
|
|
47
|
+
|
|
48
|
+
Install Stravinsky globally for faster startup times.
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Install globally
|
|
52
|
+
uv tool install stravinsky
|
|
53
|
+
|
|
54
|
+
# Add to Claude Code
|
|
55
|
+
claude mcp add stravinsky -- stravinsky
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Pros:**
|
|
59
|
+
- Faster startup (pre-installed)
|
|
60
|
+
- Offline usage after installation
|
|
61
|
+
- Version pinning
|
|
62
|
+
|
|
63
|
+
**Cons:**
|
|
64
|
+
- Requires manual updates: `uv tool install --upgrade stravinsky`
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
### Method 3: From Source (Development)
|
|
69
|
+
|
|
70
|
+
For contributors or testing unreleased features.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
# Clone repository
|
|
74
|
+
git clone https://github.com/GratefulDave/stravinsky.git
|
|
75
|
+
cd stravinsky
|
|
76
|
+
|
|
77
|
+
# Install in development mode
|
|
78
|
+
uv tool install --editable .
|
|
79
|
+
|
|
80
|
+
# Add to Claude Code
|
|
81
|
+
claude mcp add stravinsky -- stravinsky
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Authentication Setup
|
|
87
|
+
|
|
88
|
+
Stravinsky supports **Google (Gemini)** and **OpenAI (ChatGPT)** authentication.
|
|
89
|
+
|
|
90
|
+
### Authenticate with Google (Gemini)
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
stravinsky-auth login gemini
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Opens browser for OAuth authentication. Credentials stored securely in system keyring.
|
|
97
|
+
|
|
98
|
+
### Authenticate with OpenAI (ChatGPT Plus/Pro)
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
stravinsky-auth login openai
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Requirements:**
|
|
105
|
+
- ChatGPT Plus or Pro subscription
|
|
106
|
+
- Port 1455 available (used by OAuth callback)
|
|
107
|
+
|
|
108
|
+
### Check Authentication Status
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
stravinsky-auth status
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Example output:
|
|
115
|
+
```
|
|
116
|
+
Authentication Status:
|
|
117
|
+
|
|
118
|
+
Gemini: ✓ Authenticated
|
|
119
|
+
Expires in: 2h 30m
|
|
120
|
+
Openai: ✗ Not authenticated
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Refresh Tokens
|
|
124
|
+
|
|
125
|
+
Tokens auto-refresh, but you can manually refresh:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
stravinsky-auth refresh gemini
|
|
129
|
+
stravinsky-auth refresh openai
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Project Initialization
|
|
135
|
+
|
|
136
|
+
Bootstrap any repository for Stravinsky usage:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
# Navigate to your project
|
|
140
|
+
cd /path/to/your/project
|
|
141
|
+
|
|
142
|
+
# Initialize Stravinsky
|
|
143
|
+
stravinsky-auth init
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**This creates:**
|
|
147
|
+
|
|
148
|
+
1. **`.claude/commands/`** - Slash commands:
|
|
149
|
+
- `/stravinsky` - Orchestrator
|
|
150
|
+
- `/delphi` - Strategic advisor
|
|
151
|
+
- `/dewey` - Documentation researcher
|
|
152
|
+
- `/context` - Git/rules/todo context
|
|
153
|
+
- `/health` - System health check
|
|
154
|
+
- `/list` - List background agents
|
|
155
|
+
- `/parallel` - Parallel execution
|
|
156
|
+
- `/version` - Version info
|
|
157
|
+
|
|
158
|
+
2. **`CLAUDE.md`** - Updated with Stravinsky usage instructions
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Verification
|
|
163
|
+
|
|
164
|
+
### 1. Check Installation
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# Check if installed
|
|
168
|
+
uv tool list | grep stravinsky
|
|
169
|
+
|
|
170
|
+
# Check version
|
|
171
|
+
stravinsky --version
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### 2. Verify MCP Registration
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# List MCP servers in Claude Code
|
|
178
|
+
claude mcp list
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Should show `stravinsky` in the list.
|
|
182
|
+
|
|
183
|
+
### 3. Test Authentication
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
stravinsky-auth status
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### 4. Test in Claude Code
|
|
190
|
+
|
|
191
|
+
Start a conversation in Claude Code and try:
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
Can you list the Stravinsky tools available?
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Claude should respond with the list of 31 MCP tools.
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Removal
|
|
202
|
+
|
|
203
|
+
### Complete Uninstall
|
|
204
|
+
|
|
205
|
+
Remove Stravinsky entirely from your system.
|
|
206
|
+
|
|
207
|
+
#### Step 1: Remove from Claude Code
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
claude mcp remove stravinsky
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
#### Step 2: Uninstall Package
|
|
214
|
+
|
|
215
|
+
**If installed with uvx:**
|
|
216
|
+
```bash
|
|
217
|
+
# Nothing to uninstall - uvx downloads on-demand
|
|
218
|
+
# Removal from Claude Code is sufficient
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**If installed globally with uv:**
|
|
222
|
+
```bash
|
|
223
|
+
uv tool uninstall stravinsky
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
**If installed from source:**
|
|
227
|
+
```bash
|
|
228
|
+
uv tool uninstall stravinsky
|
|
229
|
+
# Optionally delete cloned repository
|
|
230
|
+
rm -rf /path/to/stravinsky
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
#### Step 3: Remove Authentication Tokens
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
# Logout from both providers
|
|
237
|
+
stravinsky-auth logout gemini
|
|
238
|
+
stravinsky-auth logout openai
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
#### Step 4: Remove Project Configurations (Optional)
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# Remove from each project where you ran 'stravinsky-auth init'
|
|
245
|
+
cd /path/to/project
|
|
246
|
+
rm -rf .claude/commands/stravinsky/
|
|
247
|
+
rm -rf .claude/commands/delphi/
|
|
248
|
+
rm -rf .claude/commands/dewey/
|
|
249
|
+
rm -rf .claude/commands/context/
|
|
250
|
+
rm -rf .claude/commands/health/
|
|
251
|
+
rm -rf .claude/commands/list/
|
|
252
|
+
rm -rf .claude/commands/parallel/
|
|
253
|
+
rm -rf .claude/commands/version/
|
|
254
|
+
|
|
255
|
+
# Manually remove Stravinsky sections from CLAUDE.md
|
|
256
|
+
# (Edit file and remove sections added by init)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
#### Step 5: Clean System Keyring (Optional)
|
|
260
|
+
|
|
261
|
+
Tokens are stored in your system keyring. To verify removal:
|
|
262
|
+
|
|
263
|
+
**macOS:**
|
|
264
|
+
```bash
|
|
265
|
+
# Open Keychain Access app
|
|
266
|
+
# Search for "stravinsky"
|
|
267
|
+
# Delete any found entries
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Linux:**
|
|
271
|
+
```bash
|
|
272
|
+
# Using secret-tool (if available)
|
|
273
|
+
secret-tool clear service stravinsky
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**Windows:**
|
|
277
|
+
```powershell
|
|
278
|
+
# Tokens stored in Windows Credential Manager
|
|
279
|
+
# Open: Control Panel → Credential Manager
|
|
280
|
+
# Remove entries containing "stravinsky"
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
### Remove from Specific Project
|
|
286
|
+
|
|
287
|
+
Keep Stravinsky installed but remove from one project.
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
cd /path/to/project
|
|
291
|
+
|
|
292
|
+
# Remove slash commands
|
|
293
|
+
rm -rf .claude/commands/stravinsky/
|
|
294
|
+
rm -rf .claude/commands/delphi/
|
|
295
|
+
rm -rf .claude/commands/dewey/
|
|
296
|
+
rm -rf .claude/commands/context/
|
|
297
|
+
rm -rf .claude/commands/health/
|
|
298
|
+
|
|
299
|
+
# Edit CLAUDE.md manually to remove Stravinsky instructions
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
### Remove Authentication Tokens Only
|
|
305
|
+
|
|
306
|
+
Keep Stravinsky installed but clear credentials.
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
# Remove specific provider
|
|
310
|
+
stravinsky-auth logout gemini
|
|
311
|
+
stravinsky-auth logout openai
|
|
312
|
+
|
|
313
|
+
# Verify removal
|
|
314
|
+
stravinsky-auth status
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
Output should show:
|
|
318
|
+
```
|
|
319
|
+
Authentication Status:
|
|
320
|
+
|
|
321
|
+
Gemini: ✗ Not authenticated
|
|
322
|
+
Openai: ✗ Not authenticated
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## Troubleshooting
|
|
328
|
+
|
|
329
|
+
### "stravinsky: command not found"
|
|
330
|
+
|
|
331
|
+
**Cause:** Stravinsky not installed or not in PATH.
|
|
332
|
+
|
|
333
|
+
**Solution:**
|
|
334
|
+
```bash
|
|
335
|
+
# If using uvx, this is expected (Claude Code handles it)
|
|
336
|
+
# If using uv tool install, ensure ~/.local/bin is in PATH
|
|
337
|
+
export PATH="$HOME/.local/bin:$PATH"
|
|
338
|
+
|
|
339
|
+
# Or reinstall
|
|
340
|
+
uv tool install stravinsky
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### "Port 1455 already in use" (OpenAI login)
|
|
344
|
+
|
|
345
|
+
**Cause:** Codex CLI or another process using port 1455.
|
|
346
|
+
|
|
347
|
+
**Solution:**
|
|
348
|
+
```bash
|
|
349
|
+
# Find process
|
|
350
|
+
lsof -i :1455
|
|
351
|
+
|
|
352
|
+
# Kill Codex CLI if running
|
|
353
|
+
killall codex
|
|
354
|
+
|
|
355
|
+
# Retry login
|
|
356
|
+
stravinsky-auth login openai
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### "OAuth failed" (Gemini/OpenAI)
|
|
360
|
+
|
|
361
|
+
**Cause:** Network issues, invalid credentials, or expired session.
|
|
362
|
+
|
|
363
|
+
**Solution:**
|
|
364
|
+
```bash
|
|
365
|
+
# Clear existing token
|
|
366
|
+
stravinsky-auth logout gemini # or openai
|
|
367
|
+
|
|
368
|
+
# Retry login
|
|
369
|
+
stravinsky-auth login gemini # or openai
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### "MCP server not responding"
|
|
373
|
+
|
|
374
|
+
**Cause:** Stravinsky process crashed or not started.
|
|
375
|
+
|
|
376
|
+
**Solution:**
|
|
377
|
+
```bash
|
|
378
|
+
# Check Claude Code logs
|
|
379
|
+
claude mcp logs stravinsky
|
|
380
|
+
|
|
381
|
+
# Restart Claude Code
|
|
382
|
+
# The MCP server will auto-restart
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### "Token expired" messages
|
|
386
|
+
|
|
387
|
+
**Cause:** Access token expired and auto-refresh failed.
|
|
388
|
+
|
|
389
|
+
**Solution:**
|
|
390
|
+
```bash
|
|
391
|
+
# Manually refresh
|
|
392
|
+
stravinsky-auth refresh gemini # or openai
|
|
393
|
+
|
|
394
|
+
# Or re-login
|
|
395
|
+
stravinsky-auth login gemini # or openai
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### Can't find `.claude/commands/` after init
|
|
399
|
+
|
|
400
|
+
**Cause:** Wrong directory or init failed.
|
|
401
|
+
|
|
402
|
+
**Solution:**
|
|
403
|
+
```bash
|
|
404
|
+
# Ensure you're in project root
|
|
405
|
+
pwd
|
|
406
|
+
|
|
407
|
+
# Re-run init with verbose output
|
|
408
|
+
stravinsky-auth init
|
|
409
|
+
|
|
410
|
+
# Check for error messages
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## Dependencies
|
|
416
|
+
|
|
417
|
+
All dependencies are automatically installed:
|
|
418
|
+
|
|
419
|
+
- `mcp>=1.2.1`
|
|
420
|
+
- `pydantic>=2.0.0`
|
|
421
|
+
- `httpx>=0.24.0`
|
|
422
|
+
- `python-dotenv>=1.0.0`
|
|
423
|
+
- `google-auth-oauthlib>=1.0.0`
|
|
424
|
+
- `google-auth>=2.20.0`
|
|
425
|
+
- `openai>=1.0.0`
|
|
426
|
+
- `cryptography>=41.0.0`
|
|
427
|
+
- `rich>=13.0.0`
|
|
428
|
+
- `aiofiles>=23.1.0`
|
|
429
|
+
- `psutil>=5.9.0`
|
|
430
|
+
- `keyring>=25.7.0`
|
|
431
|
+
- `jedi>=0.19.2`
|
|
432
|
+
- `ruff>=0.14.10`
|
|
433
|
+
- `tenacity>=8.5.0`
|
|
434
|
+
|
|
435
|
+
**You don't need to install anything manually.**
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Getting Help
|
|
440
|
+
|
|
441
|
+
- **Documentation:** [README.md](./README.md)
|
|
442
|
+
- **Issues:** [GitHub Issues](https://github.com/GratefulDave/stravinsky/issues)
|
|
443
|
+
- **Claude Code Docs:** [Claude Code MCP Guide](https://docs.anthropic.com/claude/docs/model-context-protocol)
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
## Quick Reference
|
|
448
|
+
|
|
449
|
+
### Installation
|
|
450
|
+
```bash
|
|
451
|
+
# Recommended: uvx
|
|
452
|
+
claude mcp add stravinsky -- uvx stravinsky
|
|
453
|
+
|
|
454
|
+
# OR: Global install
|
|
455
|
+
uv tool install stravinsky
|
|
456
|
+
claude mcp add stravinsky -- stravinsky
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### Authentication
|
|
460
|
+
```bash
|
|
461
|
+
stravinsky-auth login gemini # Google OAuth
|
|
462
|
+
stravinsky-auth login openai # OpenAI OAuth
|
|
463
|
+
stravinsky-auth status # Check status
|
|
464
|
+
stravinsky-auth logout <provider> # Remove credentials
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
### Project Setup
|
|
468
|
+
```bash
|
|
469
|
+
cd /path/to/project
|
|
470
|
+
stravinsky-auth init # Create slash commands + update CLAUDE.md
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
### Complete Removal
|
|
474
|
+
```bash
|
|
475
|
+
claude mcp remove stravinsky # Remove from Claude Code
|
|
476
|
+
uv tool uninstall stravinsky # Uninstall package
|
|
477
|
+
stravinsky-auth logout gemini # Clear credentials
|
|
478
|
+
stravinsky-auth logout openai
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
---
|
|
482
|
+
|
|
483
|
+
**Last Updated:** v0.2.34
|
|
484
|
+
**License:** MIT
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: stravinsky
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.37
|
|
4
4
|
Summary: MCP Bridge for Claude Code with Multi-Model Support. Install globally: claude mcp add --scope user stravinsky -- uvx stravinsky. Add to CLAUDE.md: See https://pypi.org/project/stravinsky/
|
|
5
5
|
Project-URL: Repository, https://github.com/GratefulDave/stravinsky
|
|
6
6
|
Project-URL: Issues, https://github.com/GratefulDave/stravinsky/issues
|
|
@@ -90,19 +90,13 @@ stravinsky-auth status
|
|
|
90
90
|
# Logout
|
|
91
91
|
stravinsky-auth logout gemini
|
|
92
92
|
|
|
93
|
-
###
|
|
93
|
+
### Slash Commands
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
Slash commands are discovered from:
|
|
96
|
+
- Project-local: `.claude/commands/**/*.md` (recursive)
|
|
97
|
+
- User-global: `~/.claude/commands/**/*.md` (recursive)
|
|
96
98
|
|
|
97
|
-
|
|
98
|
-
# In the root of your project:
|
|
99
|
-
stravinsky-auth init
|
|
100
|
-
````
|
|
101
|
-
|
|
102
|
-
This will:
|
|
103
|
-
|
|
104
|
-
1. Create/Update `CLAUDE.md` with Stravinsky parallel execution rules.
|
|
105
|
-
2. Install standard slash commands into `.claude/commands/stra/`.
|
|
99
|
+
Commands can be organized in subdirectories (e.g., `.claude/commands/strav/stravinsky.md`).
|
|
106
100
|
|
|
107
101
|
````
|
|
108
102
|
|
|
@@ -58,19 +58,13 @@ stravinsky-auth status
|
|
|
58
58
|
# Logout
|
|
59
59
|
stravinsky-auth logout gemini
|
|
60
60
|
|
|
61
|
-
###
|
|
61
|
+
### Slash Commands
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Slash commands are discovered from:
|
|
64
|
+
- Project-local: `.claude/commands/**/*.md` (recursive)
|
|
65
|
+
- User-global: `~/.claude/commands/**/*.md` (recursive)
|
|
64
66
|
|
|
65
|
-
|
|
66
|
-
# In the root of your project:
|
|
67
|
-
stravinsky-auth init
|
|
68
|
-
````
|
|
69
|
-
|
|
70
|
-
This will:
|
|
71
|
-
|
|
72
|
-
1. Create/Update `CLAUDE.md` with Stravinsky parallel execution rules.
|
|
73
|
-
2. Install standard slash commands into `.claude/commands/stra/`.
|
|
67
|
+
Commands can be organized in subdirectories (e.g., `.claude/commands/strav/stravinsky.md`).
|
|
74
68
|
|
|
75
69
|
````
|
|
76
70
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.2.32"
|