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,125 @@
|
|
|
1
|
+
"""Configuration constants for the Azure AI Foundry plugin.
|
|
2
|
+
|
|
3
|
+
This module defines constants used throughout the plugin for Azure AD
|
|
4
|
+
authentication and model configuration.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import Any
|
|
10
|
+
|
|
11
|
+
from code_muse.config import DATA_DIR
|
|
12
|
+
|
|
13
|
+
# Azure AD scope for Cognitive Services (used for token acquisition)
|
|
14
|
+
# This scope is required for authenticating with Azure AI Foundry
|
|
15
|
+
AZURE_COGNITIVE_SCOPE = "https://cognitiveservices.azure.com/.default"
|
|
16
|
+
|
|
17
|
+
# Token refresh buffer in seconds (refresh 5 minutes before expiry)
|
|
18
|
+
TOKEN_REFRESH_BUFFER = 300
|
|
19
|
+
|
|
20
|
+
# Default context lengths for different model tiers
|
|
21
|
+
DEFAULT_CONTEXT_LENGTHS: dict[str, int] = {
|
|
22
|
+
"opus": 1000000, # 1M tokens for Opus models
|
|
23
|
+
"sonnet": 1000000, # 1M tokens for Sonnet models
|
|
24
|
+
"haiku": 200000, # 200K tokens for Haiku models
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# Context lengths for OpenAI models (Azure doesn't expose this in the catalog API).
|
|
28
|
+
# Prefixes are matched longest-first against the model name.
|
|
29
|
+
OPENAI_CONTEXT_LENGTHS: dict[str, int] = {
|
|
30
|
+
"gpt-5.4": 1000000,
|
|
31
|
+
"gpt-5.4-mini": 1000000,
|
|
32
|
+
"gpt-5.3-codex": 1000000,
|
|
33
|
+
"gpt-5.3": 1000000,
|
|
34
|
+
"gpt-5.2-codex": 1000000,
|
|
35
|
+
"gpt-5.2": 1000000,
|
|
36
|
+
"gpt-5.1-codex-max": 1000000,
|
|
37
|
+
"gpt-5.1-codex-mini": 1000000,
|
|
38
|
+
"gpt-5.1-codex": 1000000,
|
|
39
|
+
"gpt-5.1": 1000000,
|
|
40
|
+
"gpt-5-codex": 1000000,
|
|
41
|
+
"gpt-5": 1000000,
|
|
42
|
+
"gpt-4.1": 1000000,
|
|
43
|
+
"gpt-4.1-mini": 1000000,
|
|
44
|
+
"gpt-4.1-nano": 1000000,
|
|
45
|
+
"o4-mini": 200000,
|
|
46
|
+
"o3": 200000,
|
|
47
|
+
"o3-mini": 200000,
|
|
48
|
+
"o1": 200000,
|
|
49
|
+
"o1-mini": 128000,
|
|
50
|
+
"codex-mini": 200000,
|
|
51
|
+
}
|
|
52
|
+
DEFAULT_OPENAI_CONTEXT_LENGTH = 128000
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def get_openai_context_length(model_name: str) -> int:
|
|
56
|
+
"""Look up the context length for an OpenAI model by name.
|
|
57
|
+
|
|
58
|
+
Matches the longest prefix first so 'gpt-5.4-mini' matches before 'gpt-5.4'.
|
|
59
|
+
Falls back to DEFAULT_OPENAI_CONTEXT_LENGTH if no match.
|
|
60
|
+
"""
|
|
61
|
+
for prefix in sorted(OPENAI_CONTEXT_LENGTHS, key=len, reverse=True):
|
|
62
|
+
if model_name.startswith(prefix):
|
|
63
|
+
return OPENAI_CONTEXT_LENGTHS[prefix]
|
|
64
|
+
return DEFAULT_OPENAI_CONTEXT_LENGTH
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
# Default deployment name patterns (can be overridden by user)
|
|
68
|
+
DEFAULT_DEPLOYMENT_NAMES: dict[str, str] = {
|
|
69
|
+
"opus": "claude-opus-4-6",
|
|
70
|
+
"sonnet": "claude-sonnet-4-6",
|
|
71
|
+
"haiku": "claude-haiku-4-5",
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
# Environment variable names
|
|
75
|
+
ENV_FOUNDRY_RESOURCE = "ANTHROPIC_FOUNDRY_RESOURCE"
|
|
76
|
+
ENV_FOUNDRY_BASE_URL = "ANTHROPIC_FOUNDRY_BASE_URL"
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def get_foundry_resource() -> str | None:
|
|
80
|
+
"""Get the Azure Foundry resource name from environment.
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
The resource name if set, None otherwise.
|
|
84
|
+
"""
|
|
85
|
+
return os.environ.get(ENV_FOUNDRY_RESOURCE)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def get_foundry_base_url() -> str | None:
|
|
89
|
+
"""Get the Azure Foundry base URL from environment.
|
|
90
|
+
|
|
91
|
+
If ANTHROPIC_FOUNDRY_BASE_URL is set, use it directly.
|
|
92
|
+
Otherwise, construct from ANTHROPIC_FOUNDRY_RESOURCE.
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
The base URL if determinable, None otherwise.
|
|
96
|
+
"""
|
|
97
|
+
base_url = os.environ.get(ENV_FOUNDRY_BASE_URL)
|
|
98
|
+
if base_url:
|
|
99
|
+
return base_url
|
|
100
|
+
|
|
101
|
+
resource = get_foundry_resource()
|
|
102
|
+
if resource:
|
|
103
|
+
return f"https://{resource}.services.ai.azure.com/anthropic/v1"
|
|
104
|
+
|
|
105
|
+
return None
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
def get_extra_models_path() -> Path:
|
|
109
|
+
"""Get the path to the extra_models.json file.
|
|
110
|
+
|
|
111
|
+
Returns:
|
|
112
|
+
Path to the extra models configuration file.
|
|
113
|
+
"""
|
|
114
|
+
return Path(DATA_DIR) / "extra_models.json"
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
# Plugin configuration for model creation
|
|
118
|
+
AZURE_FOUNDRY_CONFIG: dict[str, Any] = {
|
|
119
|
+
"scope": AZURE_COGNITIVE_SCOPE,
|
|
120
|
+
"token_refresh_buffer": TOKEN_REFRESH_BUFFER,
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
# Note: supported_settings is determined per-tier in build_foundry_model_config():
|
|
124
|
+
# - Opus 4.6: ["temperature", "extended_thinking", "effort"]
|
|
125
|
+
# - Sonnet/Haiku: ["temperature", "interleaved_thinking", "thinking_budget"]
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"""Azure AI Services deployment discovery.
|
|
2
|
+
|
|
3
|
+
Queries the Azure Management API to find AI Services accounts and
|
|
4
|
+
list their model deployments. Works with any AIServices account
|
|
5
|
+
hosting Anthropic, OpenAI, or other model formats.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
from typing import Any
|
|
11
|
+
|
|
12
|
+
logger = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
AZURE_MANAGEMENT_SCOPE = "https://management.azure.com/.default"
|
|
15
|
+
MANAGEMENT_BASE = "https://management.azure.com"
|
|
16
|
+
RESOURCE_API_VERSION = "2021-04-01"
|
|
17
|
+
DEPLOYMENT_API_VERSION = "2024-10-01"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass
|
|
21
|
+
class AzureAccount:
|
|
22
|
+
"""Discovered Azure AI Services account."""
|
|
23
|
+
|
|
24
|
+
resource_id: str
|
|
25
|
+
name: str
|
|
26
|
+
location: str
|
|
27
|
+
resource_group: str
|
|
28
|
+
subscription_id: str
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass
|
|
32
|
+
class AzureDeployment:
|
|
33
|
+
"""Discovered model deployment on an Azure AI Services account."""
|
|
34
|
+
|
|
35
|
+
name: str
|
|
36
|
+
model_name: str
|
|
37
|
+
model_format: str # "Anthropic", "OpenAI", etc.
|
|
38
|
+
model_version: str
|
|
39
|
+
provisioning_state: str
|
|
40
|
+
sku_name: str
|
|
41
|
+
capacity: int
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _get_management_token() -> str | None:
|
|
45
|
+
"""Get a token for the Azure Management API using az login credentials.
|
|
46
|
+
|
|
47
|
+
Returns:
|
|
48
|
+
Bearer token string, or None if auth fails.
|
|
49
|
+
"""
|
|
50
|
+
try:
|
|
51
|
+
from azure.identity import AzureCliCredential
|
|
52
|
+
|
|
53
|
+
credential = AzureCliCredential()
|
|
54
|
+
token = credential.get_token(AZURE_MANAGEMENT_SCOPE)
|
|
55
|
+
return token.token
|
|
56
|
+
except Exception as e:
|
|
57
|
+
logger.warning("Failed to get management token: %s", e)
|
|
58
|
+
return None
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _management_get(token: str, url: str) -> dict[str, Any] | None:
|
|
62
|
+
"""Make a GET request to the Azure Management API.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
token: Bearer token for authentication.
|
|
66
|
+
url: Full URL to GET.
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
Parsed JSON response, or None on error.
|
|
70
|
+
"""
|
|
71
|
+
try:
|
|
72
|
+
import httpx
|
|
73
|
+
|
|
74
|
+
resp = httpx.get(
|
|
75
|
+
url,
|
|
76
|
+
headers={"Authorization": f"Bearer {token}"},
|
|
77
|
+
timeout=30,
|
|
78
|
+
)
|
|
79
|
+
if resp.status_code == 200:
|
|
80
|
+
return resp.json()
|
|
81
|
+
logger.warning("Management API %s returned %d", url, resp.status_code)
|
|
82
|
+
return None
|
|
83
|
+
except Exception as e:
|
|
84
|
+
logger.warning("Management API request failed: %s", e)
|
|
85
|
+
return None
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
def find_account(resource_name: str) -> AzureAccount | None:
|
|
89
|
+
"""Find an Azure AI Services account by name across all accessible subscriptions.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
resource_name: The account name to search for.
|
|
93
|
+
|
|
94
|
+
Returns:
|
|
95
|
+
AzureAccount if found, None otherwise.
|
|
96
|
+
"""
|
|
97
|
+
token = _get_management_token()
|
|
98
|
+
if not token:
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
# List subscriptions
|
|
102
|
+
subs_url = f"{MANAGEMENT_BASE}/subscriptions?api-version=2022-12-01"
|
|
103
|
+
subs_resp = _management_get(token, subs_url)
|
|
104
|
+
if not subs_resp:
|
|
105
|
+
return None
|
|
106
|
+
|
|
107
|
+
subscriptions = subs_resp.get("value", [])
|
|
108
|
+
|
|
109
|
+
for sub in subscriptions:
|
|
110
|
+
sub_id = sub.get("subscriptionId", "")
|
|
111
|
+
if sub.get("state") != "Enabled":
|
|
112
|
+
continue
|
|
113
|
+
|
|
114
|
+
# Search for the resource by name and type
|
|
115
|
+
filter_str = (
|
|
116
|
+
f"name eq '{resource_name}' and "
|
|
117
|
+
f"resourceType eq 'Microsoft.CognitiveServices/accounts'"
|
|
118
|
+
)
|
|
119
|
+
resources_url = (
|
|
120
|
+
f"{MANAGEMENT_BASE}/subscriptions/{sub_id}/resources"
|
|
121
|
+
f"?$filter={filter_str}&api-version={RESOURCE_API_VERSION}"
|
|
122
|
+
)
|
|
123
|
+
resources_resp = _management_get(token, resources_url)
|
|
124
|
+
if not resources_resp:
|
|
125
|
+
continue
|
|
126
|
+
|
|
127
|
+
for resource in resources_resp.get("value", []):
|
|
128
|
+
rid = resource.get("id", "")
|
|
129
|
+
parts = rid.split("/")
|
|
130
|
+
# /subscriptions/{sub}/resourceGroups/{rg}/providers/.../accounts/{name}
|
|
131
|
+
rg_idx = next(
|
|
132
|
+
(i for i, p in enumerate(parts) if p.lower() == "resourcegroups"),
|
|
133
|
+
None,
|
|
134
|
+
)
|
|
135
|
+
rg = parts[rg_idx + 1] if rg_idx is not None else ""
|
|
136
|
+
|
|
137
|
+
return AzureAccount(
|
|
138
|
+
resource_id=rid,
|
|
139
|
+
name=resource_name,
|
|
140
|
+
location=resource.get("location", ""),
|
|
141
|
+
resource_group=rg,
|
|
142
|
+
subscription_id=sub_id,
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
return None
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def list_deployments(account: AzureAccount) -> list[AzureDeployment]:
|
|
149
|
+
"""List all model deployments on an Azure AI Services account.
|
|
150
|
+
|
|
151
|
+
Args:
|
|
152
|
+
account: The account to query.
|
|
153
|
+
|
|
154
|
+
Returns:
|
|
155
|
+
List of deployments (all states, caller filters as needed).
|
|
156
|
+
"""
|
|
157
|
+
token = _get_management_token()
|
|
158
|
+
if not token:
|
|
159
|
+
return []
|
|
160
|
+
|
|
161
|
+
url = (
|
|
162
|
+
f"{MANAGEMENT_BASE}{account.resource_id}"
|
|
163
|
+
f"/deployments?api-version={DEPLOYMENT_API_VERSION}"
|
|
164
|
+
)
|
|
165
|
+
resp = _management_get(token, url)
|
|
166
|
+
if not resp:
|
|
167
|
+
return []
|
|
168
|
+
|
|
169
|
+
deployments = []
|
|
170
|
+
for d in resp.get("value", []):
|
|
171
|
+
props = d.get("properties", {})
|
|
172
|
+
model = props.get("model", {})
|
|
173
|
+
sku = d.get("sku", {})
|
|
174
|
+
|
|
175
|
+
deployments.append(
|
|
176
|
+
AzureDeployment(
|
|
177
|
+
name=d.get("name", ""),
|
|
178
|
+
model_name=model.get("name", ""),
|
|
179
|
+
model_format=model.get("format", ""),
|
|
180
|
+
model_version=model.get("version", ""),
|
|
181
|
+
provisioning_state=props.get("provisioningState", ""),
|
|
182
|
+
sku_name=sku.get("name", ""),
|
|
183
|
+
capacity=sku.get("capacity", 0),
|
|
184
|
+
)
|
|
185
|
+
)
|
|
186
|
+
|
|
187
|
+
return deployments
|