code-context-control 2.28.0__tar.gz → 2.28.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. {code_context_control-2.28.0 → code_context_control-2.28.1}/PKG-INFO +9 -5
  2. {code_context_control-2.28.0 → code_context_control-2.28.1}/README.md +8 -4
  3. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/c3.py +1 -1
  4. {code_context_control-2.28.0 → code_context_control-2.28.1}/code_context_control.egg-info/PKG-INFO +9 -5
  5. {code_context_control-2.28.0 → code_context_control-2.28.1}/pyproject.toml +1 -1
  6. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_e2e_benchmark.py +2 -13
  7. {code_context_control-2.28.0 → code_context_control-2.28.1}/LICENSE +0 -0
  8. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/__init__.py +0 -0
  9. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/_hook_utils.py +0 -0
  10. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/commands/__init__.py +0 -0
  11. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/commands/common.py +0 -0
  12. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/commands/parser.py +0 -0
  13. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/docs.html +0 -0
  14. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/edits.html +0 -0
  15. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_auto_snapshot.py +0 -0
  16. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_c3_signal.py +0 -0
  17. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_c3read.py +0 -0
  18. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_edit_ledger.py +0 -0
  19. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_edit_unlock.py +0 -0
  20. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_filter.py +0 -0
  21. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_ghost_files.py +0 -0
  22. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_pretool_enforce.py +0 -0
  23. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_read.py +0 -0
  24. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_session_stats.py +0 -0
  25. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hook_terse_advisor.py +0 -0
  26. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hub.html +0 -0
  27. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/hub_server.py +0 -0
  28. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/mcp_proxy.py +0 -0
  29. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/mcp_server.py +0 -0
  30. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/server.py +0 -0
  31. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/__init__.py +0 -0
  32. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/_helpers.py +0 -0
  33. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/agent.py +0 -0
  34. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/compress.py +0 -0
  35. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/delegate.py +0 -0
  36. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/edit.py +0 -0
  37. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/edits.py +0 -0
  38. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/filter.py +0 -0
  39. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/impact.py +0 -0
  40. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/memory.py +0 -0
  41. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/read.py +0 -0
  42. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/search.py +0 -0
  43. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/session.py +0 -0
  44. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/shell.py +0 -0
  45. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/status.py +0 -0
  46. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/tools/validate.py +0 -0
  47. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/api.js +0 -0
  48. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/app.js +0 -0
  49. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/components/chat.js +0 -0
  50. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/components/dashboard.js +0 -0
  51. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/components/edits.js +0 -0
  52. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/components/instructions.js +0 -0
  53. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/components/memory.js +0 -0
  54. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/components/sessions.js +0 -0
  55. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/components/settings.js +0 -0
  56. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/components/sidebar.js +0 -0
  57. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/icons.js +0 -0
  58. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/shared.js +0 -0
  59. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui/theme.js +0 -0
  60. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui.html +0 -0
  61. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui_legacy.html +0 -0
  62. {code_context_control-2.28.0 → code_context_control-2.28.1}/cli/ui_nano.html +0 -0
  63. {code_context_control-2.28.0 → code_context_control-2.28.1}/code_context_control.egg-info/SOURCES.txt +0 -0
  64. {code_context_control-2.28.0 → code_context_control-2.28.1}/code_context_control.egg-info/dependency_links.txt +0 -0
  65. {code_context_control-2.28.0 → code_context_control-2.28.1}/code_context_control.egg-info/entry_points.txt +0 -0
  66. {code_context_control-2.28.0 → code_context_control-2.28.1}/code_context_control.egg-info/requires.txt +0 -0
  67. {code_context_control-2.28.0 → code_context_control-2.28.1}/code_context_control.egg-info/top_level.txt +0 -0
  68. {code_context_control-2.28.0 → code_context_control-2.28.1}/core/__init__.py +0 -0
  69. {code_context_control-2.28.0 → code_context_control-2.28.1}/core/config.py +0 -0
  70. {code_context_control-2.28.0 → code_context_control-2.28.1}/core/ide.py +0 -0
  71. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/__init__.py +0 -0
  72. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/config.py +0 -0
  73. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/oracle.html +0 -0
  74. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/oracle_server.py +0 -0
  75. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/__init__.py +0 -0
  76. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/c3_bridge.py +0 -0
  77. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/chat_engine.py +0 -0
  78. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/chat_store.py +0 -0
  79. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/cross_memory.py +0 -0
  80. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/federated_graph.py +0 -0
  81. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/health_checker.py +0 -0
  82. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/insight_engine.py +0 -0
  83. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/memory_reader.py +0 -0
  84. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/memory_writer.py +0 -0
  85. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/ollama_bridge.py +0 -0
  86. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/project_scanner.py +0 -0
  87. {code_context_control-2.28.0 → code_context_control-2.28.1}/oracle/services/review_agent.py +0 -0
  88. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/__init__.py +0 -0
  89. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/activity_log.py +0 -0
  90. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/agent_base.py +0 -0
  91. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/agents.py +0 -0
  92. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/auto_memory.py +0 -0
  93. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/bench/__init__.py +0 -0
  94. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/bench/external/__init__.py +0 -0
  95. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/bench/external/aider_polyglot.py +0 -0
  96. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/bench/external/swe_bench.py +0 -0
  97. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/benchmark_dashboard.py +0 -0
  98. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/claude_md.py +0 -0
  99. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/compressor.py +0 -0
  100. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/context_snapshot.py +0 -0
  101. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/conversation_store.py +0 -0
  102. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/doc_index.py +0 -0
  103. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/e2e_benchmark.py +0 -0
  104. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/e2e_evaluator.py +0 -0
  105. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/e2e_tasks.py +0 -0
  106. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/edit_ledger.py +0 -0
  107. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/embedding_index.py +0 -0
  108. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/error_reporting.py +0 -0
  109. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/file_memory.py +0 -0
  110. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/hub_service.py +0 -0
  111. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/indexer.py +0 -0
  112. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/memory.py +0 -0
  113. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/memory_consolidator.py +0 -0
  114. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/memory_graph.py +0 -0
  115. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/memory_grounder.py +0 -0
  116. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/memory_scorer.py +0 -0
  117. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/metrics.py +0 -0
  118. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/notifications.py +0 -0
  119. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/ollama_client.py +0 -0
  120. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/output_filter.py +0 -0
  121. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/parser.py +0 -0
  122. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/project_manager.py +0 -0
  123. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/protocol.py +0 -0
  124. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/proxy_state.py +0 -0
  125. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/retrieval_broker.py +0 -0
  126. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/router.py +0 -0
  127. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/runtime.py +0 -0
  128. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/session_benchmark.py +0 -0
  129. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/session_manager.py +0 -0
  130. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/session_preloader.py +0 -0
  131. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/text_index.py +0 -0
  132. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/tool_classifier.py +0 -0
  133. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/transcript_index.py +0 -0
  134. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/validation_cache.py +0 -0
  135. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/vector_store.py +0 -0
  136. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/version_tracker.py +0 -0
  137. {code_context_control-2.28.0 → code_context_control-2.28.1}/services/watcher.py +0 -0
  138. {code_context_control-2.28.0 → code_context_control-2.28.1}/setup.cfg +0 -0
  139. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_aider_polyglot.py +0 -0
  140. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_c3_shell.py +0 -0
  141. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_cli_smoke.py +0 -0
  142. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_edit_normalization.py +0 -0
  143. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_enforcement_flip.py +0 -0
  144. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_federated_graph.py +0 -0
  145. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_ghost_files.py +0 -0
  146. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_hub_server_smoke.py +0 -0
  147. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_mcp_server_smoke.py +0 -0
  148. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_memory_graph_api.py +0 -0
  149. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_memory_system.py +0 -0
  150. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_notification_discipline.py +0 -0
  151. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_output_filter.py +0 -0
  152. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_permissions.py +0 -0
  153. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_project_manager.py +0 -0
  154. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_session_benchmark.py +0 -0
  155. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_session_budget.py +0 -0
  156. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_swe_bench.py +0 -0
  157. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_validate.py +0 -0
  158. {code_context_control-2.28.0 → code_context_control-2.28.1}/tests/test_windows_reliability.py +0 -0
  159. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/__init__.py +0 -0
  160. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/backend.py +0 -0
  161. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/main.py +0 -0
  162. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/__init__.py +0 -0
  163. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/benchmark_view.py +0 -0
  164. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/claudemd_view.py +0 -0
  165. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/compress_view.py +0 -0
  166. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/index_view.py +0 -0
  167. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/init_view.py +0 -0
  168. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/mcp_view.py +0 -0
  169. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/optimize_view.py +0 -0
  170. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/pipe_view.py +0 -0
  171. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/projects_view.py +0 -0
  172. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/search_view.py +0 -0
  173. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/session_view.py +0 -0
  174. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/stats.py +0 -0
  175. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/screens/ui_view.py +0 -0
  176. {code_context_control-2.28.0 → code_context_control-2.28.1}/tui/theme.tcss +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-context-control
3
- Version: 2.28.0
3
+ Version: 2.28.1
4
4
  Summary: Local code-intelligence layer for AI coding tools (Claude Code, Codex, Gemini, Copilot). Retrieve less, read less, edit safer.
5
5
  Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -233,11 +233,15 @@ See [`SECURITY.md`](SECURITY.md) for vulnerability reports, the full hardening g
233
233
 
234
234
  ---
235
235
 
236
- ## License
236
+ ## License & project posture
237
237
 
238
- - **Core / OSS** — Apache License 2.0 (see [`LICENSE`](LICENSE)).
239
- - **Pro tier** (planned: license-key activation, hosted team Hub, advanced memory) separate commercial EULA (see [`EULA-PRO.md`](EULA-PRO.md)).
240
- - **Third-party deps** listed in [`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md).
238
+ - **Current OSS license** — Apache License 2.0 ([`LICENSE`](LICENSE)). Free for any use, including commercial. Modify, fork, redistribute — all permitted.
239
+ - **Pro tier** (planned, not yet shipped) — license-key activation will gate new additive features. Existing OSS features stay free. See [`EULA-PRO.md`](EULA-PRO.md).
240
+ - **Future major versions may relicense** to a source-available license (e.g. BSL 1.1 with a 4-year Apache-2.0 conversion) to protect commercialization. Already-published 2.x versions stay Apache-2.0 forever.
241
+ - **Trademarks** — "C3" and "Code Context Control" are trademarks (™) of Dimitri Tselenchuk. Forks must use a distinct name. See [`NOTICE`](NOTICE).
242
+ - **Third-party deps** — see [`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md).
243
+
244
+ **Building on C3 commercially?** Please email `dtselenc@gmail.com` first. Apache-2.0 grants broad rights to the published 2.x code, but as a courtesy we ask the community not to repackage C3 as a commercial competing product. Full FAQ: [`LICENSING.md`](LICENSING.md).
241
245
 
242
246
  ---
243
247
 
@@ -172,11 +172,15 @@ See [`SECURITY.md`](SECURITY.md) for vulnerability reports, the full hardening g
172
172
 
173
173
  ---
174
174
 
175
- ## License
175
+ ## License & project posture
176
176
 
177
- - **Core / OSS** — Apache License 2.0 (see [`LICENSE`](LICENSE)).
178
- - **Pro tier** (planned: license-key activation, hosted team Hub, advanced memory) separate commercial EULA (see [`EULA-PRO.md`](EULA-PRO.md)).
179
- - **Third-party deps** listed in [`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md).
177
+ - **Current OSS license** — Apache License 2.0 ([`LICENSE`](LICENSE)). Free for any use, including commercial. Modify, fork, redistribute — all permitted.
178
+ - **Pro tier** (planned, not yet shipped) — license-key activation will gate new additive features. Existing OSS features stay free. See [`EULA-PRO.md`](EULA-PRO.md).
179
+ - **Future major versions may relicense** to a source-available license (e.g. BSL 1.1 with a 4-year Apache-2.0 conversion) to protect commercialization. Already-published 2.x versions stay Apache-2.0 forever.
180
+ - **Trademarks** — "C3" and "Code Context Control" are trademarks (™) of Dimitri Tselenchuk. Forks must use a distinct name. See [`NOTICE`](NOTICE).
181
+ - **Third-party deps** — see [`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md).
182
+
183
+ **Building on C3 commercially?** Please email `dtselenc@gmail.com` first. Apache-2.0 grants broad rights to the published 2.x code, but as a courtesy we ask the community not to repackage C3 as a commercial competing product. Full FAQ: [`LICENSING.md`](LICENSING.md).
180
184
 
181
185
  ---
182
186
 
@@ -85,7 +85,7 @@ console = Console() if HAS_RICH else None
85
85
  # Config
86
86
  CONFIG_DIR = ".c3"
87
87
  CONFIG_FILE = ".c3/config.json"
88
- __version__ = "2.28.0"
88
+ __version__ = "2.28.1"
89
89
 
90
90
 
91
91
  def _command_deps() -> CommandDeps:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-context-control
3
- Version: 2.28.0
3
+ Version: 2.28.1
4
4
  Summary: Local code-intelligence layer for AI coding tools (Claude Code, Codex, Gemini, Copilot). Retrieve less, read less, edit safer.
5
5
  Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -233,11 +233,15 @@ See [`SECURITY.md`](SECURITY.md) for vulnerability reports, the full hardening g
233
233
 
234
234
  ---
235
235
 
236
- ## License
236
+ ## License & project posture
237
237
 
238
- - **Core / OSS** — Apache License 2.0 (see [`LICENSE`](LICENSE)).
239
- - **Pro tier** (planned: license-key activation, hosted team Hub, advanced memory) separate commercial EULA (see [`EULA-PRO.md`](EULA-PRO.md)).
240
- - **Third-party deps** listed in [`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md).
238
+ - **Current OSS license** — Apache License 2.0 ([`LICENSE`](LICENSE)). Free for any use, including commercial. Modify, fork, redistribute — all permitted.
239
+ - **Pro tier** (planned, not yet shipped) — license-key activation will gate new additive features. Existing OSS features stay free. See [`EULA-PRO.md`](EULA-PRO.md).
240
+ - **Future major versions may relicense** to a source-available license (e.g. BSL 1.1 with a 4-year Apache-2.0 conversion) to protect commercialization. Already-published 2.x versions stay Apache-2.0 forever.
241
+ - **Trademarks** — "C3" and "Code Context Control" are trademarks (™) of Dimitri Tselenchuk. Forks must use a distinct name. See [`NOTICE`](NOTICE).
242
+ - **Third-party deps** — see [`THIRD_PARTY_LICENSES.md`](THIRD_PARTY_LICENSES.md).
243
+
244
+ **Building on C3 commercially?** Please email `dtselenc@gmail.com` first. Apache-2.0 grants broad rights to the published 2.x code, but as a courtesy we ask the community not to repackage C3 as a commercial competing product. Full FAQ: [`LICENSING.md`](LICENSING.md).
241
245
 
242
246
  ---
243
247
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "code-context-control"
7
- version = "2.28.0"
7
+ version = "2.28.1"
8
8
  description = "Local code-intelligence layer for AI coding tools (Claude Code, Codex, Gemini, Copilot). Retrieve less, read less, edit safer."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -408,11 +408,6 @@ class TestE2EBenchmarkWithMocks(unittest.TestCase):
408
408
  self.assertIn("Cost Saved", html)
409
409
  self.assertIn("Response Comparison", html)
410
410
 
411
- @unittest.skip(
412
- "Pre-existing failure: same root cause as test_report_includes_tool_analysis — "
413
- "the bench worktree path zeroes mocked CLIResponse fields when .mcp.json is "
414
- "absent. Tracked separately."
415
- )
416
411
  def test_report_efficiency_summary(self):
417
412
  """Verify efficiency calculations in the report."""
418
413
  p = self._make_mock_provider("claude")
@@ -425,7 +420,7 @@ class TestE2EBenchmarkWithMocks(unittest.TestCase):
425
420
 
426
421
  tasks = [E2ETask(id="t1", category="test", query="?",
427
422
  ground_truth=GroundTruth(required_keywords=["answer"]))]
428
- bench = E2EBenchmark(".", [p], tasks, Evaluator(), parallel=False)
423
+ bench = E2EBenchmark(".", [p], tasks, Evaluator(), parallel=False, cache=False)
429
424
  results = bench.run_all()
430
425
  report = generate_e2e_report(".", results, [p], tasks)
431
426
 
@@ -527,12 +522,6 @@ class TestToolUsage(unittest.TestCase):
527
522
 
528
523
 
529
524
  class TestToolAnalysisInReport(unittest.TestCase):
530
- @unittest.skip(
531
- "Pre-existing failure: bench worktree path zeroes mocked tool_usage when "
532
- ".mcp.json is absent from the project root. Fix tracked separately — "
533
- "either inject a stub .mcp.json into the test sandbox or refactor "
534
- "_run_task to respect pre-populated tool_usage on mocked responses."
535
- )
536
525
  def test_report_includes_tool_analysis(self):
537
526
  """Report generation includes tool_analysis section."""
538
527
  p = CLIProvider(name="claude", executable="claude", available=True)
@@ -558,7 +547,7 @@ class TestToolAnalysisInReport(unittest.TestCase):
558
547
 
559
548
  tasks = [E2ETask(id="t1", category="test", query="?",
560
549
  ground_truth=GroundTruth(required_keywords=["answer"]))]
561
- bench = E2EBenchmark(".", [p], tasks, Evaluator(), parallel=False)
550
+ bench = E2EBenchmark(".", [p], tasks, Evaluator(), parallel=False, cache=False)
562
551
  results = bench.run_all()
563
552
  report = generate_e2e_report(".", results, [p], tasks)
564
553