@revenium/claude-code-metering 0.1.5 → 0.1.7

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 (37) hide show
  1. package/README.md +18 -64
  2. package/dist/cli/commands/backfill.d.ts +2 -7
  3. package/dist/cli/commands/backfill.d.ts.map +1 -1
  4. package/dist/cli/commands/backfill.js +37 -34
  5. package/dist/cli/commands/backfill.js.map +1 -1
  6. package/dist/cli/commands/setup.d.ts +1 -0
  7. package/dist/cli/commands/setup.d.ts.map +1 -1
  8. package/dist/cli/commands/setup.js +1 -0
  9. package/dist/cli/commands/setup.js.map +1 -1
  10. package/dist/cli/index.js +2 -0
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/core/api/client.d.ts +16 -6
  13. package/dist/core/api/client.d.ts.map +1 -1
  14. package/dist/core/api/client.js +75 -10
  15. package/dist/core/api/client.js.map +1 -1
  16. package/dist/core/config/loader.d.ts.map +1 -1
  17. package/dist/core/config/loader.js +11 -13
  18. package/dist/core/config/loader.js.map +1 -1
  19. package/dist/core/config/writer.d.ts.map +1 -1
  20. package/dist/core/config/writer.js +31 -23
  21. package/dist/core/config/writer.js.map +1 -1
  22. package/dist/types/index.d.ts +4 -10
  23. package/dist/types/index.d.ts.map +1 -1
  24. package/dist/types/index.js.map +1 -1
  25. package/dist/utils/constants.d.ts +3 -19
  26. package/dist/utils/constants.d.ts.map +1 -1
  27. package/dist/utils/constants.js +4 -22
  28. package/dist/utils/constants.js.map +1 -1
  29. package/package.json +4 -4
  30. package/src/cli/commands/backfill.ts +41 -46
  31. package/src/cli/commands/setup.ts +3 -1
  32. package/src/cli/index.ts +2 -0
  33. package/src/core/api/client.ts +80 -19
  34. package/src/core/config/loader.ts +11 -15
  35. package/src/core/config/writer.ts +39 -30
  36. package/src/types/index.ts +4 -10
  37. package/src/utils/constants.ts +4 -22
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sendOtlpLogs = sendOtlpLogs;
4
4
  exports.createTestPayload = createTestPayload;
5
5
  exports.generateTestSessionId = generateTestSessionId;
6
+ exports.verifyApiKey = verifyApiKey;
6
7
  exports.checkEndpointHealth = checkEndpointHealth;
7
8
  const loader_js_1 = require("../config/loader.js");
8
9
  /**
@@ -34,8 +35,11 @@ async function sendOtlpLogs(baseEndpoint, apiKey, payload) {
34
35
  */
35
36
  function createTestPayload(sessionId, options) {
36
37
  const now = Date.now() * 1_000_000; // Convert to nanoseconds
37
- // Build log record attributes
38
- // Note: organization.name and product.name go here because ClaudeCodeMapper reads from log record attrs
38
+ // Build log record attributes.
39
+ // Note: user.email is read from log record attrs by ClaudeCodeMapper.
40
+ // organization.name and product.name are read from resource attrs only
41
+ // (the backend intentionally ignores them in log record attrs to avoid
42
+ // Claude Code's auto-generated UUIDs polluting the org table).
39
43
  const logAttributes = [
40
44
  { key: "session.id", value: { stringValue: sessionId } },
41
45
  { key: "model", value: { stringValue: "cli-connectivity-test" } },
@@ -46,18 +50,23 @@ function createTestPayload(sessionId, options) {
46
50
  { key: "cost_usd", value: { stringValue: "0.0" } },
47
51
  { key: "duration_ms", value: { stringValue: "0" } },
48
52
  ];
49
- // Add optional subscriber/attribution attributes at log record level
50
- // (backend ClaudeCodeMapper reads these from log record attrs, not resource attrs)
51
- if (options?.email) {
53
+ // Add subscriber email to log record attrs — backend ClaudeCodeMapper reads user.email from here.
54
+ // Falls back to REVENIUM_SUBSCRIBER_EMAIL env var if not provided in options.
55
+ const emailValue = options?.email ?? process.env['REVENIUM_SUBSCRIBER_EMAIL'];
56
+ if (emailValue) {
52
57
  logAttributes.push({
53
58
  key: "user.email",
54
- value: { stringValue: options.email },
59
+ value: { stringValue: emailValue },
55
60
  });
56
61
  }
62
+ // Build resource attributes — service.name is required for mapper detection.
63
+ // organization.name and product.name must be here (not in log record attrs) because
64
+ // the backend ClaudeCodeMapper reads them from resource attrs only.
65
+ const resourceAttributes = [{ key: "service.name", value: { stringValue: "claude-code" } }];
57
66
  // Support both new (organizationName) and old (organizationId) field names with fallback
58
67
  const organizationValue = options?.organizationName || options?.organizationId;
59
68
  if (organizationValue) {
60
- logAttributes.push({
69
+ resourceAttributes.push({
61
70
  key: "organization.name",
62
71
  value: { stringValue: organizationValue },
63
72
  });
@@ -65,13 +74,33 @@ function createTestPayload(sessionId, options) {
65
74
  // Support both new (productName) and old (productId) field names with fallback
66
75
  const productValue = options?.productName || options?.productId;
67
76
  if (productValue) {
68
- logAttributes.push({
77
+ resourceAttributes.push({
69
78
  key: "product.name",
70
79
  value: { stringValue: productValue },
71
80
  });
72
81
  }
73
- // Build resource attributes (only service.name needed here)
74
- const resourceAttributes = [{ key: "service.name", value: { stringValue: "claude-code" } }];
82
+ // Parse OTEL_RESOURCE_ATTRIBUTES from environment and include in resource attrs.
83
+ // This ensures subscription_tier and any other resource attributes configured by the user
84
+ // appear in test metrics. Values are URL-decoded to reverse writer.ts URL-encoding (,=").
85
+ const existingKeys = new Set(resourceAttributes.map((a) => a.key));
86
+ const otelResourceAttrsEnv = process.env['OTEL_RESOURCE_ATTRIBUTES'];
87
+ if (otelResourceAttrsEnv) {
88
+ for (const pair of otelResourceAttrsEnv.split(',')) {
89
+ const eqIdx = pair.indexOf('=');
90
+ if (eqIdx > 0) {
91
+ const key = pair.substring(0, eqIdx).trim();
92
+ let value = pair.substring(eqIdx + 1).trim();
93
+ try {
94
+ value = decodeURIComponent(value);
95
+ }
96
+ catch { /* use raw value on decode failure */ }
97
+ if (key && !existingKeys.has(key) && key !== 'user.email') {
98
+ resourceAttributes.push({ key, value: { stringValue: value } });
99
+ existingKeys.add(key);
100
+ }
101
+ }
102
+ }
103
+ }
75
104
  return {
76
105
  resourceLogs: [
77
106
  {
@@ -105,6 +134,42 @@ function generateTestSessionId() {
105
134
  const random = Math.random().toString(36).substring(2, 8);
106
135
  return `test-${timestamp}-${random}`;
107
136
  }
137
+ /**
138
+ * Verifies an API key is accepted by the Revenium backend by calling the resolve-key endpoint.
139
+ * Returns true if the key is accepted (200 OK), false otherwise.
140
+ * Network errors and non-200 responses all return false.
141
+ *
142
+ * This function is exported as a lightweight SDK utility for programmatic callers that need
143
+ * to check key validity without sending a test OTLP event. The CLI setup wizard uses
144
+ * {@link checkEndpointHealth} instead, which validates end-to-end connectivity.
145
+ *
146
+ * @param baseEndpoint The base Revenium endpoint (e.g. "https://api.revenium.io")
147
+ * @param apiKey The Revenium API key (format: hak_<tenant>_<secret>)
148
+ * @returns true if the key is valid, false otherwise
149
+ */
150
+ async function verifyApiKey(baseEndpoint, apiKey) {
151
+ try {
152
+ // Enforce HTTPS to prevent API key exfiltration to an attacker-controlled host
153
+ const parsedBase = new URL(baseEndpoint);
154
+ if (parsedBase.protocol !== 'https:') {
155
+ return false;
156
+ }
157
+ const url = parsedBase.origin + '/v2/sdk/resolve-key';
158
+ const controller = new AbortController();
159
+ const timeoutId = setTimeout(() => controller.abort(), 10_000);
160
+ const response = await fetch(url, {
161
+ method: 'GET',
162
+ headers: {
163
+ 'x-api-key': apiKey,
164
+ },
165
+ signal: controller.signal,
166
+ }).finally(() => clearTimeout(timeoutId));
167
+ return response.ok;
168
+ }
169
+ catch {
170
+ return false;
171
+ }
172
+ }
108
173
  /**
109
174
  * Performs a health check by sending a minimal test payload to the endpoint.
110
175
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/core/api/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/loader.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2CvE;AA4DD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA4DjE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAKrC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI3D"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/core/config/loader.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2CvE;AA4DD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAwDjE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAKrC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAI3D"}
@@ -134,16 +134,10 @@ async function loadConfig() {
134
134
  if (!apiKey) {
135
135
  return null;
136
136
  }
137
- // Parse cost multiplier override if present
138
- const costMultiplierStr = env[constants_js_1.ENV_VARS.COST_MULTIPLIER];
139
- const costMultiplierOverride = costMultiplierStr
140
- ? parseFloat(costMultiplierStr)
141
- : undefined;
142
137
  // Parse OTEL_RESOURCE_ATTRIBUTES for org/product (primary source)
143
138
  const resourceAttrsStr = env["OTEL_RESOURCE_ATTRIBUTES"] || "";
144
139
  const resourceAttrs = parseOtelResourceAttributes(resourceAttrsStr);
145
- // Support both .name (preferred) and .id (legacy), with fallback to standalone vars
146
- // Priority: organizationName > organizationId > organization.name > organization.id > env var
140
+ // Read organization/product from resource attributes or standalone env vars (backward compat)
147
141
  const organizationName = resourceAttrs["organization.name"] ||
148
142
  resourceAttrs["organization.id"] ||
149
143
  env[constants_js_1.ENV_VARS.ORGANIZATION_ID];
@@ -154,14 +148,18 @@ async function loadConfig() {
154
148
  apiKey,
155
149
  endpoint: extractBaseEndpoint(fullEndpoint),
156
150
  email: env[constants_js_1.ENV_VARS.SUBSCRIBER_EMAIL],
157
- subscriptionTier: env[constants_js_1.ENV_VARS.SUBSCRIPTION],
158
- costMultiplierOverride: costMultiplierOverride !== undefined && !isNaN(costMultiplierOverride)
159
- ? costMultiplierOverride
160
- : undefined,
151
+ subscriptionTier: (env[constants_js_1.ENV_VARS.SUBSCRIPTION_TIER] || env[constants_js_1.ENV_VARS.SUBSCRIPTION]),
161
152
  organizationName,
162
- organizationId: organizationName, // Keep for backward compatibility
153
+ organizationId: organizationName,
163
154
  productName,
164
- productId: productName, // Keep for backward compatibility
155
+ productId: productName,
156
+ // Boolean env var: '1'->true, '0'->false, absent->undefined
157
+ // IMPORTANT: do NOT use Boolean(env[...]) — that makes '0' truthy
158
+ extraUsageEnabled: env[constants_js_1.ENV_VARS.EXTRA_USAGE_ENABLED] === '1'
159
+ ? true
160
+ : env[constants_js_1.ENV_VARS.EXTRA_USAGE_ENABLED] === '0'
161
+ ? false
162
+ : undefined,
165
163
  };
166
164
  }
167
165
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/config/loader.ts"],"names":[],"mappings":";;AAgBA,sCAEC;AAKD,oCAEC;AAKD,0CA2CC;AAgED,gCA4DC;AAKD,kCAKC;AAKD,kDAIC;AAxND,qCAAkC;AAClC,yCAAiC;AACjC,+CAA4C;AAC5C,qCAAqC;AACrC,2DAKkC;AAIlC;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,gCAAiB,EAAE,gCAAiB,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY;IAC1B,OAAO,IAAA,oBAAU,EAAC,aAAa,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE1B,gCAAgC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QAED,yBAAyB;QACzB,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAClC,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,WAAW,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEtD,oDAAoD;QACpD,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9C,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC9C,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC7C,yCAAyC;YACzC,KAAK,GAAG,KAAK;iBACV,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;iBACpB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;iBACpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;iBACrB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;iBACpB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAAC,OAAe;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC1D,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;QAClC,kDAAkD;QAClD,yEAAyE;QACzE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC1B,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;QACpB,CAAC;QACD,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,2BAA2B,CAAC,KAAa;IAChD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC;IAEvD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,WAAW,KAAK,CAAC,CAAC;YAAE,SAAS;QAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1D,IAAI,CAAC;YACH,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;QAED,IAAI,GAAG;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IAEnC,IAAI,CAAC,IAAA,oBAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAErC,MAAM,YAAY,GAAG,GAAG,CAAC,uBAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,OAAO,GAAG,GAAG,CAAC,uBAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC;QACd,CAAC;QAED,4CAA4C;QAC5C,MAAM,iBAAiB,GAAG,GAAG,CAAC,uBAAQ,CAAC,eAAe,CAAC,CAAC;QACxD,MAAM,sBAAsB,GAAG,iBAAiB;YAC9C,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC;YAC/B,CAAC,CAAC,SAAS,CAAC;QAEd,kEAAkE;QAClE,MAAM,gBAAgB,GAAG,GAAG,CAAC,0BAA0B,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,aAAa,GAAG,2BAA2B,CAAC,gBAAgB,CAAC,CAAC;QAEpE,oFAAoF;QACpF,8FAA8F;QAC9F,MAAM,gBAAgB,GACpB,aAAa,CAAC,mBAAmB,CAAC;YAClC,aAAa,CAAC,iBAAiB,CAAC;YAChC,GAAG,CAAC,uBAAQ,CAAC,eAAe,CAAC,CAAC;QAEhC,MAAM,WAAW,GACf,aAAa,CAAC,cAAc,CAAC;YAC7B,aAAa,CAAC,YAAY,CAAC;YAC3B,GAAG,CAAC,uBAAQ,CAAC,UAAU,CAAC,CAAC;QAE3B,OAAO;YACL,MAAM;YACN,QAAQ,EAAE,mBAAmB,CAAC,YAAY,CAAC;YAC3C,KAAK,EAAE,GAAG,CAAC,uBAAQ,CAAC,gBAAgB,CAAC;YACrC,gBAAgB,EAAE,GAAG,CAAC,uBAAQ,CAAC,YAAY,CAE9B;YACb,sBAAsB,EACpB,sBAAsB,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;gBACpE,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,SAAS;YACf,gBAAgB;YAChB,cAAc,EAAE,gBAAgB,EAAE,kCAAkC;YACpE,WAAW;YACX,SAAS,EAAE,WAAW,EAAE,kCAAkC;SAC3D,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,uBAAQ,CAAC,iBAAiB,CAAC,KAAK,GAAG;QAC/C,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAQ,CAAC,aAAa,CAAC,CACtC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,OAAe;IACjD,mCAAmC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,GAAG,QAAQ,GAAG,wBAAS,EAAE,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/core/config/loader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/core/config/writer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA8K3D;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAezE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
1
+ {"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/core/config/writer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAyL3D;;;GAGG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAezE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
@@ -12,7 +12,9 @@ const loader_js_1 = require("./loader.js");
12
12
  * Wraps the value in double quotes and escapes special characters.
13
13
  */
14
14
  function escapeShellValue(value) {
15
- return `"${value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\$/g, "\\$").replace(/`/g, "\\`")}"`;
15
+ // Strip newlines/carriage returns to prevent multi-line injection into the env file
16
+ const sanitized = value.replace(/[\r\n]/g, "");
17
+ return `"${sanitized.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\$/g, "\\$").replace(/`/g, "\\`")}"`;
16
18
  }
17
19
  /**
18
20
  * Escapes a value for use in OTEL_RESOURCE_ATTRIBUTES.
@@ -21,8 +23,12 @@ function escapeShellValue(value) {
21
23
  * We URL-encode these characters to ensure safe parsing.
22
24
  */
23
25
  function escapeResourceAttributeValue(value) {
24
- return value
25
- .replace(/%/g, "%25") // Escape % first to avoid double-encoding
26
+ const sanitized = value.replace(/[\r\n]/g, "");
27
+ return sanitized
28
+ .replace(/%/g, "%25")
29
+ .replace(/\\/g, "%5C")
30
+ .replace(/\$/g, "%24")
31
+ .replace(/`/g, "%60")
26
32
  .replace(/,/g, "%2C")
27
33
  .replace(/=/g, "%3D")
28
34
  .replace(/"/g, "%22");
@@ -67,37 +73,43 @@ function generateEnvContent(config) {
67
73
  lines.push(`export ${constants_js_1.ENV_VARS.SUBSCRIBER_EMAIL}=${escapeShellValue(config.email)}`);
68
74
  }
69
75
  if (config.subscriptionTier) {
70
- const tier = config.subscriptionTier;
71
- const costMultiplier = config.costMultiplierOverride ?? (0, constants_js_1.getCostMultiplier)(tier);
72
- const discountPercent = Math.round((1 - costMultiplier) * 100);
73
76
  lines.push("");
74
77
  lines.push("# Claude Code subscription tier");
78
+ lines.push(`export ${constants_js_1.ENV_VARS.SUBSCRIPTION_TIER}=${escapeShellValue(config.subscriptionTier)}`);
75
79
  lines.push(`export ${constants_js_1.ENV_VARS.SUBSCRIPTION}=${escapeShellValue(config.subscriptionTier)}`);
76
- lines.push("");
77
- lines.push("# Cost multiplier for subscription tier");
78
- lines.push("# This adjusts Claude Code costs based on your subscription discount");
79
- lines.push(`# ${tier}: ${discountPercent}% discount vs API rates`);
80
- if (config.costMultiplierOverride !== undefined) {
81
- lines.push("# (custom override applied)");
82
- lines.push(`export ${constants_js_1.ENV_VARS.COST_MULTIPLIER}=${costMultiplier}`);
83
- }
84
- // Build OTEL_RESOURCE_ATTRIBUTES with cost_multiplier and optional organization.name/product.name.
80
+ // Build OTEL_RESOURCE_ATTRIBUTES with subscription_tier and optional organization.name/product.name.
85
81
  // Special characters (,=") in values are URL-encoded to ensure safe parsing.
86
82
  // Note: The backend ONLY reads organization.name and product.name from resourceAttributes,
87
83
  // ignoring any auto-generated values in log record attributes from Claude Code.
88
- const resourceAttrs = [`cost_multiplier=${costMultiplier}`];
89
- // Support both new (organizationName) and old (organizationId) field names with fallback
84
+ const resourceAttrs = [];
90
85
  const organizationValue = config.organizationName || config.organizationId;
91
86
  if (organizationValue) {
92
87
  resourceAttrs.push(`organization.name=${escapeResourceAttributeValue(organizationValue)}`);
93
88
  }
94
- // Support both new (productName) and old (productId) field names with fallback
95
89
  const productValue = config.productName || config.productId;
96
90
  if (productValue) {
97
91
  resourceAttrs.push(`product.name=${escapeResourceAttributeValue(productValue)}`);
98
92
  }
93
+ resourceAttrs.push(`${constants_js_1.ENV_VARS.SUBSCRIPTION_TIER}=${escapeResourceAttributeValue(config.subscriptionTier)}`);
94
+ if (config.email) {
95
+ resourceAttrs.push(`user.email=${escapeResourceAttributeValue(config.email)}`);
96
+ }
97
+ lines.push(`export OTEL_RESOURCE_ATTRIBUTES="${resourceAttrs.join(",")}"`);
98
+ }
99
+ else if (config.email) {
100
+ // No subscriptionTier, but email is set — still embed in OTEL_RESOURCE_ATTRIBUTES
101
+ // so every OTEL event carries the identity as a resource attribute.
102
+ const resourceAttrs = [];
103
+ resourceAttrs.push(`user.email=${escapeResourceAttributeValue(config.email)}`);
104
+ lines.push("");
105
+ lines.push("# OTEL resource attributes for identity");
99
106
  lines.push(`export OTEL_RESOURCE_ATTRIBUTES="${resourceAttrs.join(",")}"`);
100
107
  }
108
+ if (config.extraUsageEnabled !== undefined) {
109
+ lines.push("");
110
+ lines.push("# Whether extra usage beyond subscription limits is enabled");
111
+ lines.push(`export ${constants_js_1.ENV_VARS.EXTRA_USAGE_ENABLED}=${config.extraUsageEnabled ? '1' : '0'}`);
112
+ }
101
113
  // Add advanced configuration section
102
114
  lines.push("");
103
115
  lines.push("# ─────────────────────────────────────────────────────────────────────────────");
@@ -111,11 +123,7 @@ function generateEnvContent(config) {
111
123
  lines.push("# HOW TO CONFIGURE:");
112
124
  lines.push("# Edit the OTEL_RESOURCE_ATTRIBUTES line above to include organization.name and/or product.name:");
113
125
  lines.push("#");
114
- // Get current cost multiplier for the example
115
- const exampleMultiplier = config.subscriptionTier && config.costMultiplierOverride === undefined
116
- ? (0, constants_js_1.getCostMultiplier)(config.subscriptionTier)
117
- : (config.costMultiplierOverride ?? "0.08");
118
- lines.push(`# OTEL_RESOURCE_ATTRIBUTES="cost_multiplier=${exampleMultiplier},organization.name=my-org,product.name=my-product"`);
126
+ lines.push(`# OTEL_RESOURCE_ATTRIBUTES="organization.name=my-org,product.name=my-product"`);
119
127
  lines.push("#");
120
128
  lines.push("# ATTRIBUTE DESCRIPTIONS:");
121
129
  lines.push("# organization.name - Attribute costs to a customer/company (e.g., client name, team)");
@@ -1 +1 @@
1
- {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/core/config/writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer.js","sourceRoot":"","sources":["../../../src/core/config/writer.ts"],"names":[],"mappings":"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"}
@@ -7,22 +7,16 @@ export interface ReveniumConfig {
7
7
  endpoint: string;
8
8
  email?: string;
9
9
  subscriptionTier?: SubscriptionTier;
10
- /** Optional override for the cost multiplier (overrides tier default) */
11
- costMultiplierOverride?: number;
12
10
  /** Optional organization name for attributing costs to a specific customer/company */
13
11
  organizationName?: string;
14
- /**
15
- * @deprecated Use organizationName instead. This field will be removed in a future version.
16
- * Organization or company identifier
17
- */
12
+ /** Alias for organizationName — accepted for backward compatibility */
18
13
  organizationId?: string;
19
14
  /** Optional product name for attributing costs to a specific product/project */
20
15
  productName?: string;
21
- /**
22
- * @deprecated Use productName instead. This field will be removed in a future version.
23
- * Product or application identifier
24
- */
16
+ /** Alias for productName — accepted for backward compatibility */
25
17
  productId?: string;
18
+ /** Whether extra usage beyond subscription limits is enabled */
19
+ extraUsageEnabled?: boolean;
26
20
  }
27
21
  /**
28
22
  * Result of configuration validation
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,yEAAyE;IACzE,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,KAAK,CAAC;QAClB,QAAQ,CAAC,EAAE;YACT,UAAU,CAAC,EAAE,KAAK,CAAC;gBACjB,GAAG,EAAE,MAAM,CAAC;gBACZ,KAAK,EAAE,SAAS,CAAC;aAClB,CAAC,CAAC;SACJ,CAAC;QACF,SAAS,EAAE,KAAK,CAAC;YACf,KAAK,CAAC,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC;gBACb,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,UAAU,EAAE,KAAK,CAAC;gBAChB,YAAY,CAAC,EAAE,MAAM,CAAC;gBACtB,IAAI,EAAE,SAAS,CAAC;gBAChB,UAAU,EAAE,KAAK,CAAC;oBAChB,GAAG,EAAE,MAAM,CAAC;oBACZ,KAAK,EAAE,SAAS,CAAC;iBAClB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,sFAAsF;IACtF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,KAAK,CAAC;QAClB,QAAQ,CAAC,EAAE;YACT,UAAU,CAAC,EAAE,KAAK,CAAC;gBACjB,GAAG,EAAE,MAAM,CAAC;gBACZ,KAAK,EAAE,SAAS,CAAC;aAClB,CAAC,CAAC;SACJ,CAAC;QACF,SAAS,EAAE,KAAK,CAAC;YACf,KAAK,CAAC,EAAE;gBACN,IAAI,EAAE,MAAM,CAAC;gBACb,OAAO,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,UAAU,EAAE,KAAK,CAAC;gBAChB,YAAY,CAAC,EAAE,MAAM,CAAC;gBACtB,IAAI,EAAE,SAAS,CAAC;gBAChB,UAAU,EAAE,KAAK,CAAC;oBAChB,GAAG,EAAE,MAAM,CAAC;oBACZ,KAAK,EAAE,SAAS,CAAC;iBAClB,CAAC,CAAC;aACJ,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,cAAc,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AA6GA,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAuGA,qDAAmC"}
@@ -13,46 +13,29 @@ export declare const CLAUDE_CONFIG_DIR = ".claude";
13
13
  export declare const REVENIUM_ENV_FILE = "revenium.env";
14
14
  /** File permissions for config file (owner read/write only) */
15
15
  export declare const CONFIG_FILE_MODE = 384;
16
- /** Available subscription tiers with their cost multipliers
17
- *
18
- * Cost multipliers represent the effective discount vs API pricing.
19
- * Values are estimates based on fully consuming monthly token allotments.
20
- *
21
- * Calculation basis: Max 20x tier ($200 for 20X tokens = $2,500 API equivalent)
22
- * establishes $125 per X tokens at API rates. Other tiers calculated proportionally.
23
- *
24
- * For detailed explanation and manual override instructions, see README.md
25
- */
16
+ /** Available subscription tiers */
26
17
  export declare const SUBSCRIPTION_TIER_CONFIG: {
27
18
  readonly pro: {
28
19
  readonly name: "Pro (~$20 USD/month or local equivalent)";
29
- readonly multiplier: 0.16;
30
20
  };
31
21
  readonly max_5x: {
32
22
  readonly name: "Max 5x (~$100 USD/month or local equivalent)";
33
- readonly multiplier: 0.16;
34
23
  };
35
24
  readonly max_20x: {
36
25
  readonly name: "Max 20x (~$200 USD/month or local equivalent)";
37
- readonly multiplier: 0.08;
38
26
  };
39
27
  readonly team_premium: {
40
28
  readonly name: "Team Premium (~$125 USD/seat or local equivalent)";
41
- readonly multiplier: 0.2;
42
29
  };
43
30
  readonly enterprise: {
44
31
  readonly name: "Enterprise (custom)";
45
- readonly multiplier: 0.05;
46
32
  };
47
33
  readonly api: {
48
34
  readonly name: "API (no subscription)";
49
- readonly multiplier: 1;
50
35
  };
51
36
  };
52
37
  export declare const SUBSCRIPTION_TIERS: ReadonlyArray<keyof typeof SUBSCRIPTION_TIER_CONFIG>;
53
38
  export type SubscriptionTier = keyof typeof SUBSCRIPTION_TIER_CONFIG;
54
- /** Get the cost multiplier for a given tier */
55
- export declare function getCostMultiplier(tier: SubscriptionTier): number;
56
39
  /** Environment variable names */
57
40
  export declare const ENV_VARS: {
58
41
  readonly TELEMETRY_ENABLED: "CLAUDE_CODE_ENABLE_TELEMETRY";
@@ -61,8 +44,9 @@ export declare const ENV_VARS: {
61
44
  readonly OTLP_PROTOCOL: "OTEL_EXPORTER_OTLP_PROTOCOL";
62
45
  readonly SUBSCRIBER_EMAIL: "REVENIUM_SUBSCRIBER_EMAIL";
63
46
  readonly SUBSCRIPTION: "CLAUDE_CODE_SUBSCRIPTION";
64
- readonly COST_MULTIPLIER: "CLAUDE_CODE_COST_MULTIPLIER";
47
+ readonly SUBSCRIPTION_TIER: "CLAUDE_CODE_SUBSCRIPTION_TIER";
65
48
  readonly ORGANIZATION_ID: "REVENIUM_ORGANIZATION_ID";
66
49
  readonly PRODUCT_ID: "REVENIUM_PRODUCT_ID";
50
+ readonly EXTRA_USAGE_ENABLED: "CLAUDE_CODE_EXTRA_USAGE_ENABLED";
67
51
  };
68
52
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,kDAAkD;AAClD,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C,0DAA0D;AAC1D,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,MAAQ,CAAC;AAEtC;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;CAyB3B,CAAC;AAEX,eAAO,MAAM,kBAAkB,EAA4C,aAAa,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAEhI,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,wBAAwB,CAAC;AAErE,+CAA+C;AAC/C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAEhE;AAED,iCAAiC;AACjC,eAAO,MAAM,QAAQ;;;;;;;;;;CAUX,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oCAAoC;AACpC,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAE9D,kDAAkD;AAClD,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C,0DAA0D;AAC1D,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,+DAA+D;AAC/D,eAAO,MAAM,gBAAgB,MAAQ,CAAC;AAEtC,mCAAmC;AACnC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;CAmB3B,CAAC;AAEX,eAAO,MAAM,kBAAkB,EAA4C,aAAa,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAEhI,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,wBAAwB,CAAC;AAErE,iCAAiC;AACjC,eAAO,MAAM,QAAQ;;;;;;;;;;;CAYX,CAAC"}
@@ -4,7 +4,6 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ENV_VARS = exports.SUBSCRIPTION_TIERS = exports.SUBSCRIPTION_TIER_CONFIG = exports.CONFIG_FILE_MODE = exports.REVENIUM_ENV_FILE = exports.CLAUDE_CONFIG_DIR = exports.API_KEY_PREFIX = exports.OTLP_PATH = exports.DEFAULT_REVENIUM_URL = void 0;
7
- exports.getCostMultiplier = getCostMultiplier;
8
7
  /** Default Revenium API base URL */
9
8
  exports.DEFAULT_REVENIUM_URL = 'https://api.revenium.ai';
10
9
  /** Path appended to base URL for OTLP endpoint */
@@ -17,47 +16,28 @@ exports.CLAUDE_CONFIG_DIR = '.claude';
17
16
  exports.REVENIUM_ENV_FILE = 'revenium.env';
18
17
  /** File permissions for config file (owner read/write only) */
19
18
  exports.CONFIG_FILE_MODE = 0o600;
20
- /** Available subscription tiers with their cost multipliers
21
- *
22
- * Cost multipliers represent the effective discount vs API pricing.
23
- * Values are estimates based on fully consuming monthly token allotments.
24
- *
25
- * Calculation basis: Max 20x tier ($200 for 20X tokens = $2,500 API equivalent)
26
- * establishes $125 per X tokens at API rates. Other tiers calculated proportionally.
27
- *
28
- * For detailed explanation and manual override instructions, see README.md
29
- */
19
+ /** Available subscription tiers */
30
20
  exports.SUBSCRIPTION_TIER_CONFIG = {
31
21
  pro: {
32
22
  name: 'Pro (~$20 USD/month or local equivalent)',
33
- multiplier: 0.16, // $20 / $125 API equivalent = 16%
34
23
  },
35
24
  max_5x: {
36
25
  name: 'Max 5x (~$100 USD/month or local equivalent)',
37
- multiplier: 0.16, // $100 / $625 API equivalent = 16%
38
26
  },
39
27
  max_20x: {
40
28
  name: 'Max 20x (~$200 USD/month or local equivalent)',
41
- multiplier: 0.08, // $200 / $2,500 API equivalent = 8% (baseline from real data)
42
29
  },
43
30
  team_premium: {
44
31
  name: 'Team Premium (~$125 USD/seat or local equivalent)',
45
- multiplier: 0.20, // $125 / $625 API equivalent = 20%
46
32
  },
47
33
  enterprise: {
48
34
  name: 'Enterprise (custom)',
49
- multiplier: 0.05, // Custom pricing with best discounts
50
35
  },
51
36
  api: {
52
37
  name: 'API (no subscription)',
53
- multiplier: 1.0, // Full API pricing
54
38
  },
55
39
  };
56
40
  exports.SUBSCRIPTION_TIERS = Object.keys(exports.SUBSCRIPTION_TIER_CONFIG);
57
- /** Get the cost multiplier for a given tier */
58
- function getCostMultiplier(tier) {
59
- return exports.SUBSCRIPTION_TIER_CONFIG[tier].multiplier;
60
- }
61
41
  /** Environment variable names */
62
42
  exports.ENV_VARS = {
63
43
  TELEMETRY_ENABLED: 'CLAUDE_CODE_ENABLE_TELEMETRY',
@@ -66,8 +46,10 @@ exports.ENV_VARS = {
66
46
  OTLP_PROTOCOL: 'OTEL_EXPORTER_OTLP_PROTOCOL',
67
47
  SUBSCRIBER_EMAIL: 'REVENIUM_SUBSCRIBER_EMAIL',
68
48
  SUBSCRIPTION: 'CLAUDE_CODE_SUBSCRIPTION',
69
- COST_MULTIPLIER: 'CLAUDE_CODE_COST_MULTIPLIER',
49
+ // Revenium-specific resource attribute name; value is read from native CLAUDE_CODE_SUBSCRIPTION during setup
50
+ SUBSCRIPTION_TIER: 'CLAUDE_CODE_SUBSCRIPTION_TIER',
70
51
  ORGANIZATION_ID: 'REVENIUM_ORGANIZATION_ID',
71
52
  PRODUCT_ID: 'REVENIUM_PRODUCT_ID',
53
+ EXTRA_USAGE_ENABLED: 'CLAUDE_CODE_EXTRA_USAGE_ENABLED',
72
54
  };
73
55
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA8DH,8CAEC;AA9DD,oCAAoC;AACvB,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AAE9D,kDAAkD;AACrC,QAAA,SAAS,GAAG,gBAAgB,CAAC;AAE1C,0DAA0D;AAC7C,QAAA,cAAc,GAAG,MAAM,CAAC;AAErC,8CAA8C;AACjC,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAE3C,sDAAsD;AACzC,QAAA,iBAAiB,GAAG,cAAc,CAAC;AAEhD,+DAA+D;AAClD,QAAA,gBAAgB,GAAG,KAAK,CAAC;AAEtC;;;;;;;;;GASG;AACU,QAAA,wBAAwB,GAAG;IACtC,GAAG,EAAE;QACH,IAAI,EAAE,0CAA0C;QAChD,UAAU,EAAE,IAAI,EAAE,kCAAkC;KACrD;IACD,MAAM,EAAE;QACN,IAAI,EAAE,8CAA8C;QACpD,UAAU,EAAE,IAAI,EAAE,mCAAmC;KACtD;IACD,OAAO,EAAE;QACP,IAAI,EAAE,+CAA+C;QACrD,UAAU,EAAE,IAAI,EAAE,8DAA8D;KACjF;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mDAAmD;QACzD,UAAU,EAAE,IAAI,EAAE,mCAAmC;KACtD;IACD,UAAU,EAAE;QACV,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,IAAI,EAAE,qCAAqC;KACxD;IACD,GAAG,EAAE;QACH,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,GAAG,EAAE,mBAAmB;KACrC;CACO,CAAC;AAEE,QAAA,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,gCAAwB,CAAyD,CAAC;AAIhI,+CAA+C;AAC/C,SAAgB,iBAAiB,CAAC,IAAsB;IACtD,OAAO,gCAAwB,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;AACnD,CAAC;AAED,iCAAiC;AACpB,QAAA,QAAQ,GAAG;IACtB,iBAAiB,EAAE,8BAA8B;IACjD,aAAa,EAAE,6BAA6B;IAC5C,YAAY,EAAE,4BAA4B;IAC1C,aAAa,EAAE,6BAA6B;IAC5C,gBAAgB,EAAE,2BAA2B;IAC7C,YAAY,EAAE,0BAA0B;IACxC,eAAe,EAAE,6BAA6B;IAC9C,eAAe,EAAE,0BAA0B;IAC3C,UAAU,EAAE,qBAAqB;CACzB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/utils/constants.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oCAAoC;AACvB,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AAE9D,kDAAkD;AACrC,QAAA,SAAS,GAAG,gBAAgB,CAAC;AAE1C,0DAA0D;AAC7C,QAAA,cAAc,GAAG,MAAM,CAAC;AAErC,8CAA8C;AACjC,QAAA,iBAAiB,GAAG,SAAS,CAAC;AAE3C,sDAAsD;AACzC,QAAA,iBAAiB,GAAG,cAAc,CAAC;AAEhD,+DAA+D;AAClD,QAAA,gBAAgB,GAAG,KAAK,CAAC;AAEtC,mCAAmC;AACtB,QAAA,wBAAwB,GAAG;IACtC,GAAG,EAAE;QACH,IAAI,EAAE,0CAA0C;KACjD;IACD,MAAM,EAAE;QACN,IAAI,EAAE,8CAA8C;KACrD;IACD,OAAO,EAAE;QACP,IAAI,EAAE,+CAA+C;KACtD;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,mDAAmD;KAC1D;IACD,UAAU,EAAE;QACV,IAAI,EAAE,qBAAqB;KAC5B;IACD,GAAG,EAAE;QACH,IAAI,EAAE,uBAAuB;KAC9B;CACO,CAAC;AAEE,QAAA,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,gCAAwB,CAAyD,CAAC;AAIhI,iCAAiC;AACpB,QAAA,QAAQ,GAAG;IACtB,iBAAiB,EAAE,8BAA8B;IACjD,aAAa,EAAE,6BAA6B;IAC5C,YAAY,EAAE,4BAA4B;IAC1C,aAAa,EAAE,6BAA6B;IAC5C,gBAAgB,EAAE,2BAA2B;IAC7C,YAAY,EAAE,0BAA0B;IACxC,6GAA6G;IAC7G,iBAAiB,EAAE,+BAA+B;IAClD,eAAe,EAAE,0BAA0B;IAC3C,UAAU,EAAE,qBAAqB;IACjC,mBAAmB,EAAE,iCAAiC;CAC9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revenium/claude-code-metering",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "description": "CLI tool to configure Claude Code telemetry export to Revenium",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -39,10 +39,10 @@
39
39
  "node": ">=20.0.0"
40
40
  },
41
41
  "dependencies": {
42
- "chalk": "^5.3.0",
42
+ "chalk": "^4.1.2",
43
43
  "commander": "^12.1.0",
44
- "inquirer": "^9.3.7",
45
- "ora": "^8.1.1"
44
+ "inquirer": "^8.2.6",
45
+ "ora": "^5.4.1"
46
46
  },
47
47
  "devDependencies": {
48
48
  "@types/inquirer": "^9.0.7",