code-context-control 2.119.0__tar.gz → 2.120.0__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.
- {code_context_control-2.119.0/code_context_control.egg-info → code_context_control-2.120.0}/PKG-INFO +1 -1
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/c3.py +38 -1
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/commands/parser.py +13 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/compress.py +51 -3
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/read.py +19 -3
- {code_context_control-2.119.0 → code_context_control-2.120.0/code_context_control.egg-info}/PKG-INFO +1 -1
- {code_context_control-2.119.0 → code_context_control-2.120.0}/code_context_control.egg-info/SOURCES.txt +3 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/pyproject.toml +3 -1
- code_context_control-2.120.0/services/bench/map_eval.py +999 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/compressor.py +4 -1
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/file_memory.py +25 -5
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/telemetry.py +135 -0
- code_context_control-2.120.0/tests/test_map_eval.py +475 -0
- code_context_control-2.120.0/tests/test_map_telemetry_c0.py +272 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_windows_reliability.py +4 -1
- {code_context_control-2.119.0 → code_context_control-2.120.0}/LICENSE +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/README.md +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/_hook_utils.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/_shell_writes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/commands/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/commands/common.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/docs.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/edits.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/access.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/bitbucket.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/credentials.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/getting-started.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/index.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/masking.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/oracle.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/shared.css +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/tools.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/guide/workflow.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_access_guard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_artifact.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_auto_snapshot.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_c3_signal.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_c3read.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_codex_lifecycle.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_dispatch.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_edit_ledger.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_edit_unlock.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_filter.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_ghost_files.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_pretool_enforce.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_prompt_recall.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_read.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_session_stats.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hook_terse_advisor.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_server.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/app.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/add_project.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/config_editor.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/drill_artifacts.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/drill_health.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/drill_panel.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/drill_subprojects.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/drill_tasks.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/drill_views.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/global_search.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/hub_access.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/hub_ci.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/hub_cred_audit.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/hub_credentials.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/hub_enforcement.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/hub_locks.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/hub_tokens.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/mcp_manager.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/modals.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/project_card.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/project_tree.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/session_drawer.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/settings_modal.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/sidebar.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/summary_bar.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/task_board.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/toasts.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/components/topbar.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui/state.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/hub_ui.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/mcp_proxy.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/mcp_server.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/progress.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/server.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/_grants.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/_helpers.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/agent.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/artifacts.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/bitbucket.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/ci.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/credentials.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/delegate.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/edit.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/edit_verify.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/edits.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/federate.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/filter.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/impact.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/jira.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/locks.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/memory.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/override.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/project.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/search.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/session.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/shell.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/shell_job.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/shell_nudge.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/shell_parsers.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/shell_render.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/status.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/tasks.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/tools/validate.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/api.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/app.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/access.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/bitbucket.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/chat.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/credentials.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/dashboard.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/edits.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/enforcement.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/instructions.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/jira.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/memory.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/sessions.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/settings.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/sidebar.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/components/tasks.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/icons.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/pm_shared.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/shared.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui/theme.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui_legacy.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/cli/ui_nano.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/code_context_control.egg-info/dependency_links.txt +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/code_context_control.egg-info/entry_points.txt +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/code_context_control.egg-info/requires.txt +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/code_context_control.egg-info/top_level.txt +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/core/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/core/codex_patch.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/core/config.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/core/host.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/core/ide.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/core/mcp_toml.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/core/web_security.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/config.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/mcp_oracle.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/oracle_server.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/oracle_ui.html +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/activity_reporter.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/api_auth.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/c3_bridge.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/chat_engine.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/chat_poll.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/chat_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/cross_memory.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/discovery_audit.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/federated_graph.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/health_checker.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/insight_engine.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/local_session.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/memory_reader.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/memory_writer.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/mobile_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/project_scanner.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/review_agent.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/tool_executor.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/services/tool_registry.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/activity.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/agents.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/app.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/busy.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/chat/conversations.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/chat/input.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/chat/markdown.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/chat/send.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/chat/stream_renderer.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/chat/toolbar.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/core.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/crossgraph.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/header.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/insights.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/projects.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/qrcode.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/settings.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/suggestions.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/oracle/ui/theme_tabs.js +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/access_guard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/access_telemetry.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/activity_log.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/agent_base.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/agent_locks.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/agents.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/artifact_defs.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/artifact_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/atomic_json.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/auto_memory.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/background_service.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/bench/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/bench/external/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/bench/external/aider_polyglot.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/bench/external/swe_bench.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/bench/search_eval.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/bench/shell_eval.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/benchmark_dashboard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/bitbucket_client.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/bitbucket_credentials.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_act.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_cache.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_expr.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_failures.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_github.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_impact.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_intel.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_runner.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ci_workflow.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/circuit_breaker.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/claude_md.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/codex_integration.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/codex_transcript.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/context_snapshot.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/conversation_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/cred_audit.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/cred_telemetry.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/credential_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/doc_index.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/e2e_benchmark.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/e2e_evaluator.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/e2e_tasks.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/edit_ledger.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/embedding_index.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/enforcement_policy.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/error_reporting.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/git_context.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/hub_service.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/index_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/indexer.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/jira_client.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/jira_cloud.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/jira_credentials.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/jira_data_center.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/jira_links.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/lexical_index.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/mask_activation.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/mask_mirror.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/mask_presets.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/memory.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/memory_consolidator.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/memory_distiller.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/memory_graph.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/memory_grounder.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/memory_queue.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/memory_scorer.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/metrics.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/notifications.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ollama_bridge.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ollama_client.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/ollama_credentials.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/oracle_service.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/output_filter.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/override_grants.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/override_policy.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/override_requests.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/override_wake.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/parser.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/project_manager.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/project_runtime.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/protocol.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/proxy_state.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/repo_map.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/repo_shape.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/reranker.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/retention.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/retrieval.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/retrieval_broker.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/router.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/runtime.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/scanner.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/session_benchmark.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/session_manager.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/session_preloader.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/shell_jobs.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/shell_output.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/subprojects.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/task_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/text_index.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/time_tracker.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/tool_classifier.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/transcript_index.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/validation_cache.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/vector_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/watcher.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/services/win_subprocess.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/setup.cfg +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_access_builtin_optout.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_access_guard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_access_guard_meta.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_access_guard_shell_project.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_access_guard_surfaces.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_access_guard_wiring.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_activity_reporter.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_agent_locks.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_aider_polyglot.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_antigravity_transition.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_artifact_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_artifact_tool.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_atomic_json.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_background_service.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_bitbucket_cli_smoke.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_bitbucket_client.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_bitbucket_config_fallback.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_bitbucket_credentials.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_bitbucket_tool.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_builtin_modes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_c3_bridge_project_artifacts.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_c3_shell.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_chat_poll.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ci_act.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ci_cache.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ci_expr.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ci_impact.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ci_intel.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ci_runner.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ci_workflow.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_circuit_breaker.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_claude_md_merge.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_claude_md_updater.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_cli_smoke.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_codex_mcp_transport.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_codex_native.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_compressor_large_file.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_confirm_guard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_confirm_guard_wiring.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_cooccurrence_bounds.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_cred_audit.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_cred_telemetry.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_credential_login_kind.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_credential_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_credential_ui_parity.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_credentials_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_credentials_tool.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_creds_cli_smoke.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_delegate_cascade.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_delegate_version_probe.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_e2e_benchmark.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_edit_ledger_deadline.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_edit_ledger_hook.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_edit_locking.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_edit_normalization.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_edit_verify.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_embedding_index_deadlock.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_enforcement_flip.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_enforcement_policy.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_enforcement_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_env_parser.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_failed_calls_do_not_unlock.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_federated_graph.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_filter_backoff.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ghost_files.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ghost_generation.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_git_branch_awareness.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hook_access_guard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hook_codex_compat.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hook_dispatch.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hook_pretool_enforce.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hook_prompt_recall.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hook_smoke.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hook_state.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hook_utf8_stdio.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_credentials_route.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_credentials_routes_write.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_enforcement_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_inspect_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_locks_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_oracle_service_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_override_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_server_smoke.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_hub_subproject_links.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ide_workflow_adaptation.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_index_cap_not_hardcoded.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_init_clear_preserves_user_content.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_init_scan.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_install_mcp_entrypoint.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_jira_cli_smoke.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_jira_client.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_jira_config_fallback.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_jira_credentials.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_jira_links.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_jira_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_jira_tool.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_lazy_store_init.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mask_guard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mask_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mask_surfaces.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mcp_host_guard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mcp_memory_timeout.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mcp_server_smoke.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mcp_toml.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_memory_distiller.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_memory_graph_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_memory_queue.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_memory_system.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mobile_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mobile_extras.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mobile_override_routes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_mobile_security_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_no_stale_model_pins.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_notification_dedup.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_notification_discipline.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ollama_credentials.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_api_auth.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_apikey_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_c3_bridge.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_chat_engine.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_chat_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_discovery_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_discovery_audit.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_health_probe.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_local_auth.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_ollama_bridge.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_scanner_cache.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_security_fixes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_session_bootstrap.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_subproject_awareness.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_oracle_ui_bundle.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_output_filter.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_override_grants.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_override_grants_mcp.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_override_requests.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_override_wake.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_permissions.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_pm_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_project_manager.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_project_manager_merge.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_project_tool.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_read_coercion.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_read_edit_parity.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_related_facts.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_repo_map.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_repo_shape.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_response_boilerplate.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_retention.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_review_digest.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_search_eval.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_search_p1.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_search_p2.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_search_p2b.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_search_p3.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_search_p4.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_search_p5.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_service_durability.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_session_benchmark.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_session_budget.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_budget_s1.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_creds.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_eval.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_jobs_s3.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_nudge_s4.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_output.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_parsers_s2.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_robustness.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_telemetry_s0.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_write_ledger.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_shell_writes.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_subproject_clear_scope.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_subproject_depth_consumers.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_subproject_exclusion.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_subproject_federation.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_subproject_linkage_api.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_subprojects.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_swe_bench.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_task_store.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_task_tool.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_time_tracker.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_token_telemetry.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_token_tracking.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_tool_registry.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_ui_jsx_syntax.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_upgrade_and_version.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_validate.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_vault_write_guard.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_version_sync.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tests/test_web_security.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/backend.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/main.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/__init__.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/benchmark_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/claudemd_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/compress_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/index_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/init_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/mcp_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/optimize_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/pipe_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/projects_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/search_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/session_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/stats.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/screens/ui_view.py +0 -0
- {code_context_control-2.119.0 → code_context_control-2.120.0}/tui/theme.tcss +0 -0
{code_context_control-2.119.0/code_context_control.egg-info → code_context_control-2.120.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-control
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.120.0
|
|
4
4
|
Summary: Local MCP code-intelligence for AI coding tools: surgical search/read/edit, agent-config version history, path-level access + masking guards, and a multi-project hub.
|
|
5
5
|
Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -92,7 +92,7 @@ console = Console() if HAS_RICH else None
|
|
|
92
92
|
# Config
|
|
93
93
|
CONFIG_DIR = ".c3"
|
|
94
94
|
CONFIG_FILE = ".c3/config.json"
|
|
95
|
-
__version__ = "2.
|
|
95
|
+
__version__ = "2.120.0"
|
|
96
96
|
|
|
97
97
|
|
|
98
98
|
def _compress_file_cli(compressor, path, mode="smart", **kw):
|
|
@@ -1570,6 +1570,42 @@ def cmd_shell_eval(args):
|
|
|
1570
1570
|
sys.exit(1)
|
|
1571
1571
|
|
|
1572
1572
|
|
|
1573
|
+
def cmd_map_eval(args):
|
|
1574
|
+
"""Run the file-map gold suite and compare it to its baseline.
|
|
1575
|
+
|
|
1576
|
+
Renders the hand-annotated fixtures through the renderer the MCP tool
|
|
1577
|
+
uses and grades symbol recall, signatures, ranges and determinism. Exit
|
|
1578
|
+
status 1 when the baseline is violated (a must_pass case failed, an
|
|
1579
|
+
aggregate fell under its floor or rose over its ceiling, a complete map
|
|
1580
|
+
grew). See docs/map-eval.md.
|
|
1581
|
+
"""
|
|
1582
|
+
from services.bench import map_eval as me
|
|
1583
|
+
|
|
1584
|
+
try:
|
|
1585
|
+
report = me.run_suite(args.suite, baseline=args.baseline)
|
|
1586
|
+
except FileNotFoundError as e:
|
|
1587
|
+
raise RuntimeError(str(e))
|
|
1588
|
+
|
|
1589
|
+
if args.update_baseline:
|
|
1590
|
+
path = args.baseline or me.BUNDLED_BASELINES.get(report.suite)
|
|
1591
|
+
if not path:
|
|
1592
|
+
raise RuntimeError(
|
|
1593
|
+
f"suite {report.suite!r} has no bundled baseline; pass --baseline PATH")
|
|
1594
|
+
floors = json.loads(args.floors) if args.floors else None
|
|
1595
|
+
ceilings = json.loads(args.ceilings) if args.ceilings else None
|
|
1596
|
+
me.write_baseline(report, path, floors=floors, ceilings=ceilings)
|
|
1597
|
+
report.baseline_violations, report.baseline_warnings = me.compare_to_baseline(
|
|
1598
|
+
report, me.load_baseline(path))
|
|
1599
|
+
print(f"baseline written: {path}")
|
|
1600
|
+
|
|
1601
|
+
if args.json:
|
|
1602
|
+
print(json.dumps(report.to_dict(), indent=2))
|
|
1603
|
+
else:
|
|
1604
|
+
print(report.render())
|
|
1605
|
+
if report.baseline_violations:
|
|
1606
|
+
sys.exit(1)
|
|
1607
|
+
|
|
1608
|
+
|
|
1573
1609
|
def _benchmark_extract_preview(full_path: Path, compressor: CodeCompressor, pattern: str = "", max_lines: int = 50) -> str:
|
|
1574
1610
|
"""Approximate c3_filter behavior for local benchmarking without MCP startup."""
|
|
1575
1611
|
import re as _re
|
|
@@ -9261,6 +9297,7 @@ def main():
|
|
|
9261
9297
|
"stats": cmd_stats,
|
|
9262
9298
|
"search-eval": cmd_search_eval,
|
|
9263
9299
|
"shell-eval": cmd_shell_eval,
|
|
9300
|
+
"map-eval": cmd_map_eval,
|
|
9264
9301
|
"benchmark": cmd_benchmark,
|
|
9265
9302
|
"session-benchmark": cmd_session_benchmark,
|
|
9266
9303
|
"benchmark-e2e": cmd_benchmark_e2e,
|
|
@@ -76,6 +76,19 @@ def build_parser(version: str, parse_cli_ide_arg):
|
|
|
76
76
|
help='With --update-baseline: JSON object of metric ceilings, e.g. \'{"bytes_p95": 18432}\'')
|
|
77
77
|
p_shell_eval.add_argument("--json", action="store_true", help="Emit the full report as JSON")
|
|
78
78
|
|
|
79
|
+
p_map_eval = subparsers.add_parser(
|
|
80
|
+
"map-eval", help="Run the file-map gold suite (docs/map-eval.md)")
|
|
81
|
+
p_map_eval.add_argument("--suite", default="fixture",
|
|
82
|
+
help="'fixture' (hand-annotated sources, CI gate) or a .jsonl path")
|
|
83
|
+
p_map_eval.add_argument("--baseline", default=None, help="Baseline JSON to compare against / write")
|
|
84
|
+
p_map_eval.add_argument("--update-baseline", action="store_true",
|
|
85
|
+
help="Write aggregates + per-case status to the baseline (floors/ceilings are kept)")
|
|
86
|
+
p_map_eval.add_argument("--floors", default=None,
|
|
87
|
+
help='With --update-baseline: JSON object of metric floors, e.g. \'{"symbol_recall_mean": 0.9}\'')
|
|
88
|
+
p_map_eval.add_argument("--ceilings", default=None,
|
|
89
|
+
help='With --update-baseline: JSON object of metric ceilings, e.g. \'{"tokens_p95": 4000}\'')
|
|
90
|
+
p_map_eval.add_argument("--json", action="store_true", help="Emit the full report as JSON")
|
|
91
|
+
|
|
79
92
|
p_compress = subparsers.add_parser("compress", help="Compress a file")
|
|
80
93
|
p_compress.add_argument("file", help="File to compress")
|
|
81
94
|
p_compress.add_argument("--mode", choices=["map", "dense_map", "smart", "diff"], default="smart")
|
|
@@ -14,6 +14,48 @@ from core import count_tokens
|
|
|
14
14
|
from services import access_guard
|
|
15
15
|
|
|
16
16
|
|
|
17
|
+
def map_detail(svc, rel: str, requested_mode: str, *, cache_hit: bool,
|
|
18
|
+
symbols: int = 0, fallback: str = "") -> dict:
|
|
19
|
+
"""Telemetry `detail` for a map served from file_memory (C0, 2.120.0).
|
|
20
|
+
|
|
21
|
+
backend names the code path, parser the extractor that built the record
|
|
22
|
+
(tree_sitter | regex | generic, "" for a pre-2.120.0 record), cache_hit
|
|
23
|
+
whether the record was already fresh. `symbols` is how many the caller
|
|
24
|
+
asked for and `fallback` why a read served a map instead of source.
|
|
25
|
+
Flat so telemetry.aggregate_tool_telemetry can fold it without a schema.
|
|
26
|
+
"""
|
|
27
|
+
record = None
|
|
28
|
+
try:
|
|
29
|
+
record = svc.file_memory.get(rel)
|
|
30
|
+
except Exception:
|
|
31
|
+
record = None
|
|
32
|
+
if not isinstance(record, dict):
|
|
33
|
+
record = None
|
|
34
|
+
detail = {
|
|
35
|
+
"requested_mode": requested_mode,
|
|
36
|
+
"backend": "file_memory",
|
|
37
|
+
"parser": str((record or {}).get("parser") or ""),
|
|
38
|
+
"cache_hit": bool(cache_hit),
|
|
39
|
+
"sections": len((record or {}).get("sections") or []),
|
|
40
|
+
}
|
|
41
|
+
if symbols:
|
|
42
|
+
detail["symbols"] = int(symbols)
|
|
43
|
+
if fallback:
|
|
44
|
+
detail["fallback"] = fallback
|
|
45
|
+
return detail
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
def compressor_detail(res: dict, requested_mode: str) -> dict:
|
|
49
|
+
"""Telemetry `detail` for a CodeCompressor result (smart/diff/bug_scan…)."""
|
|
50
|
+
backend = "large_fast_path" if res.get("fast_path") else "compressor"
|
|
51
|
+
return {
|
|
52
|
+
"requested_mode": requested_mode,
|
|
53
|
+
"backend": backend,
|
|
54
|
+
"actual_mode": str(res.get("mode") or ""),
|
|
55
|
+
"cache_hit": bool(res.get("cache_hit")),
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
17
59
|
def _run_memory_mcp_cli(args: list, cwd: str, timeout: int = 30) -> tuple:
|
|
18
60
|
"""Run codebase-memory-mcp CLI and return (success, output_or_error)."""
|
|
19
61
|
binary = shutil.which("codebase-memory-mcp")
|
|
@@ -150,6 +192,8 @@ def _compress_single(file_path: str, mode: str, svc, finalize, maybe_facts) -> s
|
|
|
150
192
|
return ("[file_map:error] not found. To create a new file use "
|
|
151
193
|
"c3_edit(file_path=..., old_string='', new_string=<content>).")
|
|
152
194
|
rel = str(full.resolve().relative_to(Path(svc.project_path).resolve())).replace("\\", "/")
|
|
195
|
+
# C0 measurement: was the record already fresh before this call?
|
|
196
|
+
cache_hit = not svc.file_memory.needs_update(rel)
|
|
153
197
|
queued = svc.file_memory.drain_queue()
|
|
154
198
|
completed = []
|
|
155
199
|
failed = []
|
|
@@ -183,7 +227,8 @@ def _compress_single(file_path: str, mode: str, svc, finalize, maybe_facts) -> s
|
|
|
183
227
|
finalize, svc, "c3_compress", {"file_path": file_path, "mode": mode},
|
|
184
228
|
res, summary,
|
|
185
229
|
raw_tokens=raw_tokens, optimized_tokens=map_tokens or None,
|
|
186
|
-
response_tokens=map_tokens
|
|
230
|
+
response_tokens=map_tokens,
|
|
231
|
+
detail=map_detail(svc, rel, mode, cache_hit=cache_hit))
|
|
187
232
|
|
|
188
233
|
try:
|
|
189
234
|
res = svc.compressor.compress_file(str(full), mode)
|
|
@@ -197,7 +242,8 @@ def _compress_single(file_path: str, mode: str, svc, finalize, maybe_facts) -> s
|
|
|
197
242
|
finalize, svc, "c3_compress", {"file_path": file_path},
|
|
198
243
|
resp + maybe_facts(svc, Path(file_path).name), mode,
|
|
199
244
|
raw_tokens=res.get('original_tokens'),
|
|
200
|
-
optimized_tokens=res.get('compressed_tokens')
|
|
245
|
+
optimized_tokens=res.get('compressed_tokens'),
|
|
246
|
+
detail=compressor_detail(res, mode))
|
|
201
247
|
|
|
202
248
|
|
|
203
249
|
def _compress_batch(paths: list, mode: str, svc, finalize, maybe_facts) -> str:
|
|
@@ -288,4 +334,6 @@ def _compress_batch(paths: list, mode: str, svc, finalize, maybe_facts) -> str:
|
|
|
288
334
|
{"file_path": ",".join(paths), "mode": mode, "batch": True},
|
|
289
335
|
body, f"batch {total_ok}/{len(paths)}",
|
|
290
336
|
raw_tokens=total_raw if measured else None,
|
|
291
|
-
optimized_tokens=total_opt if measured else None
|
|
337
|
+
optimized_tokens=total_opt if measured else None,
|
|
338
|
+
detail={"requested_mode": mode, "backend": "batch",
|
|
339
|
+
"files": len(paths), "ok": total_ok})
|
|
@@ -8,6 +8,7 @@ from typing import Any
|
|
|
8
8
|
|
|
9
9
|
from cli.tools import _grants
|
|
10
10
|
from cli.tools._helpers import finalize_with_tokens, maybe_related_facts
|
|
11
|
+
from cli.tools.compress import map_detail
|
|
11
12
|
from core import count_tokens
|
|
12
13
|
from services import access_guard
|
|
13
14
|
|
|
@@ -301,15 +302,19 @@ def handle_read(file_path: str, symbols: Any = None, lines: Any = None,
|
|
|
301
302
|
ranges.extend(main_ranges)
|
|
302
303
|
|
|
303
304
|
if not ranges and symbols:
|
|
305
|
+
map_cached = not svc.file_memory.needs_update(rel_path)
|
|
304
306
|
file_map = svc.file_memory.get_or_build_map(rel_path)
|
|
305
307
|
resp = f"[read:{file_path}] symbols not found: {symbols}. Showing file map:\n{file_map}"
|
|
306
308
|
map_tok = count_tokens(file_map)
|
|
307
309
|
return finalize_with_tokens(
|
|
308
310
|
finalize, svc, "c3_read", {"file": file_path, "symbols": symbols},
|
|
309
311
|
resp, f"{full_file_tokens()}->{map_tok}tok",
|
|
310
|
-
raw_tokens=full_file_tokens(), optimized_tokens=map_tok
|
|
312
|
+
raw_tokens=full_file_tokens(), optimized_tokens=map_tok,
|
|
313
|
+
detail=map_detail(svc, rel_path, "read", cache_hit=map_cached,
|
|
314
|
+
symbols=len(symbols), fallback="symbols_not_found"))
|
|
311
315
|
|
|
312
316
|
if not ranges:
|
|
317
|
+
map_cached = not svc.file_memory.needs_update(rel_path)
|
|
313
318
|
file_map = svc.file_memory.get_or_build_map(rel_path)
|
|
314
319
|
resp = (file_map
|
|
315
320
|
+ "\n[map only — pass lines=[start,end] or symbols=[...] for exact source]"
|
|
@@ -319,7 +324,9 @@ def handle_read(file_path: str, symbols: Any = None, lines: Any = None,
|
|
|
319
324
|
finalize, svc, "c3_read", {"file": file_path},
|
|
320
325
|
resp, f"{full_file_tokens()}->{map_tok}tok",
|
|
321
326
|
raw_tokens=full_file_tokens(), optimized_tokens=map_tok,
|
|
322
|
-
response_tokens=map_tok
|
|
327
|
+
response_tokens=map_tok,
|
|
328
|
+
detail=map_detail(svc, rel_path, "read", cache_hit=map_cached,
|
|
329
|
+
fallback="map_only"))
|
|
323
330
|
else:
|
|
324
331
|
# Sort and merge overlapping ranges
|
|
325
332
|
ranges.sort()
|
|
@@ -359,7 +366,16 @@ def handle_read(file_path: str, symbols: Any = None, lines: Any = None,
|
|
|
359
366
|
resp = final_content + maybe_related_facts(svc, rel_path, top_k=3, context="read")
|
|
360
367
|
tokens = count_tokens(resp)
|
|
361
368
|
summary = f"{full_file_tokens()}->{tokens}tok" if tokens < full_file_tokens() else f"{tokens}tok"
|
|
369
|
+
# C0 measurement: what the read asked for and how much source it took.
|
|
370
|
+
read_detail = {
|
|
371
|
+
"backend": "source",
|
|
372
|
+
"symbols": len(symbols) if symbols else 0,
|
|
373
|
+
"by_lines": bool(lines),
|
|
374
|
+
"ranges": len(ranges),
|
|
375
|
+
"lines_served": sum(e - s_ + 1 for s_, e in ranges),
|
|
376
|
+
"file_lines": len(content_lines),
|
|
377
|
+
}
|
|
362
378
|
return finalize_with_tokens(
|
|
363
379
|
finalize, svc, "c3_read", {"file": file_path, "symbols": symbols}, resp, summary,
|
|
364
380
|
raw_tokens=full_file_tokens(), optimized_tokens=tokens,
|
|
365
|
-
response_tokens=tokens)
|
|
381
|
+
response_tokens=tokens, detail=read_detail)
|
{code_context_control-2.119.0 → code_context_control-2.120.0/code_context_control.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-control
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.120.0
|
|
4
4
|
Summary: Local MCP code-intelligence for AI coding tools: surgical search/read/edit, agent-config version history, path-level access + masking guards, and a multi-project hub.
|
|
5
5
|
Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -288,6 +288,7 @@ services/vector_store.py
|
|
|
288
288
|
services/watcher.py
|
|
289
289
|
services/win_subprocess.py
|
|
290
290
|
services/bench/__init__.py
|
|
291
|
+
services/bench/map_eval.py
|
|
291
292
|
services/bench/search_eval.py
|
|
292
293
|
services/bench/shell_eval.py
|
|
293
294
|
services/bench/external/__init__.py
|
|
@@ -390,6 +391,8 @@ tests/test_jira_links.py
|
|
|
390
391
|
tests/test_jira_routes.py
|
|
391
392
|
tests/test_jira_tool.py
|
|
392
393
|
tests/test_lazy_store_init.py
|
|
394
|
+
tests/test_map_eval.py
|
|
395
|
+
tests/test_map_telemetry_c0.py
|
|
393
396
|
tests/test_mask_guard.py
|
|
394
397
|
tests/test_mask_routes.py
|
|
395
398
|
tests/test_mask_surfaces.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "code-context-control"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.120.0"
|
|
8
8
|
description = "Local MCP code-intelligence for AI coding tools: surgical search/read/edit, agent-config version history, path-level access + masking guards, and a multi-project hub."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -163,6 +163,8 @@ extend-exclude = [
|
|
|
163
163
|
"commercial",
|
|
164
164
|
"tui/build.bat",
|
|
165
165
|
"tui/build.sh",
|
|
166
|
+
# map-eval fixtures are parser input, one of them deliberately malformed.
|
|
167
|
+
"tests/map_eval/fixtures",
|
|
166
168
|
]
|
|
167
169
|
|
|
168
170
|
[tool.ruff.lint]
|