ccproxy-api 0.2.0a4__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (421) hide show
  1. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/PKG-INFO +3 -3
  2. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/README.md +2 -2
  3. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/_version.py +2 -2
  4. ccproxy_api-0.2.2/ccproxy/llms/formatters/anthropic_to_openai/_helpers.py +44 -0
  5. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/anthropic_to_openai/responses.py +19 -2
  6. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/anthropic_to_openai/streams.py +9 -17
  7. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/adapter.py +5 -0
  8. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/.gitignore +0 -0
  9. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/LICENSE +0 -0
  10. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/__main__.py +0 -0
  11. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/__init__.py +0 -0
  12. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/app.py +0 -0
  13. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/bootstrap.py +0 -0
  14. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/decorators.py +0 -0
  15. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/dependencies.py +0 -0
  16. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/format_validation.py +0 -0
  17. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/middleware/__init__.py +0 -0
  18. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/middleware/cors.py +0 -0
  19. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/middleware/errors.py +0 -0
  20. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/middleware/hooks.py +0 -0
  21. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/middleware/normalize_headers.py +0 -0
  22. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/middleware/request_id.py +0 -0
  23. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/middleware/streaming_hooks.py +0 -0
  24. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/routes/__init__.py +0 -0
  25. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/routes/health.py +0 -0
  26. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/api/routes/plugins.py +0 -0
  27. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/__init__.py +0 -0
  28. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/bearer.py +0 -0
  29. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/dependencies.py +0 -0
  30. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/exceptions.py +0 -0
  31. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/manager.py +0 -0
  32. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/managers/__init__.py +0 -0
  33. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/managers/base.py +0 -0
  34. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/managers/base_enhanced.py +0 -0
  35. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/managers/token_snapshot.py +0 -0
  36. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/models/__init__.py +0 -0
  37. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/models/base.py +0 -0
  38. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/models/credentials.py +0 -0
  39. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/__init__.py +0 -0
  40. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/base.py +0 -0
  41. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/cli_errors.py +0 -0
  42. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/flows.py +0 -0
  43. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/protocol.py +0 -0
  44. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/registry.py +0 -0
  45. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/router.py +0 -0
  46. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/routes.py +0 -0
  47. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/session.py +0 -0
  48. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/oauth/templates.py +0 -0
  49. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/storage/__init__.py +0 -0
  50. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/storage/base.py +0 -0
  51. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/auth/storage/generic.py +0 -0
  52. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/__init__.py +0 -0
  53. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/_settings_help.py +0 -0
  54. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/commands/__init__.py +0 -0
  55. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/commands/auth.py +0 -0
  56. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/commands/config/__init__.py +0 -0
  57. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/commands/config/commands.py +0 -0
  58. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/commands/config/schema_commands.py +0 -0
  59. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/commands/plugins.py +0 -0
  60. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/commands/serve.py +0 -0
  61. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/commands/status.py +0 -0
  62. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/decorators.py +0 -0
  63. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/helpers.py +0 -0
  64. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/main.py +0 -0
  65. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/options/__init__.py +0 -0
  66. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/options/claude_options.py +0 -0
  67. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/options/core_options.py +0 -0
  68. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/options/security_options.py +0 -0
  69. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/cli/options/server_options.py +0 -0
  70. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/config/__init__.py +0 -0
  71. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/config/core.py +0 -0
  72. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/config/env_generator.py +0 -0
  73. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/config/runtime.py +0 -0
  74. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/config/security.py +0 -0
  75. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/config/settings.py +0 -0
  76. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/config/toml_generator.py +0 -0
  77. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/config/utils.py +0 -0
  78. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/__init__.py +0 -0
  79. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/async_task_manager.py +0 -0
  80. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/async_utils.py +0 -0
  81. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/auth/__init__.py +0 -0
  82. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/constants.py +0 -0
  83. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/errors.py +0 -0
  84. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/id_utils.py +0 -0
  85. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/interfaces.py +0 -0
  86. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/logging.py +0 -0
  87. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/middleware.py +0 -0
  88. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/__init__.py +0 -0
  89. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/cli_discovery.py +0 -0
  90. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/declaration.py +0 -0
  91. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/discovery.py +0 -0
  92. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/factories.py +0 -0
  93. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/__init__.py +0 -0
  94. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/base.py +0 -0
  95. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/events.py +0 -0
  96. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/implementations/__init__.py +0 -0
  97. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/implementations/formatters/__init__.py +0 -0
  98. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/implementations/formatters/json.py +0 -0
  99. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/implementations/formatters/raw.py +0 -0
  100. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/implementations/http_tracer.py +0 -0
  101. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/layers.py +0 -0
  102. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/manager.py +0 -0
  103. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/registry.py +0 -0
  104. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/thread_manager.py +0 -0
  105. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/hooks/types.py +0 -0
  106. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/interfaces.py +0 -0
  107. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/loader.py +0 -0
  108. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/middleware.py +0 -0
  109. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/models.py +0 -0
  110. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/protocol.py +0 -0
  111. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/plugins/runtime.py +0 -0
  112. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/request_context.py +0 -0
  113. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/status_report.py +0 -0
  114. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/system.py +0 -0
  115. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/transformers.py +0 -0
  116. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/core/types.py +0 -0
  117. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/data/claude_headers_fallback.json +0 -0
  118. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/data/codex_headers_fallback.json +0 -0
  119. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/http/__init__.py +0 -0
  120. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/http/base.py +0 -0
  121. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/http/client.py +0 -0
  122. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/http/hooks.py +0 -0
  123. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/http/pool.py +0 -0
  124. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/__init__.py +0 -0
  125. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/anthropic_to_openai/__init__.py +0 -0
  126. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/anthropic_to_openai/errors.py +0 -0
  127. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/anthropic_to_openai/requests.py +0 -0
  128. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/base.py +0 -0
  129. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/base_model.py +0 -0
  130. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/common/__init__.py +0 -0
  131. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/common/identifiers.py +0 -0
  132. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/common/streams.py +0 -0
  133. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/common/thinking.py +0 -0
  134. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/common/usage.py +0 -0
  135. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/constants.py +0 -0
  136. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/context.py +0 -0
  137. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/mapping.py +0 -0
  138. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_anthropic/__init__.py +0 -0
  139. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_anthropic/_helpers.py +0 -0
  140. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_anthropic/errors.py +0 -0
  141. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_anthropic/requests.py +0 -0
  142. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_anthropic/responses.py +0 -0
  143. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_anthropic/streams.py +0 -0
  144. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_openai/__init__.py +0 -0
  145. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_openai/_helpers.py +0 -0
  146. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_openai/errors.py +0 -0
  147. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_openai/requests.py +0 -0
  148. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_openai/responses.py +0 -0
  149. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/openai_to_openai/streams.py +0 -0
  150. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/formatters/utils.py +0 -0
  151. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/models/__init__.py +0 -0
  152. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/models/anthropic.py +0 -0
  153. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/models/openai.py +0 -0
  154. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/streaming/__init__.py +0 -0
  155. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/streaming/accumulators.py +0 -0
  156. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/streaming/formatters.py +0 -0
  157. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/llms/streaming/processors.py +0 -0
  158. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/models/__init__.py +0 -0
  159. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/models/detection.py +0 -0
  160. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/models/provider.py +0 -0
  161. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/access_log/README.md +0 -0
  162. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/access_log/__init__.py +0 -0
  163. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/access_log/config.py +0 -0
  164. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/access_log/formatter.py +0 -0
  165. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/access_log/hook.py +0 -0
  166. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/access_log/logger.py +0 -0
  167. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/access_log/plugin.py +0 -0
  168. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/access_log/writer.py +0 -0
  169. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/analytics/README.md +0 -0
  170. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/analytics/__init__.py +0 -0
  171. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/analytics/config.py +0 -0
  172. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/analytics/ingest.py +0 -0
  173. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/analytics/models.py +0 -0
  174. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/analytics/plugin.py +0 -0
  175. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/analytics/routes.py +0 -0
  176. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/analytics/service.py +0 -0
  177. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/README.md +0 -0
  178. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/__init__.py +0 -0
  179. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/config.py +0 -0
  180. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/detection_service.py +0 -0
  181. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/health.py +0 -0
  182. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/hooks.py +0 -0
  183. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/models.py +0 -0
  184. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/plugin.py +0 -0
  185. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/routes.py +0 -0
  186. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/streaming_metrics.py +0 -0
  187. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_api/tasks.py +0 -0
  188. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/README.md +0 -0
  189. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/__init__.py +0 -0
  190. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/adapter.py +0 -0
  191. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/auth.py +0 -0
  192. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/client.py +0 -0
  193. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/config.py +0 -0
  194. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/converter.py +0 -0
  195. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/detection_service.py +0 -0
  196. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/exceptions.py +0 -0
  197. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/handler.py +0 -0
  198. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/health.py +0 -0
  199. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/hooks.py +0 -0
  200. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/manager.py +0 -0
  201. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/message_queue.py +0 -0
  202. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/models.py +0 -0
  203. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/options.py +0 -0
  204. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/parser.py +0 -0
  205. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/plugin.py +0 -0
  206. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/routes.py +0 -0
  207. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/session_client.py +0 -0
  208. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/session_pool.py +0 -0
  209. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/stream_handle.py +0 -0
  210. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/stream_worker.py +0 -0
  211. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/streaming.py +0 -0
  212. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_sdk/tasks.py +0 -0
  213. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_shared/README.md +0 -0
  214. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_shared/__init__.py +0 -0
  215. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/claude_shared/model_defaults.py +0 -0
  216. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/README.md +0 -0
  217. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/__init__.py +0 -0
  218. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/adapter.py +0 -0
  219. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/config.py +0 -0
  220. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/detection_service.py +0 -0
  221. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/health.py +0 -0
  222. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/hooks.py +0 -0
  223. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/model_defaults.py +0 -0
  224. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/models.py +0 -0
  225. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/plugin.py +0 -0
  226. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/routes.py +0 -0
  227. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/streaming_metrics.py +0 -0
  228. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/tasks.py +0 -0
  229. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/utils/__init__.py +0 -0
  230. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/codex/utils/sse_parser.py +0 -0
  231. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/command_replay/README.md +0 -0
  232. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/command_replay/__init__.py +0 -0
  233. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/command_replay/config.py +0 -0
  234. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/command_replay/formatter.py +0 -0
  235. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/command_replay/hook.py +0 -0
  236. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/command_replay/plugin.py +0 -0
  237. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/README.md +0 -0
  238. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/__init__.py +0 -0
  239. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/adapter.py +0 -0
  240. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/config.py +0 -0
  241. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/data/copilot_fallback.json +0 -0
  242. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/detection_service.py +0 -0
  243. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/manager.py +0 -0
  244. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/model_defaults.py +0 -0
  245. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/models.py +0 -0
  246. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/oauth/__init__.py +0 -0
  247. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/oauth/client.py +0 -0
  248. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/oauth/models.py +0 -0
  249. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/oauth/provider.py +0 -0
  250. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/oauth/storage.py +0 -0
  251. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/plugin.py +0 -0
  252. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/copilot/routes.py +0 -0
  253. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/credential_balancer/README.md +0 -0
  254. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/credential_balancer/__init__.py +0 -0
  255. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/credential_balancer/config.py +0 -0
  256. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/credential_balancer/factory.py +0 -0
  257. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/credential_balancer/hook.py +0 -0
  258. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/credential_balancer/manager.py +0 -0
  259. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/credential_balancer/plugin.py +0 -0
  260. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/dashboard/README.md +0 -0
  261. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/dashboard/__init__.py +0 -0
  262. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/dashboard/config.py +0 -0
  263. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/dashboard/plugin.py +0 -0
  264. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/dashboard/routes.py +0 -0
  265. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/README.md +0 -0
  266. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/__init__.py +0 -0
  267. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/adapter.py +0 -0
  268. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/config.py +0 -0
  269. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/docker_path.py +0 -0
  270. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/middleware.py +0 -0
  271. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/models.py +0 -0
  272. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/plugin.py +0 -0
  273. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/protocol.py +0 -0
  274. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/stream_process.py +0 -0
  275. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/docker/validators.py +0 -0
  276. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/duckdb_storage/README.md +0 -0
  277. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/duckdb_storage/__init__.py +0 -0
  278. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/duckdb_storage/config.py +0 -0
  279. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/duckdb_storage/plugin.py +0 -0
  280. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/duckdb_storage/routes.py +0 -0
  281. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/duckdb_storage/storage.py +0 -0
  282. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/max_tokens/README.md +0 -0
  283. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/max_tokens/__init__.py +0 -0
  284. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/max_tokens/adapter.py +0 -0
  285. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/max_tokens/config.py +0 -0
  286. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/max_tokens/models.py +0 -0
  287. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/max_tokens/plugin.py +0 -0
  288. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/max_tokens/service.py +0 -0
  289. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/max_tokens/token_limits.json +0 -0
  290. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/README.md +0 -0
  291. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/__init__.py +0 -0
  292. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/collector.py +0 -0
  293. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/config.py +0 -0
  294. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/grafana/dashboards/ccproxy-dashboard.json +0 -0
  295. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/hook.py +0 -0
  296. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/plugin.py +0 -0
  297. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/pushgateway.py +0 -0
  298. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/routes.py +0 -0
  299. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/metrics/tasks.py +0 -0
  300. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/README.md +0 -0
  301. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/__init__.py +0 -0
  302. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/client.py +0 -0
  303. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/config.py +0 -0
  304. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/manager.py +0 -0
  305. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/models.py +0 -0
  306. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/plugin.py +0 -0
  307. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/provider.py +0 -0
  308. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_claude/storage.py +0 -0
  309. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/README.md +0 -0
  310. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/__init__.py +0 -0
  311. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/client.py +0 -0
  312. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/config.py +0 -0
  313. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/manager.py +0 -0
  314. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/models.py +0 -0
  315. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/plugin.py +0 -0
  316. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/provider.py +0 -0
  317. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/oauth_codex/storage.py +0 -0
  318. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/README.md +0 -0
  319. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/__init__.py +0 -0
  320. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/config.py +0 -0
  321. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/handlers/__init__.py +0 -0
  322. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/handlers/cli.py +0 -0
  323. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/handlers/protocol.py +0 -0
  324. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/handlers/terminal.py +0 -0
  325. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/mcp.py +0 -0
  326. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/models.py +0 -0
  327. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/plugin.py +0 -0
  328. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/routes.py +0 -0
  329. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/service.py +0 -0
  330. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/ui/__init__.py +0 -0
  331. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/ui/permission_handler_protocol.py +0 -0
  332. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/permissions/ui/terminal_permission_handler.py +0 -0
  333. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/README.md +0 -0
  334. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/__init__.py +0 -0
  335. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/cache.py +0 -0
  336. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/config.py +0 -0
  337. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/exceptions.py +0 -0
  338. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/loader.py +0 -0
  339. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/models.py +0 -0
  340. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/plugin.py +0 -0
  341. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/service.py +0 -0
  342. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/tasks.py +0 -0
  343. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/updater.py +0 -0
  344. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/pricing/utils.py +0 -0
  345. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/request_tracer/README.md +0 -0
  346. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/request_tracer/__init__.py +0 -0
  347. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/request_tracer/config.py +0 -0
  348. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/request_tracer/hook.py +0 -0
  349. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/plugins/request_tracer/plugin.py +0 -0
  350. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/scheduler/__init__.py +0 -0
  351. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/scheduler/core.py +0 -0
  352. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/scheduler/errors.py +0 -0
  353. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/scheduler/manager.py +0 -0
  354. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/scheduler/registry.py +0 -0
  355. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/scheduler/tasks.py +0 -0
  356. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/__init__.py +0 -0
  357. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/__init__.py +0 -0
  358. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/base.py +0 -0
  359. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/chain_composer.py +0 -0
  360. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/chain_validation.py +0 -0
  361. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/chat_accumulator.py +0 -0
  362. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/delta_utils.py +0 -0
  363. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/format_adapter.py +0 -0
  364. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/format_context.py +0 -0
  365. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/format_registry.py +0 -0
  366. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/http_adapter.py +0 -0
  367. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/mock_adapter.py +0 -0
  368. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/protocols.py +0 -0
  369. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/adapters/simple_converters.py +0 -0
  370. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/auth_registry.py +0 -0
  371. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/cache/__init__.py +0 -0
  372. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/cache/response_cache.py +0 -0
  373. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/cli_detection.py +0 -0
  374. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/config/__init__.py +0 -0
  375. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/config/proxy_configuration.py +0 -0
  376. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/container.py +0 -0
  377. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/factories.py +0 -0
  378. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/handler_config.py +0 -0
  379. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/interfaces.py +0 -0
  380. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/mocking/__init__.py +0 -0
  381. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/mocking/mock_handler.py +0 -0
  382. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/tracing/__init__.py +0 -0
  383. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/tracing/interfaces.py +0 -0
  384. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/services/tracing/null_tracer.py +0 -0
  385. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/streaming/__init__.py +0 -0
  386. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/streaming/buffer.py +0 -0
  387. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/streaming/deferred.py +0 -0
  388. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/streaming/handler.py +0 -0
  389. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/streaming/interfaces.py +0 -0
  390. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/streaming/simple_adapter.py +0 -0
  391. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/streaming/sse.py +0 -0
  392. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/streaming/sse_parser.py +0 -0
  393. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/templates/__init__.py +0 -0
  394. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/templates/plugin_scaffold.py +0 -0
  395. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/__init__.py +0 -0
  396. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/config.py +0 -0
  397. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/content_generation.py +0 -0
  398. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/endpoints/__init__.py +0 -0
  399. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/endpoints/cli.py +0 -0
  400. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/endpoints/config.py +0 -0
  401. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/endpoints/console.py +0 -0
  402. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/endpoints/models.py +0 -0
  403. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/endpoints/runner.py +0 -0
  404. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/endpoints/tools.py +0 -0
  405. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/mock_responses.py +0 -0
  406. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/response_handlers.py +0 -0
  407. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/testing/scenarios.py +0 -0
  408. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/__init__.py +0 -0
  409. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/binary_resolver.py +0 -0
  410. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/caching.py +0 -0
  411. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/cli_logging.py +0 -0
  412. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/command_line.py +0 -0
  413. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/headers.py +0 -0
  414. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/id_generator.py +0 -0
  415. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/model_mapper.py +0 -0
  416. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/startup_helpers.py +0 -0
  417. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/ccproxy/utils/version_checker.py +0 -0
  418. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/examples/README.md +0 -0
  419. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/pyproject.toml +0 -0
  420. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/tests/factories/README.md +0 -0
  421. {ccproxy_api-0.2.0a4 → ccproxy_api-0.2.2}/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.0a4
3
+ Version: 0.2.2
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
@@ -196,14 +196,14 @@ To install the latest stable release without cloning the repository, use `uvx`
196
196
  to grab the published wheel and launch the CLI:
197
197
 
198
198
  ```bash
199
- uvx --with "ccproxy-api[all]==0.2.0" ccproxy serve --port 8000
199
+ uvx --with "ccproxy-api[all]" ccproxy serve --port 8000
200
200
  ```
201
201
 
202
202
  If you prefer `pipx`, install the package (optionally with extras) and use the
203
203
  local shim:
204
204
 
205
205
  ```bash
206
- pipx install "ccproxy-api[all]==0.2.0"
206
+ pipx install "ccproxy-api[all]"
207
207
  ccproxy serve # default on localhost:8000
208
208
  ```
209
209
 
@@ -156,14 +156,14 @@ To install the latest stable release without cloning the repository, use `uvx`
156
156
  to grab the published wheel and launch the CLI:
157
157
 
158
158
  ```bash
159
- uvx --with "ccproxy-api[all]==0.2.0" ccproxy serve --port 8000
159
+ uvx --with "ccproxy-api[all]" ccproxy serve --port 8000
160
160
  ```
161
161
 
162
162
  If you prefer `pipx`, install the package (optionally with extras) and use the
163
163
  local shim:
164
164
 
165
165
  ```bash
166
- pipx install "ccproxy-api[all]==0.2.0"
166
+ pipx install "ccproxy-api[all]"
167
167
  ccproxy serve # default on localhost:8000
168
168
  ```
169
169
 
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.2.0a4'
32
- __version_tuple__ = version_tuple = (0, 2, 0, 'a4')
31
+ __version__ = version = '0.2.2'
32
+ __version_tuple__ = version_tuple = (0, 2, 2)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -0,0 +1,44 @@
1
+ """Shared helpers for Anthropic to OpenAI formatting."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import json
6
+ from typing import Any
7
+
8
+ from ccproxy.llms.models import openai as openai_models
9
+
10
+
11
+ def serialize_tool_arguments(tool_input: Any) -> str:
12
+ if isinstance(tool_input, str):
13
+ return tool_input
14
+ try:
15
+ return json.dumps(tool_input, ensure_ascii=False)
16
+ except Exception:
17
+ return json.dumps({"arguments": str(tool_input)})
18
+
19
+
20
+ def build_openai_tool_call(
21
+ *,
22
+ tool_id: str | None,
23
+ tool_name: str | None,
24
+ tool_input: Any,
25
+ arguments: Any = None,
26
+ fallback_index: int = 0,
27
+ ) -> openai_models.ToolCall:
28
+ args_str = (
29
+ arguments
30
+ if isinstance(arguments, str) and arguments
31
+ else serialize_tool_arguments(tool_input)
32
+ )
33
+ call_id = (
34
+ tool_id if isinstance(tool_id, str) and tool_id else f"call_{fallback_index}"
35
+ )
36
+ name = tool_name if isinstance(tool_name, str) and tool_name else "function"
37
+
38
+ return openai_models.ToolCall(
39
+ id=str(call_id),
40
+ function=openai_models.FunctionCall(
41
+ name=str(name),
42
+ arguments=str(args_str),
43
+ ),
44
+ )
@@ -14,6 +14,8 @@ from ccproxy.llms.formatters.constants import ANTHROPIC_TO_OPENAI_FINISH_REASON
14
14
  from ccproxy.llms.models import anthropic as anthropic_models
15
15
  from ccproxy.llms.models import openai as openai_models
16
16
 
17
+ from ._helpers import build_openai_tool_call
18
+
17
19
 
18
20
  logger = ccproxy.core.logging.get_logger(__name__)
19
21
 
@@ -101,6 +103,8 @@ def convert__anthropic_message_to_openai_chat__response(
101
103
  """Convert Anthropic MessageResponse to an OpenAI ChatCompletionResponse."""
102
104
  content_blocks = response.content
103
105
  parts: list[str] = []
106
+ tool_calls: list[openai_models.ToolCall] = []
107
+
104
108
  for block in content_blocks:
105
109
  btype = getattr(block, "type", None)
106
110
  if btype == "text":
@@ -117,8 +121,17 @@ def convert__anthropic_message_to_openai_chat__response(
117
121
  else ""
118
122
  )
119
123
  parts.append(f"<thinking{sig_attr}>{thinking}</thinking>")
124
+ elif btype == "tool_use":
125
+ tool_calls.append(
126
+ build_openai_tool_call(
127
+ tool_id=getattr(block, "id", None),
128
+ tool_name=getattr(block, "name", None),
129
+ tool_input=getattr(block, "input", {}) or {},
130
+ fallback_index=len(tool_calls),
131
+ )
132
+ )
120
133
 
121
- content_text = "".join(parts)
134
+ content_text = "".join(parts) if parts else None
122
135
 
123
136
  stop_reason = response.stop_reason
124
137
  finish_reason = ANTHROPIC_TO_OPENAI_FINISH_REASON.get(
@@ -127,12 +140,16 @@ def convert__anthropic_message_to_openai_chat__response(
127
140
 
128
141
  usage_model = convert__anthropic_usage_to_openai_completion__usage(response.usage)
129
142
 
143
+ message_dict: dict[str, Any] = {"role": "assistant", "content": content_text}
144
+ if tool_calls:
145
+ message_dict["tool_calls"] = [call.model_dump() for call in tool_calls]
146
+
130
147
  payload = {
131
148
  "id": response.id,
132
149
  "choices": [
133
150
  {
134
151
  "index": 0,
135
- "message": {"role": "assistant", "content": content_text},
152
+ "message": message_dict,
136
153
  "finish_reason": finish_reason,
137
154
  }
138
155
  ],
@@ -27,10 +27,9 @@ from ccproxy.llms.models import anthropic as anthropic_models
27
27
  from ccproxy.llms.models import openai as openai_models
28
28
  from ccproxy.llms.streaming.accumulators import ClaudeAccumulator
29
29
 
30
+ from ._helpers import build_openai_tool_call
30
31
  from .requests import _build_responses_payload_from_anthropic_request
31
- from .responses import (
32
- convert__anthropic_usage_to_openai_responses__usage,
33
- )
32
+ from .responses import convert__anthropic_usage_to_openai_responses__usage
34
33
 
35
34
 
36
35
  logger = ccproxy.core.logging.get_logger(__name__)
@@ -100,22 +99,15 @@ def _build_openai_tool_call(
100
99
  function_payload = (
101
100
  tool_call.get("function", {}) if isinstance(tool_call, dict) else {}
102
101
  )
103
- name = function_payload.get("name") or tool_call.get("name") or "function"
102
+ tool_name = function_payload.get("name") or tool_call.get("name")
104
103
  arguments = function_payload.get("arguments")
105
- if not isinstance(arguments, str) or not arguments:
106
- try:
107
- arguments = json.dumps(tool_call.get("input", {}), ensure_ascii=False)
108
- except Exception:
109
- arguments = json.dumps(tool_call.get("input", {}))
110
-
111
- tool_id = tool_call.get("id") or f"call_{block_index}"
112
104
 
113
- return openai_models.ToolCall(
114
- id=str(tool_id),
115
- function=openai_models.FunctionCall(
116
- name=str(name),
117
- arguments=str(arguments),
118
- ),
105
+ return build_openai_tool_call(
106
+ tool_id=tool_call.get("id"),
107
+ tool_name=tool_name,
108
+ tool_input=tool_call.get("input", {}),
109
+ arguments=arguments,
110
+ fallback_index=block_index,
119
111
  )
120
112
 
121
113
  return None
@@ -85,6 +85,11 @@ class ClaudeAPIAdapter(BaseHTTPAdapter):
85
85
  # Always set Authorization from OAuth-managed access token
86
86
  filtered_headers["authorization"] = f"Bearer {token_value}"
87
87
 
88
+ # PATCH: Add Computer Use beta headers for Anthropic API
89
+ # These are required for browser automation tools to work
90
+ filtered_headers["anthropic-version"] = "2023-06-01"
91
+ filtered_headers["anthropic-beta"] = "computer-use-2025-01-24"
92
+
88
93
  # Add CLI headers if available, but never allow overriding auth
89
94
  cli_headers = self._collect_cli_headers()
90
95
  if cli_headers:
File without changes
File without changes