code-muse 0.0.1__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.
- code_muse/__init__.py +26 -0
- code_muse/__main__.py +10 -0
- code_muse/agents/__init__.py +31 -0
- code_muse/agents/_builder.py +214 -0
- code_muse/agents/_compaction.py +506 -0
- code_muse/agents/_diagnostics.py +171 -0
- code_muse/agents/_history.py +382 -0
- code_muse/agents/_key_listeners.py +148 -0
- code_muse/agents/_non_streaming_render.py +148 -0
- code_muse/agents/_runtime.py +596 -0
- code_muse/agents/agent_creator_agent.py +603 -0
- code_muse/agents/agent_helios.py +47 -0
- code_muse/agents/agent_manager.py +740 -0
- code_muse/agents/agent_muse.py +78 -0
- code_muse/agents/agent_planning.py +44 -0
- code_muse/agents/agent_qa_melpomene.py +207 -0
- code_muse/agents/base_agent.py +194 -0
- code_muse/agents/event_stream_handler.py +361 -0
- code_muse/agents/json_agent.py +201 -0
- code_muse/agents/prompt_v3.py +521 -0
- code_muse/agents/subagent_stream_handler.py +273 -0
- code_muse/callbacks.py +941 -0
- code_muse/chatgpt_codex_client.py +333 -0
- code_muse/claude_cache_client.py +853 -0
- code_muse/cli_runner/__init__.py +319 -0
- code_muse/cli_runner/args.py +63 -0
- code_muse/cli_runner/loop.py +510 -0
- code_muse/cli_runner/resume.py +72 -0
- code_muse/cli_runner/runner.py +161 -0
- code_muse/command_line/__init__.py +1 -0
- code_muse/command_line/add_model_menu.py +1331 -0
- code_muse/command_line/agent_menu.py +674 -0
- code_muse/command_line/attachments.py +397 -0
- code_muse/command_line/autosave_menu.py +709 -0
- code_muse/command_line/clipboard.py +528 -0
- code_muse/command_line/colors_menu.py +530 -0
- code_muse/command_line/command_handler.py +262 -0
- code_muse/command_line/command_registry.py +150 -0
- code_muse/command_line/config_commands.py +711 -0
- code_muse/command_line/core_commands.py +740 -0
- code_muse/command_line/diff_menu.py +865 -0
- code_muse/command_line/file_path_completion.py +73 -0
- code_muse/command_line/load_context_completion.py +57 -0
- code_muse/command_line/model_picker_completion.py +512 -0
- code_muse/command_line/model_settings_menu.py +983 -0
- code_muse/command_line/onboarding_slides.py +162 -0
- code_muse/command_line/onboarding_wizard.py +337 -0
- code_muse/command_line/pagination.py +41 -0
- code_muse/command_line/pin_command_completion.py +329 -0
- code_muse/command_line/prompt_toolkit_completion.py +886 -0
- code_muse/command_line/session_commands.py +304 -0
- code_muse/command_line/shell_passthrough.py +145 -0
- code_muse/command_line/skills_completion.py +158 -0
- code_muse/command_line/types.py +18 -0
- code_muse/command_line/uc_menu.py +908 -0
- code_muse/command_line/utils.py +105 -0
- code_muse/command_line/wiggum_state.py +77 -0
- code_muse/config.py +1138 -0
- code_muse/config_agent.py +168 -0
- code_muse/config_appearance.py +241 -0
- code_muse/config_model.py +357 -0
- code_muse/config_security.py +73 -0
- code_muse/error_logging.py +132 -0
- code_muse/evals/__init__.py +35 -0
- code_muse/evals/eval_helpers.py +81 -0
- code_muse/evals/eval_runner.py +299 -0
- code_muse/evals/sample_evals/__init__.py +1 -0
- code_muse/evals/sample_evals/eval_frugal_reads.py +59 -0
- code_muse/evals/sample_evals/eval_memory_planning.py +31 -0
- code_muse/evals/sample_evals/eval_shell_efficiency.py +39 -0
- code_muse/evals/sample_evals/eval_tool_masking.py +33 -0
- code_muse/fs_scan_cache/__init__.py +31 -0
- code_muse/fs_scan_cache/invalidation_hooks.py +89 -0
- code_muse/fs_scan_cache/scan_cache_core.cpython-314-darwin.so +0 -0
- code_muse/fs_scan_cache/scan_cache_core.pyx +203 -0
- code_muse/fs_scan_cache/tool_integration.py +309 -0
- code_muse/fs_scan_cache/ttl_policy.py +44 -0
- code_muse/gemini_code_assist.py +383 -0
- code_muse/gemini_model.py +838 -0
- code_muse/hook_engine/README.md +105 -0
- code_muse/hook_engine/__init__.py +21 -0
- code_muse/hook_engine/aliases.py +153 -0
- code_muse/hook_engine/engine.py +221 -0
- code_muse/hook_engine/executor.py +347 -0
- code_muse/hook_engine/matcher.py +154 -0
- code_muse/hook_engine/models.py +245 -0
- code_muse/hook_engine/registry.py +114 -0
- code_muse/hook_engine/trust.py +268 -0
- code_muse/hook_engine/validator.py +144 -0
- code_muse/http_utils.py +360 -0
- code_muse/keymap.py +128 -0
- code_muse/list_filtering.py +26 -0
- code_muse/main.py +10 -0
- code_muse/messaging/__init__.py +259 -0
- code_muse/messaging/bus.py +621 -0
- code_muse/messaging/commands.py +166 -0
- code_muse/messaging/markdown_patches.py +57 -0
- code_muse/messaging/message_queue.py +397 -0
- code_muse/messaging/messages.py +591 -0
- code_muse/messaging/queue_console.py +269 -0
- code_muse/messaging/renderers.py +308 -0
- code_muse/messaging/rich_renderer.py +1158 -0
- code_muse/messaging/shimmer.py +154 -0
- code_muse/messaging/spinner/__init__.py +87 -0
- code_muse/messaging/spinner/console_spinner.py +250 -0
- code_muse/messaging/spinner/spinner_base.py +82 -0
- code_muse/messaging/subagent_console.py +458 -0
- code_muse/model_factory.py +1203 -0
- code_muse/model_switching.py +59 -0
- code_muse/model_utils.py +156 -0
- code_muse/models.json +66 -0
- code_muse/models_cache/__init__.py +26 -0
- code_muse/models_cache/blocking_lru_cache.py +98 -0
- code_muse/models_cache/cache_writer.py +86 -0
- code_muse/models_cache/sha256_hash.cpython-314-darwin.so +0 -0
- code_muse/models_cache/sha256_hash.pyx +34 -0
- code_muse/models_cache/startup_integration.py +75 -0
- code_muse/models_dev_api.json +1 -0
- code_muse/models_dev_parser.py +590 -0
- code_muse/motion.py +126 -0
- code_muse/plugins/__init__.py +471 -0
- code_muse/plugins/agent_skills/__init__.py +32 -0
- code_muse/plugins/agent_skills/config.py +176 -0
- code_muse/plugins/agent_skills/discovery.py +309 -0
- code_muse/plugins/agent_skills/downloader.py +389 -0
- code_muse/plugins/agent_skills/installer.py +19 -0
- code_muse/plugins/agent_skills/metadata.py +293 -0
- code_muse/plugins/agent_skills/prompt_builder.py +66 -0
- code_muse/plugins/agent_skills/register_callbacks.py +298 -0
- code_muse/plugins/agent_skills/remote_catalog.py +320 -0
- code_muse/plugins/agent_skills/skill_catalog.py +254 -0
- code_muse/plugins/agent_skills/skills_install_menu.py +690 -0
- code_muse/plugins/agent_skills/skills_menu.py +791 -0
- code_muse/plugins/autonomous_memory/__init__.py +39 -0
- code_muse/plugins/autonomous_memory/bm25_scorer.cpython-314-darwin.so +0 -0
- code_muse/plugins/autonomous_memory/bm25_scorer.cpython-314-x86_64-linux-gnu.so +0 -0
- code_muse/plugins/autonomous_memory/bm25_scorer.pyx +291 -0
- code_muse/plugins/autonomous_memory/consolidation.py +82 -0
- code_muse/plugins/autonomous_memory/extraction.py +382 -0
- code_muse/plugins/autonomous_memory/lease_lock.py +105 -0
- code_muse/plugins/autonomous_memory/memory_injection.py +59 -0
- code_muse/plugins/autonomous_memory/register_callbacks.py +268 -0
- code_muse/plugins/autonomous_memory/secret_scanner.py +62 -0
- code_muse/plugins/autonomous_memory/session_scanner.py +163 -0
- code_muse/plugins/aws_bedrock/__init__.py +14 -0
- code_muse/plugins/aws_bedrock/config.py +99 -0
- code_muse/plugins/aws_bedrock/register_callbacks.py +241 -0
- code_muse/plugins/aws_bedrock/utils.py +153 -0
- code_muse/plugins/azure_foundry/README.md +238 -0
- code_muse/plugins/azure_foundry/__init__.py +15 -0
- code_muse/plugins/azure_foundry/config.py +125 -0
- code_muse/plugins/azure_foundry/discovery.py +187 -0
- code_muse/plugins/azure_foundry/register_callbacks.py +495 -0
- code_muse/plugins/azure_foundry/token.py +180 -0
- code_muse/plugins/azure_foundry/utils.py +345 -0
- code_muse/plugins/build_filter/__init__.py +1 -0
- code_muse/plugins/build_filter/register_callbacks.py +201 -0
- code_muse/plugins/build_filter/strategies/__init__.py +1 -0
- code_muse/plugins/build_filter/strategies/build.py +397 -0
- code_muse/plugins/chatgpt_oauth/__init__.py +6 -0
- code_muse/plugins/chatgpt_oauth/config.py +52 -0
- code_muse/plugins/chatgpt_oauth/oauth_flow.py +338 -0
- code_muse/plugins/chatgpt_oauth/register_callbacks.py +172 -0
- code_muse/plugins/chatgpt_oauth/test_plugin.py +301 -0
- code_muse/plugins/chatgpt_oauth/utils.py +538 -0
- code_muse/plugins/checkpointing/__init__.py +29 -0
- code_muse/plugins/checkpointing/checkpoint_hook.py +51 -0
- code_muse/plugins/checkpointing/conversation_snapshots.py +117 -0
- code_muse/plugins/checkpointing/register_callbacks.py +51 -0
- code_muse/plugins/checkpointing/restore_command.py +263 -0
- code_muse/plugins/checkpointing/rewind_shortcut.py +88 -0
- code_muse/plugins/checkpointing/shadow_git.py +90 -0
- code_muse/plugins/claude_code_hooks/__init__.py +1 -0
- code_muse/plugins/claude_code_hooks/config.py +188 -0
- code_muse/plugins/claude_code_hooks/register_callbacks.py +208 -0
- code_muse/plugins/claude_code_oauth/README.md +167 -0
- code_muse/plugins/claude_code_oauth/SETUP.md +93 -0
- code_muse/plugins/claude_code_oauth/__init__.py +25 -0
- code_muse/plugins/claude_code_oauth/config.py +52 -0
- code_muse/plugins/claude_code_oauth/fast_mode.py +124 -0
- code_muse/plugins/claude_code_oauth/prompt_handler.py +63 -0
- code_muse/plugins/claude_code_oauth/register_callbacks.py +547 -0
- code_muse/plugins/claude_code_oauth/test_fast_mode.py +165 -0
- code_muse/plugins/claude_code_oauth/test_plugin.py +283 -0
- code_muse/plugins/claude_code_oauth/token_refresh_heartbeat.py +237 -0
- code_muse/plugins/claude_code_oauth/utils.py +664 -0
- code_muse/plugins/copilot_auth/__init__.py +11 -0
- code_muse/plugins/copilot_auth/config.py +91 -0
- code_muse/plugins/copilot_auth/reasoning_client.py +409 -0
- code_muse/plugins/copilot_auth/register_callbacks.py +461 -0
- code_muse/plugins/copilot_auth/utils.py +584 -0
- code_muse/plugins/custom_commands/__init__.py +14 -0
- code_muse/plugins/custom_commands/args_injection.py +82 -0
- code_muse/plugins/custom_commands/command_discovery.py +89 -0
- code_muse/plugins/custom_commands/command_toml_schema.py +71 -0
- code_muse/plugins/custom_commands/register_callbacks.py +176 -0
- code_muse/plugins/customizable_commands/__init__.py +0 -0
- code_muse/plugins/customizable_commands/register_callbacks.py +136 -0
- code_muse/plugins/destructive_command_guard/__init__.py +14 -0
- code_muse/plugins/destructive_command_guard/detector.py +375 -0
- code_muse/plugins/destructive_command_guard/register_callbacks.py +148 -0
- code_muse/plugins/example_custom_command/README.md +280 -0
- code_muse/plugins/example_custom_command/register_callbacks.py +51 -0
- code_muse/plugins/file_permission_handler/__init__.py +4 -0
- code_muse/plugins/file_permission_handler/register_callbacks.py +441 -0
- code_muse/plugins/filter_engine/__init__.py +30 -0
- code_muse/plugins/filter_engine/classifier.py +153 -0
- code_muse/plugins/filter_engine/content_detector.py +184 -0
- code_muse/plugins/filter_engine/dispatcher.py +244 -0
- code_muse/plugins/filter_engine/register_callbacks.py +188 -0
- code_muse/plugins/filter_engine/registry.py +279 -0
- code_muse/plugins/filter_engine/strategies/__init__.py +8 -0
- code_muse/plugins/filter_engine/strategies/ast_compressor.cpython-314-darwin.so +0 -0
- code_muse/plugins/filter_engine/strategies/ast_compressor.cpython-314-x86_64-linux-gnu.so +0 -0
- code_muse/plugins/filter_engine/strategies/ast_compressor.pyx +348 -0
- code_muse/plugins/filter_engine/strategies/ast_parser.py +167 -0
- code_muse/plugins/filter_engine/strategies/code.cpython-314-darwin.so +0 -0
- code_muse/plugins/filter_engine/strategies/code.cpython-314-x86_64-linux-gnu.so +0 -0
- code_muse/plugins/filter_engine/strategies/code.pyx +584 -0
- code_muse/plugins/filter_engine/strategies/git.cpython-314-darwin.so +0 -0
- code_muse/plugins/filter_engine/strategies/git.cpython-314-x86_64-linux-gnu.so +0 -0
- code_muse/plugins/filter_engine/strategies/git.pyx +438 -0
- code_muse/plugins/filter_engine/strategies/json_compressor.cpython-314-darwin.so +0 -0
- code_muse/plugins/filter_engine/strategies/json_compressor.pyx +253 -0
- code_muse/plugins/filter_engine/strategies/json_patterns.cpython-314-darwin.so +0 -0
- code_muse/plugins/filter_engine/strategies/json_patterns.pyx +178 -0
- code_muse/plugins/filter_engine/strategies/lint.cpython-314-darwin.so +0 -0
- code_muse/plugins/filter_engine/strategies/lint.cpython-314-x86_64-linux-gnu.so +0 -0
- code_muse/plugins/filter_engine/strategies/lint.pyx +626 -0
- code_muse/plugins/filter_engine/strategies/test.cpython-314-darwin.so +0 -0
- code_muse/plugins/filter_engine/strategies/test.cpython-314-x86_64-linux-gnu.so +0 -0
- code_muse/plugins/filter_engine/strategies/test.pyx +431 -0
- code_muse/plugins/filter_engine/verbosity.py +63 -0
- code_muse/plugins/force_push_guard/__init__.py +5 -0
- code_muse/plugins/force_push_guard/detector.py +96 -0
- code_muse/plugins/force_push_guard/register_callbacks.py +144 -0
- code_muse/plugins/force_push_guard/test_detector.py +143 -0
- code_muse/plugins/frontend_emitter/__init__.py +25 -0
- code_muse/plugins/frontend_emitter/emitter.py +121 -0
- code_muse/plugins/frontend_emitter/register_callbacks.py +259 -0
- code_muse/plugins/gac/__init__.py +4 -0
- code_muse/plugins/gac/git_ops.py +136 -0
- code_muse/plugins/gac/prompt.py +191 -0
- code_muse/plugins/gac/register_callbacks.py +82 -0
- code_muse/plugins/hook_creator/__init__.py +1 -0
- code_muse/plugins/hook_creator/register_callbacks.py +34 -0
- code_muse/plugins/hook_manager/__init__.py +1 -0
- code_muse/plugins/hook_manager/config.py +289 -0
- code_muse/plugins/hook_manager/hooks_menu.py +563 -0
- code_muse/plugins/hook_manager/register_callbacks.py +227 -0
- code_muse/plugins/hook_monitor/register_callbacks.py +36 -0
- code_muse/plugins/mindpack/__init__.py +0 -0
- code_muse/plugins/mindpack/factory.py +930 -0
- code_muse/plugins/mindpack/judge.py +573 -0
- code_muse/plugins/mindpack/memory.py +100 -0
- code_muse/plugins/mindpack/mindpack_menu.py +1552 -0
- code_muse/plugins/mindpack/orchestration.py +605 -0
- code_muse/plugins/mindpack/register_callbacks.py +175 -0
- code_muse/plugins/mindpack/schemas.py +358 -0
- code_muse/plugins/mindpack/tools.py +387 -0
- code_muse/plugins/oauth_muse_html.py +226 -0
- code_muse/plugins/ollama_setup/__init__.py +5 -0
- code_muse/plugins/ollama_setup/completer.py +36 -0
- code_muse/plugins/ollama_setup/register_callbacks.py +410 -0
- code_muse/plugins/plan_command/__init__.py +0 -0
- code_muse/plugins/plan_command/register_callbacks.py +206 -0
- code_muse/plugins/plan_mode/__init__.py +37 -0
- code_muse/plugins/plan_mode/mode_cycling.py +40 -0
- code_muse/plugins/plan_mode/plan_generation.py +68 -0
- code_muse/plugins/plan_mode/plan_hooks.py +74 -0
- code_muse/plugins/plan_mode/plan_mode_tools.py +138 -0
- code_muse/plugins/plan_mode/register_callbacks.py +121 -0
- code_muse/plugins/plugin_trust/register_callbacks.py +140 -0
- code_muse/plugins/policy_engine/__init__.py +46 -0
- code_muse/plugins/policy_engine/approval_flow_integration.py +59 -0
- code_muse/plugins/policy_engine/policy_evaluator.py +75 -0
- code_muse/plugins/policy_engine/policy_file_discovery.py +90 -0
- code_muse/plugins/policy_engine/policy_toml_schema.py +115 -0
- code_muse/plugins/policy_engine/register_callbacks.py +112 -0
- code_muse/plugins/pop_command/__init__.py +1 -0
- code_muse/plugins/pop_command/register_callbacks.py +189 -0
- code_muse/plugins/prompt_newline/__init__.py +13 -0
- code_muse/plugins/prompt_newline/config.py +19 -0
- code_muse/plugins/prompt_newline/register_callbacks.py +159 -0
- code_muse/plugins/safety_status/__init__.py +0 -0
- code_muse/plugins/safety_status/register_callbacks.py +113 -0
- code_muse/plugins/semantic_compression/__init__.py +6 -0
- code_muse/plugins/semantic_compression/compressor.py +295 -0
- code_muse/plugins/semantic_compression/config.py +123 -0
- code_muse/plugins/semantic_compression/register_callbacks.py +320 -0
- code_muse/plugins/shell_minimizer/__init__.py +50 -0
- code_muse/plugins/shell_minimizer/builtin_filters.toml +393 -0
- code_muse/plugins/shell_minimizer/pipeline.py +556 -0
- code_muse/plugins/shell_minimizer/primitives.py +482 -0
- code_muse/plugins/shell_minimizer/register_callbacks.py +276 -0
- code_muse/plugins/shell_safety/__init__.py +6 -0
- code_muse/plugins/shell_safety/agent_shell_safety.py +69 -0
- code_muse/plugins/shell_safety/command_cache.py +149 -0
- code_muse/plugins/shell_safety/register_callbacks.py +202 -0
- code_muse/plugins/synthetic_status/__init__.py +1 -0
- code_muse/plugins/synthetic_status/register_callbacks.py +128 -0
- code_muse/plugins/synthetic_status/status_api.py +145 -0
- code_muse/plugins/token_caching/__init__.py +21 -0
- code_muse/plugins/token_caching/cache_hit_tracking.py +128 -0
- code_muse/plugins/token_caching/cacheable_prefix_detection.py +28 -0
- code_muse/plugins/token_caching/register_callbacks.py +54 -0
- code_muse/plugins/token_caching/stats_display.py +35 -0
- code_muse/plugins/token_tracking/__init__.py +26 -0
- code_muse/plugins/token_tracking/database.py +381 -0
- code_muse/plugins/token_tracking/edit_analyzer.py +97 -0
- code_muse/plugins/token_tracking/record.py +55 -0
- code_muse/plugins/token_tracking/register_callbacks.py +277 -0
- code_muse/plugins/token_tracking/reports.py +329 -0
- code_muse/plugins/universal_constructor/__init__.py +13 -0
- code_muse/plugins/universal_constructor/models.py +136 -0
- code_muse/plugins/universal_constructor/register_callbacks.py +47 -0
- code_muse/plugins/universal_constructor/registry.py +390 -0
- code_muse/plugins/universal_constructor/runner.py +474 -0
- code_muse/plugins/universal_constructor/safety.py +440 -0
- code_muse/plugins/universal_constructor/sandbox.py +584 -0
- code_muse/provider_identity.py +105 -0
- code_muse/pydantic_patches.py +410 -0
- code_muse/reopenable_async_client.py +233 -0
- code_muse/round_robin_model.py +151 -0
- code_muse/secret_storage.py +74 -0
- code_muse/security/__init__.py +1 -0
- code_muse/security/redaction.cpython-314-darwin.so +0 -0
- code_muse/security/redaction.cpython-314-x86_64-linux-gnu.so +0 -0
- code_muse/security/redaction.pyx +135 -0
- code_muse/session_storage.py +565 -0
- code_muse/status_display.py +261 -0
- code_muse/stream_parser/__init__.py +76 -0
- code_muse/stream_parser/assistant_text_parser.py +90 -0
- code_muse/stream_parser/citation_parser.py +76 -0
- code_muse/stream_parser/inline_hidden_tag_parser.py +236 -0
- code_muse/stream_parser/proposed_plan_parser.py +158 -0
- code_muse/stream_parser/stream_text_chunk.py +23 -0
- code_muse/stream_parser/stream_text_parser.py +27 -0
- code_muse/stream_parser/tagged_line_parser.cpython-314-darwin.so +0 -0
- code_muse/stream_parser/tagged_line_parser.pyx +251 -0
- code_muse/stream_parser/utf8_stream_parser.cpython-314-darwin.so +0 -0
- code_muse/stream_parser/utf8_stream_parser.pyx +206 -0
- code_muse/summarization_agent.py +308 -0
- code_muse/terminal_utils.cpython-314-darwin.so +0 -0
- code_muse/terminal_utils.cpython-314-x86_64-linux-gnu.so +0 -0
- code_muse/terminal_utils.pyx +483 -0
- code_muse/tools/__init__.py +459 -0
- code_muse/tools/agent_tools.py +613 -0
- code_muse/tools/ask_user_question/__init__.py +26 -0
- code_muse/tools/ask_user_question/constants.py +73 -0
- code_muse/tools/ask_user_question/demo_tui.py +55 -0
- code_muse/tools/ask_user_question/handler.py +232 -0
- code_muse/tools/ask_user_question/models.py +302 -0
- code_muse/tools/ask_user_question/registration.py +37 -0
- code_muse/tools/ask_user_question/renderers.py +336 -0
- code_muse/tools/ask_user_question/terminal_ui.py +327 -0
- code_muse/tools/ask_user_question/theme.py +156 -0
- code_muse/tools/ask_user_question/tui_loop.py +422 -0
- code_muse/tools/background_jobs.py +99 -0
- code_muse/tools/browser/__init__.py +37 -0
- code_muse/tools/browser/browser_control.py +289 -0
- code_muse/tools/browser/browser_interactions.py +545 -0
- code_muse/tools/browser/browser_locators.py +640 -0
- code_muse/tools/browser/browser_manager.py +376 -0
- code_muse/tools/browser/browser_navigation.py +251 -0
- code_muse/tools/browser/browser_screenshot.py +180 -0
- code_muse/tools/browser/browser_scripts.py +462 -0
- code_muse/tools/browser/browser_workflows.py +222 -0
- code_muse/tools/chrome_cdp/__init__.py +1070 -0
- code_muse/tools/chrome_cdp/register_callbacks.py +61 -0
- code_muse/tools/command_runner.py +1401 -0
- code_muse/tools/common.py +1407 -0
- code_muse/tools/display.py +87 -0
- code_muse/tools/file_modifications.py +1099 -0
- code_muse/tools/file_operations.py +860 -0
- code_muse/tools/image_tools.py +185 -0
- code_muse/tools/meetin_proxy/__init__.py +243 -0
- code_muse/tools/meetin_proxy/capture_addon.py +82 -0
- code_muse/tools/meetin_proxy/proxy_manager.py +326 -0
- code_muse/tools/meetin_proxy/register_callbacks.py +45 -0
- code_muse/tools/path_policy.py +219 -0
- code_muse/tools/skills_tools.py +586 -0
- code_muse/tools/subagent_context.py +158 -0
- code_muse/tools/tools_content.py +50 -0
- code_muse/tools/universal_constructor.py +965 -0
- code_muse/uvx_detection.py +241 -0
- code_muse/version_checker.py +86 -0
- code_muse-0.0.1.data/data/code_muse/models.json +66 -0
- code_muse-0.0.1.data/data/code_muse/models_dev_api.json +1 -0
- code_muse-0.0.1.dist-info/METADATA +845 -0
- code_muse-0.0.1.dist-info/RECORD +394 -0
- code_muse-0.0.1.dist-info/WHEEL +4 -0
- code_muse-0.0.1.dist-info/entry_points.txt +2 -0
- code_muse-0.0.1.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from code_muse import config
|
|
5
|
+
|
|
6
|
+
# Claude Code OAuth configuration
|
|
7
|
+
CLAUDE_CODE_OAUTH_CONFIG: dict[str, Any] = {
|
|
8
|
+
# OAuth endpoints inferred from official Claude Code OAuth flow
|
|
9
|
+
"auth_url": "https://claude.ai/oauth/authorize",
|
|
10
|
+
"token_url": "https://console.anthropic.com/v1/oauth/token",
|
|
11
|
+
"api_base_url": "https://api.anthropic.com",
|
|
12
|
+
# OAuth client configuration observed in Claude Code CLI flow
|
|
13
|
+
"client_id": "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
|
|
14
|
+
"scope": "org:create_api_key user:profile user:inference",
|
|
15
|
+
# Callback handling (we host a localhost callback to capture the redirect)
|
|
16
|
+
"redirect_host": "http://localhost",
|
|
17
|
+
"redirect_path": "callback",
|
|
18
|
+
"callback_port_range": (8765, 8795),
|
|
19
|
+
"callback_timeout": 180,
|
|
20
|
+
# Console redirect fallback (for manual flows, if needed)
|
|
21
|
+
"console_redirect_uri": "https://console.anthropic.com/oauth/code/callback",
|
|
22
|
+
# Local configuration (uses XDG_DATA_HOME)
|
|
23
|
+
"token_storage": None, # Set dynamically in get_token_storage_path()
|
|
24
|
+
# Model configuration
|
|
25
|
+
"prefix": "claude-code-",
|
|
26
|
+
"default_context_length": 200000,
|
|
27
|
+
"long_context_length": 1000000,
|
|
28
|
+
"long_context_models": ["claude-opus-4-6", "claude-opus-4-7"],
|
|
29
|
+
"api_key_env_var": "CLAUDE_CODE_ACCESS_TOKEN",
|
|
30
|
+
"anthropic_version": "2023-06-01",
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def get_token_storage_path() -> Path:
|
|
35
|
+
"""Get the path for storing OAuth tokens (uses XDG_DATA_HOME)."""
|
|
36
|
+
data_dir = Path(config.DATA_DIR)
|
|
37
|
+
data_dir.mkdir(parents=True, exist_ok=True, mode=0o700)
|
|
38
|
+
return data_dir / "claude_code_oauth.json"
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def get_config_dir() -> Path:
|
|
42
|
+
"""Get the Muse configuration directory (uses XDG_CONFIG_HOME)."""
|
|
43
|
+
config_dir = Path(config.CONFIG_DIR)
|
|
44
|
+
config_dir.mkdir(parents=True, exist_ok=True, mode=0o700)
|
|
45
|
+
return config_dir
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def get_claude_models_path() -> Path:
|
|
49
|
+
"""Get the path to the dedicated claude_models.json file (uses XDG_DATA_HOME)."""
|
|
50
|
+
data_dir = Path(config.DATA_DIR)
|
|
51
|
+
data_dir.mkdir(parents=True, exist_ok=True, mode=0o700)
|
|
52
|
+
return data_dir / "claude_models.json"
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""Fast mode support for Claude Code OAuth.
|
|
2
|
+
|
|
3
|
+
Fast mode adds two wire-level changes when enabled via the per-model
|
|
4
|
+
``fast`` setting:
|
|
5
|
+
|
|
6
|
+
1. ``speed: "fast"`` is injected into the ``/v1/messages`` request payload.
|
|
7
|
+
2. ``fast-mode-2026-02-01`` is appended to the ``anthropic-beta`` header.
|
|
8
|
+
|
|
9
|
+
The setting is read at request time (not model construction time) so that
|
|
10
|
+
toggling takes effect on the next call without a full agent reload for the
|
|
11
|
+
payload side. The beta header must still be present on the httpx client at
|
|
12
|
+
construction time, so we set that up once and rely on the existing
|
|
13
|
+
interleaved-thinking pattern for consistency.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from collections.abc import Callable, MutableMapping
|
|
17
|
+
from typing import Any
|
|
18
|
+
|
|
19
|
+
# Anthropic beta marker for fast mode. Keep as a module-level constant so
|
|
20
|
+
# there's one source of truth for both header setup and tests.
|
|
21
|
+
FAST_MODE_BETA = "fast-mode-2026-02-01"
|
|
22
|
+
|
|
23
|
+
# The per-model setting key. Stored via code_muse.config.set_model_setting
|
|
24
|
+
# as "true"/"false" strings and read back via get_all_model_settings.
|
|
25
|
+
#
|
|
26
|
+
# We intentionally DO NOT use get_effective_model_settings here: that helper
|
|
27
|
+
# filters values through model_supports_setting(), whose default allowlist for
|
|
28
|
+
# claude-* models is {temperature, extended_thinking, budget_tokens, effort}.
|
|
29
|
+
# ``fast`` is a plugin-owned setting, not a core setting, so it would be
|
|
30
|
+
# silently dropped. get_all_model_settings returns the raw per-model config,
|
|
31
|
+
# which is exactly what a plugin should own and read.
|
|
32
|
+
FAST_SETTING_KEY = "fast"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def is_fast_mode_enabled(model_name: str) -> bool:
|
|
36
|
+
"""Return True if the ``fast`` setting is on for ``model_name``."""
|
|
37
|
+
# Imported lazily to avoid circular imports at module load.
|
|
38
|
+
from code_muse.config import get_all_model_settings
|
|
39
|
+
|
|
40
|
+
settings = get_all_model_settings(model_name)
|
|
41
|
+
return bool(settings.get(FAST_SETTING_KEY, False))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def ensure_fast_beta_header(headers: MutableMapping[str, str], enabled: bool) -> None:
|
|
45
|
+
"""Add or remove ``fast-mode-2026-02-01`` from the anthropic-beta header.
|
|
46
|
+
|
|
47
|
+
Mutates ``headers`` in place. Mirrors the interleaved-thinking handling so
|
|
48
|
+
beta markers stay comma-separated and de-duplicated.
|
|
49
|
+
"""
|
|
50
|
+
existing = headers.get("anthropic-beta")
|
|
51
|
+
parts = [p.strip() for p in existing.split(",") if p.strip()] if existing else []
|
|
52
|
+
|
|
53
|
+
has_marker = FAST_MODE_BETA in parts
|
|
54
|
+
if enabled and not has_marker:
|
|
55
|
+
parts.append(FAST_MODE_BETA)
|
|
56
|
+
elif not enabled and has_marker:
|
|
57
|
+
parts = [p for p in parts if p != FAST_MODE_BETA]
|
|
58
|
+
|
|
59
|
+
if parts:
|
|
60
|
+
headers["anthropic-beta"] = ",".join(parts)
|
|
61
|
+
elif "anthropic-beta" in headers:
|
|
62
|
+
del headers["anthropic-beta"]
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _inject_speed_in_payload(payload: dict[str, Any]) -> None:
|
|
66
|
+
"""Inject ``speed: "fast"`` into a /v1/messages payload dict in place."""
|
|
67
|
+
if not isinstance(payload, dict):
|
|
68
|
+
return
|
|
69
|
+
# Respect an explicit speed already present (don't clobber caller intent).
|
|
70
|
+
if "speed" not in payload:
|
|
71
|
+
payload["speed"] = "fast"
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def make_fast_mode_wrapper(
|
|
75
|
+
original_create: Callable[..., Any], model_name: str
|
|
76
|
+
) -> Callable[..., Any]:
|
|
77
|
+
"""Wrap ``messages.create`` to inject ``speed: fast`` when enabled.
|
|
78
|
+
|
|
79
|
+
The setting is re-read on every call so toggling via ``/claude-code-fast``
|
|
80
|
+
takes effect on the very next request (no agent reload needed for the
|
|
81
|
+
payload side of the equation).
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
async def wrapped_create(*args: Any, **kwargs: Any):
|
|
85
|
+
if is_fast_mode_enabled(model_name):
|
|
86
|
+
if kwargs:
|
|
87
|
+
_inject_speed_in_payload(kwargs)
|
|
88
|
+
elif args:
|
|
89
|
+
maybe_payload = args[-1]
|
|
90
|
+
if isinstance(maybe_payload, dict):
|
|
91
|
+
_inject_speed_in_payload(maybe_payload)
|
|
92
|
+
|
|
93
|
+
return await original_create(*args, **kwargs)
|
|
94
|
+
|
|
95
|
+
return wrapped_create
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def patch_anthropic_client_fast_mode(client: Any, model_name: str) -> None:
|
|
99
|
+
"""Monkey-patch ``messages.create`` (and ``beta.messages.create``).
|
|
100
|
+
|
|
101
|
+
Must be called *after* ``patch_anthropic_client_messages`` so our wrapper
|
|
102
|
+
sits outside the cache-control injector — order of wrappers doesn't matter
|
|
103
|
+
for correctness here, but keeping fast-mode outermost makes it easy to
|
|
104
|
+
reason about.
|
|
105
|
+
"""
|
|
106
|
+
try:
|
|
107
|
+
messages_obj = getattr(client, "messages", None)
|
|
108
|
+
if messages_obj is not None and hasattr(messages_obj, "create"):
|
|
109
|
+
messages_obj.create = make_fast_mode_wrapper(
|
|
110
|
+
messages_obj.create, model_name
|
|
111
|
+
)
|
|
112
|
+
except Exception: # pragma: no cover - defensive
|
|
113
|
+
pass
|
|
114
|
+
|
|
115
|
+
try:
|
|
116
|
+
beta_obj = getattr(client, "beta", None)
|
|
117
|
+
if beta_obj is not None:
|
|
118
|
+
beta_messages_obj = getattr(beta_obj, "messages", None)
|
|
119
|
+
if beta_messages_obj is not None and hasattr(beta_messages_obj, "create"):
|
|
120
|
+
beta_messages_obj.create = make_fast_mode_wrapper(
|
|
121
|
+
beta_messages_obj.create, model_name
|
|
122
|
+
)
|
|
123
|
+
except Exception: # pragma: no cover - defensive
|
|
124
|
+
pass
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""Prompt preparation logic for Claude Code OAuth models.
|
|
2
|
+
|
|
3
|
+
This module owns everything that's special about preparing prompts for
|
|
4
|
+
``claude-code-*`` models:
|
|
5
|
+
|
|
6
|
+
- The fixed system-instruction string Anthropic's Claude Code CLI expects.
|
|
7
|
+
- The ``is_claude_code_model`` predicate.
|
|
8
|
+
- A callback wired into the ``prepare_model_prompt`` hook which runs inside
|
|
9
|
+
``code_muse.model_utils.prepare_prompt_for_model``.
|
|
10
|
+
|
|
11
|
+
Keeping this here (rather than in core ``model_utils``) keeps the core
|
|
12
|
+
model-agnostic and lets the claude-code behavior ship/fail as a single
|
|
13
|
+
plugin — exactly per the Contributing guide.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from typing import Any
|
|
17
|
+
|
|
18
|
+
# The instruction override Anthropic's Claude Code CLI expects as the system
|
|
19
|
+
# prompt. When using OAuth-authenticated claude-code models, the *real* system
|
|
20
|
+
# prompt has to move into the user turn instead (see the callback below).
|
|
21
|
+
CLAUDE_CODE_INSTRUCTIONS = "You are Claude Code, Anthropic's official CLI for Claude."
|
|
22
|
+
|
|
23
|
+
# Prefix used by every claude-code-* model (as registered by this plugin).
|
|
24
|
+
_CLAUDE_CODE_PREFIX = "claude-code"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def is_claude_code_model(model_name: str) -> bool:
|
|
28
|
+
"""Return True if ``model_name`` is a claude-code OAuth model."""
|
|
29
|
+
return model_name.startswith(_CLAUDE_CODE_PREFIX)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_claude_code_instructions() -> str:
|
|
33
|
+
"""Return the fixed Claude Code system instruction string."""
|
|
34
|
+
return CLAUDE_CODE_INSTRUCTIONS
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def prepare_claude_code_prompt(
|
|
38
|
+
model_name: str,
|
|
39
|
+
system_prompt: str,
|
|
40
|
+
user_prompt: str,
|
|
41
|
+
prepend_system_to_user: bool = True,
|
|
42
|
+
) -> dict[str, Any | None]:
|
|
43
|
+
"""Callback for the ``prepare_model_prompt`` hook.
|
|
44
|
+
|
|
45
|
+
For claude-code models, swap in the Anthropic-expected instruction string
|
|
46
|
+
and (optionally) fold the caller's system prompt into the user message.
|
|
47
|
+
|
|
48
|
+
Returns ``None`` for non-claude-code models so other handlers / the
|
|
49
|
+
default passthrough can take over.
|
|
50
|
+
"""
|
|
51
|
+
if not is_claude_code_model(model_name):
|
|
52
|
+
return None
|
|
53
|
+
|
|
54
|
+
modified_prompt = user_prompt
|
|
55
|
+
if prepend_system_to_user and system_prompt:
|
|
56
|
+
modified_prompt = f"{system_prompt}\n\n{user_prompt}"
|
|
57
|
+
|
|
58
|
+
return {
|
|
59
|
+
"handled": True,
|
|
60
|
+
"instructions": CLAUDE_CODE_INSTRUCTIONS,
|
|
61
|
+
"user_prompt": modified_prompt,
|
|
62
|
+
"is_claude_code": True,
|
|
63
|
+
}
|