@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":"http.js","sourceRoot":"","sources":["../../src/adapters/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Adapters for automatic cost tracking of HTTP, browser, and compute services.
3
+ *
4
+ * This module re-exports every adapter the SDK ships with.
5
+ */
6
+ export { registerDomainRate, getDomainRates, clearDomainRates, trackHttp, untrackHttp, getRecordedEvents, clearRecordedEvents, getServiceCatalog, resetServiceCatalog, getSessionManager, } from "./http.js";
7
+ export { trackBrowser, getBrowserEvents, clearBrowserEvents, } from "./browser.js";
8
+ export type { TrackBrowserOptions } from "./browser.js";
9
+ export { lambdaCost, getSupportedRegions } from "./aws-lambda.js";
10
+ export type { LambdaCostResult, LambdaCostDetails, } from "./aws-lambda.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAClE,YAAY,EACV,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Adapters for automatic cost tracking of HTTP, browser, and compute services.
3
+ *
4
+ * This module re-exports every adapter the SDK ships with.
5
+ */
6
+ // HTTP adapter
7
+ export { registerDomainRate, getDomainRates, clearDomainRates, trackHttp, untrackHttp, getRecordedEvents, clearRecordedEvents, getServiceCatalog, resetServiceCatalog, getSessionManager, } from "./http.js";
8
+ // Browser (Playwright) adapter
9
+ export { trackBrowser, getBrowserEvents, clearBrowserEvents, } from "./browser.js";
10
+ // AWS Lambda cost calculator
11
+ export { lambdaCost, getSupportedRegions } from "./aws-lambda.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AAEnB,+BAA+B;AAC/B,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,6BAA6B;AAC7B,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * NetworkAccountant — per-task in-process accumulator of HTTP byte usage.
3
+ *
4
+ * Ports python/src/dexcost/network_accountant.py to TypeScript and mirrors
5
+ * the Go (go/adapters/network_accountant.go) and Rust (rust/src/adapters/
6
+ * network_accountant.rs) ports. Single-threaded event loop means no
7
+ * mutex is needed — concurrent record() can't happen without an await.
8
+ *
9
+ * isInternal follows the v1 §4.2 three-valued classification (same as
10
+ * `classifyDestination` in `_netbytes.ts`):
11
+ *
12
+ * - `true` → bytes are intra-VPC / loopback → 0 external bytes.
13
+ * - `false` → confirmed public IP → all of bytesOut are external.
14
+ * - `null` → unresolved named host → treated as external (conservative —
15
+ * over-attribute rather than undercount).
16
+ */
17
+ /** Number of host entries kept in by_host after finalize (plus `_other`). */
18
+ export declare const FINALIZE_CAP = 20;
19
+ /** Max distinct hosts tracked live before overflow folds into `_other`. */
20
+ export declare const LIVE_CAP = 500;
21
+ export interface NetworkSnapshot {
22
+ bytesIn: number;
23
+ bytesOut: number;
24
+ /** canonical scalar — basis for v2 network_cost_usd */
25
+ externalBytesOut: number;
26
+ callCount: number;
27
+ /** `{ hosts: [...] }` shape, JSON-friendly */
28
+ byHost: {
29
+ hosts: Array<Record<string, unknown>>;
30
+ };
31
+ }
32
+ export declare class NetworkAccountant {
33
+ private bytesIn;
34
+ private bytesOut;
35
+ private externalBytesOut;
36
+ private callCount;
37
+ private hosts;
38
+ private other;
39
+ private frozen;
40
+ /** Add one HTTP call's bytes. No-op once finalize() has been called. */
41
+ record(host: string, bytesIn: number, bytesOut: number, isInternal?: boolean | null): void;
42
+ /** Number of distinct hosts currently tracked (excludes `_other`). */
43
+ liveHostCount(): number;
44
+ /**
45
+ * Freezes the accountant and returns the snapshot for the task fields.
46
+ *
47
+ * Returns the top FINALIZE_CAP hosts by total bytes (bytes_in + bytes_out)
48
+ * plus an `_other` bucket summing the rest. Each host entry carries
49
+ * `external_bytes_out` so v2 per-host egress cost survives the cap.
50
+ * If a real host is literally named `_other` it is folded into the
51
+ * synthetic overflow bucket — the output never has duplicate names.
52
+ */
53
+ finalize(): NetworkSnapshot;
54
+ }
55
+ export declare function registerAccountant(taskId: string, accountant: NetworkAccountant): void;
56
+ export declare function getAccountant(taskId: string): NetworkAccountant | undefined;
57
+ export declare function unregisterAccountant(taskId: string): NetworkAccountant | undefined;
58
+ /**
59
+ * Test-only: clear the entire registry. Use between tests that exercise
60
+ * the registry to avoid cross-test contamination.
61
+ */
62
+ export declare function _resetAccountantRegistryForTests(): void;
63
+ //# sourceMappingURL=network-accountant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-accountant.d.ts","sourceRoot":"","sources":["../../src/adapters/network-accountant.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,6EAA6E;AAC7E,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,2EAA2E;AAC3E,eAAO,MAAM,QAAQ,MAAM,CAAC;AAO5B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,MAAM,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;KAAE,CAAC;CACnD;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,KAAK,CAAgC;IAE7C,OAAO,CAAC,KAAK,CAAkD;IAC/D,OAAO,CAAC,MAAM,CAAS;IAEvB,wEAAwE;IACxE,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,OAAO,GAAG,IAAW,GAChC,IAAI;IA8BP,sEAAsE;IACtE,aAAa,IAAI,MAAM;IAIvB;;;;;;;;OAQG;IACH,QAAQ,IAAI,eAAe;CAqD5B;AAaD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,iBAAiB,GAC5B,IAAI,CAEN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE3E;AAED,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,GACb,iBAAiB,GAAG,SAAS,CAI/B;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * NetworkAccountant — per-task in-process accumulator of HTTP byte usage.
3
+ *
4
+ * Ports python/src/dexcost/network_accountant.py to TypeScript and mirrors
5
+ * the Go (go/adapters/network_accountant.go) and Rust (rust/src/adapters/
6
+ * network_accountant.rs) ports. Single-threaded event loop means no
7
+ * mutex is needed — concurrent record() can't happen without an await.
8
+ *
9
+ * isInternal follows the v1 §4.2 three-valued classification (same as
10
+ * `classifyDestination` in `_netbytes.ts`):
11
+ *
12
+ * - `true` → bytes are intra-VPC / loopback → 0 external bytes.
13
+ * - `false` → confirmed public IP → all of bytesOut are external.
14
+ * - `null` → unresolved named host → treated as external (conservative —
15
+ * over-attribute rather than undercount).
16
+ */
17
+ /** Number of host entries kept in by_host after finalize (plus `_other`). */
18
+ export const FINALIZE_CAP = 20;
19
+ /** Max distinct hosts tracked live before overflow folds into `_other`. */
20
+ export const LIVE_CAP = 500;
21
+ export class NetworkAccountant {
22
+ bytesIn = 0;
23
+ bytesOut = 0;
24
+ externalBytesOut = 0;
25
+ callCount = 0;
26
+ hosts = new Map();
27
+ // Overflow bucket once LIVE_CAP distinct hosts are tracked.
28
+ other = [0, 0, 0, 0];
29
+ frozen = false;
30
+ /** Add one HTTP call's bytes. No-op once finalize() has been called. */
31
+ record(host, bytesIn, bytesOut, isInternal = null) {
32
+ // Clamp negatives — bytes can never be negative.
33
+ bytesIn = Math.max(0, bytesIn);
34
+ bytesOut = Math.max(0, bytesOut);
35
+ const externalOut = isInternal === true ? 0 : bytesOut;
36
+ if (this.frozen)
37
+ return;
38
+ this.bytesIn += bytesIn;
39
+ this.bytesOut += bytesOut;
40
+ this.externalBytesOut += externalOut;
41
+ this.callCount += 1;
42
+ const key = host || "_unknown";
43
+ const entry = this.hosts.get(key);
44
+ if (entry) {
45
+ entry.values[0] += 1;
46
+ entry.values[1] += bytesIn;
47
+ entry.values[2] += bytesOut;
48
+ entry.values[3] += externalOut;
49
+ }
50
+ else if (this.hosts.size < LIVE_CAP) {
51
+ this.hosts.set(key, { values: [1, bytesIn, bytesOut, externalOut] });
52
+ }
53
+ else {
54
+ this.other[0] += 1;
55
+ this.other[1] += bytesIn;
56
+ this.other[2] += bytesOut;
57
+ this.other[3] += externalOut;
58
+ }
59
+ }
60
+ /** Number of distinct hosts currently tracked (excludes `_other`). */
61
+ liveHostCount() {
62
+ return this.hosts.size;
63
+ }
64
+ /**
65
+ * Freezes the accountant and returns the snapshot for the task fields.
66
+ *
67
+ * Returns the top FINALIZE_CAP hosts by total bytes (bytes_in + bytes_out)
68
+ * plus an `_other` bucket summing the rest. Each host entry carries
69
+ * `external_bytes_out` so v2 per-host egress cost survives the cap.
70
+ * If a real host is literally named `_other` it is folded into the
71
+ * synthetic overflow bucket — the output never has duplicate names.
72
+ */
73
+ finalize() {
74
+ this.frozen = true;
75
+ const ranked = Array.from(this.hosts.entries());
76
+ ranked.sort((a, b) => {
77
+ const totalA = a[1].values[1] + a[1].values[2];
78
+ const totalB = b[1].values[1] + b[1].values[2];
79
+ return totalB - totalA;
80
+ });
81
+ const other = [...this.other];
82
+ const top = [];
83
+ for (let i = 0; i < ranked.length; i++) {
84
+ const [host, entry] = ranked[i];
85
+ if (i < FINALIZE_CAP) {
86
+ if (host === "_other") {
87
+ // Fold real-host-named-_other into the synthetic bucket so the
88
+ // output never contains duplicates.
89
+ for (let j = 0; j < 4; j++)
90
+ other[j] += entry.values[j];
91
+ }
92
+ else {
93
+ top.push([host, entry]);
94
+ }
95
+ }
96
+ else {
97
+ for (let j = 0; j < 4; j++)
98
+ other[j] += entry.values[j];
99
+ }
100
+ }
101
+ const hosts = top.map(([host, entry]) => ({
102
+ host,
103
+ calls: entry.values[0],
104
+ bytes_in: entry.values[1],
105
+ bytes_out: entry.values[2],
106
+ external_bytes_out: entry.values[3],
107
+ }));
108
+ if (other[0] > 0) {
109
+ hosts.push({
110
+ host: "_other",
111
+ calls: other[0],
112
+ bytes_in: other[1],
113
+ bytes_out: other[2],
114
+ external_bytes_out: other[3],
115
+ });
116
+ }
117
+ return {
118
+ bytesIn: this.bytesIn,
119
+ bytesOut: this.bytesOut,
120
+ externalBytesOut: this.externalBytesOut,
121
+ callCount: this.callCount,
122
+ byHost: { hosts },
123
+ };
124
+ }
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // Registry — taskId → NetworkAccountant
128
+ // ---------------------------------------------------------------------------
129
+ //
130
+ // The HTTP adapter (patched globalThis.fetch) resolves a task via context
131
+ // AsyncLocalStorage but the registered accountant is keyed by taskId so
132
+ // the tracker can register/unregister independently of context state.
133
+ // Mirrors the Rust + Go registry pattern.
134
+ const _registry = new Map();
135
+ export function registerAccountant(taskId, accountant) {
136
+ _registry.set(taskId, accountant);
137
+ }
138
+ export function getAccountant(taskId) {
139
+ return _registry.get(taskId);
140
+ }
141
+ export function unregisterAccountant(taskId) {
142
+ const a = _registry.get(taskId);
143
+ _registry.delete(taskId);
144
+ return a;
145
+ }
146
+ /**
147
+ * Test-only: clear the entire registry. Use between tests that exercise
148
+ * the registry to avoid cross-test contamination.
149
+ */
150
+ export function _resetAccountantRegistryForTests() {
151
+ _registry.clear();
152
+ }
153
+ //# sourceMappingURL=network-accountant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network-accountant.js","sourceRoot":"","sources":["../../src/adapters/network-accountant.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * dexcost CLI.
4
+ *
5
+ * Commands:
6
+ * dexcost scan [directory] — scan TypeScript/JavaScript projects for cost points (US-031)
7
+ * dexcost status [--db path] — show local buffer DB stats and SDK versions (US-049)
8
+ * dexcost rates --list — list all rates in the registry
9
+ * dexcost rates --import path — import rates from a YAML file
10
+ * dexcost rates --export path — export rates to a YAML file
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
@@ -0,0 +1,225 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * dexcost CLI.
4
+ *
5
+ * Commands:
6
+ * dexcost scan [directory] — scan TypeScript/JavaScript projects for cost points (US-031)
7
+ * dexcost status [--db path] — show local buffer DB stats and SDK versions (US-049)
8
+ * dexcost rates --list — list all rates in the registry
9
+ * dexcost rates --import path — import rates from a YAML file
10
+ * dexcost rates --export path — export rates to a YAML file
11
+ */
12
+ import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
13
+ import { homedir } from "node:os";
14
+ import { join, extname } from "node:path";
15
+ import { scanSource, generateStubs } from "./scanner.js";
16
+ import { EventBuffer } from "../transport/buffer.js";
17
+ import { PricingEngine } from "../pricing/engine.js";
18
+ import { RateRegistry } from "../pricing/rates.js";
19
+ // ---------------------------------------------------------------------------
20
+ // scan helpers
21
+ // ---------------------------------------------------------------------------
22
+ const EXTENSIONS = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs"]);
23
+ const IGNORE = new Set(["node_modules", "dist", ".git", "coverage"]);
24
+ function walkDir(dir) {
25
+ const files = [];
26
+ for (const entry of readdirSync(dir)) {
27
+ if (IGNORE.has(entry))
28
+ continue;
29
+ const fullPath = join(dir, entry);
30
+ const stat = statSync(fullPath);
31
+ if (stat.isDirectory()) {
32
+ files.push(...walkDir(fullPath));
33
+ }
34
+ else if (EXTENSIONS.has(extname(entry))) {
35
+ files.push(fullPath);
36
+ }
37
+ }
38
+ return files;
39
+ }
40
+ // ---------------------------------------------------------------------------
41
+ // scan command
42
+ // ---------------------------------------------------------------------------
43
+ function cmdScan(args) {
44
+ let target = ".";
45
+ let generateStubsFlag = false;
46
+ for (const arg of args) {
47
+ if (arg === "--generate-stubs") {
48
+ generateStubsFlag = true;
49
+ }
50
+ else if (!arg.startsWith("-")) {
51
+ target = arg;
52
+ }
53
+ }
54
+ const files = walkDir(target);
55
+ let totalPoints = 0;
56
+ let autoInstrumentable = 0;
57
+ let needsManual = 0;
58
+ const allPoints = [];
59
+ for (const file of files) {
60
+ const source = readFileSync(file, "utf-8");
61
+ const points = scanSource(source, file);
62
+ if (points.length === 0)
63
+ continue;
64
+ allPoints.push(...points);
65
+ console.log(`\n${file}:`);
66
+ for (const p of points) {
67
+ const tag = p.autoInstrumentable ? "[auto]" : "[manual]";
68
+ console.log(` L${p.line}: ${tag} ${p.provider} \u2014 ${p.pattern}`);
69
+ totalPoints++;
70
+ if (p.autoInstrumentable) {
71
+ autoInstrumentable++;
72
+ }
73
+ else {
74
+ needsManual++;
75
+ }
76
+ }
77
+ }
78
+ console.log(`\n--- Summary ---`);
79
+ console.log(`Files scanned: ${files.length}`);
80
+ console.log(`Cost points found: ${totalPoints}`);
81
+ console.log(` Auto-instrumentable: ${autoInstrumentable}`);
82
+ console.log(` Needs record_cost(): ${needsManual}`);
83
+ if (generateStubsFlag && allPoints.length > 0) {
84
+ console.log("\nGENERATED STUBS:\n");
85
+ console.log(generateStubs(allPoints, target));
86
+ }
87
+ }
88
+ // ---------------------------------------------------------------------------
89
+ // status command
90
+ // ---------------------------------------------------------------------------
91
+ function cmdStatus(args) {
92
+ // Parse --db path
93
+ let dbPath = join(homedir(), ".dexcost", "buffer.db");
94
+ const dbIdx = args.indexOf("--db");
95
+ if (dbIdx !== -1 && args[dbIdx + 1]) {
96
+ dbPath = args[dbIdx + 1];
97
+ }
98
+ console.log(`DB location: ${dbPath}`);
99
+ if (!existsSync(dbPath)) {
100
+ console.log("Status: Database not found");
101
+ return;
102
+ }
103
+ const buffer = new EventBuffer(dbPath);
104
+ try {
105
+ const allEvents = buffer.getAllEvents();
106
+ const allTasks = buffer.getAllTasks();
107
+ const pendingEvents = buffer.getPendingEvents(Number.MAX_SAFE_INTEGER);
108
+ const syncedCount = allEvents.length - pendingEvents.length;
109
+ // Last task started_at
110
+ let lastTask = "none";
111
+ if (allTasks.length > 0) {
112
+ const sorted = allTasks
113
+ .map((t) => t.startedAt)
114
+ .sort((a, b) => b.getTime() - a.getTime());
115
+ lastTask = sorted[0].toISOString();
116
+ }
117
+ console.log(`Events: ${allEvents.length}`);
118
+ console.log(`Tasks: ${allTasks.length}`);
119
+ console.log(`Pending: ${pendingEvents.length}`);
120
+ console.log(`Synced: ${syncedCount}`);
121
+ console.log(`Last task: ${lastTask}`);
122
+ // Pricing engine version
123
+ const engine = new PricingEngine();
124
+ console.log(`Pricing version: ${engine.pricingVersion}`);
125
+ // Detect optional peer SDKs
126
+ try {
127
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
128
+ const openai = require("openai");
129
+ console.log(`openai SDK: ${openai.VERSION ?? "(unknown version)"}`);
130
+ }
131
+ catch {
132
+ console.log("openai SDK: not installed");
133
+ }
134
+ try {
135
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
136
+ const anthropic = require("@anthropic-ai/sdk");
137
+ console.log(`anthropic SDK: ${anthropic.VERSION ?? "(unknown version)"}`);
138
+ }
139
+ catch {
140
+ console.log("anthropic SDK: not installed");
141
+ }
142
+ }
143
+ finally {
144
+ buffer.close();
145
+ }
146
+ }
147
+ // ---------------------------------------------------------------------------
148
+ // rates command
149
+ // ---------------------------------------------------------------------------
150
+ function cmdRates(args) {
151
+ const hasImport = args.includes("--import");
152
+ const hasList = args.includes("--list");
153
+ const hasExport = args.includes("--export");
154
+ if (!hasImport && !hasList && !hasExport) {
155
+ console.log("Usage: dexcost rates [--import path] [--list] [--export path]");
156
+ return;
157
+ }
158
+ const registry = new RateRegistry();
159
+ // Import first (so list/export see the loaded rates)
160
+ if (hasImport) {
161
+ const idx = args.indexOf("--import");
162
+ const importPath = args[idx + 1];
163
+ if (!importPath) {
164
+ console.error("--import requires a file path");
165
+ process.exit(1);
166
+ }
167
+ registry.load(importPath);
168
+ const loadedCount = Object.keys(registry.rates).length;
169
+ console.log(`Loaded ${loadedCount} rate(s) from ${importPath}`);
170
+ }
171
+ if (hasList) {
172
+ const rates = registry.rates;
173
+ const entries = Object.values(rates).sort((a, b) => a.service.localeCompare(b.service));
174
+ if (entries.length === 0) {
175
+ console.log("No rates registered.");
176
+ return;
177
+ }
178
+ // Calculate column widths
179
+ const maxService = Math.max(7, ...entries.map((e) => e.service.length));
180
+ const maxPer = Math.max(3, ...entries.map((e) => e.per.length));
181
+ const header = `${"Service".padEnd(maxService)} ${"Per".padEnd(maxPer)} Cost USD`;
182
+ const divider = "-".repeat(header.length);
183
+ console.log(header);
184
+ console.log(divider);
185
+ for (const entry of entries) {
186
+ console.log(`${entry.service.padEnd(maxService)} ${entry.per.padEnd(maxPer)} ${entry.costUsd}`);
187
+ }
188
+ }
189
+ if (hasExport) {
190
+ const idx = args.indexOf("--export");
191
+ const exportPath = args[idx + 1];
192
+ if (!exportPath) {
193
+ console.error("--export requires a file path");
194
+ process.exit(1);
195
+ }
196
+ registry.export(exportPath);
197
+ const exportedCount = Object.keys(registry.rates).length;
198
+ console.log(`Exported ${exportedCount} rate(s) to ${exportPath}`);
199
+ }
200
+ }
201
+ // ---------------------------------------------------------------------------
202
+ // Dispatch
203
+ // ---------------------------------------------------------------------------
204
+ function main() {
205
+ const args = process.argv.slice(2);
206
+ const cmd = args[0];
207
+ if (cmd === "scan") {
208
+ cmdScan(args.slice(1));
209
+ }
210
+ else if (cmd === "status") {
211
+ cmdStatus(args.slice(1));
212
+ }
213
+ else if (cmd === "rates") {
214
+ cmdRates(args.slice(1));
215
+ }
216
+ else {
217
+ console.log("Usage: dexcost <command> [options]");
218
+ console.log(" scan [directory]");
219
+ console.log(" status [--db path]");
220
+ console.log(" rates [--import path] [--list] [--export path]");
221
+ process.exit(1);
222
+ }
223
+ }
224
+ main();
225
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Code scanner for cost point detection (US-031).
3
+ *
4
+ * Regex-based static analysis — no API key needed, runs offline.
5
+ *
6
+ * Detection layers:
7
+ * 1. LLM SDK calls (auto-instrumentable by dexcost or manual)
8
+ * 2. Agent framework invocations (LangChain, Mastra, CrewAI, etc.)
9
+ * 3. Direct HTTP calls to known AI API endpoints
10
+ * 4. SDK imports for paid services (AWS, Stripe, Firebase, etc.)
11
+ * 5. Service-specific method calls (MongoDB, Elasticsearch, etc.)
12
+ */
13
+ export interface CostPoint {
14
+ file: string;
15
+ line: number;
16
+ provider: string;
17
+ type: "llm_call" | "http_call" | "sdk_import" | "framework_call" | "service_call" | "embedding" | "speech" | "image";
18
+ pattern: string;
19
+ autoInstrumentable: boolean;
20
+ }
21
+ /**
22
+ * Scan a source string for cost-generating patterns.
23
+ *
24
+ * @param source - File contents to scan.
25
+ * @param fileName - Path to include in results.
26
+ * @returns Array of detected cost points.
27
+ */
28
+ export declare function scanSource(source: string, fileName: string): CostPoint[];
29
+ /**
30
+ * Generate integration stub code from detected cost points.
31
+ *
32
+ * Produces a self-contained template showing:
33
+ * 1. SDK initialisation
34
+ * 2. Customer/project context
35
+ * 3. Task wrapper with manual `recordCost` calls
36
+ * 4. Summary of auto-instrumented providers
37
+ */
38
+ export declare function generateStubs(points: CostPoint[], _scanDir: string): string;
39
+ //# sourceMappingURL=scanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/cli/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EACA,UAAU,GACV,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,cAAc,GACd,WAAW,GACX,QAAQ,GACR,OAAO,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAgZD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,CA8BxE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2D3E"}