stravinsky 0.2.40__py3-none-any.whl → 0.3.4__py3-none-any.whl

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 (56) hide show
  1. mcp_bridge/__init__.py +1 -1
  2. mcp_bridge/auth/token_refresh.py +130 -0
  3. mcp_bridge/cli/__init__.py +6 -0
  4. mcp_bridge/cli/install_hooks.py +1265 -0
  5. mcp_bridge/cli/session_report.py +585 -0
  6. mcp_bridge/hooks/HOOKS_SETTINGS.json +175 -0
  7. mcp_bridge/hooks/README.md +215 -0
  8. mcp_bridge/hooks/__init__.py +119 -43
  9. mcp_bridge/hooks/edit_recovery.py +42 -37
  10. mcp_bridge/hooks/git_noninteractive.py +89 -0
  11. mcp_bridge/hooks/keyword_detector.py +30 -0
  12. mcp_bridge/hooks/manager.py +50 -0
  13. mcp_bridge/hooks/notification_hook.py +103 -0
  14. mcp_bridge/hooks/parallel_enforcer.py +127 -0
  15. mcp_bridge/hooks/parallel_execution.py +111 -0
  16. mcp_bridge/hooks/pre_compact.py +123 -0
  17. mcp_bridge/hooks/preemptive_compaction.py +81 -7
  18. mcp_bridge/hooks/rules_injector.py +507 -0
  19. mcp_bridge/hooks/session_idle.py +116 -0
  20. mcp_bridge/hooks/session_notifier.py +125 -0
  21. mcp_bridge/{native_hooks → hooks}/stravinsky_mode.py +51 -16
  22. mcp_bridge/hooks/subagent_stop.py +98 -0
  23. mcp_bridge/hooks/task_validator.py +73 -0
  24. mcp_bridge/hooks/tmux_manager.py +141 -0
  25. mcp_bridge/hooks/todo_continuation.py +90 -0
  26. mcp_bridge/hooks/todo_delegation.py +88 -0
  27. mcp_bridge/hooks/tool_messaging.py +164 -0
  28. mcp_bridge/hooks/truncator.py +21 -17
  29. mcp_bridge/notifications.py +151 -0
  30. mcp_bridge/prompts/__init__.py +3 -1
  31. mcp_bridge/prompts/dewey.py +30 -20
  32. mcp_bridge/prompts/explore.py +46 -8
  33. mcp_bridge/prompts/multimodal.py +24 -3
  34. mcp_bridge/prompts/planner.py +222 -0
  35. mcp_bridge/prompts/stravinsky.py +107 -28
  36. mcp_bridge/server.py +170 -10
  37. mcp_bridge/server_tools.py +554 -32
  38. mcp_bridge/tools/agent_manager.py +316 -106
  39. mcp_bridge/tools/background_tasks.py +2 -1
  40. mcp_bridge/tools/code_search.py +97 -11
  41. mcp_bridge/tools/lsp/__init__.py +7 -0
  42. mcp_bridge/tools/lsp/manager.py +448 -0
  43. mcp_bridge/tools/lsp/tools.py +637 -150
  44. mcp_bridge/tools/model_invoke.py +270 -47
  45. mcp_bridge/tools/semantic_search.py +2492 -0
  46. mcp_bridge/tools/templates.py +32 -18
  47. stravinsky-0.3.4.dist-info/METADATA +420 -0
  48. stravinsky-0.3.4.dist-info/RECORD +79 -0
  49. stravinsky-0.3.4.dist-info/entry_points.txt +5 -0
  50. mcp_bridge/native_hooks/edit_recovery.py +0 -46
  51. mcp_bridge/native_hooks/truncator.py +0 -23
  52. stravinsky-0.2.40.dist-info/METADATA +0 -204
  53. stravinsky-0.2.40.dist-info/RECORD +0 -57
  54. stravinsky-0.2.40.dist-info/entry_points.txt +0 -3
  55. /mcp_bridge/{native_hooks → hooks}/context.py +0 -0
  56. {stravinsky-0.2.40.dist-info → stravinsky-0.3.4.dist-info}/WHEEL +0 -0
@@ -1,204 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: stravinsky
3
- Version: 0.2.40
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
- Project-URL: Repository, https://github.com/GratefulDave/stravinsky
6
- Project-URL: Issues, https://github.com/GratefulDave/stravinsky/issues
7
- Author: Stravinsky Team
8
- License: MIT
9
- Keywords: claude,gemini,mcp,oauth,openai
10
- Requires-Python: >=3.11
11
- Requires-Dist: aiofiles>=23.1.0
12
- Requires-Dist: cryptography>=41.0.0
13
- Requires-Dist: google-auth-oauthlib>=1.0.0
14
- Requires-Dist: google-auth>=2.20.0
15
- Requires-Dist: httpx>=0.24.0
16
- Requires-Dist: jedi>=0.19.2
17
- Requires-Dist: keyring>=25.7.0
18
- Requires-Dist: mcp>=1.2.1
19
- Requires-Dist: openai>=1.0.0
20
- Requires-Dist: psutil>=5.9.0
21
- Requires-Dist: pydantic>=2.0.0
22
- Requires-Dist: python-dotenv>=1.0.0
23
- Requires-Dist: rich>=13.0.0
24
- Requires-Dist: ruff>=0.14.10
25
- Requires-Dist: tenacity>=8.5.0
26
- Provides-Extra: dev
27
- Requires-Dist: mypy>=1.10.0; extra == 'dev'
28
- Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
29
- Requires-Dist: pytest>=8.0.0; extra == 'dev'
30
- Requires-Dist: ruff>=0.4.0; extra == 'dev'
31
- Description-Content-Type: text/markdown
32
-
33
- <div align="center">
34
- <img src="https://raw.githubusercontent.com/GratefulDave/stravinsky/main/assets/logo.png" width="300" alt="Stravinsky Logo">
35
- <h1>Stravinsky</h1>
36
- <p><strong>The Avant-Garde MCP Bridge for Claude Code</strong></p>
37
- <p><em>Movement • Rhythm • Precision</em></p>
38
- </div>
39
-
40
- ---
41
-
42
- ## What is Stravinsky?
43
-
44
- **Multi-model AI orchestration** with OAuth authentication for Claude Code.
45
-
46
- ## Features
47
-
48
- - 🔐 **OAuth Authentication** - Secure browser-based auth for Google (Gemini) and OpenAI (ChatGPT)
49
- - 🤖 **Multi-Model Support** - Seamlessly invoke Gemini and GPT models from Claude
50
- - 🛠️ **31 MCP Tools** - Model invocation, code search, LSP integrations, session management, and more
51
- - 🧠 **7 Specialized Agents** - Stravinsky (orchestrator), Delphi (advisor), Dewey (documentation), and more
52
- - 🔄 **Background Tasks** - Spawn parallel agents with full tool access via Claude Code CLI
53
- - 📝 **LSP Integration** - Full Language Server Protocol support for Python (jedi)
54
- - 🔍 **AST-Aware Search** - Structural code search and refactoring with ast-grep
55
-
56
- ## Quick Start
57
-
58
- ### Installation
59
-
60
- **From PyPI (Recommended):**
61
-
62
- ```bash
63
- # One-shot with uvx - no installation needed!
64
- claude mcp add stravinsky -- uvx stravinsky
65
-
66
- # Or install globally first:
67
- uv tool install stravinsky
68
- claude mcp add stravinsky -- stravinsky
69
- ```
70
-
71
- **From Source (for development):**
72
-
73
- ```bash
74
- uv tool install --editable /path/to/stravinsky
75
- claude mcp add stravinsky -- stravinsky
76
- ```
77
-
78
- ### Authentication
79
-
80
- ````bash
81
- # Login to Google (Gemini)
82
- stravinsky-auth login gemini
83
-
84
- # Login to OpenAI (ChatGPT Plus/Pro required)
85
- stravinsky-auth login openai
86
-
87
- # Check status
88
- stravinsky-auth status
89
-
90
- # Logout
91
- stravinsky-auth logout gemini
92
-
93
- ### Slash Commands
94
-
95
- Slash commands are discovered from:
96
- - Project-local: `.claude/commands/**/*.md` (recursive)
97
- - User-global: `~/.claude/commands/**/*.md` (recursive)
98
-
99
- Commands can be organized in subdirectories (e.g., `.claude/commands/strav/stravinsky.md`).
100
-
101
- ````
102
-
103
- ## Add to Your CLAUDE.md
104
-
105
- After installing globally, add this to your project's `CLAUDE.md`:
106
-
107
- ```markdown
108
- ## Stravinsky MCP (Parallel Agents)
109
-
110
- Use Stravinsky MCP tools. **DEFAULT: spawn parallel agents for multi-step tasks.**
111
-
112
- ### Agent Tools
113
-
114
- - `agent_spawn(prompt, agent_type, description)` - Spawn background agent with full tool access
115
- - `agent_output(task_id, block)` - Get results (block=True to wait)
116
- - `agent_progress(task_id)` - Check real-time progress
117
- - `agent_list()` - Overview of all running agents
118
- - `agent_cancel(task_id)` - Stop a running agent
119
-
120
- ### Agent Types
121
-
122
- - `explore` - Codebase search, "where is X?" questions
123
- - `dewey` - Documentation research, implementation examples
124
- - `frontend` - UI/UX work, component design
125
- - `delphi` - Strategic advice, architecture review
126
-
127
- ### Parallel Execution (MANDATORY)
128
-
129
- For ANY task with 2+ independent steps:
130
-
131
- 1. **Immediately use agent_spawn** for each independent component
132
- 2. Fire all agents simultaneously, don't wait
133
- 3. Monitor with agent_progress, collect with agent_output
134
-
135
- ### ULTRATHINK / ULTRAWORK
136
-
137
- - **ULTRATHINK**: Engage exhaustive deep reasoning, multi-dimensional analysis
138
- - **ULTRAWORK**: Maximum parallel execution - spawn agents aggressively for every subtask
139
- ````
140
-
141
- ## Tools (31)
142
-
143
- | Category | Tools |
144
- | ---------------- | ---------------------------------------------------------------------------------- |
145
- | **Model Invoke** | `invoke_gemini`, `invoke_openai`, `get_system_health` |
146
- | **Environment** | `get_project_context`, `task_spawn`, `task_status`, `task_list` |
147
- | **Agents** | `agent_spawn`, `agent_output`, `agent_cancel`, `agent_list`, `agent_progress` |
148
- | **Code Search** | `ast_grep_search`, `ast_grep_replace`, `grep_search`, `glob_files` |
149
- | **LSP** | `lsp_diagnostics`, `lsp_hover`, `lsp_goto_definition`, `lsp_find_references`, etc. |
150
- | **Sessions** | `session_list`, `session_read`, `session_search` |
151
- | **Skills** | `skill_list`, `skill_get` |
152
-
153
- ## Agent Prompts (7)
154
-
155
- | Prompt | Purpose |
156
- | ----------------- | ------------------------------------------------------------- |
157
- | `stravinsky` | Task orchestration, planning, and goal-oriented execution. |
158
- | `delphi` | Strategic technical advisor (GPT-based) for hard debugging. |
159
- | `dewey` | Documentation and multi-repository research specialist. |
160
- | `explore` | Specialized for codebase-wide search and structural analysis. |
161
- | `frontend` | UI/UX Engineer (Gemini-optimized) for component prototyping. |
162
- | `document_writer` | Technical documentation and specification writer. |
163
- | `multimodal` | Visual analysis expert for UI screenshots and diagrams. |
164
-
165
- ## Development
166
-
167
- ```bash
168
- # Install in development mode
169
- uv pip install -e .
170
-
171
- # Run server
172
- stravinsky
173
- ```
174
-
175
- ## Project Structure
176
-
177
- ```
178
- stravinsky/
179
- ├── mcp_bridge/ # Python MCP server
180
- │ ├── server.py # Entry point
181
- │ ├── auth/ # OAuth (Google & OpenAI)
182
- │ ├── tools/ # Model invoke, search, skills
183
- │ ├── prompts/ # Agent system prompts
184
- │ └── config/ # Bridge configuration
185
- ├── pyproject.toml # Build system
186
- └── README.md # This file
187
- ```
188
-
189
- ## Troubleshooting
190
-
191
- ### OpenAI "Port 1455 in use"
192
-
193
- The Codex CLI uses the same port. Stop it with: `killall codex`
194
-
195
- ### OpenAI Authentication Failed
196
-
197
- - Ensure you have a ChatGPT Plus/Pro subscription
198
- - Tokens expire occasionally; run `stravinsky-auth login openai` to refresh
199
-
200
- ## License
201
-
202
- MIT
203
-
204
- ---
@@ -1,57 +0,0 @@
1
- mcp_bridge/__init__.py,sha256=TZEL7NbFvxLaphGOCsAqfJrHhPB2LHR2ab0Eb5xxaU0,23
2
- mcp_bridge/server.py,sha256=2GuvJdCMxoMYLAbQtsPUrFyF0dTBgvjs8pBx-uF2Vbg,23035
3
- mcp_bridge/server_tools.py,sha256=1eweAvO4f0OolXajHFvJYbTkXdxsCLcr9JWxu7MbCpk,23386
4
- mcp_bridge/auth/__init__.py,sha256=AGHNtKzqvZYMLQ35Qg6aOabpxBqmkR-pjXv8Iby9oMw,797
5
- mcp_bridge/auth/cli.py,sha256=jaXyrzq6HwnW61g6CHHcj8bF5PJLYrYufD_jmN0jeiQ,8502
6
- mcp_bridge/auth/oauth.py,sha256=gWYk3KJWbUM1J5AKVDJ_4k4zdQzwwaYJZ5J25If0r8c,12804
7
- mcp_bridge/auth/openai_oauth.py,sha256=0Ks2X-NXLCBzqs3xnbj9QLZpugICOX5qB5y5vtDENOo,11522
8
- mcp_bridge/auth/token_store.py,sha256=3A6TZJ7Wju6QfhALeX4IMhY5jzb9OWMrDzwRbfAukiU,5650
9
- mcp_bridge/config/__init__.py,sha256=uapHdrSWWrafVKD9CTB1J_7Dw0_RajRhoDGjy9zH21o,256
10
- mcp_bridge/config/hooks.py,sha256=WvWC6ZUc8y1IXPlGCjLYAAsGGigd5tWeGiw585OGNwA,4624
11
- mcp_bridge/hooks/__init__.py,sha256=QYE1-NXnC_2x-N1Y9XL8BwI_6q38PniH5KJ2Pj7xcvc,2068
12
- mcp_bridge/hooks/agent_reminder.py,sha256=OxKPxi7e2MIBm44Ebzzl9j9fDV5bBgogGF0lj7wun5s,1913
13
- mcp_bridge/hooks/auto_slash_command.py,sha256=LUndZHxUzEF7PQuOdp3v7VfqNUgsiDE2gzI_TkR9he4,5280
14
- mcp_bridge/hooks/budget_optimizer.py,sha256=Im0qSGVUdRByk04hP5VyKt7tjlDVYG0LJb6IeUjjnj8,1323
15
- mcp_bridge/hooks/comment_checker.py,sha256=MslXZYiHjfxjUU7VzmZfa1n2WR9o4lnaktJ6eUPBUDs,3772
16
- mcp_bridge/hooks/compaction.py,sha256=UXTwmyo9C4Jm3j72KvVU11ukSAHaGaTey_h3L43e3rY,1186
17
- mcp_bridge/hooks/context_monitor.py,sha256=IEr75e_gqbPEUslxxfkwftiy6alDmJxQhSB6cy8BVg4,1885
18
- mcp_bridge/hooks/directory_context.py,sha256=0VjdJITJIGUqR4-q-wZlB6kmkFQMraaFvU2Nz2PnJCM,1225
19
- mcp_bridge/hooks/edit_recovery.py,sha256=CyhdFF3rV-sqZ13Mn8I8I5oMqB2KLIl6Bziv7GcsX0o,1749
20
- mcp_bridge/hooks/empty_message_sanitizer.py,sha256=iZZnETju1wBvJXV1k4msV8FxLNg5LkVm2eaFA2nQWxI,6606
21
- mcp_bridge/hooks/keyword_detector.py,sha256=5kztrsQ2NtT5qdDTC-J49nxPB_D0tIjT1AVAAry4FPE,4866
22
- mcp_bridge/hooks/manager.py,sha256=qqB-j-LN1dMQe4n1IpRBbgBkzAym94Jv9LK43n47OIs,3521
23
- mcp_bridge/hooks/preemptive_compaction.py,sha256=DY0O8ALOAQPT00QzpB1KBxX2AqzpnynQyXWXtDHBr4o,5530
24
- mcp_bridge/hooks/session_recovery.py,sha256=c5eoIWJAgMTPY0wq_64MmCUNLCB_GSowZlA3lo4R9LU,6260
25
- mcp_bridge/hooks/todo_enforcer.py,sha256=LRvVxYILqQ6YuQl3tky4hgyD-irXIPDE5e0EdKr6jcc,2274
26
- mcp_bridge/hooks/truncator.py,sha256=Rse93FS2aJxJGUOJIGY_ZYAS4yIUQBpBlVFo-IYbbKE,598
27
- mcp_bridge/native_hooks/context.py,sha256=JBHqnX75qtMO3JAEFooBEAK6DxcsVaXykhrP7tdFm6E,949
28
- mcp_bridge/native_hooks/edit_recovery.py,sha256=1OWpb3v87txFUsgnNe1hoeTI7rIKCkKYONld5BK1TyA,1503
29
- mcp_bridge/native_hooks/stravinsky_mode.py,sha256=UCiBk4YtGX6ubKTXYyGZUBIQG_CuFlHKPW-8S494BqU,2856
30
- mcp_bridge/native_hooks/truncator.py,sha256=h3hb8sZXTvc59C0-5GdZwCVZHlxBKdo47JT9TMxHG3g,530
31
- mcp_bridge/prompts/__init__.py,sha256=pQmPxbdfS_S-ENB-VX33MXbgfGs8zHfLB_QOBtaPjis,322
32
- mcp_bridge/prompts/delphi.py,sha256=ZlnLY2o1PrK3CxLLaCkozAGPIAJ5OFmw5u8o6-LXmgI,4960
33
- mcp_bridge/prompts/dewey.py,sha256=kSuYiSB1ab0xddvIRVrq7czXMkZJOgu9wXSH-Zw49Ag,8023
34
- mcp_bridge/prompts/document_writer.py,sha256=hiCbxgTU8HKPJkS0eNpPPtzSqDXPreApU2OqiS6zh-0,5618
35
- mcp_bridge/prompts/explore.py,sha256=121R3bNFbb7AIte69eDtLfxdyHdOo3l16L6cUH1p-kk,3592
36
- mcp_bridge/prompts/frontend.py,sha256=j91I8k5vcVed13eeX-Ebiv49x9Qj4HO_SQN1xhB8TLQ,4943
37
- mcp_bridge/prompts/multimodal.py,sha256=Svw11N392LjshalasOd80X0Qw_qtOMqu_lD-_HmQDIo,1936
38
- mcp_bridge/prompts/stravinsky.py,sha256=_ar9w9ZJkYKu73cW0YUrqqz7EAfsPX98SH8AiPQIcsg,24793
39
- mcp_bridge/tools/__init__.py,sha256=SRnMaUni0BhlvCABBEYeyveNiOAMQPNBXmjUKG6aXQA,1150
40
- mcp_bridge/tools/agent_manager.py,sha256=OiKEpG-wBEVySD-ulmKkrLzEVXYfal-0Dtllp5agb40,28233
41
- mcp_bridge/tools/background_tasks.py,sha256=G1iQ00538q939-DJbzaEsA0uZI2TfwzawFCDx8QC5Hg,5178
42
- mcp_bridge/tools/code_search.py,sha256=sR-alLQuxaXUFB9hby_wQsQu3Io644wdnpdOM_vm0aw,9978
43
- mcp_bridge/tools/continuous_loop.py,sha256=MM3FnF3ULuR32h0tqJP8uF48iJg6R9dbyHy_36KLOls,2100
44
- mcp_bridge/tools/init.py,sha256=sU95M9M_tjsfuew389TrFrxxeCavuSC16qbkydk_6PU,1586
45
- mcp_bridge/tools/model_invoke.py,sha256=m04A5dDmn0prO3Bi46YNXdqZlegQDwCYl2EagEI44hY,26161
46
- mcp_bridge/tools/project_context.py,sha256=bXKxuW1pGjtIbeNjMgpBoQL-d_CI94UPBVpRjUyhX20,4707
47
- mcp_bridge/tools/session_manager.py,sha256=tCVLLvO-Kttla7OxPImb_NSGL_9aW46ilq5ej_IcnlA,9252
48
- mcp_bridge/tools/skill_loader.py,sha256=RQ5eC357pm-6q85G3EyrQugz0S3OO5lxWtM9n9ECF-c,6010
49
- mcp_bridge/tools/task_runner.py,sha256=xjE3MXv62gcUCwOEwHjAGL_Ud_ZlKFBN0UHpvFjj3uk,3918
50
- mcp_bridge/tools/templates.py,sha256=A7eFk08Y2TZ2FPnsYLkVYCGOm1dd8scpNfcjCl_vC24,5928
51
- mcp_bridge/tools/lsp/__init__.py,sha256=fLiII9qgeachI3MlkO6uGulfUH3T0YDeyEfO65bbxdw,549
52
- mcp_bridge/tools/lsp/tools.py,sha256=nfXT3LBD5Mas_98f1zwu62jkpInGXUR-1vLl1zIykUw,16315
53
- mcp_bridge/utils/__init__.py,sha256=pbHV4nq5SLUYcAyTmLUZYrp293Ctud57X8hwsMGA_BM,20
54
- stravinsky-0.2.40.dist-info/METADATA,sha256=dtiavtqJ4fboG8mRZIxMOrTGPI_7wKFar_Muuq-qy7Y,7091
55
- stravinsky-0.2.40.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
56
- stravinsky-0.2.40.dist-info/entry_points.txt,sha256=BISwF7i71Oen7jFVmBXz8fxiU11Cp415wPF0xXG2Q3s,97
57
- stravinsky-0.2.40.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- [console_scripts]
2
- stravinsky = mcp_bridge.server:main
3
- stravinsky-auth = mcp_bridge.auth.cli:main
File without changes