observability-toolkit 1.8.2 → 1.8.5
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/README.md +60 -0
- package/dist/backends/index.d.ts +43 -0
- package/dist/backends/index.d.ts.map +1 -1
- package/dist/backends/index.js +41 -0
- package/dist/backends/index.js.map +1 -1
- package/dist/backends/index.test.d.ts +5 -0
- package/dist/backends/index.test.d.ts.map +1 -0
- package/dist/backends/index.test.js +156 -0
- package/dist/backends/index.test.js.map +1 -0
- package/dist/backends/local-jsonl-boolean-search.test.js +15 -12
- package/dist/backends/local-jsonl-boolean-search.test.js.map +1 -1
- package/dist/backends/local-jsonl-cache.test.d.ts +2 -0
- package/dist/backends/local-jsonl-cache.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-cache.test.js +295 -0
- package/dist/backends/local-jsonl-cache.test.js.map +1 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.d.ts +2 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.js +180 -0
- package/dist/backends/local-jsonl-circuit-breaker.test.js.map +1 -0
- package/dist/backends/local-jsonl-export.test.d.ts +2 -0
- package/dist/backends/local-jsonl-export.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-export.test.js +704 -0
- package/dist/backends/local-jsonl-export.test.js.map +1 -0
- package/dist/backends/local-jsonl-index.test.d.ts +2 -0
- package/dist/backends/local-jsonl-index.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-index.test.js +554 -0
- package/dist/backends/local-jsonl-index.test.js.map +1 -0
- package/dist/backends/local-jsonl-logs.test.d.ts +2 -0
- package/dist/backends/local-jsonl-logs.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-logs.test.js +612 -0
- package/dist/backends/local-jsonl-logs.test.js.map +1 -0
- package/dist/backends/local-jsonl-metrics.test.d.ts +2 -0
- package/dist/backends/local-jsonl-metrics.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-metrics.test.js +876 -0
- package/dist/backends/local-jsonl-metrics.test.js.map +1 -0
- package/dist/backends/local-jsonl-traces.test.d.ts +2 -0
- package/dist/backends/local-jsonl-traces.test.d.ts.map +1 -0
- package/dist/backends/local-jsonl-traces.test.js +1729 -0
- package/dist/backends/local-jsonl-traces.test.js.map +1 -0
- package/dist/backends/local-jsonl.d.ts +9 -0
- package/dist/backends/local-jsonl.d.ts.map +1 -1
- package/dist/backends/local-jsonl.js +348 -227
- package/dist/backends/local-jsonl.js.map +1 -1
- package/dist/backends/local-jsonl.test.js +290 -21
- package/dist/backends/local-jsonl.test.js.map +1 -1
- package/dist/backends/signoz-api-circuit-breaker.test.d.ts +6 -0
- package/dist/backends/signoz-api-circuit-breaker.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-circuit-breaker.test.js +548 -0
- package/dist/backends/signoz-api-circuit-breaker.test.js.map +1 -0
- package/dist/backends/signoz-api-rate-limiter.test.d.ts +6 -0
- package/dist/backends/signoz-api-rate-limiter.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-rate-limiter.test.js +389 -0
- package/dist/backends/signoz-api-rate-limiter.test.js.map +1 -0
- package/dist/backends/signoz-api-ssrf.test.d.ts +6 -0
- package/dist/backends/signoz-api-ssrf.test.d.ts.map +1 -0
- package/dist/backends/signoz-api-ssrf.test.js +216 -0
- package/dist/backends/signoz-api-ssrf.test.js.map +1 -0
- package/dist/backends/signoz-api-test-helpers.d.ts +80 -0
- package/dist/backends/signoz-api-test-helpers.d.ts.map +1 -0
- package/dist/backends/signoz-api-test-helpers.js +79 -0
- package/dist/backends/signoz-api-test-helpers.js.map +1 -0
- package/dist/backends/signoz-api.d.ts +16 -0
- package/dist/backends/signoz-api.d.ts.map +1 -1
- package/dist/backends/signoz-api.js +71 -9
- package/dist/backends/signoz-api.js.map +1 -1
- package/dist/backends/signoz-api.test.d.ts +9 -0
- package/dist/backends/signoz-api.test.d.ts.map +1 -1
- package/dist/backends/signoz-api.test.js +14 -1027
- package/dist/backends/signoz-api.test.js.map +1 -1
- package/dist/lib/cache.d.ts +47 -1
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/lib/cache.js +40 -3
- package/dist/lib/cache.js.map +1 -1
- package/dist/lib/circuit-breaker.d.ts +83 -0
- package/dist/lib/circuit-breaker.d.ts.map +1 -0
- package/dist/lib/circuit-breaker.js +125 -0
- package/dist/lib/circuit-breaker.js.map +1 -0
- package/dist/lib/circuit-breaker.test.d.ts +2 -0
- package/dist/lib/circuit-breaker.test.d.ts.map +1 -0
- package/dist/lib/circuit-breaker.test.js +263 -0
- package/dist/lib/circuit-breaker.test.js.map +1 -0
- package/dist/lib/constants-symlink.test.d.ts +12 -0
- package/dist/lib/constants-symlink.test.d.ts.map +1 -0
- package/dist/lib/constants-symlink.test.js +357 -0
- package/dist/lib/constants-symlink.test.js.map +1 -0
- package/dist/lib/constants.d.ts +43 -0
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +154 -24
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/constants.test.js +156 -7
- package/dist/lib/constants.test.js.map +1 -1
- package/dist/lib/edge-cases.test.d.ts +11 -0
- package/dist/lib/edge-cases.test.d.ts.map +1 -0
- package/dist/lib/edge-cases.test.js +634 -0
- package/dist/lib/edge-cases.test.js.map +1 -0
- package/dist/lib/error-sanitizer.d.ts.map +1 -1
- package/dist/lib/error-sanitizer.js +62 -26
- package/dist/lib/error-sanitizer.js.map +1 -1
- package/dist/lib/error-sanitizer.test.js +186 -0
- package/dist/lib/error-sanitizer.test.js.map +1 -1
- package/dist/lib/error-types.d.ts +54 -0
- package/dist/lib/error-types.d.ts.map +1 -0
- package/dist/lib/error-types.js +154 -0
- package/dist/lib/error-types.js.map +1 -0
- package/dist/lib/error-types.test.d.ts +2 -0
- package/dist/lib/error-types.test.d.ts.map +1 -0
- package/dist/lib/error-types.test.js +196 -0
- package/dist/lib/error-types.test.js.map +1 -0
- package/dist/lib/file-utils.test.js +3 -3
- package/dist/lib/file-utils.test.js.map +1 -1
- package/dist/lib/indexer.test.js +157 -24
- package/dist/lib/indexer.test.js.map +1 -1
- package/dist/lib/input-validator.d.ts +17 -0
- package/dist/lib/input-validator.d.ts.map +1 -1
- package/dist/lib/input-validator.fuzz.test.d.ts +12 -0
- package/dist/lib/input-validator.fuzz.test.d.ts.map +1 -0
- package/dist/lib/input-validator.fuzz.test.js +290 -0
- package/dist/lib/input-validator.fuzz.test.js.map +1 -0
- package/dist/lib/input-validator.js +62 -3
- package/dist/lib/input-validator.js.map +1 -1
- package/dist/lib/input-validator.test.js +129 -1
- package/dist/lib/input-validator.test.js.map +1 -1
- package/dist/lib/logger.d.ts +46 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +81 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/logger.test.d.ts +2 -0
- package/dist/lib/logger.test.d.ts.map +1 -0
- package/dist/lib/logger.test.js +122 -0
- package/dist/lib/logger.test.js.map +1 -0
- package/dist/lib/query-sanitizer.d.ts +51 -3
- package/dist/lib/query-sanitizer.d.ts.map +1 -1
- package/dist/lib/query-sanitizer.js +105 -31
- package/dist/lib/query-sanitizer.js.map +1 -1
- package/dist/lib/query-sanitizer.test.js +102 -1
- package/dist/lib/query-sanitizer.test.js.map +1 -1
- package/dist/lib/server-utils.d.ts +88 -0
- package/dist/lib/server-utils.d.ts.map +1 -0
- package/dist/lib/server-utils.js +173 -0
- package/dist/lib/server-utils.js.map +1 -0
- package/dist/lib/shared-schemas.d.ts +81 -0
- package/dist/lib/shared-schemas.d.ts.map +1 -0
- package/dist/lib/shared-schemas.js +80 -0
- package/dist/lib/shared-schemas.js.map +1 -0
- package/dist/lib/shared-schemas.test.d.ts +5 -0
- package/dist/lib/shared-schemas.test.d.ts.map +1 -0
- package/dist/lib/shared-schemas.test.js +106 -0
- package/dist/lib/shared-schemas.test.js.map +1 -0
- package/dist/lib/toon-encoder.d.ts +26 -0
- package/dist/lib/toon-encoder.d.ts.map +1 -0
- package/dist/lib/toon-encoder.js +61 -0
- package/dist/lib/toon-encoder.js.map +1 -0
- package/dist/lib/toon-encoder.test.d.ts +5 -0
- package/dist/lib/toon-encoder.test.d.ts.map +1 -0
- package/dist/lib/toon-encoder.test.js +85 -0
- package/dist/lib/toon-encoder.test.js.map +1 -0
- package/dist/server.d.ts +1 -49
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +154 -162
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +198 -7
- package/dist/server.test.js.map +1 -1
- package/dist/test-helpers/env-utils.d.ts +87 -0
- package/dist/test-helpers/env-utils.d.ts.map +1 -0
- package/dist/test-helpers/env-utils.js +132 -0
- package/dist/test-helpers/env-utils.js.map +1 -0
- package/dist/test-helpers/file-utils.d.ts +67 -0
- package/dist/test-helpers/file-utils.d.ts.map +1 -1
- package/dist/test-helpers/file-utils.js +165 -2
- package/dist/test-helpers/file-utils.js.map +1 -1
- package/dist/test-helpers/fuzz-generators.d.ts +58 -0
- package/dist/test-helpers/fuzz-generators.d.ts.map +1 -0
- package/dist/test-helpers/fuzz-generators.js +216 -0
- package/dist/test-helpers/fuzz-generators.js.map +1 -0
- package/dist/test-helpers/index.d.ts +11 -0
- package/dist/test-helpers/index.d.ts.map +1 -0
- package/dist/test-helpers/index.js +30 -0
- package/dist/test-helpers/index.js.map +1 -0
- package/dist/test-helpers/memfs-utils.d.ts +181 -0
- package/dist/test-helpers/memfs-utils.d.ts.map +1 -0
- package/dist/test-helpers/memfs-utils.js +292 -0
- package/dist/test-helpers/memfs-utils.js.map +1 -0
- package/dist/test-helpers/memfs-utils.test.d.ts +5 -0
- package/dist/test-helpers/memfs-utils.test.d.ts.map +1 -0
- package/dist/test-helpers/memfs-utils.test.js +338 -0
- package/dist/test-helpers/memfs-utils.test.js.map +1 -0
- package/dist/test-helpers/mock-backends.d.ts +113 -2
- package/dist/test-helpers/mock-backends.d.ts.map +1 -1
- package/dist/test-helpers/mock-backends.js +199 -3
- package/dist/test-helpers/mock-backends.js.map +1 -1
- package/dist/test-helpers/mock-backends.test.d.ts +5 -0
- package/dist/test-helpers/mock-backends.test.d.ts.map +1 -0
- package/dist/test-helpers/mock-backends.test.js +368 -0
- package/dist/test-helpers/mock-backends.test.js.map +1 -0
- package/dist/test-helpers/race-condition-helpers.d.ts +85 -0
- package/dist/test-helpers/race-condition-helpers.d.ts.map +1 -0
- package/dist/test-helpers/race-condition-helpers.js +279 -0
- package/dist/test-helpers/race-condition-helpers.js.map +1 -0
- package/dist/test-helpers/schema-validators.d.ts +32 -0
- package/dist/test-helpers/schema-validators.d.ts.map +1 -0
- package/dist/test-helpers/schema-validators.js +125 -0
- package/dist/test-helpers/schema-validators.js.map +1 -0
- package/dist/test-helpers/test-data-builders.d.ts +260 -0
- package/dist/test-helpers/test-data-builders.d.ts.map +1 -0
- package/dist/test-helpers/test-data-builders.js +337 -0
- package/dist/test-helpers/test-data-builders.js.map +1 -0
- package/dist/test-helpers/test-data-builders.test.d.ts +2 -0
- package/dist/test-helpers/test-data-builders.test.d.ts.map +1 -0
- package/dist/test-helpers/test-data-builders.test.js +306 -0
- package/dist/test-helpers/test-data-builders.test.js.map +1 -0
- package/dist/test-helpers/tool-validators.d.ts +28 -0
- package/dist/test-helpers/tool-validators.d.ts.map +1 -0
- package/dist/test-helpers/tool-validators.js +71 -0
- package/dist/test-helpers/tool-validators.js.map +1 -0
- package/dist/tools/context-stats.d.ts +1 -0
- package/dist/tools/context-stats.d.ts.map +1 -1
- package/dist/tools/context-stats.js +9 -5
- package/dist/tools/context-stats.js.map +1 -1
- package/dist/tools/context-stats.test.js +24 -10
- package/dist/tools/context-stats.test.js.map +1 -1
- package/dist/tools/get-trace-url.js +2 -2
- package/dist/tools/get-trace-url.js.map +1 -1
- package/dist/tools/health-check.js +2 -2
- package/dist/tools/health-check.js.map +1 -1
- package/dist/tools/query-evaluations.d.ts +21 -18
- package/dist/tools/query-evaluations.d.ts.map +1 -1
- package/dist/tools/query-evaluations.js +33 -19
- package/dist/tools/query-evaluations.js.map +1 -1
- package/dist/tools/query-evaluations.test.js +60 -63
- package/dist/tools/query-evaluations.test.js.map +1 -1
- package/dist/tools/query-llm-events.d.ts +19 -15
- package/dist/tools/query-llm-events.d.ts.map +1 -1
- package/dist/tools/query-llm-events.js +31 -15
- package/dist/tools/query-llm-events.js.map +1 -1
- package/dist/tools/query-llm-events.test.js +277 -12
- package/dist/tools/query-llm-events.test.js.map +1 -1
- package/dist/tools/query-logs.d.ts +22 -22
- package/dist/tools/query-logs.d.ts.map +1 -1
- package/dist/tools/query-logs.js +9 -9
- package/dist/tools/query-logs.js.map +1 -1
- package/dist/tools/query-logs.test.js +19 -72
- package/dist/tools/query-logs.test.js.map +1 -1
- package/dist/tools/query-metrics.d.ts +14 -14
- package/dist/tools/query-metrics.d.ts.map +1 -1
- package/dist/tools/query-metrics.js +9 -9
- package/dist/tools/query-metrics.js.map +1 -1
- package/dist/tools/query-metrics.test.js +12 -25
- package/dist/tools/query-metrics.test.js.map +1 -1
- package/dist/tools/query-traces.d.ts +28 -28
- package/dist/tools/query-traces.d.ts.map +1 -1
- package/dist/tools/query-traces.js +18 -18
- package/dist/tools/query-traces.js.map +1 -1
- package/dist/tools/query-traces.test.js +58 -54
- package/dist/tools/query-traces.test.js.map +1 -1
- package/dist/tools/setup-claudeignore.js +7 -7
- package/dist/tools/setup-claudeignore.js.map +1 -1
- package/dist/tools/setup-claudeignore.test.js +4 -25
- package/dist/tools/setup-claudeignore.test.js.map +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants-symlink.test.js","sourceRoot":"","sources":["../../src/lib/constants-symlink.test.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/constants.d.ts
CHANGED
|
@@ -30,6 +30,49 @@ export declare const RATE_LIMITER: {
|
|
|
30
30
|
};
|
|
31
31
|
export declare const CONTEXT_WINDOW_SIZE = 200000;
|
|
32
32
|
export declare const TOKENS_PER_CHAR = 0.25;
|
|
33
|
+
/**
|
|
34
|
+
* Model pricing metadata for staleness detection
|
|
35
|
+
*/
|
|
36
|
+
export declare const MODEL_PRICING_METADATA: {
|
|
37
|
+
/** ISO date when pricing was last updated */
|
|
38
|
+
readonly lastUpdated: "2026-01-30";
|
|
39
|
+
/** Days after which pricing is considered stale */
|
|
40
|
+
readonly staleThresholdDays: 90;
|
|
41
|
+
/** Pricing sources for verification */
|
|
42
|
+
readonly sources: {
|
|
43
|
+
readonly anthropic: "https://www.anthropic.com/pricing";
|
|
44
|
+
readonly openai: "https://openai.com/pricing";
|
|
45
|
+
readonly google: "https://ai.google.dev/pricing";
|
|
46
|
+
readonly mistral: "https://mistral.ai/pricing";
|
|
47
|
+
readonly cohere: "https://cohere.com/pricing";
|
|
48
|
+
readonly groq: "https://groq.com/pricing";
|
|
49
|
+
readonly together: "https://www.together.ai/pricing";
|
|
50
|
+
readonly perplexity: "https://www.perplexity.ai/pricing";
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Check if pricing data is stale (>90 days old)
|
|
55
|
+
* @returns { isStale: boolean, daysSinceUpdate: number }
|
|
56
|
+
*/
|
|
57
|
+
export declare function checkPricingStaleness(): {
|
|
58
|
+
isStale: boolean;
|
|
59
|
+
daysSinceUpdate: number;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Model pricing per 1M tokens (as of Jan 2026)
|
|
63
|
+
*
|
|
64
|
+
* Pricing sources:
|
|
65
|
+
* - Anthropic: https://www.anthropic.com/pricing
|
|
66
|
+
* - OpenAI: https://openai.com/pricing
|
|
67
|
+
* - Google: https://ai.google.dev/pricing
|
|
68
|
+
* - Mistral: https://mistral.ai/pricing
|
|
69
|
+
* - Cohere: https://cohere.com/pricing
|
|
70
|
+
*
|
|
71
|
+
* Note: Pricing changes frequently. These are approximate values for cost estimation.
|
|
72
|
+
* For batch API pricing, multiply by 0.5 (50% discount typically).
|
|
73
|
+
*
|
|
74
|
+
* @see MODEL_PRICING_METADATA.lastUpdated for when this data was last verified
|
|
75
|
+
*/
|
|
33
76
|
export declare const MODEL_PRICING: Record<string, {
|
|
34
77
|
input: number;
|
|
35
78
|
output: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,aAAa,QAAiF,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,eAAO,MAAM,WAAW,QAA0C,CAAC;AACnE,eAAO,MAAM,aAAa,QAAiF,CAAC;AAgJ5G;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,CAAC,CA0CzG;AAID,eAAO,MAAM,UAAU,QAA0E,CAAC;AAElG,eAAO,MAAM,gBAAgB,QAAqC,CAAC;AAGnE,eAAO,MAAM,cAAc,QAAmC,CAAC;AAG/D,eAAO,MAAM,eAAe;;;CAGlB,CAAC;AAGX,eAAO,MAAM,YAAY;IACvB,sCAAsC;;IAEtC,kCAAkC;;CAE1B,CAAC;AAGX,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAG1C,eAAO,MAAM,eAAe,OAAO,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,sBAAsB;IACjC,6CAA6C;;IAE7C,mDAAmD;;IAEnD,uCAAuC;;;;;;;;;;;CAW/B,CAAC;AAEX;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAQrF;AAQD;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAmD3E,CAAC;AAGF,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AACpD,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAGtD,eAAO,MAAM,UAAU,mEAAoE,CAAC;AAE5F;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAKxE;AAID,eAAO,MAAM,YAAY,mCAAoC,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAKlF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOvD;AAGD,eAAO,MAAM,eAAe,OAAO,CAAC;AAGpC,eAAO,MAAM,cAAc,QAAkD,CAAC;AAG9E,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAGxC,+DAA+D;AAC/D,eAAO,MAAM,eAAe,WAAW,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Constants for observability-toolkit MCP server
|
|
3
3
|
*/
|
|
4
|
-
import { join, resolve } from 'path';
|
|
5
|
-
import { existsSync, realpathSync, lstatSync } from 'fs';
|
|
4
|
+
import { join, resolve, dirname } from 'path';
|
|
5
|
+
import { existsSync, realpathSync, lstatSync, readlinkSync, openSync, fstatSync, closeSync, constants as fsConstants } from 'fs';
|
|
6
6
|
import { expandTilde } from './file-utils.js';
|
|
7
7
|
import { homedir } from 'os';
|
|
8
8
|
// Paths - expand tilde in case TELEMETRY_DIR is set to ~/... (tilde doesn't expand in JSON/env)
|
|
@@ -19,37 +19,75 @@ const LOCAL_TELEMETRY_PATHS = [
|
|
|
19
19
|
* Returns { exists: false } if path doesn't exist or is inaccessible.
|
|
20
20
|
* Returns { exists: true, isSymlink, realPath } with atomically resolved data.
|
|
21
21
|
*
|
|
22
|
-
* Security: Uses file descriptor-based operations to
|
|
23
|
-
*
|
|
22
|
+
* Security: Uses file descriptor-based operations to prevent symlink swap attacks.
|
|
23
|
+
* For regular directories, opens with O_DIRECTORY to verify it's a directory.
|
|
24
|
+
* For symlinks, reads target directly then verifies the resolved target exists.
|
|
24
25
|
*/
|
|
25
26
|
function atomicPathCheck(path) {
|
|
27
|
+
let fd;
|
|
26
28
|
try {
|
|
27
29
|
// Step 1: Get lstat info (does not follow symlinks)
|
|
28
30
|
const lstats = lstatSync(path);
|
|
29
31
|
const isSymbolicLink = lstats.isSymbolicLink();
|
|
30
|
-
// Step 2: Atomically resolve and verify using file descriptor
|
|
31
|
-
// Open the path with O_RDONLY | O_NOFOLLOW for symlinks check,
|
|
32
|
-
// but we need to follow symlinks to get the real target for directories.
|
|
33
|
-
// Instead, we use a single realpathSync call immediately after lstat
|
|
34
|
-
// within the same try block - if the symlink is swapped between calls,
|
|
35
|
-
// we'll detect it by verifying the resolved path matches expectations.
|
|
36
|
-
// For non-symlinks, just resolve any parent symlinks
|
|
37
|
-
const realPath = realpathSync(path);
|
|
38
|
-
// Step 3: Verify consistency - if this was a symlink, verify the target
|
|
39
|
-
// still matches what we expect by checking the resolved path is a directory
|
|
40
32
|
if (isSymbolicLink) {
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
33
|
+
// Step 2a: For symlinks, read and verify the target
|
|
34
|
+
const target = readlinkSync(path);
|
|
35
|
+
// Resolve the target (handles both relative and absolute paths)
|
|
36
|
+
const parentDir = dirname(path);
|
|
37
|
+
const resolvedTarget = resolve(parentDir, target);
|
|
38
|
+
// Verify the target exists and is a directory
|
|
39
|
+
try {
|
|
40
|
+
const targetStats = lstatSync(resolvedTarget);
|
|
41
|
+
// If target is also a symlink, we need to follow the chain
|
|
42
|
+
// Use realpathSync to get the final destination
|
|
43
|
+
const realPath = targetStats.isSymbolicLink()
|
|
44
|
+
? realpathSync(resolvedTarget)
|
|
45
|
+
: (targetStats.isDirectory() ? realpathSync(resolvedTarget) : null);
|
|
46
|
+
if (!realPath) {
|
|
47
|
+
return { exists: false };
|
|
48
|
+
}
|
|
49
|
+
// Final verification that the resolved path is a directory
|
|
50
|
+
const finalStats = lstatSync(realPath);
|
|
51
|
+
if (!finalStats.isDirectory()) {
|
|
52
|
+
return { exists: false };
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
exists: true,
|
|
56
|
+
isSymlink: true,
|
|
57
|
+
realPath,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return { exists: false };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Step 2b: For non-symlinks, use file descriptor for atomic verification
|
|
65
|
+
// Open with O_RDONLY | O_DIRECTORY to ensure it's a directory
|
|
66
|
+
try {
|
|
67
|
+
fd = openSync(path, fsConstants.O_RDONLY | fsConstants.O_DIRECTORY);
|
|
68
|
+
const fdStats = fstatSync(fd);
|
|
69
|
+
if (!fdStats.isDirectory()) {
|
|
45
70
|
return { exists: false };
|
|
46
71
|
}
|
|
72
|
+
// Path is verified to be a directory via file descriptor
|
|
73
|
+
// Resolve any parent symlinks (safe since we hold FD to the actual dir)
|
|
74
|
+
const realPath = realpathSync(path);
|
|
75
|
+
return {
|
|
76
|
+
exists: true,
|
|
77
|
+
isSymlink: false,
|
|
78
|
+
realPath,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
if (fd !== undefined) {
|
|
83
|
+
try {
|
|
84
|
+
closeSync(fd);
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Ignore close errors
|
|
88
|
+
}
|
|
89
|
+
}
|
|
47
90
|
}
|
|
48
|
-
return {
|
|
49
|
-
exists: true,
|
|
50
|
-
isSymlink: isSymbolicLink,
|
|
51
|
-
realPath,
|
|
52
|
-
};
|
|
53
91
|
}
|
|
54
92
|
catch {
|
|
55
93
|
return { exists: false };
|
|
@@ -159,11 +197,103 @@ export const RATE_LIMITER = {
|
|
|
159
197
|
export const CONTEXT_WINDOW_SIZE = 200000;
|
|
160
198
|
// Approximate tokens per character
|
|
161
199
|
export const TOKENS_PER_CHAR = 0.25;
|
|
162
|
-
|
|
200
|
+
/**
|
|
201
|
+
* Model pricing metadata for staleness detection
|
|
202
|
+
*/
|
|
203
|
+
export const MODEL_PRICING_METADATA = {
|
|
204
|
+
/** ISO date when pricing was last updated */
|
|
205
|
+
lastUpdated: '2026-01-30',
|
|
206
|
+
/** Days after which pricing is considered stale */
|
|
207
|
+
staleThresholdDays: 90,
|
|
208
|
+
/** Pricing sources for verification */
|
|
209
|
+
sources: {
|
|
210
|
+
anthropic: 'https://www.anthropic.com/pricing',
|
|
211
|
+
openai: 'https://openai.com/pricing',
|
|
212
|
+
google: 'https://ai.google.dev/pricing',
|
|
213
|
+
mistral: 'https://mistral.ai/pricing',
|
|
214
|
+
cohere: 'https://cohere.com/pricing',
|
|
215
|
+
groq: 'https://groq.com/pricing',
|
|
216
|
+
together: 'https://www.together.ai/pricing',
|
|
217
|
+
perplexity: 'https://www.perplexity.ai/pricing',
|
|
218
|
+
},
|
|
219
|
+
};
|
|
220
|
+
/**
|
|
221
|
+
* Check if pricing data is stale (>90 days old)
|
|
222
|
+
* @returns { isStale: boolean, daysSinceUpdate: number }
|
|
223
|
+
*/
|
|
224
|
+
export function checkPricingStaleness() {
|
|
225
|
+
const lastUpdate = new Date(MODEL_PRICING_METADATA.lastUpdated);
|
|
226
|
+
const now = new Date();
|
|
227
|
+
const daysSinceUpdate = Math.floor((now.getTime() - lastUpdate.getTime()) / (1000 * 60 * 60 * 24));
|
|
228
|
+
return {
|
|
229
|
+
isStale: daysSinceUpdate > MODEL_PRICING_METADATA.staleThresholdDays,
|
|
230
|
+
daysSinceUpdate,
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
// Check pricing staleness on module load (M13 fix)
|
|
234
|
+
const pricingStatus = checkPricingStaleness();
|
|
235
|
+
if (pricingStatus.isStale) {
|
|
236
|
+
console.warn(`[WARN] Model pricing data is ${pricingStatus.daysSinceUpdate} days old (last updated: ${MODEL_PRICING_METADATA.lastUpdated}). Consider updating MODEL_PRICING in constants.ts.`);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Model pricing per 1M tokens (as of Jan 2026)
|
|
240
|
+
*
|
|
241
|
+
* Pricing sources:
|
|
242
|
+
* - Anthropic: https://www.anthropic.com/pricing
|
|
243
|
+
* - OpenAI: https://openai.com/pricing
|
|
244
|
+
* - Google: https://ai.google.dev/pricing
|
|
245
|
+
* - Mistral: https://mistral.ai/pricing
|
|
246
|
+
* - Cohere: https://cohere.com/pricing
|
|
247
|
+
*
|
|
248
|
+
* Note: Pricing changes frequently. These are approximate values for cost estimation.
|
|
249
|
+
* For batch API pricing, multiply by 0.5 (50% discount typically).
|
|
250
|
+
*
|
|
251
|
+
* @see MODEL_PRICING_METADATA.lastUpdated for when this data was last verified
|
|
252
|
+
*/
|
|
163
253
|
export const MODEL_PRICING = {
|
|
254
|
+
// Anthropic Claude models
|
|
164
255
|
'claude-opus-4-5-20251101': { input: 15.0, output: 75.0 },
|
|
165
256
|
'claude-sonnet-4-20250514': { input: 3.0, output: 15.0 },
|
|
166
257
|
'claude-3-5-haiku-20241022': { input: 0.80, output: 4.0 },
|
|
258
|
+
// Aliases for common model names
|
|
259
|
+
'claude-3-opus': { input: 15.0, output: 75.0 },
|
|
260
|
+
'claude-3-sonnet': { input: 3.0, output: 15.0 },
|
|
261
|
+
'claude-3-haiku': { input: 0.25, output: 1.25 },
|
|
262
|
+
// OpenAI GPT models
|
|
263
|
+
'gpt-4o': { input: 2.50, output: 10.0 },
|
|
264
|
+
'gpt-4o-mini': { input: 0.15, output: 0.60 },
|
|
265
|
+
'gpt-4-turbo': { input: 10.0, output: 30.0 },
|
|
266
|
+
'gpt-4': { input: 30.0, output: 60.0 },
|
|
267
|
+
'gpt-3.5-turbo': { input: 0.50, output: 1.50 },
|
|
268
|
+
'o1': { input: 15.0, output: 60.0 },
|
|
269
|
+
'o1-mini': { input: 3.0, output: 12.0 },
|
|
270
|
+
'o3-mini': { input: 1.10, output: 4.40 },
|
|
271
|
+
// Google Gemini models
|
|
272
|
+
'gemini-1.5-pro': { input: 1.25, output: 5.0 },
|
|
273
|
+
'gemini-1.5-flash': { input: 0.075, output: 0.30 },
|
|
274
|
+
'gemini-2.0-flash': { input: 0.10, output: 0.40 },
|
|
275
|
+
'gemini-1.0-pro': { input: 0.50, output: 1.50 },
|
|
276
|
+
// Mistral AI models
|
|
277
|
+
'mistral-large': { input: 2.0, output: 6.0 },
|
|
278
|
+
'mistral-medium': { input: 2.7, output: 8.1 },
|
|
279
|
+
'mistral-small': { input: 0.2, output: 0.6 },
|
|
280
|
+
'mixtral-8x7b': { input: 0.7, output: 0.7 },
|
|
281
|
+
'codestral': { input: 0.2, output: 0.6 },
|
|
282
|
+
// Cohere models
|
|
283
|
+
'command-r-plus': { input: 2.50, output: 10.0 },
|
|
284
|
+
'command-r': { input: 0.15, output: 0.60 },
|
|
285
|
+
'command': { input: 1.0, output: 2.0 },
|
|
286
|
+
'command-light': { input: 0.30, output: 0.60 },
|
|
287
|
+
// Groq models (competitive pricing)
|
|
288
|
+
'llama-3.3-70b': { input: 0.59, output: 0.79 },
|
|
289
|
+
'llama-3.1-8b': { input: 0.05, output: 0.08 },
|
|
290
|
+
'mixtral-8x7b-groq': { input: 0.24, output: 0.24 },
|
|
291
|
+
// Together AI models (approximate)
|
|
292
|
+
'llama-3-70b': { input: 0.90, output: 0.90 },
|
|
293
|
+
'llama-3-8b': { input: 0.20, output: 0.20 },
|
|
294
|
+
// Perplexity models
|
|
295
|
+
'sonar-pro': { input: 3.0, output: 15.0 },
|
|
296
|
+
'sonar': { input: 1.0, output: 1.0 },
|
|
167
297
|
};
|
|
168
298
|
// File patterns
|
|
169
299
|
export const TRACES_FILE_PATTERN = 'traces-*.jsonl';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Unit tests for constants.ts
|
|
3
3
|
*/
|
|
4
|
-
import { describe, it,
|
|
4
|
+
import { describe, it, before, after, beforeEach } from 'node:test';
|
|
5
5
|
import assert from 'node:assert';
|
|
6
6
|
import * as fs from 'fs';
|
|
7
7
|
import * as os from 'os';
|
|
8
8
|
import { join } from 'path';
|
|
9
9
|
import * as constants from './constants.js';
|
|
10
|
-
import {
|
|
10
|
+
import { getSharedTempDir, clearTempDir, removeSharedTempDir } from '../test-helpers/file-utils.js';
|
|
11
11
|
describe('Constants', () => {
|
|
12
12
|
describe('CLAUDE_HOME', () => {
|
|
13
13
|
it('should be a string', () => {
|
|
@@ -156,11 +156,157 @@ describe('Constants', () => {
|
|
|
156
156
|
assert(sonnet.input > haiku.input);
|
|
157
157
|
assert(sonnet.output > haiku.output);
|
|
158
158
|
});
|
|
159
|
-
it('output pricing should be
|
|
159
|
+
it('output pricing should be >= input pricing for all models', () => {
|
|
160
160
|
Object.values(constants.MODEL_PRICING).forEach(pricing => {
|
|
161
|
-
assert(pricing.output
|
|
161
|
+
assert(pricing.output >= pricing.input, `Expected output (${pricing.output}) >= input (${pricing.input})`);
|
|
162
162
|
});
|
|
163
163
|
});
|
|
164
|
+
// Multi-provider support tests
|
|
165
|
+
describe('OpenAI models', () => {
|
|
166
|
+
it('should contain gpt-4o', () => {
|
|
167
|
+
assert('gpt-4o' in constants.MODEL_PRICING);
|
|
168
|
+
});
|
|
169
|
+
it('should contain gpt-4o-mini', () => {
|
|
170
|
+
assert('gpt-4o-mini' in constants.MODEL_PRICING);
|
|
171
|
+
});
|
|
172
|
+
it('should contain gpt-4-turbo', () => {
|
|
173
|
+
assert('gpt-4-turbo' in constants.MODEL_PRICING);
|
|
174
|
+
});
|
|
175
|
+
it('should contain gpt-3.5-turbo', () => {
|
|
176
|
+
assert('gpt-3.5-turbo' in constants.MODEL_PRICING);
|
|
177
|
+
});
|
|
178
|
+
it('should contain o1 reasoning model', () => {
|
|
179
|
+
assert('o1' in constants.MODEL_PRICING);
|
|
180
|
+
});
|
|
181
|
+
it('should contain o1-mini', () => {
|
|
182
|
+
assert('o1-mini' in constants.MODEL_PRICING);
|
|
183
|
+
});
|
|
184
|
+
});
|
|
185
|
+
describe('Google Gemini models', () => {
|
|
186
|
+
it('should contain gemini-1.5-pro', () => {
|
|
187
|
+
assert('gemini-1.5-pro' in constants.MODEL_PRICING);
|
|
188
|
+
});
|
|
189
|
+
it('should contain gemini-1.5-flash', () => {
|
|
190
|
+
assert('gemini-1.5-flash' in constants.MODEL_PRICING);
|
|
191
|
+
});
|
|
192
|
+
it('should contain gemini-2.0-flash', () => {
|
|
193
|
+
assert('gemini-2.0-flash' in constants.MODEL_PRICING);
|
|
194
|
+
});
|
|
195
|
+
it('Gemini Pro should have higher pricing than Flash', () => {
|
|
196
|
+
const pro = constants.MODEL_PRICING['gemini-1.5-pro'];
|
|
197
|
+
const flash = constants.MODEL_PRICING['gemini-1.5-flash'];
|
|
198
|
+
assert(pro.input > flash.input);
|
|
199
|
+
assert(pro.output > flash.output);
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe('Mistral AI models', () => {
|
|
203
|
+
it('should contain mistral-large', () => {
|
|
204
|
+
assert('mistral-large' in constants.MODEL_PRICING);
|
|
205
|
+
});
|
|
206
|
+
it('should contain mistral-small', () => {
|
|
207
|
+
assert('mistral-small' in constants.MODEL_PRICING);
|
|
208
|
+
});
|
|
209
|
+
it('should contain codestral', () => {
|
|
210
|
+
assert('codestral' in constants.MODEL_PRICING);
|
|
211
|
+
});
|
|
212
|
+
it('Mistral large should have higher pricing than small', () => {
|
|
213
|
+
const large = constants.MODEL_PRICING['mistral-large'];
|
|
214
|
+
const small = constants.MODEL_PRICING['mistral-small'];
|
|
215
|
+
assert(large.input > small.input);
|
|
216
|
+
assert(large.output > small.output);
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
describe('Cohere models', () => {
|
|
220
|
+
it('should contain command-r-plus', () => {
|
|
221
|
+
assert('command-r-plus' in constants.MODEL_PRICING);
|
|
222
|
+
});
|
|
223
|
+
it('should contain command-r', () => {
|
|
224
|
+
assert('command-r' in constants.MODEL_PRICING);
|
|
225
|
+
});
|
|
226
|
+
it('Command R Plus should have higher pricing than Command R', () => {
|
|
227
|
+
const plus = constants.MODEL_PRICING['command-r-plus'];
|
|
228
|
+
const r = constants.MODEL_PRICING['command-r'];
|
|
229
|
+
assert(plus.input > r.input);
|
|
230
|
+
assert(plus.output > r.output);
|
|
231
|
+
});
|
|
232
|
+
});
|
|
233
|
+
describe('Groq models', () => {
|
|
234
|
+
it('should contain llama-3.3-70b', () => {
|
|
235
|
+
assert('llama-3.3-70b' in constants.MODEL_PRICING);
|
|
236
|
+
});
|
|
237
|
+
it('should contain llama-3.1-8b', () => {
|
|
238
|
+
assert('llama-3.1-8b' in constants.MODEL_PRICING);
|
|
239
|
+
});
|
|
240
|
+
it('Larger llama model should have higher pricing', () => {
|
|
241
|
+
const large = constants.MODEL_PRICING['llama-3.3-70b'];
|
|
242
|
+
const small = constants.MODEL_PRICING['llama-3.1-8b'];
|
|
243
|
+
assert(large.input > small.input);
|
|
244
|
+
assert(large.output > small.output);
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
describe('Perplexity models', () => {
|
|
248
|
+
it('should contain sonar-pro', () => {
|
|
249
|
+
assert('sonar-pro' in constants.MODEL_PRICING);
|
|
250
|
+
});
|
|
251
|
+
it('should contain sonar', () => {
|
|
252
|
+
assert('sonar' in constants.MODEL_PRICING);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
describe('model count', () => {
|
|
256
|
+
it('should have at least 30 models defined', () => {
|
|
257
|
+
const modelCount = Object.keys(constants.MODEL_PRICING).length;
|
|
258
|
+
assert(modelCount >= 30, `Expected at least 30 models, got ${modelCount}`);
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
describe('MODEL_PRICING_METADATA', () => {
|
|
263
|
+
it('should have lastUpdated as valid ISO date', () => {
|
|
264
|
+
const date = new Date(constants.MODEL_PRICING_METADATA.lastUpdated);
|
|
265
|
+
assert.ok(!isNaN(date.getTime()), 'lastUpdated should be a valid date');
|
|
266
|
+
});
|
|
267
|
+
it('should have staleThresholdDays as positive number', () => {
|
|
268
|
+
assert.ok(constants.MODEL_PRICING_METADATA.staleThresholdDays > 0);
|
|
269
|
+
});
|
|
270
|
+
it('should have staleThresholdDays default to 90', () => {
|
|
271
|
+
assert.strictEqual(constants.MODEL_PRICING_METADATA.staleThresholdDays, 90);
|
|
272
|
+
});
|
|
273
|
+
it('should have sources object with provider URLs', () => {
|
|
274
|
+
const sources = constants.MODEL_PRICING_METADATA.sources;
|
|
275
|
+
assert.ok(typeof sources === 'object');
|
|
276
|
+
assert.ok(sources.anthropic.includes('anthropic.com'));
|
|
277
|
+
assert.ok(sources.openai.includes('openai.com'));
|
|
278
|
+
assert.ok(sources.google.includes('google'));
|
|
279
|
+
assert.ok(sources.mistral.includes('mistral.ai'));
|
|
280
|
+
assert.ok(sources.cohere.includes('cohere.com'));
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
describe('checkPricingStaleness', () => {
|
|
284
|
+
it('should return isStale and daysSinceUpdate', () => {
|
|
285
|
+
const result = constants.checkPricingStaleness();
|
|
286
|
+
assert.ok('isStale' in result);
|
|
287
|
+
assert.ok('daysSinceUpdate' in result);
|
|
288
|
+
assert.strictEqual(typeof result.isStale, 'boolean');
|
|
289
|
+
assert.strictEqual(typeof result.daysSinceUpdate, 'number');
|
|
290
|
+
});
|
|
291
|
+
it('should calculate daysSinceUpdate correctly', () => {
|
|
292
|
+
const result = constants.checkPricingStaleness();
|
|
293
|
+
const lastUpdate = new Date(constants.MODEL_PRICING_METADATA.lastUpdated);
|
|
294
|
+
const now = new Date();
|
|
295
|
+
const expectedDays = Math.floor((now.getTime() - lastUpdate.getTime()) / (1000 * 60 * 60 * 24));
|
|
296
|
+
assert.strictEqual(result.daysSinceUpdate, expectedDays);
|
|
297
|
+
});
|
|
298
|
+
it('should return isStale: true when data is >90 days old', () => {
|
|
299
|
+
// Note: This test documents expected behavior
|
|
300
|
+
// When data is fresh (<90 days), isStale should be false
|
|
301
|
+
// When data is old (>90 days), isStale should be true
|
|
302
|
+
const result = constants.checkPricingStaleness();
|
|
303
|
+
const expectedStale = result.daysSinceUpdate > constants.MODEL_PRICING_METADATA.staleThresholdDays;
|
|
304
|
+
assert.strictEqual(result.isStale, expectedStale);
|
|
305
|
+
});
|
|
306
|
+
it('should return non-negative daysSinceUpdate', () => {
|
|
307
|
+
const result = constants.checkPricingStaleness();
|
|
308
|
+
assert.ok(result.daysSinceUpdate >= 0);
|
|
309
|
+
});
|
|
164
310
|
});
|
|
165
311
|
describe('File patterns', () => {
|
|
166
312
|
describe('TRACES_FILE_PATTERN', () => {
|
|
@@ -288,11 +434,14 @@ describe('Constants', () => {
|
|
|
288
434
|
});
|
|
289
435
|
describe('getTelemetryDirectories', () => {
|
|
290
436
|
let tempDir;
|
|
437
|
+
before(() => {
|
|
438
|
+
tempDir = getSharedTempDir('ConstantsTelemetryDirs');
|
|
439
|
+
});
|
|
291
440
|
beforeEach(() => {
|
|
292
|
-
tempDir
|
|
441
|
+
clearTempDir(tempDir);
|
|
293
442
|
});
|
|
294
|
-
|
|
295
|
-
|
|
443
|
+
after(() => {
|
|
444
|
+
removeSharedTempDir('ConstantsTelemetryDirs');
|
|
296
445
|
});
|
|
297
446
|
it('should return array of directories', () => {
|
|
298
447
|
const dirs = constants.getTelemetryDirectories(tempDir);
|