@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.
- package/LICENSE +21 -0
- package/README.md +210 -0
- package/dist/adapters/_netbytes.d.ts +31 -0
- package/dist/adapters/_netbytes.d.ts.map +1 -0
- package/dist/adapters/_netbytes.js +154 -0
- package/dist/adapters/_netbytes.js.map +1 -0
- package/dist/adapters/aws-lambda.d.ts +41 -0
- package/dist/adapters/aws-lambda.d.ts.map +1 -0
- package/dist/adapters/aws-lambda.js +65 -0
- package/dist/adapters/aws-lambda.js.map +1 -0
- package/dist/adapters/browser.d.ts +52 -0
- package/dist/adapters/browser.d.ts.map +1 -0
- package/dist/adapters/browser.js +127 -0
- package/dist/adapters/browser.js.map +1 -0
- package/dist/adapters/compute-wrap.d.ts +33 -0
- package/dist/adapters/compute-wrap.d.ts.map +1 -0
- package/dist/adapters/compute-wrap.js +188 -0
- package/dist/adapters/compute-wrap.js.map +1 -0
- package/dist/adapters/data/aws_lambda_pricing.json +61 -0
- package/dist/adapters/gpu-wrap.d.ts +31 -0
- package/dist/adapters/gpu-wrap.d.ts.map +1 -0
- package/dist/adapters/gpu-wrap.js +147 -0
- package/dist/adapters/gpu-wrap.js.map +1 -0
- package/dist/adapters/http.d.ts +58 -0
- package/dist/adapters/http.d.ts.map +1 -0
- package/dist/adapters/http.js +769 -0
- package/dist/adapters/http.js.map +1 -0
- package/dist/adapters/index.d.ts +11 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +12 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/network-accountant.d.ts +63 -0
- package/dist/adapters/network-accountant.d.ts.map +1 -0
- package/dist/adapters/network-accountant.js +153 -0
- package/dist/adapters/network-accountant.js.map +1 -0
- package/dist/cli/index.d.ts +13 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +225 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/scanner.d.ts +39 -0
- package/dist/cli/scanner.d.ts.map +1 -0
- package/dist/cli/scanner.js +480 -0
- package/dist/cli/scanner.js.map +1 -0
- package/dist/clients.d.ts +54 -0
- package/dist/clients.d.ts.map +1 -0
- package/dist/clients.js +240 -0
- package/dist/clients.js.map +1 -0
- package/dist/cloud-detect.d.ts +96 -0
- package/dist/cloud-detect.d.ts.map +1 -0
- package/dist/cloud-detect.js +545 -0
- package/dist/cloud-detect.js.map +1 -0
- package/dist/core/auto-task.d.ts +20 -0
- package/dist/core/auto-task.d.ts.map +1 -0
- package/dist/core/auto-task.js +34 -0
- package/dist/core/auto-task.js.map +1 -0
- package/dist/core/cgroup-reader.d.ts +45 -0
- package/dist/core/cgroup-reader.d.ts.map +1 -0
- package/dist/core/cgroup-reader.js +124 -0
- package/dist/core/cgroup-reader.js.map +1 -0
- package/dist/core/cgroup-walker.d.ts +60 -0
- package/dist/core/cgroup-walker.d.ts.map +1 -0
- package/dist/core/cgroup-walker.js +166 -0
- package/dist/core/cgroup-walker.js.map +1 -0
- package/dist/core/compute-accountant.d.ts +51 -0
- package/dist/core/compute-accountant.d.ts.map +1 -0
- package/dist/core/compute-accountant.js +179 -0
- package/dist/core/compute-accountant.js.map +1 -0
- package/dist/core/compute-runtime.d.ts +42 -0
- package/dist/core/compute-runtime.d.ts.map +1 -0
- package/dist/core/compute-runtime.js +80 -0
- package/dist/core/compute-runtime.js.map +1 -0
- package/dist/core/config.d.ts +44 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +66 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context.d.ts +76 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +91 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/fargate-metadata.d.ts +27 -0
- package/dist/core/fargate-metadata.d.ts.map +1 -0
- package/dist/core/fargate-metadata.js +102 -0
- package/dist/core/fargate-metadata.js.map +1 -0
- package/dist/core/gpu-accountant.d.ts +104 -0
- package/dist/core/gpu-accountant.d.ts.map +1 -0
- package/dist/core/gpu-accountant.js +383 -0
- package/dist/core/gpu-accountant.js.map +1 -0
- package/dist/core/gpu-runtime.d.ts +58 -0
- package/dist/core/gpu-runtime.d.ts.map +1 -0
- package/dist/core/gpu-runtime.js +131 -0
- package/dist/core/gpu-runtime.js.map +1 -0
- package/dist/core/heuristics.d.ts +74 -0
- package/dist/core/heuristics.d.ts.map +1 -0
- package/dist/core/heuristics.js +182 -0
- package/dist/core/heuristics.js.map +1 -0
- package/dist/core/models.d.ts +149 -0
- package/dist/core/models.d.ts.map +1 -0
- package/dist/core/models.js +226 -0
- package/dist/core/models.js.map +1 -0
- package/dist/core/nvml-reader.d.ts +114 -0
- package/dist/core/nvml-reader.d.ts.map +1 -0
- package/dist/core/nvml-reader.js +323 -0
- package/dist/core/nvml-reader.js.map +1 -0
- package/dist/core/session.d.ts +48 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +123 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/tracker.d.ts +364 -0
- package/dist/core/tracker.d.ts.map +1 -0
- package/dist/core/tracker.js +1073 -0
- package/dist/core/tracker.js.map +1 -0
- package/dist/data/compute_prices.json +180 -0
- package/dist/data/egress_prices.json +418 -0
- package/dist/data/gpu_prices.json +412 -0
- package/dist/data/service_prices.json +2595 -0
- package/dist/dev-console.d.ts +12 -0
- package/dist/dev-console.d.ts.map +1 -0
- package/dist/dev-console.js +60 -0
- package/dist/dev-console.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/instruments/anthropic.d.ts +26 -0
- package/dist/instruments/anthropic.d.ts.map +1 -0
- package/dist/instruments/anthropic.js +242 -0
- package/dist/instruments/anthropic.js.map +1 -0
- package/dist/instruments/bedrock.d.ts +29 -0
- package/dist/instruments/bedrock.d.ts.map +1 -0
- package/dist/instruments/bedrock.js +215 -0
- package/dist/instruments/bedrock.js.map +1 -0
- package/dist/instruments/cohere.d.ts +29 -0
- package/dist/instruments/cohere.d.ts.map +1 -0
- package/dist/instruments/cohere.js +237 -0
- package/dist/instruments/cohere.js.map +1 -0
- package/dist/instruments/gemini.d.ts +30 -0
- package/dist/instruments/gemini.d.ts.map +1 -0
- package/dist/instruments/gemini.js +247 -0
- package/dist/instruments/gemini.js.map +1 -0
- package/dist/instruments/index.d.ts +35 -0
- package/dist/instruments/index.d.ts.map +1 -0
- package/dist/instruments/index.js +54 -0
- package/dist/instruments/index.js.map +1 -0
- package/dist/instruments/mcp.d.ts +24 -0
- package/dist/instruments/mcp.d.ts.map +1 -0
- package/dist/instruments/mcp.js +459 -0
- package/dist/instruments/mcp.js.map +1 -0
- package/dist/instruments/openai.d.ts +26 -0
- package/dist/instruments/openai.d.ts.map +1 -0
- package/dist/instruments/openai.js +221 -0
- package/dist/instruments/openai.js.map +1 -0
- package/dist/instruments/vercel-ai.d.ts +28 -0
- package/dist/instruments/vercel-ai.d.ts.map +1 -0
- package/dist/instruments/vercel-ai.js +192 -0
- package/dist/instruments/vercel-ai.js.map +1 -0
- package/dist/integrations/langchain.d.ts +65 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js +165 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/middleware/express.d.ts +55 -0
- package/dist/middleware/express.d.ts.map +1 -0
- package/dist/middleware/express.js +101 -0
- package/dist/middleware/express.js.map +1 -0
- package/dist/middleware/index.d.ts +6 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +5 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/pricing/compute-pricing.d.ts +57 -0
- package/dist/pricing/compute-pricing.d.ts.map +1 -0
- package/dist/pricing/compute-pricing.js +627 -0
- package/dist/pricing/compute-pricing.js.map +1 -0
- package/dist/pricing/cost_map.json +37665 -0
- package/dist/pricing/egress-pricing.d.ts +55 -0
- package/dist/pricing/egress-pricing.d.ts.map +1 -0
- package/dist/pricing/egress-pricing.js +226 -0
- package/dist/pricing/egress-pricing.js.map +1 -0
- package/dist/pricing/engine.d.ts +24 -0
- package/dist/pricing/engine.d.ts.map +1 -0
- package/dist/pricing/engine.js +148 -0
- package/dist/pricing/engine.js.map +1 -0
- package/dist/pricing/gpu-pricing.d.ts +63 -0
- package/dist/pricing/gpu-pricing.d.ts.map +1 -0
- package/dist/pricing/gpu-pricing.js +484 -0
- package/dist/pricing/gpu-pricing.js.map +1 -0
- package/dist/pricing/rates.d.ts +17 -0
- package/dist/pricing/rates.d.ts.map +1 -0
- package/dist/pricing/rates.js +102 -0
- package/dist/pricing/rates.js.map +1 -0
- package/dist/pricing/service-catalog.d.ts +87 -0
- package/dist/pricing/service-catalog.d.ts.map +1 -0
- package/dist/pricing/service-catalog.js +406 -0
- package/dist/pricing/service-catalog.js.map +1 -0
- package/dist/schema/dexcost-event.v1.json +111 -0
- package/dist/schema/dexcost-task.v1.json +160 -0
- package/dist/schema/validate.d.ts +15 -0
- package/dist/schema/validate.d.ts.map +1 -0
- package/dist/schema/validate.js +87 -0
- package/dist/schema/validate.js.map +1 -0
- package/dist/security/redaction.d.ts +55 -0
- package/dist/security/redaction.d.ts.map +1 -0
- package/dist/security/redaction.js +144 -0
- package/dist/security/redaction.js.map +1 -0
- package/dist/transport/buffer.d.ts +117 -0
- package/dist/transport/buffer.d.ts.map +1 -0
- package/dist/transport/buffer.js +759 -0
- package/dist/transport/buffer.js.map +1 -0
- package/dist/transport/pusher.d.ts +89 -0
- package/dist/transport/pusher.d.ts.map +1 -0
- package/dist/transport/pusher.js +323 -0
- package/dist/transport/pusher.js.map +1 -0
- 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"}
|