ccproxy-api 0.2.2__tar.gz → 0.2.3__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.2 → ccproxy_api-0.2.3}/PKG-INFO +2 -1
  2. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/_version.py +2 -2
  3. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/storage.py +103 -8
  4. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/pyproject.toml +2 -1
  5. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/.gitignore +0 -0
  6. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/LICENSE +0 -0
  7. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/README.md +0 -0
  8. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/__main__.py +0 -0
  9. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/__init__.py +0 -0
  10. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/app.py +0 -0
  11. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/bootstrap.py +0 -0
  12. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/decorators.py +0 -0
  13. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/dependencies.py +0 -0
  14. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/format_validation.py +0 -0
  15. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/middleware/__init__.py +0 -0
  16. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/middleware/cors.py +0 -0
  17. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/middleware/errors.py +0 -0
  18. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/middleware/hooks.py +0 -0
  19. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/middleware/normalize_headers.py +0 -0
  20. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/middleware/request_id.py +0 -0
  21. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/middleware/streaming_hooks.py +0 -0
  22. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/routes/__init__.py +0 -0
  23. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/routes/health.py +0 -0
  24. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/api/routes/plugins.py +0 -0
  25. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/__init__.py +0 -0
  26. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/bearer.py +0 -0
  27. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/dependencies.py +0 -0
  28. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/exceptions.py +0 -0
  29. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/manager.py +0 -0
  30. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/managers/__init__.py +0 -0
  31. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/managers/base.py +0 -0
  32. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/managers/base_enhanced.py +0 -0
  33. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/managers/token_snapshot.py +0 -0
  34. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/models/__init__.py +0 -0
  35. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/models/base.py +0 -0
  36. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/models/credentials.py +0 -0
  37. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/__init__.py +0 -0
  38. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/base.py +0 -0
  39. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/cli_errors.py +0 -0
  40. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/flows.py +0 -0
  41. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/protocol.py +0 -0
  42. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/registry.py +0 -0
  43. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/router.py +0 -0
  44. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/routes.py +0 -0
  45. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/session.py +0 -0
  46. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/oauth/templates.py +0 -0
  47. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/storage/__init__.py +0 -0
  48. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/storage/base.py +0 -0
  49. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/auth/storage/generic.py +0 -0
  50. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/__init__.py +0 -0
  51. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/_settings_help.py +0 -0
  52. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/commands/__init__.py +0 -0
  53. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/commands/auth.py +0 -0
  54. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/commands/config/__init__.py +0 -0
  55. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/commands/config/commands.py +0 -0
  56. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/commands/config/schema_commands.py +0 -0
  57. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/commands/plugins.py +0 -0
  58. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/commands/serve.py +0 -0
  59. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/commands/status.py +0 -0
  60. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/decorators.py +0 -0
  61. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/helpers.py +0 -0
  62. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/main.py +0 -0
  63. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/options/__init__.py +0 -0
  64. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/options/claude_options.py +0 -0
  65. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/options/core_options.py +0 -0
  66. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/options/security_options.py +0 -0
  67. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/cli/options/server_options.py +0 -0
  68. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/config/__init__.py +0 -0
  69. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/config/core.py +0 -0
  70. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/config/env_generator.py +0 -0
  71. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/config/runtime.py +0 -0
  72. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/config/security.py +0 -0
  73. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/config/settings.py +0 -0
  74. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/config/toml_generator.py +0 -0
  75. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/config/utils.py +0 -0
  76. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/__init__.py +0 -0
  77. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/async_task_manager.py +0 -0
  78. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/async_utils.py +0 -0
  79. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/auth/__init__.py +0 -0
  80. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/constants.py +0 -0
  81. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/errors.py +0 -0
  82. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/id_utils.py +0 -0
  83. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/interfaces.py +0 -0
  84. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/logging.py +0 -0
  85. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/middleware.py +0 -0
  86. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/__init__.py +0 -0
  87. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/cli_discovery.py +0 -0
  88. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/declaration.py +0 -0
  89. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/discovery.py +0 -0
  90. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/factories.py +0 -0
  91. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/__init__.py +0 -0
  92. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/base.py +0 -0
  93. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/events.py +0 -0
  94. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/implementations/__init__.py +0 -0
  95. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/implementations/formatters/__init__.py +0 -0
  96. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/implementations/formatters/json.py +0 -0
  97. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/implementations/formatters/raw.py +0 -0
  98. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/implementations/http_tracer.py +0 -0
  99. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/layers.py +0 -0
  100. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/manager.py +0 -0
  101. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/registry.py +0 -0
  102. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/thread_manager.py +0 -0
  103. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/hooks/types.py +0 -0
  104. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/interfaces.py +0 -0
  105. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/loader.py +0 -0
  106. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/middleware.py +0 -0
  107. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/models.py +0 -0
  108. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/protocol.py +0 -0
  109. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/plugins/runtime.py +0 -0
  110. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/request_context.py +0 -0
  111. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/status_report.py +0 -0
  112. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/system.py +0 -0
  113. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/transformers.py +0 -0
  114. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/core/types.py +0 -0
  115. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/data/claude_headers_fallback.json +0 -0
  116. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/data/codex_headers_fallback.json +0 -0
  117. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/http/__init__.py +0 -0
  118. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/http/base.py +0 -0
  119. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/http/client.py +0 -0
  120. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/http/hooks.py +0 -0
  121. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/http/pool.py +0 -0
  122. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/__init__.py +0 -0
  123. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/anthropic_to_openai/__init__.py +0 -0
  124. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/anthropic_to_openai/_helpers.py +0 -0
  125. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/anthropic_to_openai/errors.py +0 -0
  126. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/anthropic_to_openai/requests.py +0 -0
  127. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/anthropic_to_openai/responses.py +0 -0
  128. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/anthropic_to_openai/streams.py +0 -0
  129. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/base.py +0 -0
  130. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/base_model.py +0 -0
  131. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/common/__init__.py +0 -0
  132. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/common/identifiers.py +0 -0
  133. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/common/streams.py +0 -0
  134. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/common/thinking.py +0 -0
  135. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/common/usage.py +0 -0
  136. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/constants.py +0 -0
  137. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/context.py +0 -0
  138. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/mapping.py +0 -0
  139. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_anthropic/__init__.py +0 -0
  140. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_anthropic/_helpers.py +0 -0
  141. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_anthropic/errors.py +0 -0
  142. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_anthropic/requests.py +0 -0
  143. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_anthropic/responses.py +0 -0
  144. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_anthropic/streams.py +0 -0
  145. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_openai/__init__.py +0 -0
  146. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_openai/_helpers.py +0 -0
  147. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_openai/errors.py +0 -0
  148. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_openai/requests.py +0 -0
  149. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_openai/responses.py +0 -0
  150. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/openai_to_openai/streams.py +0 -0
  151. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/formatters/utils.py +0 -0
  152. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/models/__init__.py +0 -0
  153. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/models/anthropic.py +0 -0
  154. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/models/openai.py +0 -0
  155. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/streaming/__init__.py +0 -0
  156. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/streaming/accumulators.py +0 -0
  157. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/streaming/formatters.py +0 -0
  158. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/llms/streaming/processors.py +0 -0
  159. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/models/__init__.py +0 -0
  160. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/models/detection.py +0 -0
  161. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/models/provider.py +0 -0
  162. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/access_log/README.md +0 -0
  163. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/access_log/__init__.py +0 -0
  164. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/access_log/config.py +0 -0
  165. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/access_log/formatter.py +0 -0
  166. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/access_log/hook.py +0 -0
  167. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/access_log/logger.py +0 -0
  168. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/access_log/plugin.py +0 -0
  169. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/access_log/writer.py +0 -0
  170. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/analytics/README.md +0 -0
  171. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/analytics/__init__.py +0 -0
  172. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/analytics/config.py +0 -0
  173. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/analytics/ingest.py +0 -0
  174. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/analytics/models.py +0 -0
  175. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/analytics/plugin.py +0 -0
  176. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/analytics/routes.py +0 -0
  177. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/analytics/service.py +0 -0
  178. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/README.md +0 -0
  179. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/__init__.py +0 -0
  180. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/adapter.py +0 -0
  181. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/config.py +0 -0
  182. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/detection_service.py +0 -0
  183. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/health.py +0 -0
  184. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/hooks.py +0 -0
  185. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/models.py +0 -0
  186. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/plugin.py +0 -0
  187. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/routes.py +0 -0
  188. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/streaming_metrics.py +0 -0
  189. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_api/tasks.py +0 -0
  190. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/README.md +0 -0
  191. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/__init__.py +0 -0
  192. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/adapter.py +0 -0
  193. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/auth.py +0 -0
  194. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/client.py +0 -0
  195. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/config.py +0 -0
  196. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/converter.py +0 -0
  197. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/detection_service.py +0 -0
  198. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/exceptions.py +0 -0
  199. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/handler.py +0 -0
  200. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/health.py +0 -0
  201. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/hooks.py +0 -0
  202. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/manager.py +0 -0
  203. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/message_queue.py +0 -0
  204. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/models.py +0 -0
  205. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/options.py +0 -0
  206. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/parser.py +0 -0
  207. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/plugin.py +0 -0
  208. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/routes.py +0 -0
  209. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/session_client.py +0 -0
  210. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/session_pool.py +0 -0
  211. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/stream_handle.py +0 -0
  212. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/stream_worker.py +0 -0
  213. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/streaming.py +0 -0
  214. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_sdk/tasks.py +0 -0
  215. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_shared/README.md +0 -0
  216. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_shared/__init__.py +0 -0
  217. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/claude_shared/model_defaults.py +0 -0
  218. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/README.md +0 -0
  219. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/__init__.py +0 -0
  220. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/adapter.py +0 -0
  221. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/config.py +0 -0
  222. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/detection_service.py +0 -0
  223. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/health.py +0 -0
  224. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/hooks.py +0 -0
  225. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/model_defaults.py +0 -0
  226. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/models.py +0 -0
  227. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/plugin.py +0 -0
  228. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/routes.py +0 -0
  229. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/streaming_metrics.py +0 -0
  230. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/tasks.py +0 -0
  231. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/utils/__init__.py +0 -0
  232. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/codex/utils/sse_parser.py +0 -0
  233. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/command_replay/README.md +0 -0
  234. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/command_replay/__init__.py +0 -0
  235. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/command_replay/config.py +0 -0
  236. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/command_replay/formatter.py +0 -0
  237. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/command_replay/hook.py +0 -0
  238. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/command_replay/plugin.py +0 -0
  239. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/README.md +0 -0
  240. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/__init__.py +0 -0
  241. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/adapter.py +0 -0
  242. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/config.py +0 -0
  243. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/data/copilot_fallback.json +0 -0
  244. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/detection_service.py +0 -0
  245. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/manager.py +0 -0
  246. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/model_defaults.py +0 -0
  247. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/models.py +0 -0
  248. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/oauth/__init__.py +0 -0
  249. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/oauth/client.py +0 -0
  250. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/oauth/models.py +0 -0
  251. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/oauth/provider.py +0 -0
  252. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/oauth/storage.py +0 -0
  253. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/plugin.py +0 -0
  254. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/copilot/routes.py +0 -0
  255. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/credential_balancer/README.md +0 -0
  256. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/credential_balancer/__init__.py +0 -0
  257. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/credential_balancer/config.py +0 -0
  258. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/credential_balancer/factory.py +0 -0
  259. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/credential_balancer/hook.py +0 -0
  260. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/credential_balancer/manager.py +0 -0
  261. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/credential_balancer/plugin.py +0 -0
  262. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/dashboard/README.md +0 -0
  263. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/dashboard/__init__.py +0 -0
  264. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/dashboard/config.py +0 -0
  265. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/dashboard/plugin.py +0 -0
  266. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/dashboard/routes.py +0 -0
  267. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/README.md +0 -0
  268. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/__init__.py +0 -0
  269. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/adapter.py +0 -0
  270. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/config.py +0 -0
  271. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/docker_path.py +0 -0
  272. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/middleware.py +0 -0
  273. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/models.py +0 -0
  274. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/plugin.py +0 -0
  275. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/protocol.py +0 -0
  276. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/stream_process.py +0 -0
  277. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/docker/validators.py +0 -0
  278. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/duckdb_storage/README.md +0 -0
  279. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/duckdb_storage/__init__.py +0 -0
  280. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/duckdb_storage/config.py +0 -0
  281. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/duckdb_storage/plugin.py +0 -0
  282. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/duckdb_storage/routes.py +0 -0
  283. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/duckdb_storage/storage.py +0 -0
  284. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/max_tokens/README.md +0 -0
  285. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/max_tokens/__init__.py +0 -0
  286. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/max_tokens/adapter.py +0 -0
  287. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/max_tokens/config.py +0 -0
  288. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/max_tokens/models.py +0 -0
  289. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/max_tokens/plugin.py +0 -0
  290. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/max_tokens/service.py +0 -0
  291. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/max_tokens/token_limits.json +0 -0
  292. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/README.md +0 -0
  293. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/__init__.py +0 -0
  294. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/collector.py +0 -0
  295. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/config.py +0 -0
  296. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/grafana/dashboards/ccproxy-dashboard.json +0 -0
  297. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/hook.py +0 -0
  298. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/plugin.py +0 -0
  299. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/pushgateway.py +0 -0
  300. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/routes.py +0 -0
  301. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/metrics/tasks.py +0 -0
  302. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/README.md +0 -0
  303. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/__init__.py +0 -0
  304. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/client.py +0 -0
  305. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/config.py +0 -0
  306. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/manager.py +0 -0
  307. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/models.py +0 -0
  308. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/plugin.py +0 -0
  309. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_claude/provider.py +0 -0
  310. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/README.md +0 -0
  311. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/__init__.py +0 -0
  312. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/client.py +0 -0
  313. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/config.py +0 -0
  314. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/manager.py +0 -0
  315. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/models.py +0 -0
  316. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/plugin.py +0 -0
  317. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/provider.py +0 -0
  318. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/oauth_codex/storage.py +0 -0
  319. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/README.md +0 -0
  320. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/__init__.py +0 -0
  321. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/config.py +0 -0
  322. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/handlers/__init__.py +0 -0
  323. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/handlers/cli.py +0 -0
  324. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/handlers/protocol.py +0 -0
  325. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/handlers/terminal.py +0 -0
  326. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/mcp.py +0 -0
  327. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/models.py +0 -0
  328. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/plugin.py +0 -0
  329. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/routes.py +0 -0
  330. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/service.py +0 -0
  331. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/ui/__init__.py +0 -0
  332. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/ui/permission_handler_protocol.py +0 -0
  333. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/permissions/ui/terminal_permission_handler.py +0 -0
  334. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/README.md +0 -0
  335. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/__init__.py +0 -0
  336. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/cache.py +0 -0
  337. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/config.py +0 -0
  338. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/exceptions.py +0 -0
  339. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/loader.py +0 -0
  340. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/models.py +0 -0
  341. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/plugin.py +0 -0
  342. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/service.py +0 -0
  343. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/tasks.py +0 -0
  344. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/updater.py +0 -0
  345. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/pricing/utils.py +0 -0
  346. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/request_tracer/README.md +0 -0
  347. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/request_tracer/__init__.py +0 -0
  348. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/request_tracer/config.py +0 -0
  349. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/request_tracer/hook.py +0 -0
  350. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/plugins/request_tracer/plugin.py +0 -0
  351. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/scheduler/__init__.py +0 -0
  352. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/scheduler/core.py +0 -0
  353. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/scheduler/errors.py +0 -0
  354. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/scheduler/manager.py +0 -0
  355. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/scheduler/registry.py +0 -0
  356. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/scheduler/tasks.py +0 -0
  357. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/__init__.py +0 -0
  358. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/__init__.py +0 -0
  359. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/base.py +0 -0
  360. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/chain_composer.py +0 -0
  361. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/chain_validation.py +0 -0
  362. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/chat_accumulator.py +0 -0
  363. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/delta_utils.py +0 -0
  364. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/format_adapter.py +0 -0
  365. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/format_context.py +0 -0
  366. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/format_registry.py +0 -0
  367. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/http_adapter.py +0 -0
  368. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/mock_adapter.py +0 -0
  369. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/protocols.py +0 -0
  370. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/adapters/simple_converters.py +0 -0
  371. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/auth_registry.py +0 -0
  372. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/cache/__init__.py +0 -0
  373. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/cache/response_cache.py +0 -0
  374. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/cli_detection.py +0 -0
  375. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/config/__init__.py +0 -0
  376. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/config/proxy_configuration.py +0 -0
  377. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/container.py +0 -0
  378. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/factories.py +0 -0
  379. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/handler_config.py +0 -0
  380. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/interfaces.py +0 -0
  381. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/mocking/__init__.py +0 -0
  382. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/mocking/mock_handler.py +0 -0
  383. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/tracing/__init__.py +0 -0
  384. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/tracing/interfaces.py +0 -0
  385. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/services/tracing/null_tracer.py +0 -0
  386. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/streaming/__init__.py +0 -0
  387. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/streaming/buffer.py +0 -0
  388. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/streaming/deferred.py +0 -0
  389. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/streaming/handler.py +0 -0
  390. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/streaming/interfaces.py +0 -0
  391. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/streaming/simple_adapter.py +0 -0
  392. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/streaming/sse.py +0 -0
  393. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/streaming/sse_parser.py +0 -0
  394. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/templates/__init__.py +0 -0
  395. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/templates/plugin_scaffold.py +0 -0
  396. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/__init__.py +0 -0
  397. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/config.py +0 -0
  398. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/content_generation.py +0 -0
  399. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/endpoints/__init__.py +0 -0
  400. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/endpoints/cli.py +0 -0
  401. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/endpoints/config.py +0 -0
  402. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/endpoints/console.py +0 -0
  403. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/endpoints/models.py +0 -0
  404. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/endpoints/runner.py +0 -0
  405. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/endpoints/tools.py +0 -0
  406. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/mock_responses.py +0 -0
  407. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/response_handlers.py +0 -0
  408. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/testing/scenarios.py +0 -0
  409. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/__init__.py +0 -0
  410. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/binary_resolver.py +0 -0
  411. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/caching.py +0 -0
  412. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/cli_logging.py +0 -0
  413. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/command_line.py +0 -0
  414. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/headers.py +0 -0
  415. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/id_generator.py +0 -0
  416. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/model_mapper.py +0 -0
  417. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/startup_helpers.py +0 -0
  418. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/ccproxy/utils/version_checker.py +0 -0
  419. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/examples/README.md +0 -0
  420. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/tests/factories/README.md +0 -0
  421. {ccproxy_api-0.2.2 → ccproxy_api-0.2.3}/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.2
3
+ Version: 0.2.3
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
@@ -20,6 +20,7 @@ Requires-Dist: typing-extensions>=4.0.0
20
20
  Requires-Dist: uvicorn>=0.34.0
21
21
  Provides-Extra: plugins-claude
22
22
  Requires-Dist: claude-agent-sdk>=0.1.0; extra == 'plugins-claude'
23
+ Requires-Dist: keyring>=25.0.0; extra == 'plugins-claude'
23
24
  Requires-Dist: qrcode>=8.2; extra == 'plugins-claude'
24
25
  Provides-Extra: plugins-codex
25
26
  Requires-Dist: pyjwt>=2.10.1; extra == 'plugins-codex'
@@ -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.2'
32
- __version_tuple__ = version_tuple = (0, 2, 2)
31
+ __version__ = version = '0.2.3'
32
+ __version_tuple__ = version_tuple = (0, 2, 3)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -15,6 +15,77 @@ from .models import ClaudeCredentials, ClaudeProfileInfo
15
15
  logger = get_plugin_logger()
16
16
 
17
17
 
18
+ # Keychain service name used by Claude Code
19
+ KEYCHAIN_SERVICE = "Claude Code"
20
+ KEYCHAIN_ACCOUNT = "credentials"
21
+
22
+
23
+ def _is_keyring_available() -> bool:
24
+ """Check if keyring library is available."""
25
+ try:
26
+ import keyring # noqa: F401
27
+
28
+ return True
29
+ except ImportError:
30
+ return False
31
+
32
+
33
+ async def _read_from_keychain() -> dict[str, Any] | None:
34
+ """Read Claude credentials from system keychain.
35
+
36
+ Claude Code stores OAuth credentials in the system keychain and intentionally
37
+ deletes the plain text ~/.claude/.credentials.json file for security.
38
+ See: https://github.com/anthropics/claude-code/issues/1414
39
+
40
+ Uses the keyring library which supports:
41
+ - macOS Keychain
42
+ - Windows Credential Manager
43
+ - Linux Secret Service (GNOME Keyring, KDE Wallet)
44
+
45
+ Returns:
46
+ Parsed credentials dict or None if not found or keyring unavailable
47
+ """
48
+ if not _is_keyring_available():
49
+ logger.debug(
50
+ "keyring_not_available",
51
+ hint="Install keyring package for system keychain support",
52
+ category="auth",
53
+ )
54
+ return None
55
+
56
+ def read_keychain() -> dict[str, Any] | None:
57
+ try:
58
+ import keyring
59
+
60
+ password = keyring.get_password(KEYCHAIN_SERVICE, KEYCHAIN_ACCOUNT)
61
+ if password:
62
+ parsed = json.loads(password)
63
+ if isinstance(parsed, dict):
64
+ return parsed
65
+ logger.debug(
66
+ "keychain_invalid_format",
67
+ expected="dict",
68
+ got=type(parsed).__name__,
69
+ category="auth",
70
+ )
71
+ except json.JSONDecodeError as e:
72
+ logger.debug(
73
+ "keychain_json_decode_error",
74
+ error=str(e),
75
+ category="auth",
76
+ )
77
+ except Exception as e:
78
+ logger.debug(
79
+ "keychain_read_error",
80
+ error=str(e),
81
+ error_type=type(e).__name__,
82
+ category="auth",
83
+ )
84
+ return None
85
+
86
+ return await asyncio.to_thread(read_keychain)
87
+
88
+
18
89
  class ClaudeOAuthStorage(BaseJsonStorage[ClaudeCredentials]):
19
90
  """Claude OAuth-specific token storage implementation."""
20
91
 
@@ -61,24 +132,48 @@ class ClaudeOAuthStorage(BaseJsonStorage[ClaudeCredentials]):
61
132
  return False
62
133
 
63
134
  async def load(self) -> ClaudeCredentials | None:
64
- """Load Claude credentials.
135
+ """Load Claude credentials from file or system keychain.
136
+
137
+ Claude Code stores credentials in the system keychain and intentionally
138
+ deletes the plain text file for security. This method tries file first,
139
+ then falls back to the system keychain (macOS Keychain, Windows Credential
140
+ Manager, or Linux Secret Service).
65
141
 
66
142
  Returns:
67
143
  Stored credentials or None
68
144
  """
69
145
  try:
70
- # Use parent class's read method
146
+ # Try file first (works on all platforms, manual setups)
71
147
  data = await self._read_json()
72
- if not data:
73
- return None
148
+ if data:
149
+ credentials = ClaudeCredentials.model_validate(data)
150
+ logger.debug(
151
+ "claude_oauth_credentials_loaded",
152
+ has_oauth=bool(credentials.claude_ai_oauth),
153
+ source="file",
154
+ category="auth",
155
+ )
156
+ return credentials
157
+
158
+ # Fallback to system keychain (where Claude Code stores credentials)
159
+ keychain_data = await _read_from_keychain()
160
+ if keychain_data:
161
+ credentials = ClaudeCredentials.model_validate(keychain_data)
162
+ logger.debug(
163
+ "claude_oauth_credentials_loaded",
164
+ has_oauth=bool(credentials.claude_ai_oauth),
165
+ source="keychain",
166
+ category="auth",
167
+ )
168
+ return credentials
74
169
 
75
- credentials = ClaudeCredentials.model_validate(data)
76
170
  logger.debug(
77
- "claude_oauth_credentials_loaded",
78
- has_oauth=bool(credentials.claude_ai_oauth),
171
+ "claude_oauth_credentials_not_found",
172
+ checked_file=str(self.file_path),
173
+ checked_keychain=_is_keyring_available(),
79
174
  category="auth",
80
175
  )
81
- return credentials
176
+ return None
82
177
  except Exception as e:
83
178
  logger.error(
84
179
  "claude_oauth_credentials_load_error",
@@ -92,10 +92,11 @@ dev = [
92
92
  "bandit",
93
93
  "types-aiofiles>=24.0.0",
94
94
  "types-PyYAML>=6.0.12.12",
95
+ "keyring>=25.0.0",
95
96
  ]
96
97
 
97
98
  [project.optional-dependencies]
98
- plugins-claude = ["claude-agent-sdk>=0.1.0", "qrcode>=8.2"]
99
+ plugins-claude = ["claude-agent-sdk>=0.1.0", "qrcode>=8.2", "keyring>=25.0.0"]
99
100
  plugins-codex = ["qrcode>=8.2", "pyjwt>=2.10.1"]
100
101
  plugins-storage = [
101
102
  "sqlmodel>=0.0.24",
File without changes
File without changes
File without changes