@dexcost/sdk 0.2.0

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 (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +210 -0
  3. package/dist/adapters/_netbytes.d.ts +31 -0
  4. package/dist/adapters/_netbytes.d.ts.map +1 -0
  5. package/dist/adapters/_netbytes.js +154 -0
  6. package/dist/adapters/_netbytes.js.map +1 -0
  7. package/dist/adapters/aws-lambda.d.ts +41 -0
  8. package/dist/adapters/aws-lambda.d.ts.map +1 -0
  9. package/dist/adapters/aws-lambda.js +65 -0
  10. package/dist/adapters/aws-lambda.js.map +1 -0
  11. package/dist/adapters/browser.d.ts +52 -0
  12. package/dist/adapters/browser.d.ts.map +1 -0
  13. package/dist/adapters/browser.js +127 -0
  14. package/dist/adapters/browser.js.map +1 -0
  15. package/dist/adapters/compute-wrap.d.ts +33 -0
  16. package/dist/adapters/compute-wrap.d.ts.map +1 -0
  17. package/dist/adapters/compute-wrap.js +188 -0
  18. package/dist/adapters/compute-wrap.js.map +1 -0
  19. package/dist/adapters/data/aws_lambda_pricing.json +61 -0
  20. package/dist/adapters/gpu-wrap.d.ts +31 -0
  21. package/dist/adapters/gpu-wrap.d.ts.map +1 -0
  22. package/dist/adapters/gpu-wrap.js +147 -0
  23. package/dist/adapters/gpu-wrap.js.map +1 -0
  24. package/dist/adapters/http.d.ts +58 -0
  25. package/dist/adapters/http.d.ts.map +1 -0
  26. package/dist/adapters/http.js +769 -0
  27. package/dist/adapters/http.js.map +1 -0
  28. package/dist/adapters/index.d.ts +11 -0
  29. package/dist/adapters/index.d.ts.map +1 -0
  30. package/dist/adapters/index.js +12 -0
  31. package/dist/adapters/index.js.map +1 -0
  32. package/dist/adapters/network-accountant.d.ts +63 -0
  33. package/dist/adapters/network-accountant.d.ts.map +1 -0
  34. package/dist/adapters/network-accountant.js +153 -0
  35. package/dist/adapters/network-accountant.js.map +1 -0
  36. package/dist/cli/index.d.ts +13 -0
  37. package/dist/cli/index.d.ts.map +1 -0
  38. package/dist/cli/index.js +225 -0
  39. package/dist/cli/index.js.map +1 -0
  40. package/dist/cli/scanner.d.ts +39 -0
  41. package/dist/cli/scanner.d.ts.map +1 -0
  42. package/dist/cli/scanner.js +480 -0
  43. package/dist/cli/scanner.js.map +1 -0
  44. package/dist/clients.d.ts +54 -0
  45. package/dist/clients.d.ts.map +1 -0
  46. package/dist/clients.js +240 -0
  47. package/dist/clients.js.map +1 -0
  48. package/dist/cloud-detect.d.ts +96 -0
  49. package/dist/cloud-detect.d.ts.map +1 -0
  50. package/dist/cloud-detect.js +545 -0
  51. package/dist/cloud-detect.js.map +1 -0
  52. package/dist/core/auto-task.d.ts +20 -0
  53. package/dist/core/auto-task.d.ts.map +1 -0
  54. package/dist/core/auto-task.js +34 -0
  55. package/dist/core/auto-task.js.map +1 -0
  56. package/dist/core/cgroup-reader.d.ts +45 -0
  57. package/dist/core/cgroup-reader.d.ts.map +1 -0
  58. package/dist/core/cgroup-reader.js +124 -0
  59. package/dist/core/cgroup-reader.js.map +1 -0
  60. package/dist/core/cgroup-walker.d.ts +60 -0
  61. package/dist/core/cgroup-walker.d.ts.map +1 -0
  62. package/dist/core/cgroup-walker.js +166 -0
  63. package/dist/core/cgroup-walker.js.map +1 -0
  64. package/dist/core/compute-accountant.d.ts +51 -0
  65. package/dist/core/compute-accountant.d.ts.map +1 -0
  66. package/dist/core/compute-accountant.js +179 -0
  67. package/dist/core/compute-accountant.js.map +1 -0
  68. package/dist/core/compute-runtime.d.ts +42 -0
  69. package/dist/core/compute-runtime.d.ts.map +1 -0
  70. package/dist/core/compute-runtime.js +80 -0
  71. package/dist/core/compute-runtime.js.map +1 -0
  72. package/dist/core/config.d.ts +44 -0
  73. package/dist/core/config.d.ts.map +1 -0
  74. package/dist/core/config.js +66 -0
  75. package/dist/core/config.js.map +1 -0
  76. package/dist/core/context.d.ts +76 -0
  77. package/dist/core/context.d.ts.map +1 -0
  78. package/dist/core/context.js +91 -0
  79. package/dist/core/context.js.map +1 -0
  80. package/dist/core/fargate-metadata.d.ts +27 -0
  81. package/dist/core/fargate-metadata.d.ts.map +1 -0
  82. package/dist/core/fargate-metadata.js +102 -0
  83. package/dist/core/fargate-metadata.js.map +1 -0
  84. package/dist/core/gpu-accountant.d.ts +104 -0
  85. package/dist/core/gpu-accountant.d.ts.map +1 -0
  86. package/dist/core/gpu-accountant.js +383 -0
  87. package/dist/core/gpu-accountant.js.map +1 -0
  88. package/dist/core/gpu-runtime.d.ts +58 -0
  89. package/dist/core/gpu-runtime.d.ts.map +1 -0
  90. package/dist/core/gpu-runtime.js +131 -0
  91. package/dist/core/gpu-runtime.js.map +1 -0
  92. package/dist/core/heuristics.d.ts +74 -0
  93. package/dist/core/heuristics.d.ts.map +1 -0
  94. package/dist/core/heuristics.js +182 -0
  95. package/dist/core/heuristics.js.map +1 -0
  96. package/dist/core/models.d.ts +149 -0
  97. package/dist/core/models.d.ts.map +1 -0
  98. package/dist/core/models.js +226 -0
  99. package/dist/core/models.js.map +1 -0
  100. package/dist/core/nvml-reader.d.ts +114 -0
  101. package/dist/core/nvml-reader.d.ts.map +1 -0
  102. package/dist/core/nvml-reader.js +323 -0
  103. package/dist/core/nvml-reader.js.map +1 -0
  104. package/dist/core/session.d.ts +48 -0
  105. package/dist/core/session.d.ts.map +1 -0
  106. package/dist/core/session.js +123 -0
  107. package/dist/core/session.js.map +1 -0
  108. package/dist/core/tracker.d.ts +364 -0
  109. package/dist/core/tracker.d.ts.map +1 -0
  110. package/dist/core/tracker.js +1073 -0
  111. package/dist/core/tracker.js.map +1 -0
  112. package/dist/data/compute_prices.json +180 -0
  113. package/dist/data/egress_prices.json +418 -0
  114. package/dist/data/gpu_prices.json +412 -0
  115. package/dist/data/service_prices.json +2595 -0
  116. package/dist/dev-console.d.ts +12 -0
  117. package/dist/dev-console.d.ts.map +1 -0
  118. package/dist/dev-console.js +60 -0
  119. package/dist/dev-console.js.map +1 -0
  120. package/dist/index.d.ts +52 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +61 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/instruments/anthropic.d.ts +26 -0
  125. package/dist/instruments/anthropic.d.ts.map +1 -0
  126. package/dist/instruments/anthropic.js +242 -0
  127. package/dist/instruments/anthropic.js.map +1 -0
  128. package/dist/instruments/bedrock.d.ts +29 -0
  129. package/dist/instruments/bedrock.d.ts.map +1 -0
  130. package/dist/instruments/bedrock.js +215 -0
  131. package/dist/instruments/bedrock.js.map +1 -0
  132. package/dist/instruments/cohere.d.ts +29 -0
  133. package/dist/instruments/cohere.d.ts.map +1 -0
  134. package/dist/instruments/cohere.js +237 -0
  135. package/dist/instruments/cohere.js.map +1 -0
  136. package/dist/instruments/gemini.d.ts +30 -0
  137. package/dist/instruments/gemini.d.ts.map +1 -0
  138. package/dist/instruments/gemini.js +247 -0
  139. package/dist/instruments/gemini.js.map +1 -0
  140. package/dist/instruments/index.d.ts +35 -0
  141. package/dist/instruments/index.d.ts.map +1 -0
  142. package/dist/instruments/index.js +54 -0
  143. package/dist/instruments/index.js.map +1 -0
  144. package/dist/instruments/mcp.d.ts +24 -0
  145. package/dist/instruments/mcp.d.ts.map +1 -0
  146. package/dist/instruments/mcp.js +459 -0
  147. package/dist/instruments/mcp.js.map +1 -0
  148. package/dist/instruments/openai.d.ts +26 -0
  149. package/dist/instruments/openai.d.ts.map +1 -0
  150. package/dist/instruments/openai.js +221 -0
  151. package/dist/instruments/openai.js.map +1 -0
  152. package/dist/instruments/vercel-ai.d.ts +28 -0
  153. package/dist/instruments/vercel-ai.d.ts.map +1 -0
  154. package/dist/instruments/vercel-ai.js +192 -0
  155. package/dist/instruments/vercel-ai.js.map +1 -0
  156. package/dist/integrations/langchain.d.ts +65 -0
  157. package/dist/integrations/langchain.d.ts.map +1 -0
  158. package/dist/integrations/langchain.js +165 -0
  159. package/dist/integrations/langchain.js.map +1 -0
  160. package/dist/middleware/express.d.ts +55 -0
  161. package/dist/middleware/express.d.ts.map +1 -0
  162. package/dist/middleware/express.js +101 -0
  163. package/dist/middleware/express.js.map +1 -0
  164. package/dist/middleware/index.d.ts +6 -0
  165. package/dist/middleware/index.d.ts.map +1 -0
  166. package/dist/middleware/index.js +5 -0
  167. package/dist/middleware/index.js.map +1 -0
  168. package/dist/pricing/compute-pricing.d.ts +57 -0
  169. package/dist/pricing/compute-pricing.d.ts.map +1 -0
  170. package/dist/pricing/compute-pricing.js +627 -0
  171. package/dist/pricing/compute-pricing.js.map +1 -0
  172. package/dist/pricing/cost_map.json +37665 -0
  173. package/dist/pricing/egress-pricing.d.ts +55 -0
  174. package/dist/pricing/egress-pricing.d.ts.map +1 -0
  175. package/dist/pricing/egress-pricing.js +226 -0
  176. package/dist/pricing/egress-pricing.js.map +1 -0
  177. package/dist/pricing/engine.d.ts +24 -0
  178. package/dist/pricing/engine.d.ts.map +1 -0
  179. package/dist/pricing/engine.js +148 -0
  180. package/dist/pricing/engine.js.map +1 -0
  181. package/dist/pricing/gpu-pricing.d.ts +63 -0
  182. package/dist/pricing/gpu-pricing.d.ts.map +1 -0
  183. package/dist/pricing/gpu-pricing.js +484 -0
  184. package/dist/pricing/gpu-pricing.js.map +1 -0
  185. package/dist/pricing/rates.d.ts +17 -0
  186. package/dist/pricing/rates.d.ts.map +1 -0
  187. package/dist/pricing/rates.js +102 -0
  188. package/dist/pricing/rates.js.map +1 -0
  189. package/dist/pricing/service-catalog.d.ts +87 -0
  190. package/dist/pricing/service-catalog.d.ts.map +1 -0
  191. package/dist/pricing/service-catalog.js +406 -0
  192. package/dist/pricing/service-catalog.js.map +1 -0
  193. package/dist/schema/dexcost-event.v1.json +111 -0
  194. package/dist/schema/dexcost-task.v1.json +160 -0
  195. package/dist/schema/validate.d.ts +15 -0
  196. package/dist/schema/validate.d.ts.map +1 -0
  197. package/dist/schema/validate.js +87 -0
  198. package/dist/schema/validate.js.map +1 -0
  199. package/dist/security/redaction.d.ts +55 -0
  200. package/dist/security/redaction.d.ts.map +1 -0
  201. package/dist/security/redaction.js +144 -0
  202. package/dist/security/redaction.js.map +1 -0
  203. package/dist/transport/buffer.d.ts +117 -0
  204. package/dist/transport/buffer.d.ts.map +1 -0
  205. package/dist/transport/buffer.js +759 -0
  206. package/dist/transport/buffer.js.map +1 -0
  207. package/dist/transport/pusher.d.ts +89 -0
  208. package/dist/transport/pusher.d.ts.map +1 -0
  209. package/dist/transport/pusher.js +323 -0
  210. package/dist/transport/pusher.js.map +1 -0
  211. package/package.json +93 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffer.js","sourceRoot":"","sources":["../../src/transport/buffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Background HTTP event pusher for dexcost.
3
+ *
4
+ * Periodically reads pending events from the buffer and POSTs them
5
+ * to a remote endpoint using the built-in `fetch` API (Node 18+).
6
+ */
7
+ import type { TrackerOptions } from "../core/tracker.js";
8
+ import type { EventBuffer } from "./buffer.js";
9
+ /**
10
+ * Pushes buffered events to a remote endpoint on a periodic interval.
11
+ *
12
+ * Implements exponential backoff on failure, resetting on success.
13
+ */
14
+ export declare class EventPusher {
15
+ private _interval;
16
+ private _purgeInterval;
17
+ private _backoffMs;
18
+ private _buffer;
19
+ private _options;
20
+ private _pushing;
21
+ private _lastPurgeMs;
22
+ /** Set permanently when the API key is rejected (HTTP 401/403). */
23
+ private _authFailed;
24
+ constructor(buffer: EventBuffer, options: TrackerOptions);
25
+ /**
26
+ * Update the API key and clear any auth-failed state so the push
27
+ * loop can resume. Sprint 2 Theme D / §3.2.3 (B14). When the
28
+ * Control Layer returns 401/403 the pusher sets `_authFailed=true`
29
+ * and calls `stop()`. Without this method the only recovery is
30
+ * restarting the customer's process.
31
+ */
32
+ setApiKey(newKey: string): void;
33
+ /**
34
+ * Start the periodic background push loop.
35
+ */
36
+ start(): void;
37
+ /**
38
+ * Stop the periodic background push loop.
39
+ */
40
+ stop(): void;
41
+ /**
42
+ * Force an immediate flush of all pending events.
43
+ */
44
+ flush(): Promise<void>;
45
+ /**
46
+ * Push pending events to the remote endpoint.
47
+ *
48
+ * Uses exponential backoff on failure, capping at MAX_BACKOFF_MS.
49
+ * Resets backoff on success.
50
+ */
51
+ private push;
52
+ /**
53
+ * Serialise a single event to its wire dict, applying PII redaction,
54
+ * customer/project hashing, and the metadata size limit to `details`.
55
+ *
56
+ * Mirrors the Python SyncWorker (`sync.py`): redactFields are stripped,
57
+ * customer_id/project_id in details are SHA-256 hashed when
58
+ * hashCustomerId is set, and oversized details are replaced with a stub.
59
+ */
60
+ private _serializeEvent;
61
+ /**
62
+ * Serialise a single task to its wire dict, applying the same PII
63
+ * protections as `_serializeEvent` does for events: `redactFields` are
64
+ * stripped from `metadata`, `customer_id`/`project_id` are SHA-256
65
+ * hashed when `hashCustomerId` is set, and oversized metadata is
66
+ * replaced with a stub.
67
+ *
68
+ * Without this, task `metadata` (which can carry user PII) and the raw
69
+ * `customer_id`/`project_id` would be POSTed unredacted — a leak the
70
+ * event path already guards against. Mirrors the Python SyncWorker.
71
+ */
72
+ private _serializeTask;
73
+ /**
74
+ * POST events with automatic batch splitting if payload exceeds size limit.
75
+ *
76
+ * Recursively splits the events array in half until each chunk fits within
77
+ * the SQS payload limit. Tasks are sent with the first chunk only.
78
+ */
79
+ private pushWithSplit;
80
+ /**
81
+ * POST a pre-serialised JSON payload to the cloud ingest endpoint.
82
+ *
83
+ * Returns `true` on 2xx, `false` otherwise.
84
+ */
85
+ private postRaw;
86
+ /** Whether sync has been permanently disabled due to a rejected API key. */
87
+ get authFailed(): boolean;
88
+ }
89
+ //# sourceMappingURL=pusher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pusher.d.ts","sourceRoot":"","sources":["../../src/transport/pusher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgB/C;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAA+C;IAChE,OAAO,CAAC,cAAc,CAA+C;IACrE,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,mEAAmE;IACnE,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc;IAKxD;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAS/B;;OAEG;IACH,KAAK,IAAI,IAAI;IA8Bb;;OAEG;IACH,IAAI,IAAI,IAAI;IAWZ;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;;;;OAKG;YACW,IAAI;IAuDlB;;;;;;;OAOG;IACH,OAAO,CAAC,eAAe;IA6BvB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,cAAc;IA4BtB;;;;;OAKG;YACW,aAAa;IAwD3B;;;;OAIG;YACW,OAAO;IAkDrB,4EAA4E;IAC5E,IAAI,UAAU,IAAI,OAAO,CAExB;CACF"}
@@ -0,0 +1,323 @@
1
+ /**
2
+ * Background HTTP event pusher for dexcost.
3
+ *
4
+ * Periodically reads pending events from the buffer and POSTs them
5
+ * to a remote endpoint using the built-in `fetch` API (Node 18+).
6
+ */
7
+ import { eventToDict, taskToDict } from "../core/models.js";
8
+ import { redactDict, hashValue, enforceMetadataLimit } from "../security/redaction.js";
9
+ /** Hardcoded default endpoint; overridable only via DEXCOST_ENDPOINT env var. */
10
+ const DEFAULT_ENDPOINT = "https://api.dexcost.io";
11
+ /** Maximum backoff in milliseconds (5 minutes). */
12
+ const MAX_BACKOFF_MS = 300_000;
13
+ /** Maximum payload size in bytes — well under SQS 256KB limit. */
14
+ const MAX_PAYLOAD_BYTES = 200_000;
15
+ /** Minimum interval between purge runs in milliseconds (1 hour). */
16
+ const PURGE_INTERVAL_MS = 3_600_000;
17
+ /**
18
+ * Pushes buffered events to a remote endpoint on a periodic interval.
19
+ *
20
+ * Implements exponential backoff on failure, resetting on success.
21
+ */
22
+ export class EventPusher {
23
+ _interval = null;
24
+ _purgeInterval = null;
25
+ _backoffMs = 1000;
26
+ _buffer;
27
+ _options;
28
+ _pushing = false;
29
+ _lastPurgeMs = 0;
30
+ /** Set permanently when the API key is rejected (HTTP 401/403). */
31
+ _authFailed = false;
32
+ constructor(buffer, options) {
33
+ this._buffer = buffer;
34
+ this._options = options;
35
+ }
36
+ /**
37
+ * Update the API key and clear any auth-failed state so the push
38
+ * loop can resume. Sprint 2 Theme D / §3.2.3 (B14). When the
39
+ * Control Layer returns 401/403 the pusher sets `_authFailed=true`
40
+ * and calls `stop()`. Without this method the only recovery is
41
+ * restarting the customer's process.
42
+ */
43
+ setApiKey(newKey) {
44
+ this._options = { ...this._options, apiKey: newKey };
45
+ this._authFailed = false;
46
+ // If the loop was torn down by the prior auth failure, restart it.
47
+ if (!this._interval) {
48
+ this.start();
49
+ }
50
+ }
51
+ /**
52
+ * Start the periodic background push loop.
53
+ */
54
+ start() {
55
+ if (this._interval) {
56
+ return; // Already running
57
+ }
58
+ const intervalMs = this._options.flushIntervalMs ?? 30000;
59
+ this._interval = setInterval(() => {
60
+ void this.push();
61
+ }, intervalMs);
62
+ // Allow the process to exit even if the interval is running
63
+ if (this._interval.unref) {
64
+ this._interval.unref();
65
+ }
66
+ // Independent purge interval (runs even when pushes are failing).
67
+ // Purges old synced events AND stale pending events so a permanently
68
+ // failing sync can't grow the local buffer without bound.
69
+ this._purgeInterval = setInterval(() => {
70
+ try {
71
+ this._buffer.purgeSynced();
72
+ this._buffer.purgeOldPending();
73
+ }
74
+ catch {
75
+ // Non-fatal — purge will be retried next cycle
76
+ }
77
+ }, 60 * 60 * 1000);
78
+ if (this._purgeInterval.unref) {
79
+ this._purgeInterval.unref();
80
+ }
81
+ }
82
+ /**
83
+ * Stop the periodic background push loop.
84
+ */
85
+ stop() {
86
+ if (this._interval) {
87
+ clearInterval(this._interval);
88
+ this._interval = null;
89
+ }
90
+ if (this._purgeInterval) {
91
+ clearInterval(this._purgeInterval);
92
+ this._purgeInterval = null;
93
+ }
94
+ }
95
+ /**
96
+ * Force an immediate flush of all pending events.
97
+ */
98
+ async flush() {
99
+ await this.push();
100
+ }
101
+ /**
102
+ * Push pending events to the remote endpoint.
103
+ *
104
+ * Uses exponential backoff on failure, capping at MAX_BACKOFF_MS.
105
+ * Resets backoff on success.
106
+ */
107
+ async push() {
108
+ if (this._pushing) {
109
+ return; // Avoid concurrent pushes
110
+ }
111
+ if (this._authFailed) {
112
+ // API key was rejected — sync is permanently disabled.
113
+ return;
114
+ }
115
+ const batchSize = this._options.batchSize ?? 100;
116
+ const pending = this._buffer.getPendingEvents(batchSize);
117
+ if (pending.length === 0) {
118
+ return;
119
+ }
120
+ this._pushing = true;
121
+ try {
122
+ // Only send tasks that have changed since the last successful push
123
+ // (sync_status = 'pending'). Sending every task on every push wastes
124
+ // bandwidth and re-ingests unchanged rows server-side.
125
+ const tasks = this._buffer.getPendingTasks();
126
+ const ok = await this.pushWithSplit(pending, tasks);
127
+ if (ok) {
128
+ // §3.2.1 (B12): pushWithSplit now marks synced at each leaf
129
+ // POST; these calls are kept as a defensive idempotent safety
130
+ // net for any future path that returns true without splitting.
131
+ this._buffer.markSynced(pending.map((e) => e.eventId));
132
+ this._buffer.markTasksSynced(tasks.map((t) => t.taskId));
133
+ this._backoffMs = 1000; // Reset backoff on success
134
+ // Purge old synced events + stale pending events (throttled to
135
+ // once per hour). purgeOldPending is the safety net for events
136
+ // that can never be delivered (mirrors Python sync.py).
137
+ const now = Date.now();
138
+ if (now - this._lastPurgeMs >= PURGE_INTERVAL_MS) {
139
+ try {
140
+ this._buffer.purgeSynced();
141
+ this._buffer.purgeOldPending();
142
+ }
143
+ catch {
144
+ // Non-fatal — purge will be retried next cycle
145
+ }
146
+ this._lastPurgeMs = now;
147
+ }
148
+ }
149
+ else {
150
+ this._backoffMs = Math.min(this._backoffMs * 2, MAX_BACKOFF_MS);
151
+ }
152
+ }
153
+ catch {
154
+ this._backoffMs = Math.min(this._backoffMs * 2, MAX_BACKOFF_MS);
155
+ }
156
+ finally {
157
+ this._pushing = false;
158
+ }
159
+ }
160
+ /**
161
+ * Serialise a single event to its wire dict, applying PII redaction,
162
+ * customer/project hashing, and the metadata size limit to `details`.
163
+ *
164
+ * Mirrors the Python SyncWorker (`sync.py`): redactFields are stripped,
165
+ * customer_id/project_id in details are SHA-256 hashed when
166
+ * hashCustomerId is set, and oversized details are replaced with a stub.
167
+ */
168
+ _serializeEvent(event) {
169
+ const dict = eventToDict(event);
170
+ let details = dict["details"];
171
+ if (details && typeof details === "object") {
172
+ // Apply PII redaction to details
173
+ const redactFields = this._options.redactFields;
174
+ if (redactFields && redactFields.length > 0) {
175
+ details = redactDict(details, redactFields);
176
+ }
177
+ // Hash customer-adjacent fields when configured
178
+ if (this._options.hashCustomerId) {
179
+ for (const key of ["customer_id", "project_id"]) {
180
+ const val = details[key];
181
+ if (typeof val === "string") {
182
+ details[key] = hashValue(val);
183
+ }
184
+ }
185
+ }
186
+ // Enforce the metadata size limit
187
+ details = enforceMetadataLimit(details);
188
+ dict["details"] = details;
189
+ }
190
+ return dict;
191
+ }
192
+ /**
193
+ * Serialise a single task to its wire dict, applying the same PII
194
+ * protections as `_serializeEvent` does for events: `redactFields` are
195
+ * stripped from `metadata`, `customer_id`/`project_id` are SHA-256
196
+ * hashed when `hashCustomerId` is set, and oversized metadata is
197
+ * replaced with a stub.
198
+ *
199
+ * Without this, task `metadata` (which can carry user PII) and the raw
200
+ * `customer_id`/`project_id` would be POSTed unredacted — a leak the
201
+ * event path already guards against. Mirrors the Python SyncWorker.
202
+ */
203
+ _serializeTask(task) {
204
+ const dict = taskToDict(task);
205
+ let metadata = dict["metadata"];
206
+ if (metadata && typeof metadata === "object") {
207
+ // Strip configured PII fields from task metadata.
208
+ const redactFields = this._options.redactFields;
209
+ if (redactFields && redactFields.length > 0) {
210
+ metadata = redactDict(metadata, redactFields);
211
+ }
212
+ // Enforce the metadata size limit.
213
+ metadata = enforceMetadataLimit(metadata);
214
+ dict["metadata"] = metadata;
215
+ }
216
+ // Hash customer/project identifiers when configured.
217
+ if (this._options.hashCustomerId) {
218
+ for (const key of ["customer_id", "project_id"]) {
219
+ const val = dict[key];
220
+ if (typeof val === "string") {
221
+ dict[key] = hashValue(val);
222
+ }
223
+ }
224
+ }
225
+ return dict;
226
+ }
227
+ /**
228
+ * POST events with automatic batch splitting if payload exceeds size limit.
229
+ *
230
+ * Recursively splits the events array in half until each chunk fits within
231
+ * the SQS payload limit. Tasks are sent with the first chunk only.
232
+ */
233
+ async pushWithSplit(events, tasks, depth = 0) {
234
+ const MAX_DEPTH = 5;
235
+ let payload;
236
+ try {
237
+ payload = JSON.stringify({
238
+ events: events.map((e) => this._serializeEvent(e)),
239
+ tasks: tasks.map((t) => this._serializeTask(t)),
240
+ });
241
+ }
242
+ catch {
243
+ return false; // Unserializable payload — skip this batch
244
+ }
245
+ if (payload.length <= MAX_PAYLOAD_BYTES || depth >= MAX_DEPTH) {
246
+ const ok = await this.postRaw(payload);
247
+ if (ok) {
248
+ // Sprint 2 Theme D / §3.2.1 (B12): mark synced at the leaf so
249
+ // a sibling-half failure does not unwind work that succeeded.
250
+ // Pre-fix the outer caller marked synced ONLY when both halves
251
+ // returned true; first-half-OK + second-half-fail re-sent the
252
+ // first half on the next tick → duplicates at the control plane.
253
+ this._buffer.markSynced(events.map((e) => e.eventId));
254
+ if (tasks.length > 0) {
255
+ this._buffer.markTasksSynced(tasks.map((t) => t.taskId));
256
+ }
257
+ }
258
+ return ok;
259
+ }
260
+ if (events.length <= 1) {
261
+ // Single event too large — skip it with warning
262
+ console.warn(`[dexcost] Single event exceeds payload limit (${payload.length} bytes), skipping`);
263
+ return true;
264
+ }
265
+ // Split events in half
266
+ const mid = Math.floor(events.length / 2);
267
+ const firstOk = await this.pushWithSplit(events.slice(0, mid), tasks, depth + 1);
268
+ const secondOk = await this.pushWithSplit(events.slice(mid), [], depth + 1);
269
+ return firstOk && secondOk;
270
+ }
271
+ /**
272
+ * POST a pre-serialised JSON payload to the cloud ingest endpoint.
273
+ *
274
+ * Returns `true` on 2xx, `false` otherwise.
275
+ */
276
+ async postRaw(body) {
277
+ const endpoint = process.env.DEXCOST_ENDPOINT ?? DEFAULT_ENDPOINT;
278
+ const headers = {
279
+ "Content-Type": "application/json",
280
+ };
281
+ if (this._options.apiKey) {
282
+ headers["Authorization"] = `Bearer ${this._options.apiKey}`;
283
+ }
284
+ const url = `${endpoint}/v1/ingest`;
285
+ const controller = new AbortController();
286
+ const timeoutId = setTimeout(() => controller.abort(), 30_000);
287
+ let response;
288
+ try {
289
+ response = await fetch(url, {
290
+ method: "POST",
291
+ headers,
292
+ body,
293
+ signal: controller.signal,
294
+ });
295
+ }
296
+ finally {
297
+ clearTimeout(timeoutId);
298
+ }
299
+ if (response.ok) {
300
+ return true;
301
+ }
302
+ if (response.status === 413) {
303
+ // Permanent error — batch too large, don't retry
304
+ // This shouldn't happen with pre-split but handle gracefully
305
+ console.warn("[dexcost] Server returned 413 despite pre-split check");
306
+ return false;
307
+ }
308
+ if (response.status === 401 || response.status === 403) {
309
+ // API key rejected — stop sync permanently rather than retrying
310
+ // a rejected key forever (mirrors Python sync.py).
311
+ console.error(`[dexcost] API key rejected (HTTP ${response.status}) — disabling sync`);
312
+ this._authFailed = true;
313
+ this.stop();
314
+ return false;
315
+ }
316
+ return false;
317
+ }
318
+ /** Whether sync has been permanently disabled due to a rejected API key. */
319
+ get authFailed() {
320
+ return this._authFailed;
321
+ }
322
+ }
323
+ //# sourceMappingURL=pusher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pusher.js","sourceRoot":"","sources":["../../src/transport/pusher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEvF,iFAAiF;AACjF,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AAElD,mDAAmD;AACnD,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,kEAAkE;AAClE,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAElC,oEAAoE;AACpE,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAEpC;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACd,SAAS,GAA0C,IAAI,CAAC;IACxD,cAAc,GAA0C,IAAI,CAAC;IAC7D,UAAU,GAAG,IAAI,CAAC;IAClB,OAAO,CAAc;IACrB,QAAQ,CAAiB;IACzB,QAAQ,GAAG,KAAK,CAAC;IACjB,YAAY,GAAG,CAAC,CAAC;IACzB,mEAAmE;IAC3D,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAY,MAAmB,EAAE,OAAuB;QACtD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QACrD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,mEAAmE;QACnE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,kBAAkB;QAC5B,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,KAAK,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;YAChC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,CAAC,EAAE,UAAU,CAAC,CAAC;QAEf,4DAA4D;QAC5D,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACzB,CAAC;QAED,kEAAkE;QAClE,qEAAqE;QACrE,0DAA0D;QAC1D,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;YACrC,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC3B,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YACjC,CAAC;YAAC,MAAM,CAAC;gBACP,+CAA+C;YACjD,CAAC;QACH,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACnB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;QACD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACnC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,0BAA0B;QACpC,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,uDAAuD;YACvD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,GAAG,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC;YACH,mEAAmE;YACnE,qEAAqE;YACrE,uDAAuD;YACvD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;YAE7C,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,EAAE,EAAE,CAAC;gBACP,4DAA4D;gBAC5D,8DAA8D;gBAC9D,+DAA+D;gBAC/D,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,2BAA2B;gBAEnD,+DAA+D;gBAC/D,+DAA+D;gBAC/D,wDAAwD;gBACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,IAAI,iBAAiB,EAAE,CAAC;oBACjD,IAAI,CAAC;wBACH,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;wBAC3B,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;oBACjC,CAAC;oBAAC,MAAM,CAAC;wBACP,+CAA+C;oBACjD,CAAC;oBACD,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;gBAC1B,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;QAClE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,eAAe,CAAC,KAAgB;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAA+C,CAAC;QAE5E,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAC3C,iCAAiC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAChD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC9C,CAAC;YAED,gDAAgD;YAChD,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;gBACjC,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;oBAChD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;oBACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;wBAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QAC5B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;OAUG;IACK,cAAc,CAAC,IAAU;QAC/B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAA+C,CAAC;QAC9E,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC7C,kDAAkD;YAClD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;YAChD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAChD,CAAC;YACD,mCAAmC;YACnC,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,CAAC;gBAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,aAAa,CACzB,MAAmB,EACnB,KAAa,EACb,QAAgB,CAAC;QAEjB,MAAM,SAAS,GAAG,CAAC,CAAC;QAEpB,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;gBACvB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBAClD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;aAChD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC,CAAC,2CAA2C;QAC3D,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,IAAI,iBAAiB,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9D,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,EAAE,EAAE,CAAC;gBACP,8DAA8D;gBAC9D,8DAA8D;gBAC9D,+DAA+D;gBAC/D,8DAA8D;gBAC9D,iEAAiE;gBACjE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACvB,gDAAgD;YAChD,OAAO,CAAC,IAAI,CACV,iDAAiD,OAAO,CAAC,MAAM,mBAAmB,CACnF,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,uBAAuB;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CACtC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EACpB,KAAK,EACL,KAAK,GAAG,CAAC,CACV,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CACvC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EACjB,EAAE,EACF,KAAK,GAAG,CAAC,CACV,CAAC;QACF,OAAO,OAAO,IAAI,QAAQ,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,OAAO,CAAC,IAAY;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;QAElE,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QACF,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC9D,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,QAAQ,YAAY,CAAC;QACpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO;gBACP,IAAI;gBACJ,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;QAED,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,iDAAiD;YACjD,6DAA6D;YAC7D,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;YACtE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvD,gEAAgE;YAChE,mDAAmD;YACnD,OAAO,CAAC,KAAK,CACX,oCAAoC,QAAQ,CAAC,MAAM,oBAAoB,CACxE,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAC5E,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,93 @@
1
+ {
2
+ "name": "@dexcost/sdk",
3
+ "version": "0.2.0",
4
+ "description": "Agent Unit Economics SDK for Node.js",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "dexcost": "dist/cli/index.js"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "types": "./dist/index.d.ts"
15
+ },
16
+ "./package.json": "./package.json"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md",
21
+ "LICENSE"
22
+ ],
23
+ "publishConfig": {
24
+ "access": "public",
25
+ "provenance": true
26
+ },
27
+ "scripts": {
28
+ "build": "tsc && node scripts/copy-assets.mjs",
29
+ "test": "vitest run",
30
+ "lint": "tsc --noEmit",
31
+ "prepublishOnly": "npm run build"
32
+ },
33
+ "engines": {
34
+ "node": ">=18.0.0"
35
+ },
36
+ "dependencies": {
37
+ "ajv": "^8.18.0",
38
+ "ajv-formats": "^3.0.1",
39
+ "decimal.js": "^10.6.0",
40
+ "js-yaml": "^4.1.1"
41
+ },
42
+ "peerDependencies": {
43
+ "@anthropic-ai/sdk": ">=0.30.0",
44
+ "ai": ">=3.0.0",
45
+ "better-sqlite3": ">=11.0.0",
46
+ "openai": ">=4.0.0",
47
+ "playwright": ">=1.40.0"
48
+ },
49
+ "peerDependenciesMeta": {
50
+ "openai": {
51
+ "optional": true
52
+ },
53
+ "@anthropic-ai/sdk": {
54
+ "optional": true
55
+ },
56
+ "ai": {
57
+ "optional": true
58
+ },
59
+ "better-sqlite3": {
60
+ "optional": true
61
+ },
62
+ "playwright": {
63
+ "optional": true
64
+ }
65
+ },
66
+ "optionalDependencies": {
67
+ "better-sqlite3": "^12.8.0"
68
+ },
69
+ "devDependencies": {
70
+ "@types/better-sqlite3": "^7.6.13",
71
+ "@types/js-yaml": "^4.0.9",
72
+ "@types/node": "^20.0.0",
73
+ "typescript": "^5.3.0",
74
+ "vitest": "^1.2.0"
75
+ },
76
+ "keywords": [
77
+ "ai",
78
+ "agents",
79
+ "cost-tracking",
80
+ "llm",
81
+ "observability"
82
+ ],
83
+ "license": "MIT",
84
+ "homepage": "https://docs.dexcost.io/docs/sdks/typescript",
85
+ "repository": {
86
+ "type": "git",
87
+ "url": "git+https://github.com/DexwoxBusiness/dexcost-sdk.git",
88
+ "directory": "typescript"
89
+ },
90
+ "bugs": {
91
+ "url": "https://github.com/DexwoxBusiness/dexcost-sdk/issues"
92
+ }
93
+ }