ccproxy-api 0.2.6__tar.gz → 0.2.7__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 (422) hide show
  1. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/PKG-INFO +1 -1
  2. ccproxy_api-0.2.7/ccproxy/core/_version.py +24 -0
  3. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_anthropic/_helpers.py +0 -12
  4. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_openai/requests.py +53 -35
  5. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/utils.py +26 -0
  6. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/adapter.py +40 -0
  7. ccproxy_api-0.2.6/ccproxy/core/_version.py +0 -34
  8. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/.gitignore +0 -0
  9. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/LICENSE +0 -0
  10. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/README.md +0 -0
  11. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/__main__.py +0 -0
  12. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/__init__.py +0 -0
  13. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/app.py +0 -0
  14. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/bootstrap.py +0 -0
  15. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/decorators.py +0 -0
  16. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/dependencies.py +0 -0
  17. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/format_validation.py +0 -0
  18. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/middleware/__init__.py +0 -0
  19. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/middleware/cors.py +0 -0
  20. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/middleware/errors.py +0 -0
  21. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/middleware/hooks.py +0 -0
  22. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/middleware/normalize_headers.py +0 -0
  23. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/middleware/request_id.py +0 -0
  24. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/middleware/streaming_hooks.py +0 -0
  25. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/routes/__init__.py +0 -0
  26. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/routes/health.py +0 -0
  27. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/api/routes/plugins.py +0 -0
  28. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/__init__.py +0 -0
  29. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/bearer.py +0 -0
  30. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/dependencies.py +0 -0
  31. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/exceptions.py +0 -0
  32. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/manager.py +0 -0
  33. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/managers/__init__.py +0 -0
  34. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/managers/base.py +0 -0
  35. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/managers/base_enhanced.py +0 -0
  36. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/managers/token_snapshot.py +0 -0
  37. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/models/__init__.py +0 -0
  38. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/models/base.py +0 -0
  39. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/models/credentials.py +0 -0
  40. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/__init__.py +0 -0
  41. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/base.py +0 -0
  42. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/cli_errors.py +0 -0
  43. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/flows.py +0 -0
  44. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/protocol.py +0 -0
  45. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/registry.py +0 -0
  46. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/router.py +0 -0
  47. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/routes.py +0 -0
  48. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/session.py +0 -0
  49. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/oauth/templates.py +0 -0
  50. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/storage/__init__.py +0 -0
  51. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/storage/base.py +0 -0
  52. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/auth/storage/generic.py +0 -0
  53. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/__init__.py +0 -0
  54. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/_settings_help.py +0 -0
  55. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/commands/__init__.py +0 -0
  56. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/commands/auth.py +0 -0
  57. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/commands/config/__init__.py +0 -0
  58. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/commands/config/commands.py +0 -0
  59. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/commands/config/schema_commands.py +0 -0
  60. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/commands/plugins.py +0 -0
  61. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/commands/serve.py +0 -0
  62. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/commands/status.py +0 -0
  63. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/decorators.py +0 -0
  64. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/helpers.py +0 -0
  65. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/main.py +0 -0
  66. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/options/__init__.py +0 -0
  67. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/options/claude_options.py +0 -0
  68. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/options/core_options.py +0 -0
  69. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/options/security_options.py +0 -0
  70. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/cli/options/server_options.py +0 -0
  71. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/config/__init__.py +0 -0
  72. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/config/core.py +0 -0
  73. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/config/env_generator.py +0 -0
  74. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/config/runtime.py +0 -0
  75. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/config/security.py +0 -0
  76. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/config/settings.py +0 -0
  77. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/config/toml_generator.py +0 -0
  78. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/config/utils.py +0 -0
  79. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/__init__.py +0 -0
  80. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/async_task_manager.py +0 -0
  81. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/async_utils.py +0 -0
  82. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/auth/__init__.py +0 -0
  83. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/constants.py +0 -0
  84. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/errors.py +0 -0
  85. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/id_utils.py +0 -0
  86. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/interfaces.py +0 -0
  87. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/logging.py +0 -0
  88. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/middleware.py +0 -0
  89. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/__init__.py +0 -0
  90. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/cli_discovery.py +0 -0
  91. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/declaration.py +0 -0
  92. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/discovery.py +0 -0
  93. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/factories.py +0 -0
  94. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/__init__.py +0 -0
  95. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/base.py +0 -0
  96. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/events.py +0 -0
  97. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/implementations/__init__.py +0 -0
  98. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/implementations/formatters/__init__.py +0 -0
  99. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/implementations/formatters/json.py +0 -0
  100. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/implementations/formatters/raw.py +0 -0
  101. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/implementations/http_tracer.py +0 -0
  102. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/layers.py +0 -0
  103. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/manager.py +0 -0
  104. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/registry.py +0 -0
  105. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/thread_manager.py +0 -0
  106. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/hooks/types.py +0 -0
  107. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/interfaces.py +0 -0
  108. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/loader.py +0 -0
  109. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/middleware.py +0 -0
  110. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/models.py +0 -0
  111. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/protocol.py +0 -0
  112. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/plugins/runtime.py +0 -0
  113. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/request_context.py +0 -0
  114. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/status_report.py +0 -0
  115. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/system.py +0 -0
  116. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/transformers.py +0 -0
  117. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/core/types.py +0 -0
  118. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/data/claude_headers_fallback.json +0 -0
  119. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/data/codex_headers_fallback.json +0 -0
  120. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/http/__init__.py +0 -0
  121. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/http/base.py +0 -0
  122. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/http/client.py +0 -0
  123. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/http/hooks.py +0 -0
  124. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/http/pool.py +0 -0
  125. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/__init__.py +0 -0
  126. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/anthropic_to_openai/__init__.py +0 -0
  127. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/anthropic_to_openai/_helpers.py +0 -0
  128. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/anthropic_to_openai/errors.py +0 -0
  129. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/anthropic_to_openai/requests.py +0 -0
  130. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/anthropic_to_openai/responses.py +0 -0
  131. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/anthropic_to_openai/streams.py +0 -0
  132. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/base.py +0 -0
  133. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/base_model.py +0 -0
  134. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/common/__init__.py +0 -0
  135. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/common/identifiers.py +0 -0
  136. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/common/streams.py +0 -0
  137. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/common/thinking.py +0 -0
  138. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/common/usage.py +0 -0
  139. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/constants.py +0 -0
  140. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/context.py +0 -0
  141. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/mapping.py +0 -0
  142. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_anthropic/__init__.py +0 -0
  143. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_anthropic/errors.py +0 -0
  144. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_anthropic/requests.py +0 -0
  145. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_anthropic/responses.py +0 -0
  146. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_anthropic/streams.py +0 -0
  147. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_openai/__init__.py +0 -0
  148. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_openai/_helpers.py +0 -0
  149. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_openai/errors.py +0 -0
  150. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_openai/responses.py +0 -0
  151. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/formatters/openai_to_openai/streams.py +0 -0
  152. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/models/__init__.py +0 -0
  153. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/models/anthropic.py +0 -0
  154. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/models/openai.py +0 -0
  155. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/streaming/__init__.py +0 -0
  156. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/streaming/accumulators.py +0 -0
  157. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/streaming/formatters.py +0 -0
  158. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/llms/streaming/processors.py +0 -0
  159. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/models/__init__.py +0 -0
  160. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/models/detection.py +0 -0
  161. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/models/provider.py +0 -0
  162. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/access_log/README.md +0 -0
  163. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/access_log/__init__.py +0 -0
  164. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/access_log/config.py +0 -0
  165. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/access_log/formatter.py +0 -0
  166. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/access_log/hook.py +0 -0
  167. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/access_log/logger.py +0 -0
  168. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/access_log/plugin.py +0 -0
  169. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/access_log/writer.py +0 -0
  170. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/analytics/README.md +0 -0
  171. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/analytics/__init__.py +0 -0
  172. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/analytics/config.py +0 -0
  173. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/analytics/ingest.py +0 -0
  174. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/analytics/models.py +0 -0
  175. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/analytics/plugin.py +0 -0
  176. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/analytics/routes.py +0 -0
  177. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/analytics/service.py +0 -0
  178. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/README.md +0 -0
  179. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/__init__.py +0 -0
  180. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/config.py +0 -0
  181. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/detection_service.py +0 -0
  182. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/health.py +0 -0
  183. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/hooks.py +0 -0
  184. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/models.py +0 -0
  185. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/plugin.py +0 -0
  186. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/routes.py +0 -0
  187. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/streaming_metrics.py +0 -0
  188. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_api/tasks.py +0 -0
  189. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/README.md +0 -0
  190. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/__init__.py +0 -0
  191. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/adapter.py +0 -0
  192. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/auth.py +0 -0
  193. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/client.py +0 -0
  194. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/config.py +0 -0
  195. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/converter.py +0 -0
  196. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/detection_service.py +0 -0
  197. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/exceptions.py +0 -0
  198. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/handler.py +0 -0
  199. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/health.py +0 -0
  200. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/hooks.py +0 -0
  201. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/manager.py +0 -0
  202. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/message_queue.py +0 -0
  203. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/models.py +0 -0
  204. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/options.py +0 -0
  205. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/parser.py +0 -0
  206. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/plugin.py +0 -0
  207. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/routes.py +0 -0
  208. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/session_client.py +0 -0
  209. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/session_pool.py +0 -0
  210. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/stream_handle.py +0 -0
  211. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/stream_worker.py +0 -0
  212. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/streaming.py +0 -0
  213. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_sdk/tasks.py +0 -0
  214. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_shared/README.md +0 -0
  215. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_shared/__init__.py +0 -0
  216. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/claude_shared/model_defaults.py +0 -0
  217. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/README.md +0 -0
  218. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/__init__.py +0 -0
  219. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/adapter.py +0 -0
  220. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/config.py +0 -0
  221. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/detection_service.py +0 -0
  222. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/health.py +0 -0
  223. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/hooks.py +0 -0
  224. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/model_defaults.py +0 -0
  225. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/models.py +0 -0
  226. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/plugin.py +0 -0
  227. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/routes.py +0 -0
  228. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/streaming_metrics.py +0 -0
  229. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/tasks.py +0 -0
  230. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/utils/__init__.py +0 -0
  231. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/codex/utils/sse_parser.py +0 -0
  232. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/command_replay/README.md +0 -0
  233. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/command_replay/__init__.py +0 -0
  234. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/command_replay/config.py +0 -0
  235. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/command_replay/formatter.py +0 -0
  236. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/command_replay/hook.py +0 -0
  237. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/command_replay/plugin.py +0 -0
  238. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/README.md +0 -0
  239. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/__init__.py +0 -0
  240. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/adapter.py +0 -0
  241. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/config.py +0 -0
  242. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/data/copilot_fallback.json +0 -0
  243. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/detection_service.py +0 -0
  244. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/manager.py +0 -0
  245. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/model_defaults.py +0 -0
  246. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/models.py +0 -0
  247. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/oauth/__init__.py +0 -0
  248. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/oauth/client.py +0 -0
  249. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/oauth/models.py +0 -0
  250. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/oauth/provider.py +0 -0
  251. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/oauth/storage.py +0 -0
  252. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/plugin.py +0 -0
  253. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/copilot/routes.py +0 -0
  254. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/credential_balancer/README.md +0 -0
  255. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/credential_balancer/__init__.py +0 -0
  256. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/credential_balancer/config.py +0 -0
  257. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/credential_balancer/factory.py +0 -0
  258. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/credential_balancer/hook.py +0 -0
  259. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/credential_balancer/manager.py +0 -0
  260. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/credential_balancer/plugin.py +0 -0
  261. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/dashboard/README.md +0 -0
  262. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/dashboard/__init__.py +0 -0
  263. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/dashboard/config.py +0 -0
  264. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/dashboard/plugin.py +0 -0
  265. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/dashboard/routes.py +0 -0
  266. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/README.md +0 -0
  267. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/__init__.py +0 -0
  268. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/adapter.py +0 -0
  269. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/config.py +0 -0
  270. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/docker_path.py +0 -0
  271. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/middleware.py +0 -0
  272. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/models.py +0 -0
  273. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/plugin.py +0 -0
  274. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/protocol.py +0 -0
  275. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/stream_process.py +0 -0
  276. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/docker/validators.py +0 -0
  277. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/duckdb_storage/README.md +0 -0
  278. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/duckdb_storage/__init__.py +0 -0
  279. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/duckdb_storage/config.py +0 -0
  280. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/duckdb_storage/plugin.py +0 -0
  281. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/duckdb_storage/routes.py +0 -0
  282. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/duckdb_storage/storage.py +0 -0
  283. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/max_tokens/README.md +0 -0
  284. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/max_tokens/__init__.py +0 -0
  285. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/max_tokens/adapter.py +0 -0
  286. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/max_tokens/config.py +0 -0
  287. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/max_tokens/models.py +0 -0
  288. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/max_tokens/plugin.py +0 -0
  289. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/max_tokens/service.py +0 -0
  290. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/max_tokens/token_limits.json +0 -0
  291. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/README.md +0 -0
  292. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/__init__.py +0 -0
  293. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/collector.py +0 -0
  294. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/config.py +0 -0
  295. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/grafana/dashboards/ccproxy-dashboard.json +0 -0
  296. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/hook.py +0 -0
  297. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/plugin.py +0 -0
  298. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/pushgateway.py +0 -0
  299. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/routes.py +0 -0
  300. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/metrics/tasks.py +0 -0
  301. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/README.md +0 -0
  302. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/__init__.py +0 -0
  303. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/client.py +0 -0
  304. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/config.py +0 -0
  305. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/manager.py +0 -0
  306. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/models.py +0 -0
  307. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/plugin.py +0 -0
  308. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/provider.py +0 -0
  309. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_claude/storage.py +0 -0
  310. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/README.md +0 -0
  311. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/__init__.py +0 -0
  312. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/client.py +0 -0
  313. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/config.py +0 -0
  314. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/manager.py +0 -0
  315. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/models.py +0 -0
  316. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/plugin.py +0 -0
  317. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/provider.py +0 -0
  318. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/oauth_codex/storage.py +0 -0
  319. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/README.md +0 -0
  320. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/__init__.py +0 -0
  321. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/config.py +0 -0
  322. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/handlers/__init__.py +0 -0
  323. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/handlers/cli.py +0 -0
  324. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/handlers/protocol.py +0 -0
  325. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/handlers/terminal.py +0 -0
  326. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/mcp.py +0 -0
  327. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/models.py +0 -0
  328. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/plugin.py +0 -0
  329. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/routes.py +0 -0
  330. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/service.py +0 -0
  331. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/ui/__init__.py +0 -0
  332. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/ui/permission_handler_protocol.py +0 -0
  333. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/permissions/ui/terminal_permission_handler.py +0 -0
  334. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/README.md +0 -0
  335. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/__init__.py +0 -0
  336. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/cache.py +0 -0
  337. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/config.py +0 -0
  338. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/exceptions.py +0 -0
  339. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/loader.py +0 -0
  340. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/models.py +0 -0
  341. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/plugin.py +0 -0
  342. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/service.py +0 -0
  343. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/tasks.py +0 -0
  344. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/updater.py +0 -0
  345. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/pricing/utils.py +0 -0
  346. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/request_tracer/README.md +0 -0
  347. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/request_tracer/__init__.py +0 -0
  348. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/request_tracer/config.py +0 -0
  349. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/request_tracer/hook.py +0 -0
  350. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/plugins/request_tracer/plugin.py +0 -0
  351. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/scheduler/__init__.py +0 -0
  352. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/scheduler/core.py +0 -0
  353. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/scheduler/errors.py +0 -0
  354. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/scheduler/manager.py +0 -0
  355. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/scheduler/registry.py +0 -0
  356. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/scheduler/tasks.py +0 -0
  357. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/__init__.py +0 -0
  358. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/__init__.py +0 -0
  359. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/base.py +0 -0
  360. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/chain_composer.py +0 -0
  361. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/chain_validation.py +0 -0
  362. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/chat_accumulator.py +0 -0
  363. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/delta_utils.py +0 -0
  364. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/format_adapter.py +0 -0
  365. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/format_context.py +0 -0
  366. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/format_registry.py +0 -0
  367. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/http_adapter.py +0 -0
  368. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/mock_adapter.py +0 -0
  369. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/protocols.py +0 -0
  370. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/adapters/simple_converters.py +0 -0
  371. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/auth_registry.py +0 -0
  372. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/cache/__init__.py +0 -0
  373. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/cache/response_cache.py +0 -0
  374. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/cli_detection.py +0 -0
  375. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/config/__init__.py +0 -0
  376. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/config/proxy_configuration.py +0 -0
  377. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/container.py +0 -0
  378. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/factories.py +0 -0
  379. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/handler_config.py +0 -0
  380. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/interfaces.py +0 -0
  381. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/mocking/__init__.py +0 -0
  382. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/mocking/mock_handler.py +0 -0
  383. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/tracing/__init__.py +0 -0
  384. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/tracing/interfaces.py +0 -0
  385. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/services/tracing/null_tracer.py +0 -0
  386. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/streaming/__init__.py +0 -0
  387. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/streaming/buffer.py +0 -0
  388. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/streaming/deferred.py +0 -0
  389. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/streaming/handler.py +0 -0
  390. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/streaming/interfaces.py +0 -0
  391. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/streaming/simple_adapter.py +0 -0
  392. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/streaming/sse.py +0 -0
  393. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/streaming/sse_parser.py +0 -0
  394. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/templates/__init__.py +0 -0
  395. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/templates/plugin_scaffold.py +0 -0
  396. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/__init__.py +0 -0
  397. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/config.py +0 -0
  398. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/content_generation.py +0 -0
  399. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/endpoints/__init__.py +0 -0
  400. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/endpoints/cli.py +0 -0
  401. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/endpoints/config.py +0 -0
  402. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/endpoints/console.py +0 -0
  403. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/endpoints/models.py +0 -0
  404. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/endpoints/runner.py +0 -0
  405. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/endpoints/tools.py +0 -0
  406. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/mock_responses.py +0 -0
  407. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/response_handlers.py +0 -0
  408. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/testing/scenarios.py +0 -0
  409. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/__init__.py +0 -0
  410. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/binary_resolver.py +0 -0
  411. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/caching.py +0 -0
  412. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/cli_logging.py +0 -0
  413. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/command_line.py +0 -0
  414. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/headers.py +0 -0
  415. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/id_generator.py +0 -0
  416. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/model_mapper.py +0 -0
  417. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/startup_helpers.py +0 -0
  418. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/ccproxy/utils/version_checker.py +0 -0
  419. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/examples/README.md +0 -0
  420. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/pyproject.toml +0 -0
  421. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/tests/factories/README.md +0 -0
  422. {ccproxy_api-0.2.6 → ccproxy_api-0.2.7}/tests/fixtures/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ccproxy-api
3
- Version: 0.2.6
3
+ Version: 0.2.7
4
4
  Summary: API server that provides an Anthropic and OpenAI compatible interface over Claude Code, allowing to use your Claude OAuth account or over the API.
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.11
@@ -0,0 +1,24 @@
1
+ # file generated by vcs-versioning
2
+ # don't change, don't track in version control
3
+ from __future__ import annotations
4
+
5
+ __all__ = [
6
+ "__version__",
7
+ "__version_tuple__",
8
+ "version",
9
+ "version_tuple",
10
+ "__commit_id__",
11
+ "commit_id",
12
+ ]
13
+
14
+ version: str
15
+ __version__: str
16
+ __version_tuple__: tuple[int | str, ...]
17
+ version_tuple: tuple[int | str, ...]
18
+ commit_id: str | None
19
+ __commit_id__: str | None
20
+
21
+ __version__ = version = '0.2.7'
22
+ __version_tuple__ = version_tuple = (0, 2, 7)
23
+
24
+ __commit_id__ = commit_id = None
@@ -63,17 +63,6 @@ def _normalize_text_and_images(
63
63
  return text_parts, image_blocks
64
64
 
65
65
 
66
- def _stringify_content(content: Any) -> str:
67
- if content is None:
68
- return ""
69
- if isinstance(content, str):
70
- return content
71
- if isinstance(content, list):
72
- text_parts, _ = _normalize_text_and_images(content)
73
- return " ".join(text_parts)
74
- return str(content)
75
-
76
-
77
66
  def _coerce_system_content(content: Any) -> str | None:
78
67
  if isinstance(content, str):
79
68
  return content
@@ -134,7 +123,6 @@ def _build_assistant_blocks(
134
123
  __all__ = [
135
124
  "_to_mapping",
136
125
  "_normalize_text_and_images",
137
- "_stringify_content",
138
126
  "_coerce_system_content",
139
127
  "_build_user_blocks",
140
128
  "_build_assistant_blocks",
@@ -12,6 +12,7 @@ from ccproxy.llms.formatters.context import (
12
12
  register_request,
13
13
  register_request_tools,
14
14
  )
15
+ from ccproxy.llms.formatters.utils import stringify_content
15
16
  from ccproxy.llms.models import openai as openai_models
16
17
 
17
18
  from ._helpers import (
@@ -240,42 +241,59 @@ def _build_responses_payload_from_chat_request(
240
241
  if request.max_completion_tokens is not None:
241
242
  payload_data["max_output_tokens"] = int(request.max_completion_tokens)
242
243
 
243
- user_text: str | None = None
244
- for msg in reversed(request.messages):
245
- if msg.role != "user":
244
+ # Convert ALL chat messages to Responses API input items.
245
+ # This preserves the full conversation history including tool calls and results.
246
+ input_items: list[dict[str, Any]] = []
247
+
248
+ for msg in request.messages or []:
249
+ role = msg.role
250
+ content = msg.content
251
+
252
+ if role in ("system", "developer"):
246
253
  continue
247
- if isinstance(msg.content, str):
248
- user_text = msg.content
249
- elif isinstance(msg.content, list):
250
- texts: list[str] = []
251
- for block in msg.content:
252
- if isinstance(block, dict):
253
- if block.get("type") == "text" and isinstance(
254
- block.get("text"), str
255
- ):
256
- texts.append(block.get("text") or "")
257
- elif (
258
- getattr(block, "type", None) == "text"
259
- and hasattr(block, "text")
260
- and isinstance(getattr(block, "text", None), str)
261
- ):
262
- texts.append(block.text or "")
263
- if texts:
264
- user_text = " ".join(texts)
265
- break
266
-
267
- if user_text:
268
- payload_data["input"] = [
269
- {
270
- "type": "message",
271
- "role": "user",
272
- "content": [
273
- {"type": "input_text", "text": user_text},
274
- ],
275
- }
276
- ]
277
- else:
278
- payload_data["input"] = []
254
+
255
+ if role == "user":
256
+ text = stringify_content(content)
257
+ if text:
258
+ input_items.append(
259
+ {
260
+ "type": "message",
261
+ "role": "user",
262
+ "content": [{"type": "input_text", "text": text}],
263
+ }
264
+ )
265
+
266
+ elif role == "assistant":
267
+ if content:
268
+ input_items.append(
269
+ {
270
+ "type": "message",
271
+ "role": "assistant",
272
+ "content": [{"type": "output_text", "text": str(content)}],
273
+ }
274
+ )
275
+ if msg.tool_calls:
276
+ for tc in msg.tool_calls:
277
+ input_items.append(
278
+ {
279
+ "type": "function_call",
280
+ "id": tc.id,
281
+ "call_id": tc.id,
282
+ "name": tc.function.name,
283
+ "arguments": tc.function.arguments,
284
+ }
285
+ )
286
+
287
+ elif role == "tool":
288
+ input_items.append(
289
+ {
290
+ "type": "function_call_output",
291
+ "call_id": msg.tool_call_id or "",
292
+ "output": str(content) if content else "",
293
+ }
294
+ )
295
+
296
+ payload_data["input"] = input_items
279
297
 
280
298
  instruction_segments = _collect_chat_instruction_segments(request.messages)
281
299
  instructions_text = "\n\n".join(
@@ -294,6 +294,31 @@ def strict_parse_tool_arguments(
294
294
  return {"arguments": str(arguments)}
295
295
 
296
296
 
297
+ def stringify_content(content: Any) -> str:
298
+ """Extract plain text from message content (str, list of content parts, or None)."""
299
+ if content is None:
300
+ return ""
301
+ if isinstance(content, str):
302
+ return content
303
+ if isinstance(content, list):
304
+ texts: list[str] = []
305
+ for part in content:
306
+ if isinstance(part, dict):
307
+ if part.get("type") in {"text", "input_text"}:
308
+ t = part.get("text")
309
+ if isinstance(t, str) and t:
310
+ texts.append(t)
311
+ elif hasattr(part, "type") and getattr(part, "type", None) in {
312
+ "text",
313
+ "input_text",
314
+ }:
315
+ t = getattr(part, "text", None)
316
+ if isinstance(t, str) and t:
317
+ texts.append(t)
318
+ return " ".join(texts)
319
+ return str(content)
320
+
321
+
297
322
  __all__ = [
298
323
  "UsageSnapshot",
299
324
  "anthropic_usage_snapshot",
@@ -303,4 +328,5 @@ __all__ = [
303
328
  "build_obfuscation_token",
304
329
  "map_openai_finish_to_anthropic_stop",
305
330
  "strict_parse_tool_arguments",
331
+ "stringify_content",
306
332
  ]
@@ -12,6 +12,7 @@ from ccproxy.core.plugins.interfaces import (
12
12
  DetectionServiceProtocol,
13
13
  TokenManagerProtocol,
14
14
  )
15
+ from ccproxy.llms.formatters.utils import strict_parse_tool_arguments
15
16
  from ccproxy.services.adapters.http_adapter import BaseHTTPAdapter
16
17
  from ccproxy.utils.headers import (
17
18
  extract_response_headers,
@@ -304,6 +305,7 @@ class ClaudeAPIAdapter(BaseHTTPAdapter):
304
305
  continue
305
306
  role = msg.get("role")
306
307
  content = msg.get("content", "")
308
+ tool_calls = msg.get("tool_calls")
307
309
 
308
310
  if role == "system":
309
311
  block = self._normalize_text_block(content)
@@ -314,6 +316,44 @@ class ClaudeAPIAdapter(BaseHTTPAdapter):
314
316
  system_blocks.append(block)
315
317
  continue
316
318
 
319
+ if role == "assistant" and tool_calls:
320
+ # Convert OpenAI tool_calls to Anthropic tool_use blocks
321
+ blocks: list[dict[str, Any]] = []
322
+ if content:
323
+ blocks.append({"type": "text", "text": str(content)})
324
+ for tc in tool_calls:
325
+ func_info = tc.get("function", {})
326
+ tool_input = strict_parse_tool_arguments(
327
+ func_info.get("arguments", "{}")
328
+ )
329
+ blocks.append(
330
+ {
331
+ "type": "tool_use",
332
+ "id": tc.get("id", ""),
333
+ "name": func_info.get("name", ""),
334
+ "input": tool_input,
335
+ }
336
+ )
337
+ anthropic_messages.append({"role": "assistant", "content": blocks})
338
+ continue
339
+
340
+ if role == "tool":
341
+ # Convert OpenAI tool result to Anthropic tool_result block
342
+ tool_call_id = msg.get("tool_call_id", "")
343
+ anthropic_messages.append(
344
+ {
345
+ "role": "user",
346
+ "content": [
347
+ {
348
+ "type": "tool_result",
349
+ "tool_use_id": tool_call_id,
350
+ "content": str(content) if content else "",
351
+ }
352
+ ],
353
+ }
354
+ )
355
+ continue
356
+
317
357
  block = self._normalize_text_block(content)
318
358
  if block is None:
319
359
  block = []
@@ -1,34 +0,0 @@
1
- # file generated by setuptools-scm
2
- # don't change, don't track in version control
3
-
4
- __all__ = [
5
- "__version__",
6
- "__version_tuple__",
7
- "version",
8
- "version_tuple",
9
- "__commit_id__",
10
- "commit_id",
11
- ]
12
-
13
- TYPE_CHECKING = False
14
- if TYPE_CHECKING:
15
- from typing import Tuple
16
- from typing import Union
17
-
18
- VERSION_TUPLE = Tuple[Union[int, str], ...]
19
- COMMIT_ID = Union[str, None]
20
- else:
21
- VERSION_TUPLE = object
22
- COMMIT_ID = object
23
-
24
- version: str
25
- __version__: str
26
- __version_tuple__: VERSION_TUPLE
27
- version_tuple: VERSION_TUPLE
28
- commit_id: COMMIT_ID
29
- __commit_id__: COMMIT_ID
30
-
31
- __version__ = version = '0.2.6'
32
- __version_tuple__ = version_tuple = (0, 2, 6)
33
-
34
- __commit_id__ = commit_id = None
File without changes
File without changes
File without changes