code-context-control 2.129.1__tar.gz → 2.131.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.129.1 → code_context_control-2.131.0}/PKG-INFO +10 -5
- {code_context_control-2.129.1 → code_context_control-2.131.0}/README.md +9 -4
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/_hook_utils.py +9 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/c3.py +38 -12
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/commands/parser.py +5 -5
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/docs.html +59 -14
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/getting-started.html +11 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/workflow.html +2 -2
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_dispatch.py +43 -3
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_session_stats.py +23 -2
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_server.py +82 -2
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/hub_access.js +183 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/mcp_manager.js +2 -2
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/modals.js +1 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/state.js +2 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/mcp_server.py +3 -2
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/server.py +3 -3
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/delegate.py +351 -28
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/instructions.js +1 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/settings.js +80 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/code_context_control.egg-info/PKG-INFO +10 -5
- {code_context_control-2.129.1 → code_context_control-2.131.0}/code_context_control.egg-info/SOURCES.txt +10 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/core/config.py +9 -0
- code_context_control-2.131.0/core/grok_payload.py +121 -0
- code_context_control-2.131.0/core/hook_command.py +22 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/core/host.py +5 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/core/ide.py +19 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/chat_engine.py +1 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/mobile_api.py +29 -5
- {code_context_control-2.129.1 → code_context_control-2.131.0}/pyproject.toml +1 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/access_guard.py +8 -1
- code_context_control-2.131.0/services/agents_workflow.py +11 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_act.py +167 -7
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_runner.py +186 -14
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_workflow.py +96 -13
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/claude_md.py +3 -3
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/codex_integration.py +7 -8
- code_context_control-2.131.0/services/grok_integration.py +200 -0
- code_context_control-2.131.0/services/grok_transcript.py +73 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/host_sessions.py +1 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/override_policy.py +147 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/session_manager.py +4 -0
- code_context_control-2.131.0/tests/test_ci_dag_ownership.py +398 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_codex_native.py +2 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_delegate_cascade.py +5 -3
- code_context_control-2.131.0/tests/test_delegate_grok.py +498 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_delegate_version_probe.py +6 -4
- code_context_control-2.131.0/tests/test_grok_native.py +234 -0
- code_context_control-2.131.0/tests/test_hook_grok_compat.py +322 -0
- code_context_control-2.131.0/tests/test_hub_override_policy_routes.py +154 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/init_view.py +1 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/mcp_view.py +1 -1
- {code_context_control-2.129.1 → code_context_control-2.131.0}/LICENSE +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/_shell_writes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/commands/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/commands/common.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/edits.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/access.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/bitbucket.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/credentials.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/index.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/masking.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/oracle.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/shared.css +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/tools.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_access_guard.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_artifact.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_auto_snapshot.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_c3_signal.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_c3read.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_codex_lifecycle.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_edit_ledger.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_edit_unlock.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_filter.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_ghost_files.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_pretool_enforce.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_prompt_recall.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_read.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_session_end.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_session_open.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hook_terse_advisor.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/app.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/add_project.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/config_editor.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/drill_artifacts.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/drill_health.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/drill_panel.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/drill_subprojects.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/drill_tasks.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/drill_views.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/global_search.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/hub_ci.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/hub_cred_audit.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/hub_credentials.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/hub_enforcement.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/hub_locks.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/hub_tokens.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/project_card.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/project_tree.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/session_drawer.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/settings_modal.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/sidebar.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/summary_bar.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/task_board.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/toasts.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui/components/topbar.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/hub_ui.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/mcp_proxy.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/progress.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/_grants.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/_helpers.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/agent.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/artifacts.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/bitbucket.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/ci.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/compress.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/credentials.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/edit.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/edit_verify.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/edits.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/federate.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/filter.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/impact.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/jira.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/locks.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/memory.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/override.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/project.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/read.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/search.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/session.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/shell.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/shell_job.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/shell_nudge.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/shell_parsers.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/shell_render.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/status.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/tasks.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/tools/validate.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/api.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/app.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/access.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/bitbucket.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/chat.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/credentials.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/dashboard.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/edits.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/enforcement.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/jira.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/memory.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/sessions.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/sidebar.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/components/tasks.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/icons.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/pm_shared.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/shared.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui/theme.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui_legacy.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/cli/ui_nano.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/code_context_control.egg-info/dependency_links.txt +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/code_context_control.egg-info/entry_points.txt +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/code_context_control.egg-info/requires.txt +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/code_context_control.egg-info/top_level.txt +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/core/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/core/codex_patch.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/core/mcp_toml.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/core/web_security.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/config.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/listeners.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/mcp_oracle.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/oracle_server.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/oracle_ui.html +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/activity_reporter.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/api_auth.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/c3_bridge.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/chat_poll.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/chat_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/client_tokens.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/cross_memory.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/discovery_audit.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/federated_graph.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/health_checker.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/insight_engine.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/local_session.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/memory_reader.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/memory_writer.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/project_scanner.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/review_agent.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/tool_executor.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/services/tool_registry.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/activity.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/agents.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/app.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/busy.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/chat/conversations.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/chat/input.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/chat/markdown.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/chat/send.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/chat/stream_renderer.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/chat/toolbar.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/core.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/crossgraph.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/header.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/insights.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/projects.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/qrcode.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/settings.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/suggestions.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/oracle/ui/theme_tabs.js +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/access_telemetry.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/activity_log.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/agent_base.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/agent_locks.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/agents.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/artifact_defs.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/artifact_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/atomic_json.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/auto_memory.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/background_service.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bench/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bench/external/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bench/external/aider_polyglot.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bench/external/swe_bench.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bench/map_eval.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bench/search_eval.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bench/shell_eval.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/benchmark_dashboard.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bitbucket_client.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/bitbucket_credentials.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_cache.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_expr.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_failures.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_github.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_impact.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ci_intel.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/circuit_breaker.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/codex_transcript.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/compressor.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/context_snapshot.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/conversation_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/cred_audit.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/cred_telemetry.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/credential_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/dir_map.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/doc_index.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/e2e_benchmark.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/e2e_evaluator.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/e2e_tasks.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/edit_ledger.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/embedding_index.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/enforcement_policy.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/error_reporting.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/file_map.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/file_memory.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/git_context.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/hub_service.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/index_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/indexer.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/jira_client.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/jira_cloud.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/jira_credentials.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/jira_data_center.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/jira_links.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/lexical_index.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/mask_activation.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/mask_mirror.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/mask_presets.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/memory.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/memory_consolidator.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/memory_distiller.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/memory_graph.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/memory_grounder.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/memory_queue.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/memory_scorer.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/metrics.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/notifications.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ollama_bridge.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ollama_client.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/ollama_credentials.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/oracle_service.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/output_filter.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/override_costs.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/override_grants.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/override_requests.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/override_wake.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/parser.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/project_manager.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/project_runtime.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/protocol.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/proxy_state.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/repo_map.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/repo_shape.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/reranker.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/retention.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/retrieval.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/retrieval_broker.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/router.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/runtime.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/scanner.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/session_benchmark.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/session_live.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/session_preloader.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/shell_jobs.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/shell_output.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/subprojects.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/task_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/telemetry.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/text_index.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/time_tracker.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/tool_classifier.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/transcript_index.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/validation_cache.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/vector_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/watcher.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/services/win_subprocess.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/setup.cfg +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_access_builtin_optout.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_access_guard.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_access_guard_meta.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_access_guard_shell_project.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_access_guard_surfaces.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_access_guard_wiring.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_activity_log_find_last.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_activity_reporter.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_agent_locks.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_aider_polyglot.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_antigravity_transition.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_artifact_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_artifact_tool.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_atomic_json.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_background_service.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_bitbucket_cli_smoke.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_bitbucket_client.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_bitbucket_config_fallback.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_bitbucket_credentials.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_bitbucket_tool.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_builtin_modes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_c3_bridge_project_artifacts.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_c3_shell.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_chat_poll.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ci_act.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ci_cache.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ci_expr.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ci_impact.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ci_intel.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ci_runner.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ci_workflow.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_circuit_breaker.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_claude_md_merge.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_claude_md_updater.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_cli_smoke.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_codex_mcp_transport.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_compressor_large_file.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_confirm_guard.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_confirm_guard_wiring.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_cooccurrence_bounds.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_cred_audit.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_cred_telemetry.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_credential_login_kind.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_credential_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_credential_ui_parity.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_credentials_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_credentials_tool.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_creds_cli_smoke.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_dir_map_c3.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_e2e_benchmark.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_edit_ledger_deadline.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_edit_ledger_hook.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_edit_locking.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_edit_normalization.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_edit_verify.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_embedding_index_deadlock.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_enforcement_flip.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_enforcement_policy.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_enforcement_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_env_parser.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_failed_calls_do_not_unlock.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_federated_graph.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_file_map_c1.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_filter_backoff.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ghost_files.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ghost_generation.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_git_branch_awareness.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_access_guard.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_codex_compat.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_dispatch.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_pretool_enforce.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_prompt_recall.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_session_end.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_smoke.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_state.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hook_utf8_stdio.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_credentials_route.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_credentials_routes_write.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_enforcement_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_hook_migration.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_inspect_api.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_locks_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_oracle_service_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_override_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_server_smoke.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_hub_subproject_links.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ide_workflow_adaptation.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_index_cap_not_hardcoded.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_init_clear_preserves_user_content.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_init_scan.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_install_mcp_entrypoint.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_jira_cli_smoke.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_jira_client.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_jira_config_fallback.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_jira_credentials.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_jira_links.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_jira_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_jira_tool.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_large_files_c4.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_lazy_store_init.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_map_eval.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_map_telemetry_c0.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mask_guard.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mask_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mask_surfaces.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mcp_host_guard.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mcp_memory_timeout.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mcp_server_smoke.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mcp_toml.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_memory_distiller.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_memory_graph_api.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_memory_queue.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_memory_system.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mobile_api.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mobile_clients.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mobile_extras.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mobile_jobs_ci.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mobile_override_costs.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mobile_override_routes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_mobile_security_api.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_no_stale_model_pins.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_notification_dedup.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_notification_discipline.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_notification_kinds.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ollama_credentials.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_api_auth.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_apikey_api.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_c3_bridge.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_chat_engine.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_chat_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_discovery_api.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_discovery_audit.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_health_probe.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_local_auth.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_loopback.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_ollama_bridge.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_scanner_cache.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_security_fixes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_session_bootstrap.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_subproject_awareness.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_oracle_ui_bundle.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_output_filter.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_override_costs.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_override_grants.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_override_grants_mcp.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_override_requests.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_override_wake.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_permissions.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_pm_api.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_project_manager.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_project_manager_merge.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_project_tool.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_read_coercion.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_read_edit_parity.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_read_outside_root.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_related_facts.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_repo_map.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_repo_shape.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_response_boilerplate.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_retention.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_review_digest.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_search_eval.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_search_p1.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_search_p2.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_search_p2b.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_search_p3.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_search_p4.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_search_p5.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_service_durability.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_session_benchmark.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_session_budget.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_session_live.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_budget_s1.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_creds.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_eval.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_jobs_s3.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_nudge_s4.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_output.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_parsers_s2.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_robustness.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_telemetry_s0.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_write_ledger.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_shell_writes.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_subproject_clear_scope.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_subproject_depth_consumers.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_subproject_exclusion.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_subproject_federation.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_subproject_linkage_api.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_subprojects.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_swe_bench.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_task_store.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_task_tool.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_time_tracker.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_token_telemetry.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_token_tracking.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_tool_registry.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_ui_jsx_syntax.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_upgrade_and_version.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_validate.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_vault_write_guard.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_version_sync.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_watcher_pruning.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_web_security.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tests/test_windows_reliability.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/backend.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/main.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/__init__.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/benchmark_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/claudemd_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/compress_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/index_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/optimize_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/pipe_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/projects_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/search_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/session_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/stats.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/screens/ui_view.py +0 -0
- {code_context_control-2.129.1 → code_context_control-2.131.0}/tui/theme.tcss +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-context-control
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.131.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
|
|
@@ -69,7 +69,7 @@ Dynamic: license-file
|
|
|
69
69
|
<p align="center">
|
|
70
70
|
<strong>The local code-intelligence layer for AI coding tools.</strong><br>
|
|
71
71
|
Retrieve less, read less, edit safer — and control what an agent may read, write, or see.<br>
|
|
72
|
-
Works with Claude Code, Codex, Copilot, Cursor, and Antigravity.
|
|
72
|
+
Works with Claude Code, Codex, Grok Build, Copilot, Cursor, and Antigravity.
|
|
73
73
|
</p>
|
|
74
74
|
|
|
75
75
|
<p align="center">
|
|
@@ -123,7 +123,7 @@ c3 init /path/to/your/project
|
|
|
123
123
|
|
|
124
124
|
Or `pip install "code-context-control[tui]"` for the optional Textual UI.
|
|
125
125
|
|
|
126
|
-
`c3 init` walks you through IDE selection (Claude Code, Codex CLI, VS Code, Cursor, Antigravity, or Custom), optional `git init`, MCP registration, and — for Claude Code — a permission tier. Headless:
|
|
126
|
+
`c3 init` walks you through IDE selection (Claude Code, Codex CLI, VS Code, Cursor, Antigravity, Grok Build, or Custom), optional `git init`, MCP registration, and — for Claude Code — a permission tier. Headless:
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
129
|
c3 init /path/to/project --force --ide claude --mcp-mode direct --permissions standard
|
|
@@ -138,6 +138,11 @@ Claude Code, see the [Codex integration guide](docs/codex-native.md). Run
|
|
|
138
138
|
`c3 doctor --ide codex`. Existing installations need this reinstall to receive
|
|
139
139
|
the new host arguments and hooks.
|
|
140
140
|
|
|
141
|
+
For xAI's Grok Build CLI, see the [Grok integration guide](docs/grok-native.md).
|
|
142
|
+
Run `c3 install-mcp --ide grok`, launch `grok --trust` once in the project (Grok
|
|
143
|
+
loads no project MCP servers, hooks or `AGENTS.md` until the folder is trusted),
|
|
144
|
+
then check `c3 doctor --ide grok`.
|
|
145
|
+
|
|
141
146
|
> **Upgrading from before v2.60.1 on Windows:** existing projects are *not* repaired by upgrading — re-run `c3 init` once per project to fix hook registration.
|
|
142
147
|
|
|
143
148
|
Full notes: [Upgrading](https://github.com/drknowhow/code-context-control/blob/main/docs/upgrading.md) · [Contributing](https://github.com/drknowhow/code-context-control/blob/main/docs/upgrading.md#from-source-contributors)
|
|
@@ -191,7 +196,7 @@ Since v2.128.0 you rarely start it by hand: opening an IDE session in a register
|
|
|
191
196
|
|
|
192
197
|
**Tasks** (v2.45.0, extended v2.53.0) is a durable per-project tracker — dependencies and subtasks, milestones, decision notes, full event history, health reports, and both automatic and manual time tracking. It rolls up into the Hub's cross-project board. Shipped milestones can be **completed** (v2.86.0) — they leave the board while their tasks keep the milestone link, unlike archiving, which detaches them.
|
|
193
198
|
|
|
194
|
-
**Instructions** keeps your agent-facing docs in sync. C3-generated content sits inside a `<!-- C3:BEGIN … -->` block; anything you write outside it is preserved. Since v2.60.0 generated docs point at `.c3/MAP.md` — a machine-owned, byte-stable repo map C3 refreshes automatically — instead of embedding a tree that goes stale. `AGENTS.md` serves
|
|
199
|
+
**Instructions** keeps your agent-facing docs in sync. C3-generated content sits inside a `<!-- C3:BEGIN … -->` block; anything you write outside it is preserved. Since v2.60.0 generated docs point at `.c3/MAP.md` — a machine-owned, byte-stable repo map C3 refreshes automatically — instead of embedding a tree that goes stale. `AGENTS.md` serves Codex, Grok Build and Antigravity; `GEMINI.md` is read if present but no longer generated (the Gemini CLI profile was removed in v2.52).
|
|
195
200
|
|
|
196
201
|
---
|
|
197
202
|
|
|
@@ -214,7 +219,7 @@ C3 exposes **21 tools** as a native MCP server. Your IDE calls them directly:
|
|
|
214
219
|
| `c3_impact` | Blast-radius analysis before editing shared symbols |
|
|
215
220
|
| `c3_locks` | Agent leases — who is working on which file, so two agents don't collide (v2.65.0) |
|
|
216
221
|
| `c3_ci` | Run this repo's real `.github/workflows` locally — in containers via `act` — with structured failures, before pushing (v2.79.0) |
|
|
217
|
-
| `c3_delegate` | Offload heavy work to local Ollama / Codex / Gemini |
|
|
222
|
+
| `c3_delegate` | Offload heavy work to local Ollama / Codex / Gemini / Grok |
|
|
218
223
|
| `c3_agent` | Workflows: `review_changes`, `investigate`, `preflight`, `prepare_context`, `validate_compress` |
|
|
219
224
|
| `c3_edits` | Edit-ledger queries, version diffs, restore points, per-branch filter, `verify` (did a failed `c3_edit` still land?) |
|
|
220
225
|
| `c3_task` | Per-project PM — tasks, dependencies, milestones, time tracking (v2.53.0) |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<p align="center">
|
|
4
4
|
<strong>The local code-intelligence layer for AI coding tools.</strong><br>
|
|
5
5
|
Retrieve less, read less, edit safer — and control what an agent may read, write, or see.<br>
|
|
6
|
-
Works with Claude Code, Codex, Copilot, Cursor, and Antigravity.
|
|
6
|
+
Works with Claude Code, Codex, Grok Build, Copilot, Cursor, and Antigravity.
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
@@ -57,7 +57,7 @@ c3 init /path/to/your/project
|
|
|
57
57
|
|
|
58
58
|
Or `pip install "code-context-control[tui]"` for the optional Textual UI.
|
|
59
59
|
|
|
60
|
-
`c3 init` walks you through IDE selection (Claude Code, Codex CLI, VS Code, Cursor, Antigravity, or Custom), optional `git init`, MCP registration, and — for Claude Code — a permission tier. Headless:
|
|
60
|
+
`c3 init` walks you through IDE selection (Claude Code, Codex CLI, VS Code, Cursor, Antigravity, Grok Build, or Custom), optional `git init`, MCP registration, and — for Claude Code — a permission tier. Headless:
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
63
|
c3 init /path/to/project --force --ide claude --mcp-mode direct --permissions standard
|
|
@@ -72,6 +72,11 @@ Claude Code, see the [Codex integration guide](docs/codex-native.md). Run
|
|
|
72
72
|
`c3 doctor --ide codex`. Existing installations need this reinstall to receive
|
|
73
73
|
the new host arguments and hooks.
|
|
74
74
|
|
|
75
|
+
For xAI's Grok Build CLI, see the [Grok integration guide](docs/grok-native.md).
|
|
76
|
+
Run `c3 install-mcp --ide grok`, launch `grok --trust` once in the project (Grok
|
|
77
|
+
loads no project MCP servers, hooks or `AGENTS.md` until the folder is trusted),
|
|
78
|
+
then check `c3 doctor --ide grok`.
|
|
79
|
+
|
|
75
80
|
> **Upgrading from before v2.60.1 on Windows:** existing projects are *not* repaired by upgrading — re-run `c3 init` once per project to fix hook registration.
|
|
76
81
|
|
|
77
82
|
Full notes: [Upgrading](https://github.com/drknowhow/code-context-control/blob/main/docs/upgrading.md) · [Contributing](https://github.com/drknowhow/code-context-control/blob/main/docs/upgrading.md#from-source-contributors)
|
|
@@ -125,7 +130,7 @@ Since v2.128.0 you rarely start it by hand: opening an IDE session in a register
|
|
|
125
130
|
|
|
126
131
|
**Tasks** (v2.45.0, extended v2.53.0) is a durable per-project tracker — dependencies and subtasks, milestones, decision notes, full event history, health reports, and both automatic and manual time tracking. It rolls up into the Hub's cross-project board. Shipped milestones can be **completed** (v2.86.0) — they leave the board while their tasks keep the milestone link, unlike archiving, which detaches them.
|
|
127
132
|
|
|
128
|
-
**Instructions** keeps your agent-facing docs in sync. C3-generated content sits inside a `<!-- C3:BEGIN … -->` block; anything you write outside it is preserved. Since v2.60.0 generated docs point at `.c3/MAP.md` — a machine-owned, byte-stable repo map C3 refreshes automatically — instead of embedding a tree that goes stale. `AGENTS.md` serves
|
|
133
|
+
**Instructions** keeps your agent-facing docs in sync. C3-generated content sits inside a `<!-- C3:BEGIN … -->` block; anything you write outside it is preserved. Since v2.60.0 generated docs point at `.c3/MAP.md` — a machine-owned, byte-stable repo map C3 refreshes automatically — instead of embedding a tree that goes stale. `AGENTS.md` serves Codex, Grok Build and Antigravity; `GEMINI.md` is read if present but no longer generated (the Gemini CLI profile was removed in v2.52).
|
|
129
134
|
|
|
130
135
|
---
|
|
131
136
|
|
|
@@ -148,7 +153,7 @@ C3 exposes **21 tools** as a native MCP server. Your IDE calls them directly:
|
|
|
148
153
|
| `c3_impact` | Blast-radius analysis before editing shared symbols |
|
|
149
154
|
| `c3_locks` | Agent leases — who is working on which file, so two agents don't collide (v2.65.0) |
|
|
150
155
|
| `c3_ci` | Run this repo's real `.github/workflows` locally — in containers via `act` — with structured failures, before pushing (v2.79.0) |
|
|
151
|
-
| `c3_delegate` | Offload heavy work to local Ollama / Codex / Gemini |
|
|
156
|
+
| `c3_delegate` | Offload heavy work to local Ollama / Codex / Gemini / Grok |
|
|
152
157
|
| `c3_agent` | Workflows: `review_changes`, `investigate`, `preflight`, `prepare_context`, `validate_compress` |
|
|
153
158
|
| `c3_edits` | Edit-ledger queries, version diffs, restore points, per-branch filter, `verify` (did a failed `c3_edit` still land?) |
|
|
154
159
|
| `c3_task` | Per-project PM — tasks, dependencies, milestones, time tracking (v2.53.0) |
|
|
@@ -392,20 +392,28 @@ def record_unlocked_files(
|
|
|
392
392
|
# hookSpecificOutput.hookEventName is REQUIRED. Unknown keys are a
|
|
393
393
|
# hard deserialization error, not a warning, so emitting the Claude
|
|
394
394
|
# shape makes Codex discard the whole hook response.
|
|
395
|
+
# grok — Grok Build: native tool names and tagged results on the way in
|
|
396
|
+
# (core/grok_payload.translate); context only under
|
|
397
|
+
# hookSpecificOutput, and Stop context would keep the agent working.
|
|
395
398
|
HOST_CLAUDE = "claude"
|
|
396
399
|
HOST_GEMINI = "gemini"
|
|
397
400
|
HOST_CODEX = "codex"
|
|
401
|
+
HOST_GROK = "grok"
|
|
398
402
|
|
|
399
403
|
|
|
400
404
|
def detect_host(data: dict, explicit_host: str | None = None) -> str:
|
|
401
405
|
"""Use the hook's explicit host or wire identity, never its parent's env."""
|
|
402
406
|
named = explicit_host or (data.get("_c3_host") if isinstance(data, dict) else None)
|
|
403
407
|
aliases = {"claude-code": HOST_CLAUDE, "claude": HOST_CLAUDE,
|
|
404
|
-
"codex": HOST_CODEX, "gemini": HOST_GEMINI, "antigravity": HOST_GEMINI
|
|
408
|
+
"codex": HOST_CODEX, "gemini": HOST_GEMINI, "antigravity": HOST_GEMINI,
|
|
409
|
+
"grok": HOST_GROK, "grok-build": HOST_GROK}
|
|
405
410
|
if named in aliases:
|
|
406
411
|
return aliases[named]
|
|
407
412
|
if not isinstance(data, dict):
|
|
408
413
|
return HOST_CLAUDE
|
|
414
|
+
from core.grok_payload import is_grok_payload
|
|
415
|
+
if is_grok_payload(data):
|
|
416
|
+
return HOST_GROK
|
|
409
417
|
if data.get("turn_id"):
|
|
410
418
|
return HOST_CODEX
|
|
411
419
|
response = data.get("tool_response")
|
|
@@ -91,7 +91,7 @@ console = Console() if HAS_RICH else None
|
|
|
91
91
|
# Config
|
|
92
92
|
CONFIG_DIR = ".c3"
|
|
93
93
|
CONFIG_FILE = ".c3/config.json"
|
|
94
|
-
__version__ = "2.
|
|
94
|
+
__version__ = "2.131.0"
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
def _compress_file_cli(compressor, path, mode="smart", **kw):
|
|
@@ -316,7 +316,7 @@ _BASH_STANDARD = _BASH_READONLY + [
|
|
|
316
316
|
"Bash(pip:*)", "Bash(pip3:*)", "Bash(npm:*)", "Bash(node:*)",
|
|
317
317
|
"Bash(cargo:*)", "Bash(go:*)",
|
|
318
318
|
# AI CLIs
|
|
319
|
-
"Bash(claude:*)", "Bash(codex:*)", "Bash(gemini:*)",
|
|
319
|
+
"Bash(claude:*)", "Bash(codex:*)", "Bash(gemini:*)", "Bash(grok:*)",
|
|
320
320
|
# Utilities
|
|
321
321
|
"Bash(timeout:*)", "Bash(time:*)", "Bash(curl:*)", "Bash(gh:*)",
|
|
322
322
|
"Bash(for:*)", "Bash(do:*)", "Bash(done:*)",
|
|
@@ -755,6 +755,7 @@ def _select_init_ide(default_ide: str) -> str:
|
|
|
755
755
|
"Cursor — .cursor/mcp.json",
|
|
756
756
|
"Codex — .codex/config.toml + AGENTS.md",
|
|
757
757
|
"Antigravity — ~/.gemini/antigravity/mcp_config.json + AGENTS.md",
|
|
758
|
+
"Grok Build — .grok/config.toml + .grok/hooks + AGENTS.md",
|
|
758
759
|
]
|
|
759
760
|
selected = _prompt_choice("Step 1/3 — Choose IDE profile", choices)
|
|
760
761
|
mapping = {
|
|
@@ -764,6 +765,7 @@ def _select_init_ide(default_ide: str) -> str:
|
|
|
764
765
|
choices[3]: "cursor",
|
|
765
766
|
choices[4]: "codex",
|
|
766
767
|
choices[5]: "antigravity",
|
|
768
|
+
choices[6]: "grok",
|
|
767
769
|
}
|
|
768
770
|
chosen = mapping.get(selected or "", normalize_ide_name(default_ide) if default_ide != "auto" else "auto")
|
|
769
771
|
print(f" IDE profile: {chosen}")
|
|
@@ -1034,7 +1036,7 @@ def _parse_cli_ide_arg(value: str) -> str:
|
|
|
1034
1036
|
normalized = normalize_ide_name(raw)
|
|
1035
1037
|
if normalized not in PROFILES:
|
|
1036
1038
|
raise argparse.ArgumentTypeError(
|
|
1037
|
-
"Unsupported IDE. Use one of: auto, claude, vscode, cursor, codex, antigravity."
|
|
1039
|
+
"Unsupported IDE. Use one of: auto, claude, vscode, cursor, codex, antigravity, grok."
|
|
1038
1040
|
)
|
|
1039
1041
|
return normalized
|
|
1040
1042
|
|
|
@@ -4333,9 +4335,9 @@ _C3_HOOKLESS_WORKFLOW = _adapt_workflow_for_ide(
|
|
|
4333
4335
|
|
|
4334
4336
|
_COPILOT_INSTRUCTIONS_CONTENT = _VSCODE_SESSION_INIT + "\n\n" + _C3_HOOKLESS_WORKFLOW
|
|
4335
4337
|
|
|
4336
|
-
from services.
|
|
4338
|
+
from services.agents_workflow import AGENTS_MD_WORKFLOW
|
|
4337
4339
|
|
|
4338
|
-
_AGENTS_MD_CONTENT =
|
|
4340
|
+
_AGENTS_MD_CONTENT = AGENTS_MD_WORKFLOW
|
|
4339
4341
|
|
|
4340
4342
|
_TERSE_SKILL_CONTENT = """\
|
|
4341
4343
|
# /terse — Terse Output Mode
|
|
@@ -4544,7 +4546,7 @@ def _ensure_instruction_workflow(instructions_path: Path, template: str,
|
|
|
4544
4546
|
|
|
4545
4547
|
def _ensure_codex_agents_workflow(agents_md_path: Path,
|
|
4546
4548
|
project_path: str = "") -> str:
|
|
4547
|
-
"""Ensure AGENTS.md contains the mandatory C3 workflow
|
|
4549
|
+
"""Ensure AGENTS.md contains the mandatory C3 workflow (Codex and Grok Build read it)."""
|
|
4548
4550
|
from services.claude_md import write_c3_instruction_doc
|
|
4549
4551
|
existing = agents_md_path.read_text(encoding="utf-8") if agents_md_path.exists() else None
|
|
4550
4552
|
rendered = write_c3_instruction_doc(agents_md_path, _AGENTS_MD_CONTENT, project_path or None)
|
|
@@ -4888,8 +4890,15 @@ def _uninstall_mcp_all(project_path: str, include_global: bool = True):
|
|
|
4888
4890
|
except Exception as e:
|
|
4889
4891
|
print(f" Warning: Could not update {mcp_config_path}: {e}")
|
|
4890
4892
|
|
|
4893
|
+
# Grok Build: C3 owns the whole .grok/hooks/c3.json, so it is deleted
|
|
4894
|
+
# rather than stripped (its Windows commands are encoded and would not
|
|
4895
|
+
# match the settings scanner anyway).
|
|
4896
|
+
if ide_name == "grok":
|
|
4897
|
+
from services.grok_integration import remove_hooks as remove_grok_hooks
|
|
4898
|
+
if remove_grok_hooks(target):
|
|
4899
|
+
print(f" Deleted {target / profile.settings_path}")
|
|
4891
4900
|
# Per-host hooks and settings; remove only C3-owned handlers.
|
|
4892
|
-
|
|
4901
|
+
elif profile.supports_hooks and profile.settings_path:
|
|
4893
4902
|
settings_path = target / profile.settings_path
|
|
4894
4903
|
if settings_path.exists():
|
|
4895
4904
|
try:
|
|
@@ -4970,7 +4979,7 @@ def _uninstall_mcp_all(project_path: str, include_global: bool = True):
|
|
|
4970
4979
|
print(f" Warning: Could not update {legacy_cfg}: {e}")
|
|
4971
4980
|
|
|
4972
4981
|
# Final pass: clean up empty IDE directories (.claude, .codex, .gemini, .vscode, .github)
|
|
4973
|
-
dirs_to_check = [".claude", ".codex", ".gemini", ".vscode", ".github"]
|
|
4982
|
+
dirs_to_check = [".claude", ".codex", ".grok", ".gemini", ".vscode", ".github"]
|
|
4974
4983
|
for dname in dirs_to_check:
|
|
4975
4984
|
dpath = target / dname
|
|
4976
4985
|
if dpath.exists() and dpath.is_dir():
|
|
@@ -5011,7 +5020,7 @@ back to native tools as the task progresses.
|
|
|
5011
5020
|
- **Filter**: `c3_filter(text=...)` — for terminal output >10 lines
|
|
5012
5021
|
- **Shell**: `c3_shell(cmd, timeout=60)` — structured shell exec (tests/git/build). Auto-filters output, logs git mutations to the ledger. Native Bash for interactive/TTY only
|
|
5013
5022
|
- **Memory**: `c3_memory(action='recall')` — full recall. `index` + `fetch` for token-efficient two-step retrieval
|
|
5014
|
-
- **Delegate**: `c3_delegate(task, backend='ollama|codex|gemini|claude|auto')` — offload to other models
|
|
5023
|
+
- **Delegate**: `c3_delegate(task, backend='ollama|codex|gemini|claude|grok|auto')` — offload to other models
|
|
5015
5024
|
- **Local CI** (v2.79.0+): `c3_ci(action='inspect|run|rerun|failures')` — run THIS repo's real `.github/workflows` here instead of pushing for feedback. `run` executes in `needs` order; `failures` gives {file,line,message}; `rerun` retries only what failed. Only `FULL_CI_PASS` means safe to push — `PARTIAL_PASS` means something did not run (other OS, unsupported action, or your selection).
|
|
5016
5025
|
- **Bitbucket** (v2.30.0+, when `c3 bitbucket login` has run): `c3_bitbucket(action='list_prs|get_pr|merge_pr|...')` — self-hosted Bitbucket Data Center / Server. Token in OS keyring; mutating actions auto-log to the edit ledger.
|
|
5017
5026
|
- **Cross-project** (v2.31.0+): `c3_project(action='list|scan|search|read|edit|...', project='<name|path>')` — discover and operate on OTHER c3-installed projects. Reads run freely; writes (edit/shell/memory) need `allow_write=true`.
|
|
@@ -5466,6 +5475,12 @@ def cmd_install_mcp(args):
|
|
|
5466
5475
|
toml_entries["startup_timeout_sec"] = 30
|
|
5467
5476
|
toml_entries["tool_timeout_sec"] = 60
|
|
5468
5477
|
toml_entries["args"] += ["--host", "codex"]
|
|
5478
|
+
elif profile.name == "grok":
|
|
5479
|
+
# Grok's default startup timeout is 30s; a cold C3 index build can
|
|
5480
|
+
# exceed it. Its tool timeout already defaults to 6000s.
|
|
5481
|
+
toml_entries["enabled"] = True
|
|
5482
|
+
toml_entries["startup_timeout_sec"] = 60
|
|
5483
|
+
toml_entries["args"] += ["--host", "grok"]
|
|
5469
5484
|
_upsert_toml_section(
|
|
5470
5485
|
mcp_config_path,
|
|
5471
5486
|
f"{profile.config_key}.c3",
|
|
@@ -5517,6 +5532,13 @@ def cmd_install_mcp(args):
|
|
|
5517
5532
|
from services.codex_integration import install_hooks
|
|
5518
5533
|
hook_state = install_hooks(target, sys.executable, cli_dir / "hook_dispatch.py")
|
|
5519
5534
|
print(f"Codex hooks installed; active: {hook_state['active']}. {hook_state['activation']}")
|
|
5535
|
+
if profile.name == "grok":
|
|
5536
|
+
from services.grok_integration import install_hooks as install_grok_hooks
|
|
5537
|
+
grok_hooks = install_grok_hooks(target, sys.executable, cli_dir / "hook_dispatch.py")
|
|
5538
|
+
from services.artifact_defs import note_pending_write
|
|
5539
|
+
note_pending_write(target, profile.settings_path, "install_mcp")
|
|
5540
|
+
print(f"Wrote {target / profile.settings_path}")
|
|
5541
|
+
print(f"Grok Build: {grok_hooks['activation']}")
|
|
5520
5542
|
if profile.name == "claude-code" and profile.supports_hooks and profile.settings_path:
|
|
5521
5543
|
settings_dir = target / Path(profile.settings_path).parent
|
|
5522
5544
|
settings_dir.mkdir(parents=True, exist_ok=True)
|
|
@@ -5812,8 +5834,8 @@ def cmd_install_mcp(args):
|
|
|
5812
5834
|
print(f"Wrote {vscode_settings_path}")
|
|
5813
5835
|
print(" Copilot: C3 instructions linked for code gen, review, and test generation")
|
|
5814
5836
|
|
|
5815
|
-
# ── Codex AGENTS.md enforcement file
|
|
5816
|
-
if profile.name
|
|
5837
|
+
# ── Codex / Grok Build AGENTS.md enforcement file ────────────
|
|
5838
|
+
if profile.name in ("codex", "grok"):
|
|
5817
5839
|
agents_md_path = target / "AGENTS.md"
|
|
5818
5840
|
agents_state = _ensure_codex_agents_workflow(agents_md_path,
|
|
5819
5841
|
str(target))
|
|
@@ -5824,6 +5846,7 @@ def cmd_install_mcp(args):
|
|
|
5824
5846
|
else:
|
|
5825
5847
|
print(f"Kept {agents_md_path} (C3 workflow present)")
|
|
5826
5848
|
|
|
5849
|
+
if profile.name == "codex":
|
|
5827
5850
|
# Warn about a common conflict: global Codex config disables c3.
|
|
5828
5851
|
global_codex_cfg = Path(os.environ.get("CODEX_HOME") or Path.home() / ".codex") / "config.toml"
|
|
5829
5852
|
global_enabled = _toml_section_bool_value(global_codex_cfg, "mcp_servers.c3", "enabled")
|
|
@@ -9303,7 +9326,10 @@ def _launch_tui() -> None:
|
|
|
9303
9326
|
|
|
9304
9327
|
|
|
9305
9328
|
def cmd_doctor(args):
|
|
9306
|
-
|
|
9329
|
+
if getattr(args, "ide", "codex") == "grok":
|
|
9330
|
+
from services.grok_integration import diagnose
|
|
9331
|
+
else:
|
|
9332
|
+
from services.codex_integration import diagnose
|
|
9307
9333
|
print(json.dumps(diagnose(Path(args.project_path).resolve()), indent=2))
|
|
9308
9334
|
|
|
9309
9335
|
|
|
@@ -17,15 +17,15 @@ def build_parser(version: str, parse_cli_ide_arg):
|
|
|
17
17
|
)
|
|
18
18
|
subparsers = parser.add_subparsers(dest="command")
|
|
19
19
|
|
|
20
|
-
p_doctor = subparsers.add_parser("doctor", help="Inspect native Codex integration without a model call")
|
|
20
|
+
p_doctor = subparsers.add_parser("doctor", help="Inspect native Codex or Grok Build integration without a model call")
|
|
21
21
|
p_doctor.add_argument("project_path", nargs="?", default=".")
|
|
22
|
-
p_doctor.add_argument("--ide", choices=["codex"], default="codex")
|
|
22
|
+
p_doctor.add_argument("--ide", choices=["codex", "grok"], default="codex")
|
|
23
23
|
|
|
24
24
|
p_init = subparsers.add_parser("init", help="Initialize C3 for a project")
|
|
25
25
|
p_init.add_argument("project_path", nargs="?", default=".")
|
|
26
26
|
p_init.add_argument("--force", action="store_true", help="Skip prompts and apply update non-interactively")
|
|
27
27
|
p_init.add_argument("--clear", action="store_true", help="Remove all C3 files and exit without rebuilding")
|
|
28
|
-
p_init.add_argument("--ide", default="auto", type=parse_cli_ide_arg, metavar="{auto,claude,vscode,cursor,codex,antigravity}", help="Target IDE for MCP config (default: auto-detect)")
|
|
28
|
+
p_init.add_argument("--ide", default="auto", type=parse_cli_ide_arg, metavar="{auto,claude,vscode,cursor,codex,antigravity,grok}", help="Target IDE for MCP config (default: auto-detect)")
|
|
29
29
|
p_init.add_argument("--mcp-mode", choices=["direct", "proxy"], default="direct", help="Default MCP mode if install is selected during init (default: direct)")
|
|
30
30
|
p_init.add_argument("--git", action="store_true", help="Initialize a local Git repository during init/update")
|
|
31
31
|
p_init.add_argument("--no-embed", action="store_true", help="Skip building the semantic embedding index during init")
|
|
@@ -153,7 +153,7 @@ def build_parser(version: str, parse_cli_ide_arg):
|
|
|
153
153
|
|
|
154
154
|
p_install_mcp = subparsers.add_parser("install-mcp", help="Generate MCP config for your IDE")
|
|
155
155
|
p_install_mcp.add_argument("targets", nargs="*", help="Optional project path and/or IDE shorthand (for example: `claude` or `. codex`)")
|
|
156
|
-
p_install_mcp.add_argument("--ide", default="auto", type=parse_cli_ide_arg, metavar="{auto,claude,vscode,cursor,codex,antigravity}", help="Target IDE (default: auto-detect)")
|
|
156
|
+
p_install_mcp.add_argument("--ide", default="auto", type=parse_cli_ide_arg, metavar="{auto,claude,vscode,cursor,codex,antigravity,grok}", help="Target IDE (default: auto-detect)")
|
|
157
157
|
p_install_mcp.add_argument("--mcp-mode", choices=["direct", "proxy"], default="direct", help="MCP entrypoint mode (default: direct)")
|
|
158
158
|
p_install_mcp.add_argument("--global-fallback", action="store_true", help="Also install the machine-wide Codex fallback")
|
|
159
159
|
p_install_mcp.add_argument("--permissions", choices=["read-only", "c3-strict", "standard", "permissive"], default=None, help="Apply Claude Code permission tier (Claude Code only)")
|
|
@@ -161,7 +161,7 @@ def build_parser(version: str, parse_cli_ide_arg):
|
|
|
161
161
|
|
|
162
162
|
p_mcp_install = subparsers.add_parser("mcp-install", help="Alias for install-mcp")
|
|
163
163
|
p_mcp_install.add_argument("targets", nargs="*", help="Optional project path and/or IDE shorthand")
|
|
164
|
-
p_mcp_install.add_argument("--ide", default="auto", type=parse_cli_ide_arg, metavar="{auto,claude,vscode,cursor,codex,antigravity}", help="Target IDE (default: auto-detect)")
|
|
164
|
+
p_mcp_install.add_argument("--ide", default="auto", type=parse_cli_ide_arg, metavar="{auto,claude,vscode,cursor,codex,antigravity,grok}", help="Target IDE (default: auto-detect)")
|
|
165
165
|
p_mcp_install.add_argument("--mcp-mode", choices=["direct", "proxy"], default="direct", help="MCP entrypoint mode (default: direct)")
|
|
166
166
|
p_mcp_install.add_argument("--global-fallback", action="store_true", help="Also install the machine-wide Codex fallback")
|
|
167
167
|
p_mcp_install.add_argument("--permissions", choices=["read-only", "c3-strict", "standard", "permissive"], default=None, help="Apply Claude Code permission tier (Claude Code only)")
|
|
@@ -789,7 +789,7 @@
|
|
|
789
789
|
<h1 id="overview">Code <span>Companion</span></h1>
|
|
790
790
|
<div class="subtitle">
|
|
791
791
|
A local code intelligence system that reduces AI coding assistant token usage through compression,
|
|
792
|
-
indexing, and persistent memory. Works with <strong>Claude Code</strong>, <strong>Google Antigravity</strong>,
|
|
792
|
+
indexing, and persistent memory. Works with <strong>Claude Code</strong>, <strong>OpenAI Codex</strong>, <strong>Grok Build</strong>, <strong>Google Antigravity</strong>,
|
|
793
793
|
<strong>VS Code Copilot</strong>, and <strong>Cursor</strong> via MCP. Available as an <strong>MCP
|
|
794
794
|
server</strong>,
|
|
795
795
|
<strong>CLI</strong>, and <strong>web dashboard</strong>.
|
|
@@ -958,7 +958,9 @@ c3 init /path/to/your/project</code></pre>
|
|
|
958
958
|
<code>.github/copilot-instructions.md</code> (hard enforcement language) and
|
|
959
959
|
<code>.vscode/settings.json</code> (Copilot instruction links). For Codex, generates
|
|
960
960
|
<code>AGENTS.md</code> with the C3 session protocol. Use <code>--ide vscode</code>,
|
|
961
|
-
<code>--ide cursor</code>, or <code>--ide
|
|
961
|
+
<code>--ide cursor</code>, <code>--ide codex</code>, or <code>--ide grok</code> to override IDE detection.
|
|
962
|
+
For Grok Build, writes <code>.grok/config.toml</code>, <code>.grok/hooks/c3.json</code> and
|
|
963
|
+
<code>AGENTS.md</code>.
|
|
962
964
|
</div>
|
|
963
965
|
</div>
|
|
964
966
|
</div>
|
|
@@ -968,7 +970,9 @@ c3 init /path/to/your/project</code></pre>
|
|
|
968
970
|
<div class="step-desc">Open your IDE in the project. For Claude Code, run <code>/mcp</code> to verify C3
|
|
969
971
|
tools appear. For Google Antigravity, the MCP tools will be loaded based on your config.
|
|
970
972
|
For VS Code, check MCP tools in the Copilot agent panel. For Codex, the <code>.codex/config.toml</code> is
|
|
971
|
-
picked up automatically on next session start
|
|
973
|
+
picked up automatically on next session start. For Grok Build, launch <code>grok --trust</code> once in
|
|
974
|
+
the project (Grok ignores project MCP servers, hooks and <code>AGENTS.md</code> in an untrusted folder),
|
|
975
|
+
then run <code>c3 doctor --ide grok</code>.</div>
|
|
972
976
|
</div>
|
|
973
977
|
</div>
|
|
974
978
|
</div>
|
|
@@ -1016,8 +1020,16 @@ c3 init /path/to/your/project</code></pre>
|
|
|
1016
1020
|
<td><strong>OpenAI Codex</strong></td>
|
|
1017
1021
|
<td><code>.codex/config.toml</code></td>
|
|
1018
1022
|
<td><code>AGENTS.md</code></td>
|
|
1019
|
-
<td
|
|
1020
|
-
<td>
|
|
1023
|
+
<td><code>.codex/hooks.json</code></td>
|
|
1024
|
+
<td>Yes</td>
|
|
1025
|
+
<td>Yes</td>
|
|
1026
|
+
</tr>
|
|
1027
|
+
<tr>
|
|
1028
|
+
<td><strong>Grok Build</strong></td>
|
|
1029
|
+
<td><code>.grok/config.toml</code></td>
|
|
1030
|
+
<td><code>AGENTS.md</code></td>
|
|
1031
|
+
<td><code>.grok/hooks/c3.json</code></td>
|
|
1032
|
+
<td>Yes (after <code>grok --trust</code>)</td>
|
|
1021
1033
|
<td>No</td>
|
|
1022
1034
|
</tr>
|
|
1023
1035
|
<tr>
|
|
@@ -1050,11 +1062,13 @@ python cli/c3.py install-mcp /path/to/project --ide vscode
|
|
|
1050
1062
|
python cli/c3.py install-mcp /path/to/project --ide cursor
|
|
1051
1063
|
python cli/c3.py install-mcp /path/to/project --ide claude
|
|
1052
1064
|
python cli/c3.py install-mcp /path/to/project --ide codex
|
|
1065
|
+
python cli/c3.py install-mcp /path/to/project --ide grok
|
|
1053
1066
|
python cli/c3.py install-mcp /path/to/project --ide antigravity
|
|
1054
1067
|
|
|
1055
1068
|
# IDE shorthand when already inside the project directory
|
|
1056
1069
|
python cli/c3.py install-mcp claude
|
|
1057
1070
|
python cli/c3.py install-mcp codex
|
|
1071
|
+
python cli/c3.py install-mcp grok
|
|
1058
1072
|
python cli/c3.py install-mcp . antigravity</code></pre>
|
|
1059
1073
|
|
|
1060
1074
|
<p><code>--git</code> runs a local-only <code>git init</code>. It does not create remotes or connect to GitHub,
|
|
@@ -1111,6 +1125,32 @@ python cli/c3.py install-mcp . antigravity</code></pre>
|
|
|
1111
1125
|
</li>
|
|
1112
1126
|
</ul>
|
|
1113
1127
|
|
|
1128
|
+
<p><strong>Grok Build</strong> — <code>install-mcp --ide grok</code> (and <code>c3 init --ide grok</code>)
|
|
1129
|
+
configure xAI's <code>grok</code> CLI. Everything is project-local:</p>
|
|
1130
|
+
<ul>
|
|
1131
|
+
<li><code>.grok/config.toml</code> — a <code>[mcp_servers.c3]</code> table (the same TOML shape as Codex)
|
|
1132
|
+
with <code>--host grok</code> and <code>startup_timeout_sec = 60</code>. Other servers and keys are kept.
|
|
1133
|
+
Auto-detected when <code>.grok/config.toml</code> or a <code>.grok/</code> directory exists.
|
|
1134
|
+
</li>
|
|
1135
|
+
<li><code>.grok/hooks/c3.json</code> — C3's handlers for PreToolUse, PostToolUse, SessionStart,
|
|
1136
|
+
PreCompact, Stop and SessionEnd. C3 owns the whole file. On Windows each command is a
|
|
1137
|
+
<code>powershell.exe -NoLogo -NoProfile -NonInteractive -EncodedCommand</code> line so it runs under
|
|
1138
|
+
whichever shell Grok picks.
|
|
1139
|
+
</li>
|
|
1140
|
+
<li><code>AGENTS.md</code> — shared with Codex and Antigravity; only the C3 block is refreshed.</li>
|
|
1141
|
+
<li><strong>Folder trust</strong> — Grok loads none of these until the folder is trusted. Launch
|
|
1142
|
+
<code>grok --trust</code> once in the project (or run <code>/hooks-trust</code> inside Grok). C3 never
|
|
1143
|
+
writes <code>~/.grok/trusted_folders.toml</code> or <code>~/.grok/config.toml</code>;
|
|
1144
|
+
<code>c3 doctor --ide grok</code> reports the CLI version, hook install and trust state.
|
|
1145
|
+
</li>
|
|
1146
|
+
<li><strong>Limitations</strong> — C3 tools are reached through Grok's <code>search_tool</code> /
|
|
1147
|
+
<code>use_tool</code> and appear as <code>c3__c3_search</code> and so on; PreToolUse hints reach the model
|
|
1148
|
+
after the call runs (denies still block before it); there is no prompt-time memory recall; Stop-hook output
|
|
1149
|
+
is never emitted; with both <code>AGENTS.md</code> and <code>CLAUDE.md</code> present, Grok loads the C3
|
|
1150
|
+
block twice. Full guide: <code>docs/grok-native.md</code>.
|
|
1151
|
+
</li>
|
|
1152
|
+
</ul>
|
|
1153
|
+
|
|
1114
1154
|
<h3>Graceful Degradation</h3>
|
|
1115
1155
|
<p>All core C3 tools (search, compress, file_map, memory, sessions) work identically in every IDE. Claude-specific
|
|
1116
1156
|
features degrade gracefully:</p>
|
|
@@ -1118,7 +1158,7 @@ python cli/c3.py install-mcp . antigravity</code></pre>
|
|
|
1118
1158
|
<li><strong>Transcript search</strong> — returns a helpful message suggesting <code>c3_memory(action='recall')</code> or
|
|
1119
1159
|
<code>c3_memory(action='query')</code> as alternatives
|
|
1120
1160
|
</li>
|
|
1121
|
-
<li><strong>Hooks</strong> —
|
|
1161
|
+
<li><strong>Hooks</strong> — installed for Claude Code, Codex and Grok Build; VS Code and Cursor use hard-language
|
|
1122
1162
|
workflow instructions in their instructions file instead</li>
|
|
1123
1163
|
<li><strong>Instructions file</strong> — <code>c3_claudemd_generate</code> writes to the IDE-appropriate file
|
|
1124
1164
|
(CLAUDE.md, copilot-instructions.md, .cursorrules, AGENTS.md, or GEMINI.md). All IDEs use MANDATORY/NEVER
|
|
@@ -2053,10 +2093,12 @@ c3 ui /path/to/your/project --silent # Hide API request logs in terminal
|
|
|
2053
2093
|
<div class="tab-name"><span class="badge badge-green">11</span> Settings</div>
|
|
2054
2094
|
<div class="tab-desc">Project info (editable name, tech stack, description), quick actions (rebuild index,
|
|
2055
2095
|
save instructions file), project data management (view sizes and item counts per .c3/ category, clear
|
|
2056
|
-
actions), instructions file management, and MCP management: target IDE selector (Claude/
|
|
2057
|
-
Code/Cursor/Codex/Antigravity), custom MCP add form, installed MCP cards, and per-card trash removal.
|
|
2096
|
+
actions), instructions file management, and MCP management: target IDE selector (Claude/VS
|
|
2097
|
+
Code/Cursor/Codex/Grok Build/Antigravity), custom MCP add form, installed MCP cards, and per-card trash removal.
|
|
2058
2098
|
Removing <code>c3</code> can also clean related IDE files/hooks. Includes IDE selector for C3 MCP
|
|
2059
|
-
installation and optimization suggestions
|
|
2099
|
+
installation and optimization suggestions. Delegate backend sections (Codex, Gemini, Grok Build) hold each
|
|
2100
|
+
backend's enable switch, model, timeouts and auto-routed task types; the Grok Build section adds max turns
|
|
2101
|
+
and the write-mode switch (<code>grok_allow_write</code>).</div>
|
|
2060
2102
|
</div>
|
|
2061
2103
|
</div>
|
|
2062
2104
|
|
|
@@ -2595,13 +2637,13 @@ c3 ui /path/to/your/project --silent # Hide API request logs in terminal
|
|
|
2595
2637
|
</p>
|
|
2596
2638
|
|
|
2597
2639
|
<h3>Project Setup</h3>
|
|
2598
|
-
<pre><code>c3 init <project_path> [--ide auto|claude|vscode|cursor|codex|
|
|
2640
|
+
<pre><code>c3 init <project_path> [--ide auto|claude|vscode|cursor|codex|grok|antigravity] [--force]
|
|
2599
2641
|
# Initialize C3: builds index, creates config, generates instructions file,
|
|
2600
2642
|
# and automatically installs the MCP config for your IDE.
|
|
2601
2643
|
# Re-running on an existing project now migrates config defaults and
|
|
2602
2644
|
# refreshes instruction workflow files (Update / Clear / Reset options).
|
|
2603
2645
|
c3 index [--max-files 500] # Rebuild the code index
|
|
2604
|
-
c3 install-mcp [project_path] [ide] [--ide auto|claude|vscode|cursor|codex|
|
|
2646
|
+
c3 install-mcp [project_path] [ide] [--ide auto|claude|vscode|cursor|codex|grok|antigravity] # (Re-)generate MCP config manually
|
|
2605
2647
|
c3 ui [project_path] [--port 3333] [--nano] [--silent] # Launch web dashboard (full or nano)</code></pre>
|
|
2606
2648
|
|
|
2607
2649
|
<h3>Compression & Search</h3>
|
|
@@ -2652,7 +2694,7 @@ c3 session load | claude --resume</code></pre>
|
|
|
2652
2694
|
|
|
2653
2695
|
<div class="arch">
|
|
2654
2696
|
<pre>
|
|
2655
|
-
<strong>IDE</strong> (Claude Code / VS Code Copilot / Cursor / Codex /
|
|
2697
|
+
<strong>IDE</strong> (Claude Code / VS Code Copilot / Cursor / Codex / Grok Build / Antigravity)
|
|
2656
2698
|
| MCP Protocol (IDE-specific config file)
|
|
2657
2699
|
v
|
|
2658
2700
|
<strong>MCP Proxy</strong> ──── Dynamic tool filtering + context injection (optional, opt-in via MCP config)
|
|
@@ -2872,7 +2914,7 @@ c3 session load | claude --resume</code></pre>
|
|
|
2872
2914
|
protocol.py # Compression protocol encoder/decoder
|
|
2873
2915
|
core/
|
|
2874
2916
|
__init__.py # Token counting utilities
|
|
2875
|
-
ide.py # IDE profile registry (Claude Code, VS Code, Cursor, Codex) + auto-detection
|
|
2917
|
+
ide.py # IDE profile registry (Claude Code, VS Code, Cursor, Codex, Antigravity, Grok Build) + auto-detection
|
|
2876
2918
|
config.py # Hybrid, proxy, delegate, and agent configuration loaders
|
|
2877
2919
|
install.bat # Windows installer
|
|
2878
2920
|
install.sh # Linux/macOS installer
|
|
@@ -3023,8 +3065,11 @@ c3 session load | claude --resume</code></pre>
|
|
|
3023
3065
|
<ul>
|
|
3024
3066
|
<li>Make sure the MCP config file exists (<code>.mcp.json</code> for Claude Code,
|
|
3025
3067
|
<code>.vscode/mcp.json</code> for VS Code, <code>.cursor/mcp.json</code> for Cursor,
|
|
3026
|
-
<code>.codex/config.toml</code> for Codex)
|
|
3068
|
+
<code>.codex/config.toml</code> for Codex, <code>.grok/config.toml</code> for Grok Build)
|
|
3027
3069
|
</li>
|
|
3070
|
+
<li>For Grok Build, trust the folder first (<code>grok --trust</code> or <code>/hooks-trust</code>), then
|
|
3071
|
+
check <code>c3 doctor --ide grok</code>, <code>grok mcp doctor c3 --json</code> and <code>grok inspect</code>.
|
|
3072
|
+
Run <code>/hooks</code> inside Grok to see whether C3's hooks loaded.</li>
|
|
3028
3073
|
<li>Check that the Python path in the config is correct (<code>"command"</code> field for JSON configs;
|
|
3029
3074
|
<code>command</code> key for Codex TOML)
|
|
3030
3075
|
</li>
|
{code_context_control-2.129.1 → code_context_control-2.131.0}/cli/guide/getting-started.html
RENAMED
|
@@ -174,7 +174,11 @@ c3 init</code></pre>
|
|
|
174
174
|
</tr>
|
|
175
175
|
<tr>
|
|
176
176
|
<td><code>AGENTS.md</code></td>
|
|
177
|
-
<td>Instructions for Codex sessions</td>
|
|
177
|
+
<td>Instructions for Codex, Grok Build and Antigravity sessions</td>
|
|
178
|
+
</tr>
|
|
179
|
+
<tr>
|
|
180
|
+
<td><code>.grok/config.toml</code>, <code>.grok/hooks/c3.json</code></td>
|
|
181
|
+
<td>Grok Build only: project MCP entry and C3's hooks (written by <code>--ide grok</code>)</td>
|
|
178
182
|
</tr>
|
|
179
183
|
</tbody>
|
|
180
184
|
</table>
|
|
@@ -231,6 +235,12 @@ c3 init</code></pre>
|
|
|
231
235
|
<pre><code>c3 install-mcp antigravity</code></pre>
|
|
232
236
|
<p>Updates the user-global <code>~/.gemini/antigravity/mcp_config.json</code> and <code>AGENTS.md</code>.</p>
|
|
233
237
|
|
|
238
|
+
<h3>Grok Build</h3>
|
|
239
|
+
<pre><code>c3 install-mcp grok
|
|
240
|
+
grok --trust
|
|
241
|
+
c3 doctor --ide grok</code></pre>
|
|
242
|
+
<p>Updates <code>.grok/config.toml</code> (<code>[mcp_servers.c3]</code>), writes C3's hooks to <code>.grok/hooks/c3.json</code>, and refreshes the C3 block in <code>AGENTS.md</code>. Grok loads none of them until the folder is trusted, so launch <code>grok --trust</code> once in the project (or run <code>/hooks-trust</code> inside Grok). C3 never writes Grok's trust store or <code>~/.grok/config.toml</code>. In Grok, C3's tools are reached through <code>search_tool</code> / <code>use_tool</code> as <code>c3__c3_search</code> and so on. Details and limitations: <code>docs/grok-native.md</code>.</p>
|
|
243
|
+
|
|
234
244
|
<p><em>The Gemini CLI profile was removed in v2.52 — use Antigravity instead. <code>c3 uninstall</code> still cleans up legacy <code>.gemini/settings.json</code> and <code>GEMINI.md</code> files.</em></p>
|
|
235
245
|
|
|
236
246
|
<h3>All IDEs at once</h3>
|
|
@@ -997,7 +997,7 @@ c3_memory(action=<span class="str">'recall'</span>, query=<span class="str">'pay
|
|
|
997
997
|
<p>Everything the CLI does — plus the operations that need multi-step safety — is available in the Hub:</p>
|
|
998
998
|
<ul>
|
|
999
999
|
<li><strong>"Link project by path…"</strong> (v2.96.0) — kebab menu on any card, at any depth. Browse anywhere or paste a path; C3 inspects it before anything happens and shows you what you are about to claim — the project's name and version, whether the hub already knows it, how much is in it, who already claims it, and what sub-projects it would bring with it. One confirm registers and links an unregistered project. Unlinked nested projects it finds are offered as suggestions, never applied.</li>
|
|
1000
|
-
<li><strong>Designate</strong> — kebab menu → "Designate sub-project…" on any project card, or from the drill-in <strong>Sub-projects</strong> tab. A folder picker fenced to the parent's subtree validates the choice, shows adopt-vs-initialize expectations up front, and offers an instruction-docs/IDE picker (<code>auto | claude | vscode | cursor | codex | antigravity</code>).</li>
|
|
1000
|
+
<li><strong>Designate</strong> — kebab menu → "Designate sub-project…" on any project card, or from the drill-in <strong>Sub-projects</strong> tab. A folder picker fenced to the parent's subtree validates the choice, shows adopt-vs-initialize expectations up front, and offers an instruction-docs/IDE picker (<code>auto | claude | vscode | cursor | codex | grok | antigravity</code>).</li>
|
|
1001
1001
|
<li><strong>"Make sub-project of…"</strong> — the reverse move: pick any registered project to sit under. The only projects excluded are this one and its own descendants.</li>
|
|
1002
1002
|
<li><strong>Sub-projects drill tab</strong> — per-child rows with inline <em>Validate</em> and <em>Promote</em>; inline <em>Reconcile</em> with per-issue detail and planned repair actions; a <em>Cascade</em> launcher with operation picker, include-parent toggle, affected-children preview, live progress, and Cancel.</li>
|
|
1003
1003
|
<li><strong>Link health, passively</strong> — parents show a red "N link issues" badge and children a status badge (<code>ok · backlink_broken · unregistered · missing_folder · missing_c3 · orphan</code>), computed from config + filesystem on every listing — no manual reconcile needed to spot trouble.</li>
|
|
@@ -1022,7 +1022,7 @@ c3_memory(action=<span class="str">'recall'</span>, query=<span class="str">'pay
|
|
|
1022
1022
|
<section class="section" id="repo-map">
|
|
1023
1023
|
<div class="section-title"><span class="icon">🗺️</span> Live Repo Map (v2.60.0)</div>
|
|
1024
1024
|
|
|
1025
|
-
<p>Instruction docs (CLAUDE.md / AGENTS.md) no longer embed a frozen project tree. They carry a stable pointer to <code>.c3/MAP.md</code> — a machine-owned map C3 keeps fresh automatically. One map serves every consumer: Claude Code, Codex, Antigravity.</p>
|
|
1025
|
+
<p>Instruction docs (CLAUDE.md / AGENTS.md) no longer embed a frozen project tree. They carry a stable pointer to <code>.c3/MAP.md</code> — a machine-owned map C3 keeps fresh automatically. One map serves every consumer: Claude Code, Codex, Grok Build, Antigravity.</p>
|
|
1026
1026
|
|
|
1027
1027
|
<p>The map contains, in priority order: build/test commands, entry points, module one-liners, the depth-2 tree, and key files — under a token budget (default 1000). Sub-projects appear as boundaries and are never expanded into the parent map.</p>
|
|
1028
1028
|
|