code-context-control 2.63.0__tar.gz → 2.63.2__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.
Files changed (379) hide show
  1. code_context_control-2.63.2/PKG-INFO +344 -0
  2. code_context_control-2.63.2/README.md +281 -0
  3. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/c3.py +1 -1
  4. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/dashboard.js +2 -2
  5. code_context_control-2.63.2/code_context_control.egg-info/PKG-INFO +344 -0
  6. {code_context_control-2.63.0 → code_context_control-2.63.2}/pyproject.toml +2 -2
  7. code_context_control-2.63.0/PKG-INFO +0 -604
  8. code_context_control-2.63.0/README.md +0 -541
  9. code_context_control-2.63.0/code_context_control.egg-info/PKG-INFO +0 -604
  10. {code_context_control-2.63.0 → code_context_control-2.63.2}/LICENSE +0 -0
  11. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/__init__.py +0 -0
  12. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/_hook_utils.py +0 -0
  13. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/commands/__init__.py +0 -0
  14. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/commands/common.py +0 -0
  15. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/commands/parser.py +0 -0
  16. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/docs.html +0 -0
  17. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/edits.html +0 -0
  18. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/access.html +0 -0
  19. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/bitbucket.html +0 -0
  20. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/credentials.html +0 -0
  21. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/getting-started.html +0 -0
  22. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/index.html +0 -0
  23. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/masking.html +0 -0
  24. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/oracle.html +0 -0
  25. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/shared.css +0 -0
  26. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/tools.html +0 -0
  27. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/guide/workflow.html +0 -0
  28. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_access_guard.py +0 -0
  29. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_artifact.py +0 -0
  30. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_auto_snapshot.py +0 -0
  31. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_c3_signal.py +0 -0
  32. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_c3read.py +0 -0
  33. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_dispatch.py +0 -0
  34. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_edit_ledger.py +0 -0
  35. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_edit_unlock.py +0 -0
  36. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_filter.py +0 -0
  37. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_ghost_files.py +0 -0
  38. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_pretool_enforce.py +0 -0
  39. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_prompt_recall.py +0 -0
  40. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_read.py +0 -0
  41. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_session_stats.py +0 -0
  42. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hook_terse_advisor.py +0 -0
  43. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub.html +0 -0
  44. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_server.py +0 -0
  45. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/app.js +0 -0
  46. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/add_project.js +0 -0
  47. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/config_editor.js +0 -0
  48. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/drill_artifacts.js +0 -0
  49. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/drill_health.js +0 -0
  50. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/drill_panel.js +0 -0
  51. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/drill_subprojects.js +0 -0
  52. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/drill_tasks.js +0 -0
  53. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/drill_views.js +0 -0
  54. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/global_search.js +0 -0
  55. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/hub_credentials.js +0 -0
  56. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/mcp_manager.js +0 -0
  57. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/modals.js +0 -0
  58. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/project_card.js +0 -0
  59. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/project_tree.js +0 -0
  60. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/session_drawer.js +0 -0
  61. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/settings_modal.js +0 -0
  62. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/sidebar.js +0 -0
  63. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/summary_bar.js +0 -0
  64. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/task_board.js +0 -0
  65. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/toasts.js +0 -0
  66. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/components/topbar.js +0 -0
  67. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui/state.js +0 -0
  68. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/hub_ui.html +0 -0
  69. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/mcp_proxy.py +0 -0
  70. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/mcp_server.py +0 -0
  71. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/progress.py +0 -0
  72. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/server.py +0 -0
  73. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/__init__.py +0 -0
  74. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/_helpers.py +0 -0
  75. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/agent.py +0 -0
  76. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/artifacts.py +0 -0
  77. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/bitbucket.py +0 -0
  78. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/compress.py +0 -0
  79. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/credentials.py +0 -0
  80. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/delegate.py +0 -0
  81. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/edit.py +0 -0
  82. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/edits.py +0 -0
  83. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/federate.py +0 -0
  84. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/filter.py +0 -0
  85. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/impact.py +0 -0
  86. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/jira.py +0 -0
  87. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/memory.py +0 -0
  88. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/project.py +0 -0
  89. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/read.py +0 -0
  90. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/search.py +0 -0
  91. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/session.py +0 -0
  92. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/shell.py +0 -0
  93. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/status.py +0 -0
  94. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/tasks.py +0 -0
  95. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/tools/validate.py +0 -0
  96. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/api.js +0 -0
  97. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/app.js +0 -0
  98. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/access.js +0 -0
  99. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/bitbucket.js +0 -0
  100. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/chat.js +0 -0
  101. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/credentials.js +0 -0
  102. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/edits.js +0 -0
  103. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/instructions.js +0 -0
  104. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/jira.js +0 -0
  105. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/memory.js +0 -0
  106. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/sessions.js +0 -0
  107. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/settings.js +0 -0
  108. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/sidebar.js +0 -0
  109. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/components/tasks.js +0 -0
  110. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/icons.js +0 -0
  111. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/pm_shared.js +0 -0
  112. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/shared.js +0 -0
  113. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui/theme.js +0 -0
  114. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui.html +0 -0
  115. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui_legacy.html +0 -0
  116. {code_context_control-2.63.0 → code_context_control-2.63.2}/cli/ui_nano.html +0 -0
  117. {code_context_control-2.63.0 → code_context_control-2.63.2}/code_context_control.egg-info/SOURCES.txt +0 -0
  118. {code_context_control-2.63.0 → code_context_control-2.63.2}/code_context_control.egg-info/dependency_links.txt +0 -0
  119. {code_context_control-2.63.0 → code_context_control-2.63.2}/code_context_control.egg-info/entry_points.txt +0 -0
  120. {code_context_control-2.63.0 → code_context_control-2.63.2}/code_context_control.egg-info/requires.txt +0 -0
  121. {code_context_control-2.63.0 → code_context_control-2.63.2}/code_context_control.egg-info/top_level.txt +0 -0
  122. {code_context_control-2.63.0 → code_context_control-2.63.2}/core/__init__.py +0 -0
  123. {code_context_control-2.63.0 → code_context_control-2.63.2}/core/config.py +0 -0
  124. {code_context_control-2.63.0 → code_context_control-2.63.2}/core/ide.py +0 -0
  125. {code_context_control-2.63.0 → code_context_control-2.63.2}/core/mcp_toml.py +0 -0
  126. {code_context_control-2.63.0 → code_context_control-2.63.2}/core/web_security.py +0 -0
  127. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/__init__.py +0 -0
  128. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/config.py +0 -0
  129. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/mcp_oracle.py +0 -0
  130. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/oracle_server.py +0 -0
  131. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/oracle_ui.html +0 -0
  132. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/__init__.py +0 -0
  133. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/activity_reporter.py +0 -0
  134. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/api_auth.py +0 -0
  135. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/c3_bridge.py +0 -0
  136. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/chat_engine.py +0 -0
  137. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/chat_store.py +0 -0
  138. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/cross_memory.py +0 -0
  139. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/federated_graph.py +0 -0
  140. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/health_checker.py +0 -0
  141. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/insight_engine.py +0 -0
  142. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/local_session.py +0 -0
  143. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/memory_reader.py +0 -0
  144. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/memory_writer.py +0 -0
  145. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/project_scanner.py +0 -0
  146. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/review_agent.py +0 -0
  147. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/tool_executor.py +0 -0
  148. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/services/tool_registry.py +0 -0
  149. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/activity.js +0 -0
  150. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/agents.js +0 -0
  151. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/app.js +0 -0
  152. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/busy.js +0 -0
  153. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/chat/conversations.js +0 -0
  154. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/chat/input.js +0 -0
  155. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/chat/markdown.js +0 -0
  156. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/chat/send.js +0 -0
  157. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/chat/stream_renderer.js +0 -0
  158. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/chat/toolbar.js +0 -0
  159. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/core.js +0 -0
  160. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/crossgraph.js +0 -0
  161. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/header.js +0 -0
  162. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/insights.js +0 -0
  163. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/projects.js +0 -0
  164. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/settings.js +0 -0
  165. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/suggestions.js +0 -0
  166. {code_context_control-2.63.0 → code_context_control-2.63.2}/oracle/ui/theme_tabs.js +0 -0
  167. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/__init__.py +0 -0
  168. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/access_guard.py +0 -0
  169. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/activity_log.py +0 -0
  170. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/agent_base.py +0 -0
  171. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/agents.py +0 -0
  172. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/artifact_defs.py +0 -0
  173. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/artifact_store.py +0 -0
  174. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/auto_memory.py +0 -0
  175. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/bench/__init__.py +0 -0
  176. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/bench/external/__init__.py +0 -0
  177. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/bench/external/aider_polyglot.py +0 -0
  178. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/bench/external/swe_bench.py +0 -0
  179. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/benchmark_dashboard.py +0 -0
  180. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/bitbucket_client.py +0 -0
  181. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/bitbucket_credentials.py +0 -0
  182. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/circuit_breaker.py +0 -0
  183. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/claude_md.py +0 -0
  184. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/compressor.py +0 -0
  185. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/context_snapshot.py +0 -0
  186. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/conversation_store.py +0 -0
  187. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/credential_store.py +0 -0
  188. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/doc_index.py +0 -0
  189. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/e2e_benchmark.py +0 -0
  190. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/e2e_evaluator.py +0 -0
  191. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/e2e_tasks.py +0 -0
  192. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/edit_ledger.py +0 -0
  193. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/embedding_index.py +0 -0
  194. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/error_reporting.py +0 -0
  195. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/file_memory.py +0 -0
  196. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/git_context.py +0 -0
  197. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/hub_service.py +0 -0
  198. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/indexer.py +0 -0
  199. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/jira_client.py +0 -0
  200. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/jira_cloud.py +0 -0
  201. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/jira_credentials.py +0 -0
  202. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/jira_data_center.py +0 -0
  203. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/jira_links.py +0 -0
  204. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/mask_activation.py +0 -0
  205. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/mask_mirror.py +0 -0
  206. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/mask_presets.py +0 -0
  207. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/memory.py +0 -0
  208. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/memory_consolidator.py +0 -0
  209. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/memory_distiller.py +0 -0
  210. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/memory_graph.py +0 -0
  211. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/memory_grounder.py +0 -0
  212. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/memory_queue.py +0 -0
  213. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/memory_scorer.py +0 -0
  214. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/metrics.py +0 -0
  215. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/notifications.py +0 -0
  216. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/ollama_bridge.py +0 -0
  217. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/ollama_client.py +0 -0
  218. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/ollama_credentials.py +0 -0
  219. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/output_filter.py +0 -0
  220. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/parser.py +0 -0
  221. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/project_manager.py +0 -0
  222. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/project_runtime.py +0 -0
  223. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/protocol.py +0 -0
  224. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/proxy_state.py +0 -0
  225. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/repo_map.py +0 -0
  226. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/retention.py +0 -0
  227. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/retrieval_broker.py +0 -0
  228. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/router.py +0 -0
  229. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/runtime.py +0 -0
  230. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/scanner.py +0 -0
  231. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/session_benchmark.py +0 -0
  232. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/session_manager.py +0 -0
  233. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/session_preloader.py +0 -0
  234. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/subprojects.py +0 -0
  235. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/task_store.py +0 -0
  236. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/telemetry.py +0 -0
  237. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/text_index.py +0 -0
  238. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/time_tracker.py +0 -0
  239. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/tool_classifier.py +0 -0
  240. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/transcript_index.py +0 -0
  241. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/validation_cache.py +0 -0
  242. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/vector_store.py +0 -0
  243. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/watcher.py +0 -0
  244. {code_context_control-2.63.0 → code_context_control-2.63.2}/services/win_subprocess.py +0 -0
  245. {code_context_control-2.63.0 → code_context_control-2.63.2}/setup.cfg +0 -0
  246. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_access_guard.py +0 -0
  247. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_access_guard_meta.py +0 -0
  248. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_access_guard_shell_project.py +0 -0
  249. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_access_guard_surfaces.py +0 -0
  250. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_access_guard_wiring.py +0 -0
  251. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_activity_reporter.py +0 -0
  252. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_aider_polyglot.py +0 -0
  253. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_antigravity_transition.py +0 -0
  254. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_artifact_store.py +0 -0
  255. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_artifact_tool.py +0 -0
  256. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_bitbucket_cli_smoke.py +0 -0
  257. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_bitbucket_client.py +0 -0
  258. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_bitbucket_config_fallback.py +0 -0
  259. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_bitbucket_credentials.py +0 -0
  260. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_bitbucket_tool.py +0 -0
  261. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_c3_bridge_project_artifacts.py +0 -0
  262. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_c3_shell.py +0 -0
  263. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_circuit_breaker.py +0 -0
  264. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_claude_md_merge.py +0 -0
  265. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_cli_smoke.py +0 -0
  266. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_compressor_large_file.py +0 -0
  267. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_credential_store.py +0 -0
  268. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_credentials_routes.py +0 -0
  269. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_credentials_tool.py +0 -0
  270. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_creds_cli_smoke.py +0 -0
  271. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_delegate_cascade.py +0 -0
  272. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_e2e_benchmark.py +0 -0
  273. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_edit_ledger_hook.py +0 -0
  274. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_edit_normalization.py +0 -0
  275. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_enforcement_flip.py +0 -0
  276. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_federated_graph.py +0 -0
  277. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_filter_backoff.py +0 -0
  278. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_ghost_files.py +0 -0
  279. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_ghost_generation.py +0 -0
  280. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_git_branch_awareness.py +0 -0
  281. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hook_access_guard.py +0 -0
  282. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hook_dispatch.py +0 -0
  283. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hook_pretool_enforce.py +0 -0
  284. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hook_prompt_recall.py +0 -0
  285. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hook_smoke.py +0 -0
  286. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hook_state.py +0 -0
  287. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hook_utf8_stdio.py +0 -0
  288. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hub_credentials_route.py +0 -0
  289. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hub_credentials_routes_write.py +0 -0
  290. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hub_inspect_api.py +0 -0
  291. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hub_server_smoke.py +0 -0
  292. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_hub_subproject_links.py +0 -0
  293. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_init_scan.py +0 -0
  294. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_install_mcp_entrypoint.py +0 -0
  295. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_jira_cli_smoke.py +0 -0
  296. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_jira_client.py +0 -0
  297. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_jira_config_fallback.py +0 -0
  298. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_jira_credentials.py +0 -0
  299. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_jira_links.py +0 -0
  300. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_jira_routes.py +0 -0
  301. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_jira_tool.py +0 -0
  302. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_lazy_store_init.py +0 -0
  303. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_mask_guard.py +0 -0
  304. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_mask_routes.py +0 -0
  305. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_mask_surfaces.py +0 -0
  306. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_mcp_host_guard.py +0 -0
  307. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_mcp_memory_timeout.py +0 -0
  308. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_mcp_server_smoke.py +0 -0
  309. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_mcp_toml.py +0 -0
  310. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_memory_distiller.py +0 -0
  311. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_memory_graph_api.py +0 -0
  312. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_memory_queue.py +0 -0
  313. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_memory_system.py +0 -0
  314. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_no_stale_model_pins.py +0 -0
  315. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_notification_dedup.py +0 -0
  316. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_notification_discipline.py +0 -0
  317. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_ollama_credentials.py +0 -0
  318. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_api_auth.py +0 -0
  319. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_apikey_api.py +0 -0
  320. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_c3_bridge.py +0 -0
  321. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_chat_engine.py +0 -0
  322. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_discovery_api.py +0 -0
  323. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_local_auth.py +0 -0
  324. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_ollama_bridge.py +0 -0
  325. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_scanner_cache.py +0 -0
  326. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_security_fixes.py +0 -0
  327. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_subproject_awareness.py +0 -0
  328. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_oracle_ui_bundle.py +0 -0
  329. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_output_filter.py +0 -0
  330. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_permissions.py +0 -0
  331. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_pm_api.py +0 -0
  332. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_project_manager.py +0 -0
  333. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_project_manager_merge.py +0 -0
  334. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_project_tool.py +0 -0
  335. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_read_coercion.py +0 -0
  336. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_read_edit_parity.py +0 -0
  337. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_related_facts.py +0 -0
  338. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_repo_map.py +0 -0
  339. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_response_boilerplate.py +0 -0
  340. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_retention.py +0 -0
  341. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_review_digest.py +0 -0
  342. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_service_durability.py +0 -0
  343. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_session_benchmark.py +0 -0
  344. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_session_budget.py +0 -0
  345. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_shell_creds.py +0 -0
  346. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_shell_robustness.py +0 -0
  347. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_subproject_exclusion.py +0 -0
  348. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_subproject_federation.py +0 -0
  349. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_subprojects.py +0 -0
  350. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_swe_bench.py +0 -0
  351. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_task_store.py +0 -0
  352. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_task_tool.py +0 -0
  353. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_time_tracker.py +0 -0
  354. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_token_telemetry.py +0 -0
  355. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_tool_registry.py +0 -0
  356. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_upgrade_and_version.py +0 -0
  357. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_validate.py +0 -0
  358. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_vault_write_guard.py +0 -0
  359. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_version_sync.py +0 -0
  360. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_web_security.py +0 -0
  361. {code_context_control-2.63.0 → code_context_control-2.63.2}/tests/test_windows_reliability.py +0 -0
  362. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/__init__.py +0 -0
  363. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/backend.py +0 -0
  364. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/main.py +0 -0
  365. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/__init__.py +0 -0
  366. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/benchmark_view.py +0 -0
  367. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/claudemd_view.py +0 -0
  368. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/compress_view.py +0 -0
  369. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/index_view.py +0 -0
  370. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/init_view.py +0 -0
  371. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/mcp_view.py +0 -0
  372. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/optimize_view.py +0 -0
  373. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/pipe_view.py +0 -0
  374. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/projects_view.py +0 -0
  375. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/search_view.py +0 -0
  376. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/session_view.py +0 -0
  377. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/stats.py +0 -0
  378. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/screens/ui_view.py +0 -0
  379. {code_context_control-2.63.0 → code_context_control-2.63.2}/tui/theme.tcss +0 -0
@@ -0,0 +1,344 @@
1
+ Metadata-Version: 2.4
2
+ Name: code-context-control
3
+ Version: 2.63.2
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
+ Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
6
+ License-Expression: Apache-2.0
7
+ Project-URL: Homepage, https://github.com/drknowhow/code-context-control
8
+ Project-URL: Documentation, https://github.com/drknowhow/code-context-control#readme
9
+ Project-URL: Repository, https://github.com/drknowhow/code-context-control
10
+ Project-URL: Changelog, https://github.com/drknowhow/code-context-control/blob/main/CHANGELOG.md
11
+ Project-URL: Issues, https://github.com/drknowhow/code-context-control/issues
12
+ Project-URL: Funding, https://github.com/sponsors/drknowhow
13
+ Keywords: claude,claude-code,mcp,ai,code-intelligence,code-context,developer-tools,llm-tools
14
+ Classifier: Development Status :: 4 - Beta
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Topic :: Software Development
22
+ Classifier: Topic :: Software Development :: Code Generators
23
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
24
+ Requires-Python: >=3.10
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: tiktoken>=0.7.0
28
+ Requires-Dist: fastmcp>=2.0.0
29
+ Requires-Dist: watchdog>=4.0.0
30
+ Requires-Dist: tree-sitter>=0.22.0
31
+ Requires-Dist: tree-sitter-python>=0.21.0
32
+ Requires-Dist: tree-sitter-javascript>=0.21.0
33
+ Requires-Dist: tree-sitter-typescript>=0.21.0
34
+ Requires-Dist: tree-sitter-html>=0.21.0
35
+ Requires-Dist: tree-sitter-markdown>=0.3.2
36
+ Requires-Dist: tree-sitter-css>=0.21.0
37
+ Requires-Dist: tree-sitter-go>=0.21.0
38
+ Requires-Dist: tree-sitter-rust>=0.21.0
39
+ Requires-Dist: tree-sitter-json>=0.21.0
40
+ Requires-Dist: tree-sitter-yaml>=0.6.0
41
+ Requires-Dist: flask>=3.0.0
42
+ Requires-Dist: rich>=13.0.0
43
+ Requires-Dist: click>=8.0.0
44
+ Requires-Dist: pyyaml>=6.0.0
45
+ Requires-Dist: keyring>=24.0
46
+ Provides-Extra: vector
47
+ Requires-Dist: scikit-learn>=1.3.0; extra == "vector"
48
+ Requires-Dist: numpy>=1.24.0; extra == "vector"
49
+ Requires-Dist: chromadb>=0.4.24; extra == "vector"
50
+ Provides-Extra: tui
51
+ Requires-Dist: textual>=0.50.0; extra == "tui"
52
+ Provides-Extra: telemetry
53
+ Requires-Dist: sentry-sdk>=2.0.0; extra == "telemetry"
54
+ Provides-Extra: dev
55
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
56
+ Requires-Dist: pyright>=1.1.350; extra == "dev"
57
+ Requires-Dist: ruff>=0.6.0; extra == "dev"
58
+ Requires-Dist: build>=1.0.0; extra == "dev"
59
+ Requires-Dist: twine>=5.0.0; extra == "dev"
60
+ Requires-Dist: numpy>=1.24.0; extra == "dev"
61
+ Requires-Dist: scikit-learn>=1.3.0; extra == "dev"
62
+ Dynamic: license-file
63
+
64
+ <h1 align="center">Code Context Control</h1>
65
+
66
+ <p align="center">
67
+ <strong>The local code-intelligence layer for AI coding tools.</strong><br>
68
+ Retrieve less, read less, edit safer — and control what an agent may read, write, or see.<br>
69
+ Works with Claude Code, Codex, Copilot, Cursor, and Antigravity.
70
+ </p>
71
+
72
+ <p align="center">
73
+ <a href="https://pypi.org/project/code-context-control/"><img alt="PyPI" src="https://img.shields.io/pypi/v/code-context-control?color=blue&logo=pypi&logoColor=white"></a>
74
+ <a href="https://github.com/drknowhow/code-context-control/blob/main/LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue.svg"></a>
75
+ <img alt="Python 3.10+" src="https://img.shields.io/badge/python-3.10%2B-blue.svg">
76
+ <img alt="Platforms" src="https://img.shields.io/badge/platform-windows%20%7C%20macos%20%7C%20linux-lightgrey">
77
+ <img alt="Status: Beta" src="https://img.shields.io/badge/status-beta-yellow">
78
+ <a href="https://github.com/sponsors/drknowhow"><img alt="Sponsor" src="https://img.shields.io/badge/sponsor-%E2%9D%A4-EA4AAA?logo=githubsponsors&logoColor=white"></a>
79
+ </p>
80
+
81
+ <p align="center">
82
+ <img src="https://raw.githubusercontent.com/drknowhow/code-context-control/main/docs/screenshots/2026-07/ui_dashboard.png" alt="C3 per-project dashboard" width="900">
83
+ </p>
84
+
85
+ ---
86
+
87
+ ## The problem
88
+
89
+ LLM-driven coding tools have one expensive failure mode: **they read too much.** They `cat` whole files, regex the entire repo, dump 10k-line logs into context, edit-and-pray, and burn through budget before they touch a single line of code. On a half-day session you can spend $20+ on token waste that adds zero value.
90
+
91
+ And they read too *widely*: the same agent that greps your source also greps your `.env`, your customer CSV, and your production dumps.
92
+
93
+ ## What C3 does about it
94
+
95
+ A thin **local** layer between your IDE and your repo. Every AI tool call is routed through a narrow, surgical operation instead of a broad, wasteful one:
96
+
97
+ | Without C3 | With C3 |
98
+ |---|---|
99
+ | `Read` the whole 2,000-line file | `c3_compress` returns a structural map at 40-70% of the original token count → `c3_read(symbols=...)` for the exact function |
100
+ | `Grep` the whole repo blindly | `c3_search` returns ranked candidates with TF-IDF + symbol awareness |
101
+ | Dump full `pytest` output into the prompt | `c3_filter` distills 500 lines → 30 actionable ones |
102
+ | Edit, hope it compiled | `c3_edit` writes via a ledger + `c3_validate` runs `pyright`/`tsc` automatically |
103
+ | `Bash` test runs that hang on Windows | `c3_shell` returns structured `{exit_code, stdout, stderr, duration}` with auto-filter |
104
+ | Lose all context on `/clear` | `c3_session(snapshot)` + `c3_memory` persist decisions across sessions |
105
+ | Re-explain the project every session | Auto-synced `CLAUDE.md` / `AGENTS.md` / `copilot-instructions.md` from one source of truth |
106
+ | Agent reads `.env`, a customer CSV, a prod dump | **Access Guard** denies the path outright, or **Mask Guard** serves a redacted view |
107
+
108
+ Everything runs **locally**. No source code, prompts, or model output leaves your machine unless you explicitly opt into a third-party model API.
109
+
110
+ ---
111
+
112
+ ## Install
113
+
114
+ Requires Python 3.10+. Recommended via [pipx](https://pipx.pypa.io):
115
+
116
+ ```bash
117
+ pipx install code-context-control
118
+ c3 init /path/to/your/project
119
+ ```
120
+
121
+ Or `pip install "code-context-control[tui]"` for the optional Textual UI.
122
+
123
+ `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:
124
+
125
+ ```bash
126
+ c3 init /path/to/project --force --ide claude --mcp-mode direct --permissions standard
127
+ c3 init /path/to/huge-repo --force --no-embed # skip the embedding index on large repos
128
+ ```
129
+
130
+ Upgrade with `c3 upgrade` (or `pipx upgrade code-context-control`). MCP is wired through the `c3-mcp` entry point, so upgrading needs no per-project reconfiguration.
131
+
132
+ > **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.
133
+
134
+ 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)
135
+
136
+ ---
137
+
138
+ ## The UI
139
+
140
+ Three local web apps, no Electron — pure Flask + vanilla JS: the **Hub** (`c3 hub`, port 3330), the **per-project UI** (`c3 ui`), and the optional **Oracle** (`c3 oracle serve`).
141
+
142
+ ### Project Hub — multi-project mission control
143
+
144
+ <p align="center">
145
+ <img src="https://raw.githubusercontent.com/drknowhow/code-context-control/main/docs/screenshots/2026-07/hub_projects.png" alt="C3 Project Hub" width="900">
146
+ </p>
147
+
148
+ Every C3-initialized project registers itself here on `c3 init`. Filter by active/idle, see IDE / version / port / last activity per row, and launch your IDE or the project UI in one click. <kbd>Ctrl</kbd>+<kbd>K</kbd> searches code and memory across *every* registered project.
149
+
150
+ Three top-level views — **Projects**, **Tasks** (a cross-project kanban), and **Credentials** — plus a drill-in panel per project covering Overview, Sub-projects, Tasks, Artifacts, Memory, Ledger, Sessions, Health, Budget, Credentials, Config, and MCP.
151
+
152
+ **Sub-projects** make a nested repo a first-class child with its own `.c3`: the parent's index excludes the child's subtree, and `c3_search` / `c3_memory` fan out on demand (`scope='all'`, or one child by name). → [Sub-projects guide](https://github.com/drknowhow/code-context-control/blob/main/docs/sub-projects.md)
153
+
154
+ ### Per-project UI
155
+
156
+ ```bash
157
+ c3 ui # binds the first free port from 3333
158
+ ```
159
+
160
+ Twelve tabs. The dashboard above shows token savings, indexed files, the live session, and a stream of recent tool calls and file changes.
161
+
162
+ | Tab | What it's for |
163
+ |---|---|
164
+ | **Dashboard** | Token savings, codebase breakdown, live session counters, recent activity |
165
+ | **Chat** | Browse and search indexed IDE chat transcripts |
166
+ | **Sessions** | Every session with duration, decisions, files, tool calls, token cost |
167
+ | **Memory** | Durable facts across sessions — categories, semantic search, list ↔ graph |
168
+ | **Tasks** | Per-project PM: dependencies, milestones, time tracking, health |
169
+ | **Edits** | The Edit Ledger — every AI-driven change, versioned and restorable |
170
+ | **Bitbucket** | PRs, branches, activity, admin against Bitbucket Data Center |
171
+ | **Jira** | My Work board, JQL search, transitions, comments |
172
+ | **Credentials** | Named secrets — metadata only, values are never returned to the browser |
173
+ | **Access Guard** | Path rules: deny / read-only / mask, plus the path tester |
174
+ | **Instructions** | One editor for `CLAUDE.md`, `AGENTS.md`, `copilot-instructions.md` |
175
+ | **Settings** | Budgets, feature flags, background agents, delegate routing, MCP |
176
+
177
+ <p align="center">
178
+ <img src="https://raw.githubusercontent.com/drknowhow/code-context-control/main/docs/screenshots/2026-07/ui_tasks.png" alt="C3 Tasks" width="900">
179
+ </p>
180
+
181
+ **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.
182
+
183
+ **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 both Codex and Antigravity; `GEMINI.md` is read if present but no longer generated (the Gemini CLI profile was removed in v2.52).
184
+
185
+ ---
186
+
187
+ ## The MCP tool suite
188
+
189
+ C3 exposes **20 tools** as a native MCP server. Your IDE calls them directly:
190
+
191
+ | Tool | What it does |
192
+ |---|---|
193
+ | `c3_search` | TF-IDF / regex / semantic search, ranked; fans out to sub-projects with `scope=` |
194
+ | `c3_compress` | AST-based file map (`map`, `dense_map`, `smart`, `diff`, `bug_scan`, `ast`) |
195
+ | `c3_read` | Surgical reads — by symbol name, regex, or line ranges |
196
+ | `c3_edit` | Atomic patch with ledger logging + content-addressable history |
197
+ | `c3_validate` | Type / syntax check (pyright, tsc, ruff — auto-detected) |
198
+ | `c3_filter` | Distill long terminal/log output via pattern + LLM summarization |
199
+ | `c3_shell` | Shell commands with structured returns + auto-filtered stdout |
200
+ | `c3_status` | Views: `budget`, `health`, `notifications`, `sessions`, `ghost_files`, `access` |
201
+ | `c3_memory` | Fact store with categories, recall, graph queries, `index`→`fetch` two-step |
202
+ | `c3_session` | Snapshot, restore, log decisions, compact history |
203
+ | `c3_impact` | Blast-radius analysis before editing shared symbols |
204
+ | `c3_delegate` | Offload heavy work to local Ollama / Codex / Gemini |
205
+ | `c3_agent` | Workflows: `review_changes`, `investigate`, `preflight`, `prepare_context`, `validate_compress` |
206
+ | `c3_edits` | Edit-ledger queries, version diffs, restore points, per-branch filter |
207
+ | `c3_task` | Per-project PM — tasks, dependencies, milestones, time tracking (v2.53.0) |
208
+ | `c3_artifacts` | Agent-config version history, diff & restore (v2.46.0) |
209
+ | `c3_credentials` | Named-secret vault; values never enter model context (v2.58.0) |
210
+ | `c3_bitbucket` | Bitbucket Data Center — PRs, branches, builds, admin (v2.30.0) |
211
+ | `c3_jira` | Jira Cloud + Data Center — JQL, issues, transitions (v2.56.0) |
212
+ | `c3_project` | Cross-project discovery & operations; guarded writes (v2.31.0) |
213
+
214
+ Every tool is **read-only safe in plan mode** except `c3_edit`, `c3_shell`, `c3_artifacts(action='restore')`, `c3_delegate` with write delegation enabled, and write actions on `c3_bitbucket` / `c3_jira` / `c3_credentials` / `c3_project` / `c3_task`.
215
+
216
+ On Windows `c3_shell` uses Git Bash when available. Git Bash bundles no `jq`; use `python -m json.tool` for portable JSON formatting.
217
+
218
+ ---
219
+
220
+ ## Guards — what the agent may touch, and what it sees
221
+
222
+ <p align="center">
223
+ <img src="https://raw.githubusercontent.com/drknowhow/code-context-control/main/docs/screenshots/2026-07/ui_access_guard.png" alt="C3 Access Guard and Mask Guard" width="900">
224
+ </p>
225
+
226
+ Two questions, two answers. **Access Guard** (v2.62.0) answers *may the agent touch this path?* **Mask Guard** (v2.63.0) answers *what should it see when it does?*
227
+
228
+ ```bash
229
+ c3 access add "secrets/**" --kind deny # never read, never write
230
+ c3 access add "migrations/**" --kind read_only # readable, never written
231
+ c3 access mask add "data/*.csv" --preset sample_rows --params "count=20,strategy=first"
232
+ c3 access mask activate # purge pre-mask artifacts, build views
233
+ ```
234
+
235
+ ```diff
236
+ - AWS_KEY = "AKIAIOSFODNN7EXAMPLE" # your file
237
+ + AWS_KEY = "«c3:redacted:aws_access_key»" # what the agent sees
238
+ ```
239
+
240
+ - **Tighten-only.** No allow list exists; global and project scopes merge as a union, so a cloned repo's config can only *add* protection.
241
+ - **`deny` means deny-enumerate too** — denied paths never appear in search results, maps, or the vector index.
242
+ - **Masked means read-only, always.** Cropped rows have no inverse, so an edit in transformed coordinates would corrupt the one file you protected.
243
+ - **Four deterministic presets, no LLM in the read path:** `redact_secrets`, `redact_columns` (salted one-way pseudonyms — joins survive, no reverse dictionary), `sample_rows`, `signatures_only`.
244
+ - **Rule changes are human-only** (UI tab or CLI) and ledger-logged. Agents have no mutation surface.
245
+ - **Honest coverage.** This guards *cooperative* agents against mistakes and prompt injection. It is not a sandbox — a raw shell outside C3's tools still sees the real bytes.
246
+
247
+ → [Access Guard](https://github.com/drknowhow/code-context-control/blob/main/docs/access-guard.md) · [Mask Guard](https://github.com/drknowhow/code-context-control/blob/main/docs/mask-guard.md)
248
+
249
+ ---
250
+
251
+ ## Integrations
252
+
253
+ | | What you get | Guide |
254
+ |---|---|---|
255
+ | **Credential vault** (v2.58.0) | Named secrets, global + per-project, in the OS keyring. Agents use them by name — `env_creds='NPM_TOKEN'` or `{{cred:NAME}}` — and values are decoded only at the subprocess boundary, never in model context. Hub-wide Credentials view since v2.59.0. | [guide](https://github.com/drknowhow/code-context-control/blob/main/docs/integrations.md#credential-vault) |
256
+ | **Bitbucket DC/Server** (v2.30.0) | PRs, branches, builds, repo admin over REST + PAT. Merges and branch deletes land in the edit ledger. | [guide](https://github.com/drknowhow/code-context-control/blob/main/docs/integrations.md#bitbucket-data-center--server) |
257
+ | **Jira** (v2.56.0) | Cloud (REST v3) and Data Center (REST v2) behind one tool: raw JQL, My Work board, transitions, comments, and an Activity view linking ledger work to issue keys. | [guide](https://github.com/drknowhow/code-context-control/blob/main/docs/integrations.md#jira--cloud--data-center) |
258
+ | **Oracle Discovery API** (v2.32.0) | Expose cross-project code + memory intelligence as tools for an external LLM, over MCP (`:3332/mcp`) or OpenAPI REST (`:3331/api/discovery`). Read + safe-action tools only, Bearer token in the keyring. | [guide](https://github.com/drknowhow/code-context-control/blob/main/oracle-guide/discovery-api.md) |
259
+
260
+ All tokens live in the **OS keyring** (Windows Credential Manager, macOS Keychain, Linux Secret Service) — never in `.c3/config.json`. Each supports `login --global` so one login is reusable across every C3 project.
261
+
262
+ ---
263
+
264
+ ## Tiered local AI (optional)
265
+
266
+ Optional Ollama integration so the primary model doesn't spend context on grunt work:
267
+
268
+ | Tier | Model class | Used for | Latency target |
269
+ |---|---|---|---|
270
+ | **Nano** | `qwen2:0.5b` | Intent routing, classification | <100 ms |
271
+ | **Micro** | `deepseek-r1:1.5b` | Last-turn Q&A, summarization | <1 s |
272
+ | **Base** | `llama3.2:3b`+ | Code analysis, technical reasoning | <5 s |
273
+
274
+ ```text
275
+ c3_delegate(task="summarize this 4k-line stacktrace", backend="ollama")
276
+ c3_delegate(task="rate-limit refactor", backend="auto") # picks the right tier
277
+ ```
278
+
279
+ Ollama is fully optional. C3 works without it.
280
+
281
+ ---
282
+
283
+ ## Permissions (Claude Code)
284
+
285
+ C3 manages `.claude/settings.local.json` with three tiers:
286
+
287
+ | Tier | What it allows |
288
+ |---|---|
289
+ | `read-only` | Exploration only — no file writes, no git writes, no installs |
290
+ | `standard` | Normal dev workflow — edit, build, test, local git **(recommended)** |
291
+ | `permissive` | Full trust — everything except destructive ops |
292
+
293
+ ```bash
294
+ c3 permissions show
295
+ c3 permissions standard
296
+ ```
297
+
298
+ All tiers allow C3's MCP tools and include a hard deny list (`rm -rf`, `sudo`, `git push --force`). Switching a tier **preserves your own `allow`/`deny` rules** — only C3-managed entries are replaced. The same applies to `.mcp.json` and your hooks.
299
+
300
+ ---
301
+
302
+ ## Benchmarks
303
+
304
+ Every number C3 advertises is reproducible on your own machine, against your own project:
305
+
306
+ ```bash
307
+ c3 bench session # six realistic workflow scenarios, A/B with vs without C3
308
+ c3 benchmark /path/to/project # per-operation micro-benchmarks
309
+ c3 bench aider # Aider Polyglot suite (external; burns real API tokens)
310
+ c3 bench swe # SWE-bench Lite (external)
311
+ ```
312
+
313
+ The session benchmark's baseline models a *competent* agent working without C3 — one targeted search, each file read once — and scores answer quality alongside tokens. Runs against C3's own repository land around **~50% token savings (2×)** at quality parity — 51.8% at v2.43.0, 49.9% at v2.63.2, with C3 scoring 98.8% on answer quality against the baseline's 96.5% in both. File sampling is deterministic (largest files first, no RNG), so a given commit reproduces the same figure. Your numbers will differ with your project's shape; that's why the harness ships with the tool.
314
+
315
+ C3 also records real per-tool usage to `.c3/tool_telemetry.jsonl`, so estimates can be checked against what actually happened.
316
+
317
+ ---
318
+
319
+ ## Security & privacy
320
+
321
+ - **All web servers bind `127.0.0.1` by default** and are guarded against browser-based attacks even on loopback — a Host-header allowlist (defeats DNS rebinding) plus an Origin/Referer check on every request (defeats cross-origin CSRF), with scoped, non-wildcard CORS. There is still **no user authentication**, so do not expose these servers to an untrusted network without auth/TLS in front. Binding to a non-loopback interface is opt-in and warned at startup. *(Hardening added in v2.33.0.)*
322
+ - **No telemetry by default.** The OSS package collects nothing. Opt-in Sentry crash reporting requires the `[telemetry]` extra plus both `SENTRY_DSN` and `C3_TELEMETRY_OPT_IN=1`; even then request bodies, local variables, and prompts are stripped.
323
+ - **LLM memory distillation is local-first.** Cloud distillation (v2.51.0) is off by default and opt-in per project.
324
+ - **API keys** for third-party providers are read from the environment and never persisted by C3.
325
+ - Full hardening guide and disclosure policy: [`SECURITY.md`](https://github.com/drknowhow/code-context-control/blob/main/SECURITY.md)
326
+
327
+ ---
328
+
329
+ ## Support C3
330
+
331
+ C3 is free, open source, and built by one person. If it saves you tokens — that's the whole point — consider [sponsoring on GitHub](https://github.com/sponsors/drknowhow). Sponsorship funds API costs for cross-model test runs and dedicated development time.
332
+
333
+ ## License
334
+
335
+ Apache License 2.0 ([`LICENSE`](https://github.com/drknowhow/code-context-control/blob/main/LICENSE)) — free for any use, including commercial. Third-party deps: [`THIRD_PARTY_LICENSES.md`](https://github.com/drknowhow/code-context-control/blob/main/THIRD_PARTY_LICENSES.md).
336
+
337
+ The author may introduce a paid offering or relicense future major versions; no commitment either way. Releases already published under Apache-2.0 (including all 2.x versions) keep that grant irrevocably. Background: [`LICENSING.md`](https://github.com/drknowhow/code-context-control/blob/main/LICENSING.md).
338
+
339
+ ## Links
340
+
341
+ - **PyPI:** https://pypi.org/project/code-context-control/
342
+ - **Changelog:** [`CHANGELOG.md`](https://github.com/drknowhow/code-context-control/blob/main/CHANGELOG.md)
343
+ - **Issues:** https://github.com/drknowhow/code-context-control/issues
344
+ - **Sponsor:** https://github.com/sponsors/drknowhow
@@ -0,0 +1,281 @@
1
+ <h1 align="center">Code Context Control</h1>
2
+
3
+ <p align="center">
4
+ <strong>The local code-intelligence layer for AI coding tools.</strong><br>
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.
7
+ </p>
8
+
9
+ <p align="center">
10
+ <a href="https://pypi.org/project/code-context-control/"><img alt="PyPI" src="https://img.shields.io/pypi/v/code-context-control?color=blue&logo=pypi&logoColor=white"></a>
11
+ <a href="https://github.com/drknowhow/code-context-control/blob/main/LICENSE"><img alt="License: Apache-2.0" src="https://img.shields.io/badge/license-Apache--2.0-blue.svg"></a>
12
+ <img alt="Python 3.10+" src="https://img.shields.io/badge/python-3.10%2B-blue.svg">
13
+ <img alt="Platforms" src="https://img.shields.io/badge/platform-windows%20%7C%20macos%20%7C%20linux-lightgrey">
14
+ <img alt="Status: Beta" src="https://img.shields.io/badge/status-beta-yellow">
15
+ <a href="https://github.com/sponsors/drknowhow"><img alt="Sponsor" src="https://img.shields.io/badge/sponsor-%E2%9D%A4-EA4AAA?logo=githubsponsors&logoColor=white"></a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <img src="https://raw.githubusercontent.com/drknowhow/code-context-control/main/docs/screenshots/2026-07/ui_dashboard.png" alt="C3 per-project dashboard" width="900">
20
+ </p>
21
+
22
+ ---
23
+
24
+ ## The problem
25
+
26
+ LLM-driven coding tools have one expensive failure mode: **they read too much.** They `cat` whole files, regex the entire repo, dump 10k-line logs into context, edit-and-pray, and burn through budget before they touch a single line of code. On a half-day session you can spend $20+ on token waste that adds zero value.
27
+
28
+ And they read too *widely*: the same agent that greps your source also greps your `.env`, your customer CSV, and your production dumps.
29
+
30
+ ## What C3 does about it
31
+
32
+ A thin **local** layer between your IDE and your repo. Every AI tool call is routed through a narrow, surgical operation instead of a broad, wasteful one:
33
+
34
+ | Without C3 | With C3 |
35
+ |---|---|
36
+ | `Read` the whole 2,000-line file | `c3_compress` returns a structural map at 40-70% of the original token count → `c3_read(symbols=...)` for the exact function |
37
+ | `Grep` the whole repo blindly | `c3_search` returns ranked candidates with TF-IDF + symbol awareness |
38
+ | Dump full `pytest` output into the prompt | `c3_filter` distills 500 lines → 30 actionable ones |
39
+ | Edit, hope it compiled | `c3_edit` writes via a ledger + `c3_validate` runs `pyright`/`tsc` automatically |
40
+ | `Bash` test runs that hang on Windows | `c3_shell` returns structured `{exit_code, stdout, stderr, duration}` with auto-filter |
41
+ | Lose all context on `/clear` | `c3_session(snapshot)` + `c3_memory` persist decisions across sessions |
42
+ | Re-explain the project every session | Auto-synced `CLAUDE.md` / `AGENTS.md` / `copilot-instructions.md` from one source of truth |
43
+ | Agent reads `.env`, a customer CSV, a prod dump | **Access Guard** denies the path outright, or **Mask Guard** serves a redacted view |
44
+
45
+ Everything runs **locally**. No source code, prompts, or model output leaves your machine unless you explicitly opt into a third-party model API.
46
+
47
+ ---
48
+
49
+ ## Install
50
+
51
+ Requires Python 3.10+. Recommended via [pipx](https://pipx.pypa.io):
52
+
53
+ ```bash
54
+ pipx install code-context-control
55
+ c3 init /path/to/your/project
56
+ ```
57
+
58
+ Or `pip install "code-context-control[tui]"` for the optional Textual UI.
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:
61
+
62
+ ```bash
63
+ c3 init /path/to/project --force --ide claude --mcp-mode direct --permissions standard
64
+ c3 init /path/to/huge-repo --force --no-embed # skip the embedding index on large repos
65
+ ```
66
+
67
+ Upgrade with `c3 upgrade` (or `pipx upgrade code-context-control`). MCP is wired through the `c3-mcp` entry point, so upgrading needs no per-project reconfiguration.
68
+
69
+ > **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.
70
+
71
+ 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)
72
+
73
+ ---
74
+
75
+ ## The UI
76
+
77
+ Three local web apps, no Electron — pure Flask + vanilla JS: the **Hub** (`c3 hub`, port 3330), the **per-project UI** (`c3 ui`), and the optional **Oracle** (`c3 oracle serve`).
78
+
79
+ ### Project Hub — multi-project mission control
80
+
81
+ <p align="center">
82
+ <img src="https://raw.githubusercontent.com/drknowhow/code-context-control/main/docs/screenshots/2026-07/hub_projects.png" alt="C3 Project Hub" width="900">
83
+ </p>
84
+
85
+ Every C3-initialized project registers itself here on `c3 init`. Filter by active/idle, see IDE / version / port / last activity per row, and launch your IDE or the project UI in one click. <kbd>Ctrl</kbd>+<kbd>K</kbd> searches code and memory across *every* registered project.
86
+
87
+ Three top-level views — **Projects**, **Tasks** (a cross-project kanban), and **Credentials** — plus a drill-in panel per project covering Overview, Sub-projects, Tasks, Artifacts, Memory, Ledger, Sessions, Health, Budget, Credentials, Config, and MCP.
88
+
89
+ **Sub-projects** make a nested repo a first-class child with its own `.c3`: the parent's index excludes the child's subtree, and `c3_search` / `c3_memory` fan out on demand (`scope='all'`, or one child by name). → [Sub-projects guide](https://github.com/drknowhow/code-context-control/blob/main/docs/sub-projects.md)
90
+
91
+ ### Per-project UI
92
+
93
+ ```bash
94
+ c3 ui # binds the first free port from 3333
95
+ ```
96
+
97
+ Twelve tabs. The dashboard above shows token savings, indexed files, the live session, and a stream of recent tool calls and file changes.
98
+
99
+ | Tab | What it's for |
100
+ |---|---|
101
+ | **Dashboard** | Token savings, codebase breakdown, live session counters, recent activity |
102
+ | **Chat** | Browse and search indexed IDE chat transcripts |
103
+ | **Sessions** | Every session with duration, decisions, files, tool calls, token cost |
104
+ | **Memory** | Durable facts across sessions — categories, semantic search, list ↔ graph |
105
+ | **Tasks** | Per-project PM: dependencies, milestones, time tracking, health |
106
+ | **Edits** | The Edit Ledger — every AI-driven change, versioned and restorable |
107
+ | **Bitbucket** | PRs, branches, activity, admin against Bitbucket Data Center |
108
+ | **Jira** | My Work board, JQL search, transitions, comments |
109
+ | **Credentials** | Named secrets — metadata only, values are never returned to the browser |
110
+ | **Access Guard** | Path rules: deny / read-only / mask, plus the path tester |
111
+ | **Instructions** | One editor for `CLAUDE.md`, `AGENTS.md`, `copilot-instructions.md` |
112
+ | **Settings** | Budgets, feature flags, background agents, delegate routing, MCP |
113
+
114
+ <p align="center">
115
+ <img src="https://raw.githubusercontent.com/drknowhow/code-context-control/main/docs/screenshots/2026-07/ui_tasks.png" alt="C3 Tasks" width="900">
116
+ </p>
117
+
118
+ **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.
119
+
120
+ **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 both Codex and Antigravity; `GEMINI.md` is read if present but no longer generated (the Gemini CLI profile was removed in v2.52).
121
+
122
+ ---
123
+
124
+ ## The MCP tool suite
125
+
126
+ C3 exposes **20 tools** as a native MCP server. Your IDE calls them directly:
127
+
128
+ | Tool | What it does |
129
+ |---|---|
130
+ | `c3_search` | TF-IDF / regex / semantic search, ranked; fans out to sub-projects with `scope=` |
131
+ | `c3_compress` | AST-based file map (`map`, `dense_map`, `smart`, `diff`, `bug_scan`, `ast`) |
132
+ | `c3_read` | Surgical reads — by symbol name, regex, or line ranges |
133
+ | `c3_edit` | Atomic patch with ledger logging + content-addressable history |
134
+ | `c3_validate` | Type / syntax check (pyright, tsc, ruff — auto-detected) |
135
+ | `c3_filter` | Distill long terminal/log output via pattern + LLM summarization |
136
+ | `c3_shell` | Shell commands with structured returns + auto-filtered stdout |
137
+ | `c3_status` | Views: `budget`, `health`, `notifications`, `sessions`, `ghost_files`, `access` |
138
+ | `c3_memory` | Fact store with categories, recall, graph queries, `index`→`fetch` two-step |
139
+ | `c3_session` | Snapshot, restore, log decisions, compact history |
140
+ | `c3_impact` | Blast-radius analysis before editing shared symbols |
141
+ | `c3_delegate` | Offload heavy work to local Ollama / Codex / Gemini |
142
+ | `c3_agent` | Workflows: `review_changes`, `investigate`, `preflight`, `prepare_context`, `validate_compress` |
143
+ | `c3_edits` | Edit-ledger queries, version diffs, restore points, per-branch filter |
144
+ | `c3_task` | Per-project PM — tasks, dependencies, milestones, time tracking (v2.53.0) |
145
+ | `c3_artifacts` | Agent-config version history, diff & restore (v2.46.0) |
146
+ | `c3_credentials` | Named-secret vault; values never enter model context (v2.58.0) |
147
+ | `c3_bitbucket` | Bitbucket Data Center — PRs, branches, builds, admin (v2.30.0) |
148
+ | `c3_jira` | Jira Cloud + Data Center — JQL, issues, transitions (v2.56.0) |
149
+ | `c3_project` | Cross-project discovery & operations; guarded writes (v2.31.0) |
150
+
151
+ Every tool is **read-only safe in plan mode** except `c3_edit`, `c3_shell`, `c3_artifacts(action='restore')`, `c3_delegate` with write delegation enabled, and write actions on `c3_bitbucket` / `c3_jira` / `c3_credentials` / `c3_project` / `c3_task`.
152
+
153
+ On Windows `c3_shell` uses Git Bash when available. Git Bash bundles no `jq`; use `python -m json.tool` for portable JSON formatting.
154
+
155
+ ---
156
+
157
+ ## Guards — what the agent may touch, and what it sees
158
+
159
+ <p align="center">
160
+ <img src="https://raw.githubusercontent.com/drknowhow/code-context-control/main/docs/screenshots/2026-07/ui_access_guard.png" alt="C3 Access Guard and Mask Guard" width="900">
161
+ </p>
162
+
163
+ Two questions, two answers. **Access Guard** (v2.62.0) answers *may the agent touch this path?* **Mask Guard** (v2.63.0) answers *what should it see when it does?*
164
+
165
+ ```bash
166
+ c3 access add "secrets/**" --kind deny # never read, never write
167
+ c3 access add "migrations/**" --kind read_only # readable, never written
168
+ c3 access mask add "data/*.csv" --preset sample_rows --params "count=20,strategy=first"
169
+ c3 access mask activate # purge pre-mask artifacts, build views
170
+ ```
171
+
172
+ ```diff
173
+ - AWS_KEY = "AKIAIOSFODNN7EXAMPLE" # your file
174
+ + AWS_KEY = "«c3:redacted:aws_access_key»" # what the agent sees
175
+ ```
176
+
177
+ - **Tighten-only.** No allow list exists; global and project scopes merge as a union, so a cloned repo's config can only *add* protection.
178
+ - **`deny` means deny-enumerate too** — denied paths never appear in search results, maps, or the vector index.
179
+ - **Masked means read-only, always.** Cropped rows have no inverse, so an edit in transformed coordinates would corrupt the one file you protected.
180
+ - **Four deterministic presets, no LLM in the read path:** `redact_secrets`, `redact_columns` (salted one-way pseudonyms — joins survive, no reverse dictionary), `sample_rows`, `signatures_only`.
181
+ - **Rule changes are human-only** (UI tab or CLI) and ledger-logged. Agents have no mutation surface.
182
+ - **Honest coverage.** This guards *cooperative* agents against mistakes and prompt injection. It is not a sandbox — a raw shell outside C3's tools still sees the real bytes.
183
+
184
+ → [Access Guard](https://github.com/drknowhow/code-context-control/blob/main/docs/access-guard.md) · [Mask Guard](https://github.com/drknowhow/code-context-control/blob/main/docs/mask-guard.md)
185
+
186
+ ---
187
+
188
+ ## Integrations
189
+
190
+ | | What you get | Guide |
191
+ |---|---|---|
192
+ | **Credential vault** (v2.58.0) | Named secrets, global + per-project, in the OS keyring. Agents use them by name — `env_creds='NPM_TOKEN'` or `{{cred:NAME}}` — and values are decoded only at the subprocess boundary, never in model context. Hub-wide Credentials view since v2.59.0. | [guide](https://github.com/drknowhow/code-context-control/blob/main/docs/integrations.md#credential-vault) |
193
+ | **Bitbucket DC/Server** (v2.30.0) | PRs, branches, builds, repo admin over REST + PAT. Merges and branch deletes land in the edit ledger. | [guide](https://github.com/drknowhow/code-context-control/blob/main/docs/integrations.md#bitbucket-data-center--server) |
194
+ | **Jira** (v2.56.0) | Cloud (REST v3) and Data Center (REST v2) behind one tool: raw JQL, My Work board, transitions, comments, and an Activity view linking ledger work to issue keys. | [guide](https://github.com/drknowhow/code-context-control/blob/main/docs/integrations.md#jira--cloud--data-center) |
195
+ | **Oracle Discovery API** (v2.32.0) | Expose cross-project code + memory intelligence as tools for an external LLM, over MCP (`:3332/mcp`) or OpenAPI REST (`:3331/api/discovery`). Read + safe-action tools only, Bearer token in the keyring. | [guide](https://github.com/drknowhow/code-context-control/blob/main/oracle-guide/discovery-api.md) |
196
+
197
+ All tokens live in the **OS keyring** (Windows Credential Manager, macOS Keychain, Linux Secret Service) — never in `.c3/config.json`. Each supports `login --global` so one login is reusable across every C3 project.
198
+
199
+ ---
200
+
201
+ ## Tiered local AI (optional)
202
+
203
+ Optional Ollama integration so the primary model doesn't spend context on grunt work:
204
+
205
+ | Tier | Model class | Used for | Latency target |
206
+ |---|---|---|---|
207
+ | **Nano** | `qwen2:0.5b` | Intent routing, classification | <100 ms |
208
+ | **Micro** | `deepseek-r1:1.5b` | Last-turn Q&A, summarization | <1 s |
209
+ | **Base** | `llama3.2:3b`+ | Code analysis, technical reasoning | <5 s |
210
+
211
+ ```text
212
+ c3_delegate(task="summarize this 4k-line stacktrace", backend="ollama")
213
+ c3_delegate(task="rate-limit refactor", backend="auto") # picks the right tier
214
+ ```
215
+
216
+ Ollama is fully optional. C3 works without it.
217
+
218
+ ---
219
+
220
+ ## Permissions (Claude Code)
221
+
222
+ C3 manages `.claude/settings.local.json` with three tiers:
223
+
224
+ | Tier | What it allows |
225
+ |---|---|
226
+ | `read-only` | Exploration only — no file writes, no git writes, no installs |
227
+ | `standard` | Normal dev workflow — edit, build, test, local git **(recommended)** |
228
+ | `permissive` | Full trust — everything except destructive ops |
229
+
230
+ ```bash
231
+ c3 permissions show
232
+ c3 permissions standard
233
+ ```
234
+
235
+ All tiers allow C3's MCP tools and include a hard deny list (`rm -rf`, `sudo`, `git push --force`). Switching a tier **preserves your own `allow`/`deny` rules** — only C3-managed entries are replaced. The same applies to `.mcp.json` and your hooks.
236
+
237
+ ---
238
+
239
+ ## Benchmarks
240
+
241
+ Every number C3 advertises is reproducible on your own machine, against your own project:
242
+
243
+ ```bash
244
+ c3 bench session # six realistic workflow scenarios, A/B with vs without C3
245
+ c3 benchmark /path/to/project # per-operation micro-benchmarks
246
+ c3 bench aider # Aider Polyglot suite (external; burns real API tokens)
247
+ c3 bench swe # SWE-bench Lite (external)
248
+ ```
249
+
250
+ The session benchmark's baseline models a *competent* agent working without C3 — one targeted search, each file read once — and scores answer quality alongside tokens. Runs against C3's own repository land around **~50% token savings (2×)** at quality parity — 51.8% at v2.43.0, 49.9% at v2.63.2, with C3 scoring 98.8% on answer quality against the baseline's 96.5% in both. File sampling is deterministic (largest files first, no RNG), so a given commit reproduces the same figure. Your numbers will differ with your project's shape; that's why the harness ships with the tool.
251
+
252
+ C3 also records real per-tool usage to `.c3/tool_telemetry.jsonl`, so estimates can be checked against what actually happened.
253
+
254
+ ---
255
+
256
+ ## Security & privacy
257
+
258
+ - **All web servers bind `127.0.0.1` by default** and are guarded against browser-based attacks even on loopback — a Host-header allowlist (defeats DNS rebinding) plus an Origin/Referer check on every request (defeats cross-origin CSRF), with scoped, non-wildcard CORS. There is still **no user authentication**, so do not expose these servers to an untrusted network without auth/TLS in front. Binding to a non-loopback interface is opt-in and warned at startup. *(Hardening added in v2.33.0.)*
259
+ - **No telemetry by default.** The OSS package collects nothing. Opt-in Sentry crash reporting requires the `[telemetry]` extra plus both `SENTRY_DSN` and `C3_TELEMETRY_OPT_IN=1`; even then request bodies, local variables, and prompts are stripped.
260
+ - **LLM memory distillation is local-first.** Cloud distillation (v2.51.0) is off by default and opt-in per project.
261
+ - **API keys** for third-party providers are read from the environment and never persisted by C3.
262
+ - Full hardening guide and disclosure policy: [`SECURITY.md`](https://github.com/drknowhow/code-context-control/blob/main/SECURITY.md)
263
+
264
+ ---
265
+
266
+ ## Support C3
267
+
268
+ C3 is free, open source, and built by one person. If it saves you tokens — that's the whole point — consider [sponsoring on GitHub](https://github.com/sponsors/drknowhow). Sponsorship funds API costs for cross-model test runs and dedicated development time.
269
+
270
+ ## License
271
+
272
+ Apache License 2.0 ([`LICENSE`](https://github.com/drknowhow/code-context-control/blob/main/LICENSE)) — free for any use, including commercial. Third-party deps: [`THIRD_PARTY_LICENSES.md`](https://github.com/drknowhow/code-context-control/blob/main/THIRD_PARTY_LICENSES.md).
273
+
274
+ The author may introduce a paid offering or relicense future major versions; no commitment either way. Releases already published under Apache-2.0 (including all 2.x versions) keep that grant irrevocably. Background: [`LICENSING.md`](https://github.com/drknowhow/code-context-control/blob/main/LICENSING.md).
275
+
276
+ ## Links
277
+
278
+ - **PyPI:** https://pypi.org/project/code-context-control/
279
+ - **Changelog:** [`CHANGELOG.md`](https://github.com/drknowhow/code-context-control/blob/main/CHANGELOG.md)
280
+ - **Issues:** https://github.com/drknowhow/code-context-control/issues
281
+ - **Sponsor:** https://github.com/sponsors/drknowhow
@@ -92,7 +92,7 @@ console = Console() if HAS_RICH else None
92
92
  # Config
93
93
  CONFIG_DIR = ".c3"
94
94
  CONFIG_FILE = ".c3/config.json"
95
- __version__ = "2.63.0"
95
+ __version__ = "2.63.2"
96
96
 
97
97
 
98
98
  def _compress_file_cli(compressor, path, mode="smart", **kw):