@revenium/openai 1.0.12 → 1.0.14

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 (236) hide show
  1. package/.env.example +10 -15
  2. package/CHANGELOG.md +59 -0
  3. package/CODE_OF_CONDUCT.md +57 -0
  4. package/CONTRIBUTING.md +38 -0
  5. package/README.md +109 -515
  6. package/SECURITY.md +34 -0
  7. package/dist/cjs/core/client/index.js +14 -0
  8. package/dist/cjs/core/client/index.js.map +1 -0
  9. package/dist/cjs/core/client/manager.js +109 -0
  10. package/dist/cjs/core/client/manager.js.map +1 -0
  11. package/dist/cjs/core/config/azure-config.js +5 -17
  12. package/dist/cjs/core/config/azure-config.js.map +1 -1
  13. package/dist/cjs/core/config/index.js +2 -2
  14. package/dist/cjs/core/config/index.js.map +1 -1
  15. package/dist/cjs/core/config/loader.js +34 -14
  16. package/dist/cjs/core/config/loader.js.map +1 -1
  17. package/dist/cjs/core/config/manager.js +12 -5
  18. package/dist/cjs/core/config/manager.js.map +1 -1
  19. package/dist/cjs/core/config/validator.js +3 -45
  20. package/dist/cjs/core/config/validator.js.map +1 -1
  21. package/dist/cjs/core/middleware/index.js +17 -0
  22. package/dist/cjs/core/middleware/index.js.map +1 -0
  23. package/dist/cjs/core/middleware/interfaces.js +361 -0
  24. package/dist/cjs/core/middleware/interfaces.js.map +1 -0
  25. package/dist/cjs/core/middleware/revenium-client.js +142 -0
  26. package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
  27. package/dist/cjs/core/providers/detector.js +45 -23
  28. package/dist/cjs/core/providers/detector.js.map +1 -1
  29. package/dist/cjs/core/providers/index.js +2 -1
  30. package/dist/cjs/core/providers/index.js.map +1 -1
  31. package/dist/cjs/core/tracking/api-client.js +14 -13
  32. package/dist/cjs/core/tracking/api-client.js.map +1 -1
  33. package/dist/cjs/core/tracking/payload-builder.js +30 -35
  34. package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
  35. package/dist/cjs/core/tracking/usage-tracker.js +22 -18
  36. package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
  37. package/dist/cjs/index.js +26 -174
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/types/index.js +0 -8
  40. package/dist/cjs/types/index.js.map +1 -1
  41. package/dist/cjs/types/openai-augmentation.js +0 -49
  42. package/dist/cjs/types/openai-augmentation.js.map +1 -1
  43. package/dist/cjs/utils/constants.js +17 -20
  44. package/dist/cjs/utils/constants.js.map +1 -1
  45. package/dist/cjs/utils/error-handler.js +18 -14
  46. package/dist/cjs/utils/error-handler.js.map +1 -1
  47. package/dist/cjs/utils/metadata-builder.js +27 -19
  48. package/dist/cjs/utils/metadata-builder.js.map +1 -1
  49. package/dist/cjs/utils/provider-detection.js +25 -28
  50. package/dist/cjs/utils/provider-detection.js.map +1 -1
  51. package/dist/cjs/utils/stop-reason-mapper.js +4 -0
  52. package/dist/cjs/utils/stop-reason-mapper.js.map +1 -1
  53. package/dist/cjs/utils/url-builder.js +3 -3
  54. package/dist/esm/core/client/index.js +6 -0
  55. package/dist/esm/core/client/index.js.map +1 -0
  56. package/dist/esm/core/client/manager.js +102 -0
  57. package/dist/esm/core/client/manager.js.map +1 -0
  58. package/dist/esm/core/config/azure-config.js +6 -18
  59. package/dist/esm/core/config/azure-config.js.map +1 -1
  60. package/dist/esm/core/config/index.js +5 -4
  61. package/dist/esm/core/config/index.js.map +1 -1
  62. package/dist/esm/core/config/loader.js +33 -13
  63. package/dist/esm/core/config/loader.js.map +1 -1
  64. package/dist/esm/core/config/manager.js +14 -7
  65. package/dist/esm/core/config/manager.js.map +1 -1
  66. package/dist/esm/core/config/validator.js +3 -44
  67. package/dist/esm/core/config/validator.js.map +1 -1
  68. package/dist/esm/core/middleware/index.js +8 -0
  69. package/dist/esm/core/middleware/index.js.map +1 -0
  70. package/dist/esm/core/middleware/interfaces.js +353 -0
  71. package/dist/esm/core/middleware/interfaces.js.map +1 -0
  72. package/dist/esm/core/middleware/revenium-client.js +105 -0
  73. package/dist/esm/core/middleware/revenium-client.js.map +1 -0
  74. package/dist/esm/core/providers/detector.js +43 -22
  75. package/dist/esm/core/providers/detector.js.map +1 -1
  76. package/dist/esm/core/providers/index.js +2 -2
  77. package/dist/esm/core/providers/index.js.map +1 -1
  78. package/dist/esm/core/tracking/api-client.js +13 -12
  79. package/dist/esm/core/tracking/api-client.js.map +1 -1
  80. package/dist/esm/core/tracking/payload-builder.js +31 -36
  81. package/dist/esm/core/tracking/payload-builder.js.map +1 -1
  82. package/dist/esm/core/tracking/usage-tracker.js +24 -20
  83. package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
  84. package/dist/esm/index.js +9 -157
  85. package/dist/esm/index.js.map +1 -1
  86. package/dist/esm/types/index.js +2 -10
  87. package/dist/esm/types/index.js.map +1 -1
  88. package/dist/esm/types/openai-augmentation.js +0 -49
  89. package/dist/esm/types/openai-augmentation.js.map +1 -1
  90. package/dist/esm/utils/constants.js +16 -19
  91. package/dist/esm/utils/constants.js.map +1 -1
  92. package/dist/esm/utils/error-handler.js +19 -15
  93. package/dist/esm/utils/error-handler.js.map +1 -1
  94. package/dist/esm/utils/metadata-builder.js +27 -19
  95. package/dist/esm/utils/metadata-builder.js.map +1 -1
  96. package/dist/esm/utils/provider-detection.js +26 -29
  97. package/dist/esm/utils/provider-detection.js.map +1 -1
  98. package/dist/esm/utils/stop-reason-mapper.js +4 -0
  99. package/dist/esm/utils/stop-reason-mapper.js.map +1 -1
  100. package/dist/esm/utils/url-builder.js +3 -3
  101. package/dist/types/core/client/index.d.ts +6 -0
  102. package/dist/types/core/client/index.d.ts.map +1 -0
  103. package/dist/types/core/client/manager.d.ts +32 -0
  104. package/dist/types/core/client/manager.d.ts.map +1 -0
  105. package/dist/types/core/config/azure-config.d.ts +2 -2
  106. package/dist/types/core/config/azure-config.d.ts.map +1 -1
  107. package/dist/types/core/config/index.d.ts +4 -4
  108. package/dist/types/core/config/index.d.ts.map +1 -1
  109. package/dist/types/core/config/loader.d.ts +3 -1
  110. package/dist/types/core/config/loader.d.ts.map +1 -1
  111. package/dist/types/core/config/manager.d.ts +1 -1
  112. package/dist/types/core/config/manager.d.ts.map +1 -1
  113. package/dist/types/core/config/validator.d.ts +1 -12
  114. package/dist/types/core/config/validator.d.ts.map +1 -1
  115. package/dist/types/core/middleware/index.d.ts +8 -0
  116. package/dist/types/core/middleware/index.d.ts.map +1 -0
  117. package/dist/types/core/middleware/interfaces.d.ts +74 -0
  118. package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
  119. package/dist/types/core/middleware/revenium-client.d.ts +58 -0
  120. package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
  121. package/dist/types/core/providers/detector.d.ts +9 -2
  122. package/dist/types/core/providers/detector.d.ts.map +1 -1
  123. package/dist/types/core/providers/index.d.ts +2 -2
  124. package/dist/types/core/providers/index.d.ts.map +1 -1
  125. package/dist/types/core/tracking/api-client.d.ts +1 -1
  126. package/dist/types/core/tracking/api-client.d.ts.map +1 -1
  127. package/dist/types/core/tracking/payload-builder.d.ts +3 -3
  128. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
  129. package/dist/types/core/tracking/usage-tracker.d.ts +2 -2
  130. package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
  131. package/dist/types/index.d.ts +11 -114
  132. package/dist/types/index.d.ts.map +1 -1
  133. package/dist/types/types/function-parameters.d.ts +2 -23
  134. package/dist/types/types/function-parameters.d.ts.map +1 -1
  135. package/dist/types/types/index.d.ts +17 -115
  136. package/dist/types/types/index.d.ts.map +1 -1
  137. package/dist/types/types/openai-augmentation.d.ts +4 -139
  138. package/dist/types/types/openai-augmentation.d.ts.map +1 -1
  139. package/dist/types/utils/constants.d.ts +7 -1
  140. package/dist/types/utils/constants.d.ts.map +1 -1
  141. package/dist/types/utils/error-handler.d.ts +2 -2
  142. package/dist/types/utils/error-handler.d.ts.map +1 -1
  143. package/dist/types/utils/metadata-builder.d.ts +4 -3
  144. package/dist/types/utils/metadata-builder.d.ts.map +1 -1
  145. package/dist/types/utils/provider-detection.d.ts +3 -3
  146. package/dist/types/utils/provider-detection.d.ts.map +1 -1
  147. package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -1
  148. package/dist/types/utils/url-builder.d.ts +3 -3
  149. package/examples/README.md +270 -224
  150. package/examples/azure/basic.ts +62 -0
  151. package/examples/azure/responses-basic.ts +45 -0
  152. package/examples/azure/responses-stream.ts +61 -0
  153. package/examples/azure/stream.ts +56 -0
  154. package/examples/getting_started.ts +31 -43
  155. package/examples/openai/basic.ts +45 -0
  156. package/examples/openai/metadata.ts +67 -0
  157. package/examples/openai/responses-basic.ts +44 -0
  158. package/examples/openai/responses-embed.ts +34 -0
  159. package/examples/openai/responses-streaming.ts +63 -0
  160. package/examples/openai/streaming.ts +59 -0
  161. package/package.json +20 -13
  162. package/dist/cjs/core/wrapper/index.js +0 -15
  163. package/dist/cjs/core/wrapper/index.js.map +0 -1
  164. package/dist/cjs/core/wrapper/instance-patcher.js +0 -202
  165. package/dist/cjs/core/wrapper/instance-patcher.js.map +0 -1
  166. package/dist/cjs/core/wrapper/request-handler.js +0 -317
  167. package/dist/cjs/core/wrapper/request-handler.js.map +0 -1
  168. package/dist/cjs/core/wrapper/stream-wrapper.js +0 -82
  169. package/dist/cjs/core/wrapper/stream-wrapper.js.map +0 -1
  170. package/dist/cjs/utils/azure-model-resolver.js +0 -211
  171. package/dist/cjs/utils/azure-model-resolver.js.map +0 -1
  172. package/dist/cjs/utils/request-handler-factory.js +0 -185
  173. package/dist/cjs/utils/request-handler-factory.js.map +0 -1
  174. package/dist/esm/core/wrapper/index.js +0 -9
  175. package/dist/esm/core/wrapper/index.js.map +0 -1
  176. package/dist/esm/core/wrapper/instance-patcher.js +0 -199
  177. package/dist/esm/core/wrapper/instance-patcher.js.map +0 -1
  178. package/dist/esm/core/wrapper/request-handler.js +0 -310
  179. package/dist/esm/core/wrapper/request-handler.js.map +0 -1
  180. package/dist/esm/core/wrapper/stream-wrapper.js +0 -79
  181. package/dist/esm/core/wrapper/stream-wrapper.js.map +0 -1
  182. package/dist/esm/utils/azure-model-resolver.js +0 -204
  183. package/dist/esm/utils/azure-model-resolver.js.map +0 -1
  184. package/dist/esm/utils/request-handler-factory.js +0 -146
  185. package/dist/esm/utils/request-handler-factory.js.map +0 -1
  186. package/dist/types/core/wrapper/index.d.ts +0 -8
  187. package/dist/types/core/wrapper/index.d.ts.map +0 -1
  188. package/dist/types/core/wrapper/instance-patcher.d.ts +0 -33
  189. package/dist/types/core/wrapper/instance-patcher.d.ts.map +0 -1
  190. package/dist/types/core/wrapper/request-handler.d.ts +0 -29
  191. package/dist/types/core/wrapper/request-handler.d.ts.map +0 -1
  192. package/dist/types/core/wrapper/stream-wrapper.d.ts +0 -13
  193. package/dist/types/core/wrapper/stream-wrapper.d.ts.map +0 -1
  194. package/dist/types/utils/azure-model-resolver.d.ts +0 -41
  195. package/dist/types/utils/azure-model-resolver.d.ts.map +0 -1
  196. package/dist/types/utils/request-handler-factory.d.ts +0 -81
  197. package/dist/types/utils/request-handler-factory.d.ts.map +0 -1
  198. package/examples/azure-basic.ts +0 -206
  199. package/examples/azure-responses-basic.ts +0 -233
  200. package/examples/azure-responses-streaming.ts +0 -255
  201. package/examples/azure-streaming.ts +0 -209
  202. package/examples/openai-basic.ts +0 -147
  203. package/examples/openai-function-calling.ts +0 -259
  204. package/examples/openai-responses-basic.ts +0 -212
  205. package/examples/openai-responses-streaming.ts +0 -232
  206. package/examples/openai-streaming.ts +0 -172
  207. package/examples/openai-vision.ts +0 -289
  208. package/src/core/config/azure-config.ts +0 -72
  209. package/src/core/config/index.ts +0 -23
  210. package/src/core/config/loader.ts +0 -66
  211. package/src/core/config/manager.ts +0 -94
  212. package/src/core/config/validator.ts +0 -89
  213. package/src/core/providers/detector.ts +0 -159
  214. package/src/core/providers/index.ts +0 -16
  215. package/src/core/tracking/api-client.ts +0 -78
  216. package/src/core/tracking/index.ts +0 -21
  217. package/src/core/tracking/payload-builder.ts +0 -132
  218. package/src/core/tracking/usage-tracker.ts +0 -189
  219. package/src/core/wrapper/index.ts +0 -9
  220. package/src/core/wrapper/instance-patcher.ts +0 -288
  221. package/src/core/wrapper/request-handler.ts +0 -423
  222. package/src/core/wrapper/stream-wrapper.ts +0 -100
  223. package/src/index.ts +0 -336
  224. package/src/types/function-parameters.ts +0 -251
  225. package/src/types/index.ts +0 -313
  226. package/src/types/openai-augmentation.ts +0 -233
  227. package/src/types/responses-api.ts +0 -308
  228. package/src/utils/azure-model-resolver.ts +0 -220
  229. package/src/utils/constants.ts +0 -21
  230. package/src/utils/error-handler.ts +0 -251
  231. package/src/utils/metadata-builder.ts +0 -219
  232. package/src/utils/provider-detection.ts +0 -257
  233. package/src/utils/request-handler-factory.ts +0 -285
  234. package/src/utils/stop-reason-mapper.ts +0 -74
  235. package/src/utils/type-guards.ts +0 -202
  236. package/src/utils/url-builder.ts +0 -68
package/.env.example CHANGED
@@ -1,20 +1,15 @@
1
- # Revenium OpenAI Middleware Configuration
2
- # Copy this file to .env and fill in your actual values
3
-
4
- # Required: Your Revenium API key (starts with hak_)
1
+ # Revenium Configuration (Required)
5
2
  REVENIUM_METERING_API_KEY=hak_your_revenium_api_key_here
3
+ REVENIUM_METERING_BASE_URL=https://api.revenium.ai
6
4
 
7
- # Optional: Revenium API base URL (defaults to https://api.revenium.io)
8
- #REVENIUM_METERING_BASE_URL=https://api.revenium.io
5
+ # OpenAI Configuration (Required for OpenAI native API)
6
+ OPENAI_API_KEY=sk-your_openai_api_key_here
9
7
 
10
- # Required: Your OpenAI API key (starts with sk-)
11
- OPENAI_API_KEY=sk_your_openai_api_key_here
8
+ # Azure OpenAI Configuration (Optional - for Azure OpenAI support)
9
+ AZURE_OPENAI_API_KEY=your_azure_openai_api_key
10
+ AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/
11
+ AZURE_OPENAI_API_VERSION=your_azure_openai_api_version
12
12
 
13
- # Optional: Your Azure OpenAI configuration (for Azure testing)
14
- AZURE_OPENAI_ENDPOINT=https://your-resource-name.openai.azure.com/
15
- AZURE_OPENAI_API_KEY=your-azure-openai-api-key-here
16
- AZURE_OPENAI_DEPLOYMENT=your-deployment-name-here
17
- AZURE_OPENAI_API_VERSION=2024-12-01-preview
13
+ # Debug Configuration (Optional)
14
+ REVENIUM_DEBUG=false # Set to true to enable debug logging
18
15
 
19
- # Optional: Enable debug logging
20
- REVENIUM_DEBUG=false
package/CHANGELOG.md CHANGED
@@ -5,46 +5,105 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.14] - 2025-11-14
9
+
10
+ ### Changed
11
+
12
+ - Updated Node.js requirement from >=16.0.0 to >=18.0.0 (LTS standard)
13
+ - Improved package distribution to exclude source files, include only compiled artifacts
14
+ - Enhanced README with governance file references (Contributing, Code of Conduct, Security)
15
+
16
+ ### Fixed
17
+
18
+ - Updated dashboard URLs from app.revenium.io to app.revenium.ai in examples documentation
19
+
20
+ ## [1.0.13] - 2025-11-06
21
+
22
+ ### Added
23
+
24
+ - Configure() function for manual configuration
25
+ - COST_LIMIT and COMPLETION_LIMIT stop reasons to mapper (per API spec)
26
+ - Support for all 7 operationType enum values (CHAT, GENERATE, EMBED, CLASSIFY, SUMMARIZE, TRANSLATE, OTHER)
27
+
28
+ ### Changed
29
+
30
+ - **BREAKING:** responseQualityScore now uses 0.0-1.0 scale (was 0-100) per updated API specification
31
+ - **API URL:** All references updated from api.revenium.io to api.revenium.ai (new production domain)
32
+ - **API Compliance:** provider value changed from 'OPENAI' to 'OpenAI' (proper casing per spec)
33
+ - **API Compliance:** modelSource changed to 'OPENAI' for direct OpenAI, 'AZURE_OPENAI' for Azure
34
+ - **API Compliance:** middlewareSource changed from 'nodejs' to 'revenium-openai-node' per spec format
35
+ - **API Compliance:** cacheCreationTokenCount now undefined (not 0) when provider doesn't report
36
+ - **API Compliance:** cacheReadTokenCount now uses ?? operator (not ||) to preserve 0 values
37
+ - **API Compliance:** timeToFirstToken now undefined (not hardcoded) until real TTFB tracking implemented
38
+ - Simplified main README from 675 to 386 lines
39
+ - Standardized Azure API versions to 2024-12-01-preview across all files
40
+ - Email addresses now masked in debug logs for PII protection
41
+ - All examples updated to use 0.0-1.0 scale for responseQualityScore
42
+
43
+ ### Fixed
44
+
45
+ - Removed broken file references from examples documentation
46
+ - Removed non-existent config options from documentation (apiTimeout, failSilent, maxRetries)
47
+ - Removed misleading "custom fields" claim from Features section
48
+ - config.debug property now properly enables debug logging
49
+ - Updated OpenAI version requirement to match peer dependency (v5.0.0+)
50
+ - Removed overpromised time-to-first-token metric claim
51
+ - Removed taskId field from all files (field does not exist in API spec per code review feedback)
52
+ - Added CANCELLED stop reason to mapper for completeness
53
+ - validateMetadata now checks 0.0-1.0 scale for responseQualityScore
54
+ - Fallback provider detection now uses 'OpenAI' not 'OPENAI' (proper casing)
55
+ - Embeddings now send undefined for cache tokens (was incorrectly sending 0)
56
+ - reasoningTokenCount now optional (undefined when not reported, per spec)
57
+
8
58
  ## [1.0.12] - 2025-10-30
9
59
 
10
60
  ### Changed
61
+
11
62
  - Improved documentation structure and Getting Started tutorial
12
63
  - Enhanced package distribution to include TypeScript source files
13
64
 
14
65
  ### Fixed
66
+
15
67
  - Repository configuration updates
16
68
 
17
69
  ## [1.0.11] - 2025-10-21
18
70
 
19
71
  ### Added
72
+
20
73
  - Examples now included in npm package
21
74
  - Comprehensive examples documentation
22
75
 
23
76
  ### Changed
77
+
24
78
  - Updated API endpoint configuration
25
79
  - Improved documentation structure
26
80
 
27
81
  ## [1.0.10] - 2025-10-17
28
82
 
29
83
  ### Added
84
+
30
85
  - Support for OpenAI Responses API
31
86
 
32
87
  ### Changed
88
+
33
89
  - Enhanced documentation and examples
34
90
 
35
91
  ## [1.0.9] - 2025-10-16
36
92
 
37
93
  ### Changed
94
+
38
95
  - Bug fixes and stability improvements
39
96
 
40
97
  ## [1.0.8] - 2025-10-15
41
98
 
42
99
  ### Added
100
+
43
101
  - Initial release with OpenAI usage tracking
44
102
  - Support for streaming responses and function calling
45
103
  - Azure OpenAI support
46
104
  - TypeScript support with native type integration
47
105
 
106
+ [1.0.13]: https://github.com/revenium/revenium-middleware-openai-node/releases/tag/v1.0.13
48
107
  [1.0.12]: https://github.com/revenium/revenium-middleware-openai-node/releases/tag/v1.0.12
49
108
  [1.0.11]: https://github.com/revenium/revenium-middleware-openai-node/releases/tag/v1.0.11
50
109
  [1.0.10]: https://github.com/revenium/revenium-middleware-openai-node/releases/tag/v1.0.10
@@ -0,0 +1,57 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+ We as members, contributors, and leaders pledge to make participation in our
5
+ community a harassment-free experience for everyone, regardless of age, body
6
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
7
+ identity and expression, level of experience, education, socio-economic status,
8
+ nationality, personal appearance, race, caste, color, religion, or sexual
9
+ identity and orientation.
10
+
11
+ We pledge to act and interact in ways that contribute to an open, welcoming,
12
+ diverse, inclusive, and healthy community.
13
+
14
+ ## Our Standards
15
+ Examples of behavior that contributes to a positive environment include:
16
+ - Demonstrating empathy and kindness toward other people
17
+ - Being respectful of differing opinions, viewpoints, and experiences
18
+ - Giving and gracefully accepting constructive feedback
19
+ - Accepting responsibility and apologizing to those affected by mistakes
20
+ - Focusing on what is best for the community
21
+
22
+ Examples of unacceptable behavior include:
23
+ - The use of sexualized language or imagery, and sexual attention or advances
24
+ - Trolling, insulting or derogatory comments, and personal or political attacks
25
+ - Public or private harassment
26
+ - Publishing others' private information without explicit permission
27
+ - Other conduct which could reasonably be considered inappropriate
28
+
29
+ ## Enforcement Responsibilities
30
+ Community leaders are responsible for clarifying and enforcing our standards of
31
+ acceptable behavior and will take appropriate and fair corrective action.
32
+
33
+ ## Scope
34
+ This Code of Conduct applies within all community spaces, and also applies when
35
+ an individual is officially representing the project in public spaces.
36
+
37
+ ## Enforcement
38
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
39
+ reported by contacting the project team at **support@revenium.io**.
40
+ All complaints will be reviewed and investigated promptly and fairly.
41
+
42
+ The project team is obligated to respect the privacy and security of the
43
+ reporter of any incident.
44
+
45
+ ## Enforcement Guidelines
46
+ Community leaders will follow these guidelines in determining the consequences:
47
+ 1. **Correction** – Private, written warning.
48
+ 2. **Warning** – Clear and public warning of violation.
49
+ 3. **Temporary Ban** – Temporary ban from community interaction.
50
+ 4. **Permanent Ban** – Permanent removal from community interaction.
51
+
52
+ ## Attribution
53
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
54
+ version 2.1, available at
55
+ <https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.
56
+
57
+ [homepage]: https://www.contributor-covenant.org
@@ -0,0 +1,38 @@
1
+ # Contributing
2
+
3
+ Thank you for your interest in contributing to this project!
4
+
5
+ ## Getting Started
6
+
7
+ 1. Fork the repository and create a feature branch
8
+ 2. Make your changes following existing code patterns
9
+ 3. Test your changes
10
+ 4. Submit a pull request with a clear description
11
+
12
+ ## What to Contribute
13
+
14
+ - Bug fixes and improvements
15
+ - Documentation updates
16
+ - Test coverage improvements
17
+ - Performance optimizations
18
+
19
+ ## Guidelines
20
+
21
+ - Follow the existing code style
22
+ - Include tests for new functionality when applicable
23
+ - Update documentation if needed
24
+ - Keep changes focused and atomic
25
+
26
+ ## Questions?
27
+
28
+ - Check existing issues first
29
+ - For bugs: Create an issue with reproduction steps
30
+ - For questions: Email support@revenium.io
31
+
32
+ ## Security
33
+
34
+ For security vulnerabilities, please follow our [Security Policy](https://github.com/revenium/revenium-middleware-openai-node/blob/HEAD/SECURITY.md) - do not create public issues.
35
+
36
+ ## License
37
+
38
+ By contributing, you agree your contributions will be licensed under the same license as this project.