code-context-control 2.60.0__tar.gz → 2.61.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 (359) hide show
  1. {code_context_control-2.60.0 → code_context_control-2.61.1}/PKG-INFO +25 -7
  2. {code_context_control-2.60.0 → code_context_control-2.61.1}/README.md +24 -6
  3. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/c3.py +23 -12
  4. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/guide/bitbucket.html +1 -0
  5. code_context_control-2.61.1/cli/guide/credentials.html +554 -0
  6. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/guide/getting-started.html +37 -0
  7. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/guide/index.html +10 -1
  8. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/guide/oracle.html +1 -0
  9. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/guide/tools.html +4 -1
  10. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/guide/workflow.html +1 -0
  11. code_context_control-2.61.1/cli/hub_ui/components/hub_credentials.js +1546 -0
  12. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/project_card.js +57 -9
  13. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/credentials.js +3 -3
  14. {code_context_control-2.60.0 → code_context_control-2.61.1}/code_context_control.egg-info/PKG-INFO +25 -7
  15. {code_context_control-2.60.0 → code_context_control-2.61.1}/code_context_control.egg-info/SOURCES.txt +1 -0
  16. {code_context_control-2.60.0 → code_context_control-2.61.1}/pyproject.toml +1 -1
  17. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_install_mcp_entrypoint.py +34 -0
  18. code_context_control-2.60.0/cli/hub_ui/components/hub_credentials.js +0 -516
  19. {code_context_control-2.60.0 → code_context_control-2.61.1}/LICENSE +0 -0
  20. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/__init__.py +0 -0
  21. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/_hook_utils.py +0 -0
  22. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/commands/__init__.py +0 -0
  23. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/commands/common.py +0 -0
  24. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/commands/parser.py +0 -0
  25. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/docs.html +0 -0
  26. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/edits.html +0 -0
  27. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/guide/shared.css +0 -0
  28. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_artifact.py +0 -0
  29. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_auto_snapshot.py +0 -0
  30. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_c3_signal.py +0 -0
  31. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_c3read.py +0 -0
  32. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_dispatch.py +0 -0
  33. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_edit_ledger.py +0 -0
  34. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_edit_unlock.py +0 -0
  35. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_filter.py +0 -0
  36. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_ghost_files.py +0 -0
  37. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_pretool_enforce.py +0 -0
  38. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_prompt_recall.py +0 -0
  39. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_read.py +0 -0
  40. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_session_stats.py +0 -0
  41. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hook_terse_advisor.py +0 -0
  42. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub.html +0 -0
  43. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_server.py +0 -0
  44. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/app.js +0 -0
  45. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/add_project.js +0 -0
  46. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/config_editor.js +0 -0
  47. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/drill_artifacts.js +0 -0
  48. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/drill_health.js +0 -0
  49. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/drill_panel.js +0 -0
  50. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/drill_subprojects.js +0 -0
  51. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/drill_tasks.js +0 -0
  52. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/drill_views.js +0 -0
  53. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/global_search.js +0 -0
  54. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/mcp_manager.js +0 -0
  55. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/modals.js +0 -0
  56. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/project_tree.js +0 -0
  57. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/session_drawer.js +0 -0
  58. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/settings_modal.js +0 -0
  59. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/sidebar.js +0 -0
  60. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/summary_bar.js +0 -0
  61. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/task_board.js +0 -0
  62. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/toasts.js +0 -0
  63. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/components/topbar.js +0 -0
  64. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui/state.js +0 -0
  65. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/hub_ui.html +0 -0
  66. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/mcp_proxy.py +0 -0
  67. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/mcp_server.py +0 -0
  68. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/progress.py +0 -0
  69. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/server.py +0 -0
  70. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/__init__.py +0 -0
  71. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/_helpers.py +0 -0
  72. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/agent.py +0 -0
  73. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/artifacts.py +0 -0
  74. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/bitbucket.py +0 -0
  75. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/compress.py +0 -0
  76. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/credentials.py +0 -0
  77. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/delegate.py +0 -0
  78. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/edit.py +0 -0
  79. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/edits.py +0 -0
  80. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/federate.py +0 -0
  81. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/filter.py +0 -0
  82. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/impact.py +0 -0
  83. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/jira.py +0 -0
  84. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/memory.py +0 -0
  85. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/project.py +0 -0
  86. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/read.py +0 -0
  87. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/search.py +0 -0
  88. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/session.py +0 -0
  89. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/shell.py +0 -0
  90. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/status.py +0 -0
  91. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/tasks.py +0 -0
  92. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/tools/validate.py +0 -0
  93. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/api.js +0 -0
  94. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/app.js +0 -0
  95. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/bitbucket.js +0 -0
  96. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/chat.js +0 -0
  97. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/dashboard.js +0 -0
  98. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/edits.js +0 -0
  99. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/instructions.js +0 -0
  100. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/jira.js +0 -0
  101. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/memory.js +0 -0
  102. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/sessions.js +0 -0
  103. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/settings.js +0 -0
  104. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/sidebar.js +0 -0
  105. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/components/tasks.js +0 -0
  106. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/icons.js +0 -0
  107. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/pm_shared.js +0 -0
  108. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/shared.js +0 -0
  109. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui/theme.js +0 -0
  110. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui.html +0 -0
  111. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui_legacy.html +0 -0
  112. {code_context_control-2.60.0 → code_context_control-2.61.1}/cli/ui_nano.html +0 -0
  113. {code_context_control-2.60.0 → code_context_control-2.61.1}/code_context_control.egg-info/dependency_links.txt +0 -0
  114. {code_context_control-2.60.0 → code_context_control-2.61.1}/code_context_control.egg-info/entry_points.txt +0 -0
  115. {code_context_control-2.60.0 → code_context_control-2.61.1}/code_context_control.egg-info/requires.txt +0 -0
  116. {code_context_control-2.60.0 → code_context_control-2.61.1}/code_context_control.egg-info/top_level.txt +0 -0
  117. {code_context_control-2.60.0 → code_context_control-2.61.1}/core/__init__.py +0 -0
  118. {code_context_control-2.60.0 → code_context_control-2.61.1}/core/config.py +0 -0
  119. {code_context_control-2.60.0 → code_context_control-2.61.1}/core/ide.py +0 -0
  120. {code_context_control-2.60.0 → code_context_control-2.61.1}/core/mcp_toml.py +0 -0
  121. {code_context_control-2.60.0 → code_context_control-2.61.1}/core/web_security.py +0 -0
  122. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/__init__.py +0 -0
  123. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/config.py +0 -0
  124. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/mcp_oracle.py +0 -0
  125. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/oracle_server.py +0 -0
  126. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/oracle_ui.html +0 -0
  127. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/__init__.py +0 -0
  128. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/activity_reporter.py +0 -0
  129. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/api_auth.py +0 -0
  130. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/c3_bridge.py +0 -0
  131. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/chat_engine.py +0 -0
  132. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/chat_store.py +0 -0
  133. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/cross_memory.py +0 -0
  134. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/federated_graph.py +0 -0
  135. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/health_checker.py +0 -0
  136. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/insight_engine.py +0 -0
  137. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/local_session.py +0 -0
  138. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/memory_reader.py +0 -0
  139. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/memory_writer.py +0 -0
  140. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/project_scanner.py +0 -0
  141. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/review_agent.py +0 -0
  142. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/tool_executor.py +0 -0
  143. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/services/tool_registry.py +0 -0
  144. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/activity.js +0 -0
  145. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/agents.js +0 -0
  146. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/app.js +0 -0
  147. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/busy.js +0 -0
  148. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/chat/conversations.js +0 -0
  149. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/chat/input.js +0 -0
  150. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/chat/markdown.js +0 -0
  151. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/chat/send.js +0 -0
  152. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/chat/stream_renderer.js +0 -0
  153. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/chat/toolbar.js +0 -0
  154. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/core.js +0 -0
  155. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/crossgraph.js +0 -0
  156. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/header.js +0 -0
  157. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/insights.js +0 -0
  158. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/projects.js +0 -0
  159. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/settings.js +0 -0
  160. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/suggestions.js +0 -0
  161. {code_context_control-2.60.0 → code_context_control-2.61.1}/oracle/ui/theme_tabs.js +0 -0
  162. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/__init__.py +0 -0
  163. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/activity_log.py +0 -0
  164. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/agent_base.py +0 -0
  165. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/agents.py +0 -0
  166. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/artifact_defs.py +0 -0
  167. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/artifact_store.py +0 -0
  168. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/auto_memory.py +0 -0
  169. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/bench/__init__.py +0 -0
  170. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/bench/external/__init__.py +0 -0
  171. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/bench/external/aider_polyglot.py +0 -0
  172. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/bench/external/swe_bench.py +0 -0
  173. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/benchmark_dashboard.py +0 -0
  174. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/bitbucket_client.py +0 -0
  175. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/bitbucket_credentials.py +0 -0
  176. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/circuit_breaker.py +0 -0
  177. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/claude_md.py +0 -0
  178. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/compressor.py +0 -0
  179. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/context_snapshot.py +0 -0
  180. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/conversation_store.py +0 -0
  181. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/credential_store.py +0 -0
  182. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/doc_index.py +0 -0
  183. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/e2e_benchmark.py +0 -0
  184. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/e2e_evaluator.py +0 -0
  185. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/e2e_tasks.py +0 -0
  186. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/edit_ledger.py +0 -0
  187. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/embedding_index.py +0 -0
  188. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/error_reporting.py +0 -0
  189. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/file_memory.py +0 -0
  190. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/git_context.py +0 -0
  191. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/hub_service.py +0 -0
  192. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/indexer.py +0 -0
  193. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/jira_client.py +0 -0
  194. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/jira_cloud.py +0 -0
  195. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/jira_credentials.py +0 -0
  196. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/jira_data_center.py +0 -0
  197. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/jira_links.py +0 -0
  198. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/memory.py +0 -0
  199. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/memory_consolidator.py +0 -0
  200. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/memory_distiller.py +0 -0
  201. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/memory_graph.py +0 -0
  202. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/memory_grounder.py +0 -0
  203. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/memory_queue.py +0 -0
  204. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/memory_scorer.py +0 -0
  205. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/metrics.py +0 -0
  206. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/notifications.py +0 -0
  207. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/ollama_bridge.py +0 -0
  208. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/ollama_client.py +0 -0
  209. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/ollama_credentials.py +0 -0
  210. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/output_filter.py +0 -0
  211. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/parser.py +0 -0
  212. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/project_manager.py +0 -0
  213. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/project_runtime.py +0 -0
  214. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/protocol.py +0 -0
  215. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/proxy_state.py +0 -0
  216. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/repo_map.py +0 -0
  217. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/retention.py +0 -0
  218. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/retrieval_broker.py +0 -0
  219. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/router.py +0 -0
  220. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/runtime.py +0 -0
  221. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/scanner.py +0 -0
  222. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/session_benchmark.py +0 -0
  223. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/session_manager.py +0 -0
  224. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/session_preloader.py +0 -0
  225. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/subprojects.py +0 -0
  226. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/task_store.py +0 -0
  227. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/telemetry.py +0 -0
  228. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/text_index.py +0 -0
  229. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/time_tracker.py +0 -0
  230. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/tool_classifier.py +0 -0
  231. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/transcript_index.py +0 -0
  232. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/validation_cache.py +0 -0
  233. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/vector_store.py +0 -0
  234. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/watcher.py +0 -0
  235. {code_context_control-2.60.0 → code_context_control-2.61.1}/services/win_subprocess.py +0 -0
  236. {code_context_control-2.60.0 → code_context_control-2.61.1}/setup.cfg +0 -0
  237. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_activity_reporter.py +0 -0
  238. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_aider_polyglot.py +0 -0
  239. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_antigravity_transition.py +0 -0
  240. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_artifact_store.py +0 -0
  241. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_artifact_tool.py +0 -0
  242. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_bitbucket_cli_smoke.py +0 -0
  243. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_bitbucket_client.py +0 -0
  244. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_bitbucket_config_fallback.py +0 -0
  245. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_bitbucket_credentials.py +0 -0
  246. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_bitbucket_tool.py +0 -0
  247. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_c3_bridge_project_artifacts.py +0 -0
  248. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_c3_shell.py +0 -0
  249. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_circuit_breaker.py +0 -0
  250. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_claude_md_merge.py +0 -0
  251. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_cli_smoke.py +0 -0
  252. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_compressor_large_file.py +0 -0
  253. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_credential_store.py +0 -0
  254. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_credentials_routes.py +0 -0
  255. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_credentials_tool.py +0 -0
  256. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_creds_cli_smoke.py +0 -0
  257. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_delegate_cascade.py +0 -0
  258. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_e2e_benchmark.py +0 -0
  259. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_edit_ledger_hook.py +0 -0
  260. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_edit_normalization.py +0 -0
  261. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_enforcement_flip.py +0 -0
  262. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_federated_graph.py +0 -0
  263. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_filter_backoff.py +0 -0
  264. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_ghost_files.py +0 -0
  265. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_ghost_generation.py +0 -0
  266. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_git_branch_awareness.py +0 -0
  267. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hook_dispatch.py +0 -0
  268. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hook_pretool_enforce.py +0 -0
  269. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hook_prompt_recall.py +0 -0
  270. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hook_smoke.py +0 -0
  271. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hook_state.py +0 -0
  272. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hook_utf8_stdio.py +0 -0
  273. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hub_credentials_route.py +0 -0
  274. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hub_credentials_routes_write.py +0 -0
  275. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hub_inspect_api.py +0 -0
  276. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hub_server_smoke.py +0 -0
  277. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_hub_subproject_links.py +0 -0
  278. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_init_scan.py +0 -0
  279. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_jira_cli_smoke.py +0 -0
  280. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_jira_client.py +0 -0
  281. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_jira_config_fallback.py +0 -0
  282. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_jira_credentials.py +0 -0
  283. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_jira_links.py +0 -0
  284. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_jira_routes.py +0 -0
  285. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_jira_tool.py +0 -0
  286. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_lazy_store_init.py +0 -0
  287. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_mcp_host_guard.py +0 -0
  288. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_mcp_memory_timeout.py +0 -0
  289. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_mcp_server_smoke.py +0 -0
  290. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_mcp_toml.py +0 -0
  291. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_memory_distiller.py +0 -0
  292. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_memory_graph_api.py +0 -0
  293. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_memory_queue.py +0 -0
  294. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_memory_system.py +0 -0
  295. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_no_stale_model_pins.py +0 -0
  296. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_notification_dedup.py +0 -0
  297. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_notification_discipline.py +0 -0
  298. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_ollama_credentials.py +0 -0
  299. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_api_auth.py +0 -0
  300. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_apikey_api.py +0 -0
  301. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_c3_bridge.py +0 -0
  302. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_chat_engine.py +0 -0
  303. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_discovery_api.py +0 -0
  304. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_local_auth.py +0 -0
  305. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_ollama_bridge.py +0 -0
  306. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_scanner_cache.py +0 -0
  307. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_security_fixes.py +0 -0
  308. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_subproject_awareness.py +0 -0
  309. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_oracle_ui_bundle.py +0 -0
  310. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_output_filter.py +0 -0
  311. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_permissions.py +0 -0
  312. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_pm_api.py +0 -0
  313. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_project_manager.py +0 -0
  314. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_project_manager_merge.py +0 -0
  315. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_project_tool.py +0 -0
  316. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_read_coercion.py +0 -0
  317. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_read_edit_parity.py +0 -0
  318. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_related_facts.py +0 -0
  319. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_repo_map.py +0 -0
  320. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_response_boilerplate.py +0 -0
  321. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_retention.py +0 -0
  322. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_review_digest.py +0 -0
  323. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_service_durability.py +0 -0
  324. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_session_benchmark.py +0 -0
  325. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_session_budget.py +0 -0
  326. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_shell_creds.py +0 -0
  327. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_shell_robustness.py +0 -0
  328. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_subproject_exclusion.py +0 -0
  329. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_subproject_federation.py +0 -0
  330. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_subprojects.py +0 -0
  331. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_swe_bench.py +0 -0
  332. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_task_store.py +0 -0
  333. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_task_tool.py +0 -0
  334. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_time_tracker.py +0 -0
  335. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_token_telemetry.py +0 -0
  336. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_tool_registry.py +0 -0
  337. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_upgrade_and_version.py +0 -0
  338. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_validate.py +0 -0
  339. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_version_sync.py +0 -0
  340. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_web_security.py +0 -0
  341. {code_context_control-2.60.0 → code_context_control-2.61.1}/tests/test_windows_reliability.py +0 -0
  342. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/__init__.py +0 -0
  343. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/backend.py +0 -0
  344. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/main.py +0 -0
  345. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/__init__.py +0 -0
  346. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/benchmark_view.py +0 -0
  347. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/claudemd_view.py +0 -0
  348. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/compress_view.py +0 -0
  349. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/index_view.py +0 -0
  350. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/init_view.py +0 -0
  351. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/mcp_view.py +0 -0
  352. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/optimize_view.py +0 -0
  353. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/pipe_view.py +0 -0
  354. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/projects_view.py +0 -0
  355. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/search_view.py +0 -0
  356. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/session_view.py +0 -0
  357. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/stats.py +0 -0
  358. {code_context_control-2.60.0 → code_context_control-2.61.1}/tui/screens/ui_view.py +0 -0
  359. {code_context_control-2.60.0 → code_context_control-2.61.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.60.0
3
+ Version: 2.61.1
4
4
  Summary: Local code-intelligence layer for AI coding tools (Claude Code, Codex, Copilot, Cursor, Antigravity). Retrieve less, read less, edit safer — version the configs that shape your agent (CLAUDE.md, skills, hooks, MCP), and manage multi-project + sub-project hierarchies from a local hub.
5
5
  Author-email: Dimitri Tselenchuk <dtselenc@gmail.com>
6
6
  License-Expression: Apache-2.0
@@ -361,12 +361,30 @@ with credentials disabled, and the vault is hard-excluded from the Oracle
361
361
  Discovery API.
362
362
 
363
363
  Since **v2.59.0** the Hub has a top-level **Credentials** view: manage the
364
- global vault (`~/.c3`) and every registered project's entries from one place
365
- create / edit / delete / `.env` import / flag toggles, with shadowing shown
366
- both ways ("shadows global" on project entries, "shadowed in N projects" on
367
- globals). The write-only wire contract extends to the hub: values are
368
- submitted inbound-only and **no hub route ever returns a stored value** (there
369
- is no `reveal` on the hub at all).
364
+ global vault (`~/.c3`) and every registered project's entries from one place,
365
+ with overriding shown both ways ("overrides global" on project entries,
366
+ "overridden ×N" on globals). **v2.61.0** makes it navigable at scale:
367
+
368
+ - **Cross-project search** <kbd>/</kbd> or <kbd>Ctrl/⌘-K</kbd>. Free words
369
+ match name / description / env var / project; `project:` `scope:` `type:`
370
+ `storage:` `name:` `env:` `inject:` `agent:` `shadow:` qualifiers narrow
371
+ further. Results are **grouped by credential name**, so "where is
372
+ `STRIPE_KEY` defined and which one wins?" is one glance instead of forty
373
+ accordions. `agent:true` and `inject:true` are one-key exposure audits.
374
+ - **Per-credential settings drawer** — metadata, the two exposure switches
375
+ with their blast radius written out, an on-demand resolution check +
376
+ fingerprint, write-only value replacement, usage and override
377
+ relationships, and a separated danger zone.
378
+ - **Right-click context menu** on any row (also `⋯` and <kbd>Shift</kbd>+<kbd>F10</kbd>),
379
+ with typed confirmations replacing `window.confirm`: deleting or granting
380
+ agent-read access requires typing the credential's name.
381
+
382
+ The write-only wire contract extends to the hub: values are submitted
383
+ inbound-only, **no hub route ever returns a stored value** (there is no
384
+ `reveal` on the hub at all), and search indexes metadata only.
385
+
386
+ Full documentation: [`cli/guide/credentials.html`](cli/guide/credentials.html)
387
+ — open it in the app at `/guide/credentials.html`.
370
388
 
371
389
  ### Jira — Cloud + Data Center (v2.56.0)
372
390
 
@@ -298,12 +298,30 @@ with credentials disabled, and the vault is hard-excluded from the Oracle
298
298
  Discovery API.
299
299
 
300
300
  Since **v2.59.0** the Hub has a top-level **Credentials** view: manage the
301
- global vault (`~/.c3`) and every registered project's entries from one place
302
- create / edit / delete / `.env` import / flag toggles, with shadowing shown
303
- both ways ("shadows global" on project entries, "shadowed in N projects" on
304
- globals). The write-only wire contract extends to the hub: values are
305
- submitted inbound-only and **no hub route ever returns a stored value** (there
306
- is no `reveal` on the hub at all).
301
+ global vault (`~/.c3`) and every registered project's entries from one place,
302
+ with overriding shown both ways ("overrides global" on project entries,
303
+ "overridden ×N" on globals). **v2.61.0** makes it navigable at scale:
304
+
305
+ - **Cross-project search** <kbd>/</kbd> or <kbd>Ctrl/⌘-K</kbd>. Free words
306
+ match name / description / env var / project; `project:` `scope:` `type:`
307
+ `storage:` `name:` `env:` `inject:` `agent:` `shadow:` qualifiers narrow
308
+ further. Results are **grouped by credential name**, so "where is
309
+ `STRIPE_KEY` defined and which one wins?" is one glance instead of forty
310
+ accordions. `agent:true` and `inject:true` are one-key exposure audits.
311
+ - **Per-credential settings drawer** — metadata, the two exposure switches
312
+ with their blast radius written out, an on-demand resolution check +
313
+ fingerprint, write-only value replacement, usage and override
314
+ relationships, and a separated danger zone.
315
+ - **Right-click context menu** on any row (also `⋯` and <kbd>Shift</kbd>+<kbd>F10</kbd>),
316
+ with typed confirmations replacing `window.confirm`: deleting or granting
317
+ agent-read access requires typing the credential's name.
318
+
319
+ The write-only wire contract extends to the hub: values are submitted
320
+ inbound-only, **no hub route ever returns a stored value** (there is no
321
+ `reveal` on the hub at all), and search indexes metadata only.
322
+
323
+ Full documentation: [`cli/guide/credentials.html`](cli/guide/credentials.html)
324
+ — open it in the app at `/guide/credentials.html`.
307
325
 
308
326
  ### Jira — Cloud + Data Center (v2.56.0)
309
327
 
@@ -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.60.0"
95
+ __version__ = "2.61.1"
96
96
 
97
97
 
98
98
  def _command_deps() -> CommandDeps:
@@ -5128,22 +5128,33 @@ def cmd_install_mcp(args):
5128
5128
  settings = _safe_read_json(settings_path, str(settings_path))
5129
5129
 
5130
5130
  # Build hook commands using the Python executable that runs c3.
5131
- # On Windows, Claude Code executes hooks via /usr/bin/bash (Git Bash), which cannot
5132
- # parse Windows absolute paths containing parentheses (e.g. "(C3)"). Prefix with
5133
- # cmd.exe so it handles path resolution instead of bash.
5134
5131
  #
5135
- # Use "cmd.exe" WITH the extension, not bare "cmd": Git Bash does not resolve bare
5136
- # "cmd" on PATH, so the old "cmd /c" prefix silently failed to launch any hook
5137
- # (verified: under bash, "cmd.exe /c '<py>' '<hook>'" runs and writes the signal
5138
- # file; "cmd /c …" returns "cmd: command not found"). The single-quoted paths are
5139
- # correct bash strips them and re-quotes for cmd.exe, preserving spaces/parens.
5140
- _hook_prefix = "cmd.exe /c " if sys.platform == "win32" else ""
5132
+ # Windows: do NOT wrap in cmd.exe. Claude Code runs hooks through Git Bash,
5133
+ # whose MSYS argument conversion rewrites a standalone "/c" into "C:/" before
5134
+ # cmd.exe ever sees it — so cmd.exe starts INTERACTIVELY, prints its banner,
5135
+ # and reads the hook's stdin JSON payload as console commands. The hook never
5136
+ # runs, and any ">" token in the payload becomes a shell redirect that silently
5137
+ # creates junk files in the repo root.
5138
+ #
5139
+ # Verified 2026-07-26 under Git Bash on Windows 11:
5140
+ # python -c "import sys;print(sys.argv)" /c foo -> ['-c', 'C:/', 'foo']
5141
+ # cmd.exe /c '<py>' -c "print('x')" -> banner, no execution
5142
+ # '<py>' '<hook>' posttool -> runs, stdin intact
5143
+ # Both "cmd /c" (bash cannot resolve bare "cmd") and "cmd.exe /c" are broken;
5144
+ # the wrapper was never needed. A double-quoted forward-slash path is parsed
5145
+ # correctly by bash AND cmd, including paths containing spaces or parentheses
5146
+ # (e.g. "Claude Code Companion (C3)"), which is why the wrapper was added.
5147
+ def _hook_arg(raw: str) -> str:
5148
+ if sys.platform == "win32":
5149
+ return '"' + str(raw).replace("\\", "/") + '"'
5150
+ return shlex.quote(str(raw))
5151
+
5141
5152
  # v2.42: single dispatcher script per hook event instead of N separate
5142
5153
  # per-hook commands. One interpreter spawn per event; the dispatcher
5143
5154
  # (cli/hook_dispatch.py) runs all applicable sub-hooks in-process.
5144
5155
  _dispatch_base = (
5145
- f"{_hook_prefix}{shlex.quote(sys.executable)} "
5146
- f"{shlex.quote(str(cli_dir / 'hook_dispatch.py'))}"
5156
+ f"{_hook_arg(sys.executable)} "
5157
+ f"{_hook_arg(str(cli_dir / 'hook_dispatch.py'))}"
5147
5158
  )
5148
5159
  hook_pretool_cmd = f"{_dispatch_base} pretool"
5149
5160
  hook_posttool_cmd = f"{_dispatch_base} posttool"
@@ -77,6 +77,7 @@
77
77
  <a href="getting-started.html">Get Started</a>
78
78
  <a href="workflow.html">Workflow</a>
79
79
  <a href="tools.html">Tools</a>
80
+ <a href="credentials.html">Credentials</a>
80
81
  <a href="bitbucket.html" class="active">Bitbucket</a>
81
82
  <a href="oracle.html">Oracle</a>
82
83
  <a href="https://github.com/sponsors/drknowhow" target="_blank" rel="noopener" style="color:#EA4AAA">&#9829; Sponsor</a>