code-context-control 2.129.0__tar.gz → 2.129.1__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.129.0 → code_context_control-2.129.1}/PKG-INFO +1 -1
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/c3.py +1 -1
- {code_context_control-2.129.0 → code_context_control-2.129.1}/code_context_control.egg-info/PKG-INFO +1 -1
- {code_context_control-2.129.0 → code_context_control-2.129.1}/code_context_control.egg-info/SOURCES.txt +1 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/pyproject.toml +1 -1
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/watcher.py +75 -11
- code_context_control-2.129.1/tests/test_watcher_pruning.py +117 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/LICENSE +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/README.md +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/_hook_utils.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/_shell_writes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/commands/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/commands/common.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/commands/parser.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/docs.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/edits.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/access.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/bitbucket.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/credentials.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/getting-started.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/index.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/masking.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/oracle.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/shared.css +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/tools.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/workflow.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_access_guard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_artifact.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_auto_snapshot.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_c3_signal.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_c3read.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_codex_lifecycle.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_dispatch.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_edit_ledger.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_edit_unlock.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_filter.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_ghost_files.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_pretool_enforce.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_prompt_recall.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_read.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_session_end.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_session_open.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_session_stats.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hook_terse_advisor.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_server.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/app.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/add_project.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/config_editor.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_artifacts.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_health.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_panel.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_subprojects.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_tasks.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_views.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/global_search.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_access.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_ci.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_cred_audit.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_credentials.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_enforcement.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_locks.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_tokens.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/mcp_manager.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/modals.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/project_card.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/project_tree.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/session_drawer.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/settings_modal.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/sidebar.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/summary_bar.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/task_board.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/toasts.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/topbar.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/state.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/mcp_proxy.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/mcp_server.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/progress.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/server.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/_grants.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/_helpers.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/agent.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/artifacts.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/bitbucket.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/ci.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/compress.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/credentials.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/delegate.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/edit.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/edit_verify.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/edits.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/federate.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/filter.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/impact.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/jira.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/locks.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/memory.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/override.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/project.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/read.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/search.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/session.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/shell.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/shell_job.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/shell_nudge.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/shell_parsers.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/shell_render.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/status.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/tasks.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/tools/validate.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/api.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/app.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/access.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/bitbucket.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/chat.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/credentials.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/dashboard.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/edits.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/enforcement.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/instructions.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/jira.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/memory.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/sessions.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/settings.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/sidebar.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/tasks.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/icons.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/pm_shared.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/shared.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/theme.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui_legacy.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui_nano.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/code_context_control.egg-info/dependency_links.txt +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/code_context_control.egg-info/entry_points.txt +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/code_context_control.egg-info/requires.txt +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/code_context_control.egg-info/top_level.txt +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/core/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/core/codex_patch.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/core/config.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/core/host.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/core/ide.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/core/mcp_toml.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/core/web_security.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/config.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/listeners.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/mcp_oracle.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/oracle_server.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/oracle_ui.html +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/activity_reporter.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/api_auth.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/c3_bridge.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/chat_engine.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/chat_poll.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/chat_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/client_tokens.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/cross_memory.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/discovery_audit.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/federated_graph.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/health_checker.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/insight_engine.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/local_session.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/memory_reader.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/memory_writer.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/mobile_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/project_scanner.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/review_agent.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/tool_executor.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/services/tool_registry.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/activity.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/agents.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/app.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/busy.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/chat/conversations.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/chat/input.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/chat/markdown.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/chat/send.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/chat/stream_renderer.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/chat/toolbar.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/core.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/crossgraph.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/header.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/insights.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/projects.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/qrcode.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/settings.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/suggestions.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/oracle/ui/theme_tabs.js +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/access_guard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/access_telemetry.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/activity_log.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/agent_base.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/agent_locks.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/agents.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/artifact_defs.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/artifact_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/atomic_json.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/auto_memory.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/background_service.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bench/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bench/external/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bench/external/aider_polyglot.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bench/external/swe_bench.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bench/map_eval.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bench/search_eval.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bench/shell_eval.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/benchmark_dashboard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bitbucket_client.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/bitbucket_credentials.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_act.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_cache.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_expr.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_failures.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_github.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_impact.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_intel.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_runner.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ci_workflow.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/circuit_breaker.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/claude_md.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/codex_integration.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/codex_transcript.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/compressor.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/context_snapshot.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/conversation_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/cred_audit.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/cred_telemetry.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/credential_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/dir_map.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/doc_index.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/e2e_benchmark.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/e2e_evaluator.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/e2e_tasks.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/edit_ledger.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/embedding_index.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/enforcement_policy.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/error_reporting.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/file_map.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/file_memory.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/git_context.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/host_sessions.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/hub_service.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/index_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/indexer.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/jira_client.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/jira_cloud.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/jira_credentials.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/jira_data_center.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/jira_links.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/lexical_index.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/mask_activation.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/mask_mirror.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/mask_presets.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/memory.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/memory_consolidator.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/memory_distiller.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/memory_graph.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/memory_grounder.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/memory_queue.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/memory_scorer.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/metrics.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/notifications.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ollama_bridge.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ollama_client.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/ollama_credentials.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/oracle_service.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/output_filter.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/override_costs.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/override_grants.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/override_policy.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/override_requests.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/override_wake.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/parser.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/project_manager.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/project_runtime.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/protocol.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/proxy_state.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/repo_map.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/repo_shape.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/reranker.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/retention.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/retrieval.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/retrieval_broker.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/router.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/runtime.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/scanner.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/session_benchmark.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/session_live.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/session_manager.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/session_preloader.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/shell_jobs.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/shell_output.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/subprojects.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/task_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/telemetry.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/text_index.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/time_tracker.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/tool_classifier.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/transcript_index.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/validation_cache.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/vector_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/services/win_subprocess.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/setup.cfg +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_access_builtin_optout.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_access_guard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_access_guard_meta.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_access_guard_shell_project.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_access_guard_surfaces.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_access_guard_wiring.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_activity_log_find_last.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_activity_reporter.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_agent_locks.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_aider_polyglot.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_antigravity_transition.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_artifact_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_artifact_tool.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_atomic_json.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_background_service.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_bitbucket_cli_smoke.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_bitbucket_client.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_bitbucket_config_fallback.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_bitbucket_credentials.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_bitbucket_tool.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_builtin_modes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_c3_bridge_project_artifacts.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_c3_shell.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_chat_poll.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ci_act.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ci_cache.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ci_expr.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ci_impact.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ci_intel.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ci_runner.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ci_workflow.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_circuit_breaker.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_claude_md_merge.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_claude_md_updater.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_cli_smoke.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_codex_mcp_transport.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_codex_native.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_compressor_large_file.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_confirm_guard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_confirm_guard_wiring.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_cooccurrence_bounds.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_cred_audit.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_cred_telemetry.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_credential_login_kind.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_credential_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_credential_ui_parity.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_credentials_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_credentials_tool.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_creds_cli_smoke.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_delegate_cascade.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_delegate_version_probe.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_dir_map_c3.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_e2e_benchmark.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_edit_ledger_deadline.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_edit_ledger_hook.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_edit_locking.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_edit_normalization.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_edit_verify.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_embedding_index_deadlock.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_enforcement_flip.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_enforcement_policy.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_enforcement_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_env_parser.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_failed_calls_do_not_unlock.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_federated_graph.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_file_map_c1.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_filter_backoff.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ghost_files.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ghost_generation.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_git_branch_awareness.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_access_guard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_codex_compat.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_dispatch.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_pretool_enforce.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_prompt_recall.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_session_end.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_smoke.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_state.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hook_utf8_stdio.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_credentials_route.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_credentials_routes_write.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_enforcement_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_hook_migration.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_inspect_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_locks_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_oracle_service_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_override_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_server_smoke.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_hub_subproject_links.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ide_workflow_adaptation.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_index_cap_not_hardcoded.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_init_clear_preserves_user_content.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_init_scan.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_install_mcp_entrypoint.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_jira_cli_smoke.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_jira_client.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_jira_config_fallback.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_jira_credentials.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_jira_links.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_jira_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_jira_tool.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_large_files_c4.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_lazy_store_init.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_map_eval.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_map_telemetry_c0.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mask_guard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mask_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mask_surfaces.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mcp_host_guard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mcp_memory_timeout.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mcp_server_smoke.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mcp_toml.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_memory_distiller.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_memory_graph_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_memory_queue.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_memory_system.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mobile_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mobile_clients.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mobile_extras.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mobile_jobs_ci.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mobile_override_costs.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mobile_override_routes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_mobile_security_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_no_stale_model_pins.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_notification_dedup.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_notification_discipline.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_notification_kinds.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ollama_credentials.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_api_auth.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_apikey_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_c3_bridge.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_chat_engine.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_chat_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_discovery_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_discovery_audit.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_health_probe.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_local_auth.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_loopback.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_ollama_bridge.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_scanner_cache.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_security_fixes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_session_bootstrap.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_subproject_awareness.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_oracle_ui_bundle.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_output_filter.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_override_costs.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_override_grants.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_override_grants_mcp.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_override_requests.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_override_wake.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_permissions.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_pm_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_project_manager.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_project_manager_merge.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_project_tool.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_read_coercion.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_read_edit_parity.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_read_outside_root.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_related_facts.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_repo_map.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_repo_shape.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_response_boilerplate.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_retention.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_review_digest.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_search_eval.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_search_p1.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_search_p2.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_search_p2b.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_search_p3.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_search_p4.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_search_p5.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_service_durability.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_session_benchmark.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_session_budget.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_session_live.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_budget_s1.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_creds.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_eval.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_jobs_s3.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_nudge_s4.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_output.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_parsers_s2.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_robustness.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_telemetry_s0.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_write_ledger.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_shell_writes.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_subproject_clear_scope.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_subproject_depth_consumers.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_subproject_exclusion.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_subproject_federation.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_subproject_linkage_api.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_subprojects.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_swe_bench.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_task_store.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_task_tool.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_time_tracker.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_token_telemetry.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_token_tracking.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_tool_registry.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_ui_jsx_syntax.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_upgrade_and_version.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_validate.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_vault_write_guard.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_version_sync.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_web_security.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tests/test_windows_reliability.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/backend.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/main.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/__init__.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/benchmark_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/claudemd_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/compress_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/index_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/init_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/mcp_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/optimize_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/pipe_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/projects_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/search_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/session_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/stats.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/screens/ui_view.py +0 -0
- {code_context_control-2.129.0 → code_context_control-2.129.1}/tui/theme.tcss +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-control
|
|
3
|
-
Version: 2.129.
|
|
3
|
+
Version: 2.129.1
|
|
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
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/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.129.
|
|
3
|
+
Version: 2.129.1
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "code-context-control"
|
|
7
|
-
version = "2.129.
|
|
7
|
+
version = "2.129.1"
|
|
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"
|
|
@@ -7,6 +7,7 @@ Watches project files for changes and tracks modifications:
|
|
|
7
7
|
- Accumulates changes for session logging
|
|
8
8
|
- Triggers index rebuild when enough changes accumulate
|
|
9
9
|
"""
|
|
10
|
+
import os
|
|
10
11
|
import threading
|
|
11
12
|
from datetime import datetime, timezone
|
|
12
13
|
from pathlib import Path
|
|
@@ -14,6 +15,8 @@ from pathlib import Path
|
|
|
14
15
|
from watchdog.events import FileSystemEventHandler
|
|
15
16
|
from watchdog.observers import Observer
|
|
16
17
|
|
|
18
|
+
from services.scanner import SKIP_DIRS, is_nested_checkout, make_dir_pruner
|
|
19
|
+
|
|
17
20
|
# Extensions to watch
|
|
18
21
|
CODE_EXTENSIONS = {
|
|
19
22
|
'.py', '.js', '.ts', '.tsx', '.jsx', '.r', '.R',
|
|
@@ -21,32 +24,93 @@ CODE_EXTENSIONS = {
|
|
|
21
24
|
'.sh', '.sql', '.go', '.rs', '.java', '.cpp', '.c', '.h',
|
|
22
25
|
}
|
|
23
26
|
|
|
24
|
-
#
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
'env', '.venv', 'dist', 'build', '.next', '.cache',
|
|
28
|
-
'coverage', '.pytest_cache',
|
|
29
|
-
}
|
|
27
|
+
# SKIP_DIRS is re-exported from services.scanner: the watcher and the index
|
|
28
|
+
# walker must agree on what is not part of the project (see _ChangeHandler).
|
|
29
|
+
__all__ = ['CODE_EXTENSIONS', 'SKIP_DIRS', 'CodeWatcher']
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class _ChangeHandler(FileSystemEventHandler):
|
|
33
|
-
"""Collects file change events.
|
|
33
|
+
"""Collects file change events.
|
|
34
|
+
|
|
35
|
+
The filter is the index scanner's, not a private one. A change only
|
|
36
|
+
counts when the file could be IN the index: the same directory pruning
|
|
37
|
+
as ``scanner.iter_files`` (SKIP_DIRS, the root .gitignore's directory
|
|
38
|
+
entries, nested checkouts such as linked worktrees), then the
|
|
39
|
+
sub-project excluder, then the extension allowlist.
|
|
34
40
|
|
|
35
|
-
|
|
41
|
+
Before 2.129.1 the watcher kept its own shorter skip list and ignored
|
|
42
|
+
.gitignore and worktrees, so state files a daemon rewrites every few
|
|
43
|
+
seconds under a gitignored ``logs/`` counted as source changes. On one
|
|
44
|
+
project that tripped IndexStalenessAgent's rebuild threshold (15) every
|
|
45
|
+
single minute — the "Index auto-rebuilt" notification reached a count of
|
|
46
|
+
75,968 — and each refresh burst left the MCP server's process heap with
|
|
47
|
+
more pinned 16 MB segments it never gave back: 28 GB of commit charge
|
|
48
|
+
per server with under 1 GB touched, three servers on the project, and
|
|
49
|
+
the C3 Hub dying of MemoryError when the box ran out of commit.
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
def __init__(self, excluder=None, root=None):
|
|
36
53
|
super().__init__()
|
|
37
54
|
self._lock = threading.Lock()
|
|
38
55
|
self._changes = []
|
|
39
56
|
self._excluder = excluder # sub-project folders tracked by their own .c3
|
|
57
|
+
self._root = Path(root) if root else None
|
|
58
|
+
self._pruned = make_dir_pruner(root) if root else (lambda d: d in SKIP_DIRS)
|
|
59
|
+
# dir path -> is another checkout; one stat per directory, not per event
|
|
60
|
+
self._checkout_cache: dict = {}
|
|
61
|
+
|
|
62
|
+
def _reload_pruner(self):
|
|
63
|
+
"""Re-read the root .gitignore (called when it changes)."""
|
|
64
|
+
if self._root is not None:
|
|
65
|
+
self._pruned = make_dir_pruner(self._root)
|
|
66
|
+
|
|
67
|
+
def _rel_parts(self, p: Path) -> tuple:
|
|
68
|
+
if self._root is None:
|
|
69
|
+
return p.parts
|
|
70
|
+
try:
|
|
71
|
+
return p.relative_to(self._root).parts
|
|
72
|
+
except ValueError:
|
|
73
|
+
try:
|
|
74
|
+
return p.resolve().relative_to(self._root).parts
|
|
75
|
+
except (ValueError, OSError):
|
|
76
|
+
return p.parts
|
|
77
|
+
|
|
78
|
+
def _under_nested_checkout(self, rel_dirs: tuple) -> bool:
|
|
79
|
+
if self._root is None:
|
|
80
|
+
return False
|
|
81
|
+
cur = str(self._root)
|
|
82
|
+
for d in rel_dirs:
|
|
83
|
+
cur = os.path.join(cur, d)
|
|
84
|
+
hit = self._checkout_cache.get(cur)
|
|
85
|
+
if hit is None:
|
|
86
|
+
if len(self._checkout_cache) > 4096:
|
|
87
|
+
self._checkout_cache.clear()
|
|
88
|
+
hit = self._checkout_cache[cur] = is_nested_checkout(cur)
|
|
89
|
+
if hit:
|
|
90
|
+
return True
|
|
91
|
+
return False
|
|
40
92
|
|
|
41
93
|
def _should_track(self, path: str) -> bool:
|
|
42
94
|
p = Path(path)
|
|
43
|
-
if
|
|
95
|
+
if p.suffix.lower() not in CODE_EXTENSIONS:
|
|
96
|
+
return False
|
|
97
|
+
parts = self._rel_parts(p)
|
|
98
|
+
rel_dirs = parts[:-1]
|
|
99
|
+
if any(self._pruned(d) for d in rel_dirs):
|
|
100
|
+
return False
|
|
101
|
+
if self._under_nested_checkout(rel_dirs):
|
|
44
102
|
return False
|
|
45
103
|
if self._excluder is not None and self._excluder(path):
|
|
46
104
|
return False
|
|
47
|
-
return
|
|
105
|
+
return True
|
|
48
106
|
|
|
49
107
|
def _record(self, event_type: str, path: str):
|
|
108
|
+
if self._root is not None and Path(path).name == '.gitignore':
|
|
109
|
+
try:
|
|
110
|
+
if Path(path).parent.samefile(self._root):
|
|
111
|
+
self._reload_pruner()
|
|
112
|
+
except OSError:
|
|
113
|
+
pass
|
|
50
114
|
if not self._should_track(path):
|
|
51
115
|
return
|
|
52
116
|
with self._lock:
|
|
@@ -94,7 +158,7 @@ class CodeWatcher:
|
|
|
94
158
|
excluder = make_excluder(self.project_path)
|
|
95
159
|
except Exception:
|
|
96
160
|
excluder = None
|
|
97
|
-
self._handler = _ChangeHandler(excluder)
|
|
161
|
+
self._handler = _ChangeHandler(excluder, root=self.project_path)
|
|
98
162
|
self._observer = Observer()
|
|
99
163
|
self._observer.daemon = True
|
|
100
164
|
self._file_memory = None
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"""
|
|
2
|
+
The file watcher filters events with the index scanner's pruning.
|
|
3
|
+
|
|
4
|
+
A change counts toward IndexStalenessAgent's rebuild threshold only when the
|
|
5
|
+
file could be in the index. Before 2.129.1 the watcher had its own shorter
|
|
6
|
+
skip list and ignored the root .gitignore and nested checkouts, so a daemon
|
|
7
|
+
rewriting state JSON under a gitignored ``logs/`` every few seconds tripped
|
|
8
|
+
a full refresh every minute (75,968 "Index auto-rebuilt" notifications on
|
|
9
|
+
one project) and each refresh burst left the MCP server's process heap with
|
|
10
|
+
pinned 16 MB segments it never released — 28 GB of commit per server.
|
|
11
|
+
"""
|
|
12
|
+
import tempfile
|
|
13
|
+
import unittest
|
|
14
|
+
from pathlib import Path
|
|
15
|
+
|
|
16
|
+
from services.watcher import SKIP_DIRS, _ChangeHandler
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class _Tree(unittest.TestCase):
|
|
20
|
+
def setUp(self):
|
|
21
|
+
self._td = tempfile.TemporaryDirectory()
|
|
22
|
+
self.root = Path(self._td.name).resolve()
|
|
23
|
+
|
|
24
|
+
def tearDown(self):
|
|
25
|
+
self._td.cleanup()
|
|
26
|
+
|
|
27
|
+
def touch(self, rel, content="x"):
|
|
28
|
+
p = self.root / rel
|
|
29
|
+
p.parent.mkdir(parents=True, exist_ok=True)
|
|
30
|
+
p.write_text(content, encoding="utf-8")
|
|
31
|
+
return p
|
|
32
|
+
|
|
33
|
+
def handler(self, excluder=None):
|
|
34
|
+
return _ChangeHandler(excluder, root=str(self.root))
|
|
35
|
+
|
|
36
|
+
@staticmethod
|
|
37
|
+
def recorded(h):
|
|
38
|
+
return [Path(c["path"]).name for c in h.get_and_clear()]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class TestGitignoredDirectoriesDoNotCount(_Tree):
|
|
42
|
+
def test_a_state_file_under_a_gitignored_dir_is_not_a_change(self):
|
|
43
|
+
self.touch(".gitignore", "logs/\n.daemon-worktree/\n")
|
|
44
|
+
h = self.handler()
|
|
45
|
+
h._record("modified", str(self.touch("logs/.health.json", "{}")))
|
|
46
|
+
h._record("modified", str(self.touch(
|
|
47
|
+
".daemon-worktree/logs/restart_failure_state.json", "{}")))
|
|
48
|
+
h._record("modified", str(self.touch("src/real.py")))
|
|
49
|
+
self.assertEqual(self.recorded(h), ["real.py"])
|
|
50
|
+
|
|
51
|
+
def test_a_gitignore_glob_entry_prunes_too(self):
|
|
52
|
+
self.touch(".gitignore", "*.egg-info/\n")
|
|
53
|
+
h = self.handler()
|
|
54
|
+
h._record("created", str(self.touch("c3.egg-info/PKG-INFO.md")))
|
|
55
|
+
h._record("created", str(self.touch("pkg/mod.py")))
|
|
56
|
+
self.assertEqual(self.recorded(h), ["mod.py"])
|
|
57
|
+
|
|
58
|
+
def test_editing_the_root_gitignore_reloads_the_pruner(self):
|
|
59
|
+
h = self.handler()
|
|
60
|
+
h._record("modified", str(self.touch("logs/state.json", "{}")))
|
|
61
|
+
self.assertEqual(self.recorded(h), ["state.json"])
|
|
62
|
+
gi = self.touch(".gitignore", "logs/\n")
|
|
63
|
+
h._record("modified", str(gi)) # the watcher sees the edit
|
|
64
|
+
h._record("modified", str(self.touch("logs/state.json", "{}")))
|
|
65
|
+
self.assertEqual(self.recorded(h), [])
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class TestNestedCheckoutsDoNotCount(_Tree):
|
|
69
|
+
def test_a_linked_worktree_copy_is_not_a_change(self):
|
|
70
|
+
wt = self.root / "wt"
|
|
71
|
+
wt.mkdir()
|
|
72
|
+
(wt / ".git").write_text("gitdir: /elsewhere/.git/worktrees/wt\n",
|
|
73
|
+
encoding="utf-8")
|
|
74
|
+
h = self.handler()
|
|
75
|
+
h._record("modified", str(self.touch("wt/src/copy.py")))
|
|
76
|
+
h._record("modified", str(self.touch("src/real.py")))
|
|
77
|
+
self.assertEqual(self.recorded(h), ["real.py"])
|
|
78
|
+
|
|
79
|
+
def test_the_project_root_itself_is_never_treated_as_nested(self):
|
|
80
|
+
(self.root / ".git").mkdir()
|
|
81
|
+
h = self.handler()
|
|
82
|
+
h._record("modified", str(self.touch("src/real.py")))
|
|
83
|
+
self.assertEqual(self.recorded(h), ["real.py"])
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class TestSkipListIsTheScannersSuperset(_Tree):
|
|
87
|
+
def test_scanner_only_dirs_are_skipped_by_the_watcher(self):
|
|
88
|
+
# 'target' and '.mypy_cache' were never in the watcher's own list.
|
|
89
|
+
self.assertIn("target", SKIP_DIRS)
|
|
90
|
+
h = self.handler()
|
|
91
|
+
h._record("modified", str(self.touch("target/debug/build.rs")))
|
|
92
|
+
h._record("modified", str(self.touch(".mypy_cache/3.12/x.json", "{}")))
|
|
93
|
+
h._record("modified", str(self.touch("node_modules/a/index.js")))
|
|
94
|
+
h._record("modified", str(self.touch("src/lib.rs")))
|
|
95
|
+
self.assertEqual(self.recorded(h), ["lib.rs"])
|
|
96
|
+
|
|
97
|
+
def test_extension_allowlist_still_applies(self):
|
|
98
|
+
h = self.handler()
|
|
99
|
+
h._record("modified", str(self.touch("src/blob.bin")))
|
|
100
|
+
h._record("modified", str(self.touch("src/ok.py")))
|
|
101
|
+
self.assertEqual(self.recorded(h), ["ok.py"])
|
|
102
|
+
|
|
103
|
+
def test_sub_project_excluder_still_applies(self):
|
|
104
|
+
h = self.handler(excluder=lambda p: "sub" in Path(p).parts)
|
|
105
|
+
h._record("modified", str(self.touch("sub/inner.py")))
|
|
106
|
+
h._record("modified", str(self.touch("src/outer.py")))
|
|
107
|
+
self.assertEqual(self.recorded(h), ["outer.py"])
|
|
108
|
+
|
|
109
|
+
def test_a_rootless_handler_keeps_the_legacy_behaviour(self):
|
|
110
|
+
h = _ChangeHandler()
|
|
111
|
+
h._record("modified", str(self.touch("node_modules/x/y.js")))
|
|
112
|
+
h._record("modified", str(self.touch("src/z.js")))
|
|
113
|
+
self.assertEqual(self.recorded(h), ["z.js"])
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
if __name__ == "__main__":
|
|
117
|
+
unittest.main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/guide/getting-started.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/add_project.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/config_editor.js
RENAMED
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_health.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_panel.js
RENAMED
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_tasks.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/drill_views.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/global_search.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_access.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_ci.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_locks.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/hub_tokens.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/mcp_manager.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/modals.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/project_card.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/project_tree.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/sidebar.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/summary_bar.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/task_board.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/toasts.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/hub_ui/components/topbar.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/bitbucket.js
RENAMED
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/credentials.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/dashboard.js
RENAMED
|
File without changes
|
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/enforcement.js
RENAMED
|
File without changes
|
{code_context_control-2.129.0 → code_context_control-2.129.1}/cli/ui/components/instructions.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|