@cleocode/lafs 2026.4.0 → 2026.4.4

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 (131) hide show
  1. package/README.md +97 -68
  2. package/dist/src/a2a/bindings/grpc.d.ts +117 -11
  3. package/dist/src/a2a/bindings/grpc.d.ts.map +1 -1
  4. package/dist/src/a2a/bindings/grpc.js +79 -8
  5. package/dist/src/a2a/bindings/grpc.js.map +1 -1
  6. package/dist/src/a2a/bindings/http.d.ts +129 -14
  7. package/dist/src/a2a/bindings/http.d.ts.map +1 -1
  8. package/dist/src/a2a/bindings/http.js +93 -12
  9. package/dist/src/a2a/bindings/http.js.map +1 -1
  10. package/dist/src/a2a/bindings/index.d.ts +80 -7
  11. package/dist/src/a2a/bindings/index.d.ts.map +1 -1
  12. package/dist/src/a2a/bindings/index.js +69 -2
  13. package/dist/src/a2a/bindings/index.js.map +1 -1
  14. package/dist/src/a2a/bindings/jsonrpc.d.ts +193 -9
  15. package/dist/src/a2a/bindings/jsonrpc.d.ts.map +1 -1
  16. package/dist/src/a2a/bindings/jsonrpc.js +152 -9
  17. package/dist/src/a2a/bindings/jsonrpc.js.map +1 -1
  18. package/dist/src/a2a/bridge.d.ts +232 -37
  19. package/dist/src/a2a/bridge.d.ts.map +1 -1
  20. package/dist/src/a2a/bridge.js +172 -24
  21. package/dist/src/a2a/bridge.js.map +1 -1
  22. package/dist/src/a2a/extensions.d.ts +221 -12
  23. package/dist/src/a2a/extensions.d.ts.map +1 -1
  24. package/dist/src/a2a/extensions.js +175 -11
  25. package/dist/src/a2a/extensions.js.map +1 -1
  26. package/dist/src/a2a/index.d.ts +2 -0
  27. package/dist/src/a2a/index.d.ts.map +1 -1
  28. package/dist/src/a2a/index.js +2 -0
  29. package/dist/src/a2a/index.js.map +1 -1
  30. package/dist/src/a2a/streaming.d.ts +274 -2
  31. package/dist/src/a2a/streaming.d.ts.map +1 -1
  32. package/dist/src/a2a/streaming.js +245 -2
  33. package/dist/src/a2a/streaming.js.map +1 -1
  34. package/dist/src/a2a/task-lifecycle.d.ts +339 -19
  35. package/dist/src/a2a/task-lifecycle.d.ts.map +1 -1
  36. package/dist/src/a2a/task-lifecycle.js +302 -19
  37. package/dist/src/a2a/task-lifecycle.js.map +1 -1
  38. package/dist/src/budgetEnforcement.d.ts +88 -14
  39. package/dist/src/budgetEnforcement.d.ts.map +1 -1
  40. package/dist/src/budgetEnforcement.js +132 -19
  41. package/dist/src/budgetEnforcement.js.map +1 -1
  42. package/dist/src/circuit-breaker/index.d.ts +254 -9
  43. package/dist/src/circuit-breaker/index.d.ts.map +1 -1
  44. package/dist/src/circuit-breaker/index.js +218 -9
  45. package/dist/src/circuit-breaker/index.js.map +1 -1
  46. package/dist/src/compliance.d.ts +176 -0
  47. package/dist/src/compliance.d.ts.map +1 -1
  48. package/dist/src/compliance.js +100 -0
  49. package/dist/src/compliance.js.map +1 -1
  50. package/dist/src/conformance.d.ts +52 -0
  51. package/dist/src/conformance.d.ts.map +1 -1
  52. package/dist/src/conformance.js +41 -0
  53. package/dist/src/conformance.js.map +1 -1
  54. package/dist/src/conformanceProfiles.d.ts +66 -0
  55. package/dist/src/conformanceProfiles.d.ts.map +1 -1
  56. package/dist/src/conformanceProfiles.js +51 -0
  57. package/dist/src/conformanceProfiles.js.map +1 -1
  58. package/dist/src/deprecationRegistry.d.ts +80 -0
  59. package/dist/src/deprecationRegistry.d.ts.map +1 -1
  60. package/dist/src/deprecationRegistry.js +50 -0
  61. package/dist/src/deprecationRegistry.js.map +1 -1
  62. package/dist/src/discovery.d.ts +344 -63
  63. package/dist/src/discovery.d.ts.map +1 -1
  64. package/dist/src/discovery.js +67 -13
  65. package/dist/src/discovery.js.map +1 -1
  66. package/dist/src/envelope.d.ts +252 -0
  67. package/dist/src/envelope.d.ts.map +1 -1
  68. package/dist/src/envelope.js +165 -0
  69. package/dist/src/envelope.js.map +1 -1
  70. package/dist/src/errorRegistry.d.ts +159 -0
  71. package/dist/src/errorRegistry.d.ts.map +1 -1
  72. package/dist/src/errorRegistry.js +115 -0
  73. package/dist/src/errorRegistry.js.map +1 -1
  74. package/dist/src/fieldExtraction.d.ts +125 -25
  75. package/dist/src/fieldExtraction.d.ts.map +1 -1
  76. package/dist/src/fieldExtraction.js +85 -16
  77. package/dist/src/fieldExtraction.js.map +1 -1
  78. package/dist/src/flagResolver.d.ts +75 -9
  79. package/dist/src/flagResolver.d.ts.map +1 -1
  80. package/dist/src/flagResolver.js +20 -4
  81. package/dist/src/flagResolver.js.map +1 -1
  82. package/dist/src/flagSemantics.d.ts +76 -1
  83. package/dist/src/flagSemantics.d.ts.map +1 -1
  84. package/dist/src/flagSemantics.js +66 -0
  85. package/dist/src/flagSemantics.js.map +1 -1
  86. package/dist/src/health/index.d.ts +87 -6
  87. package/dist/src/health/index.d.ts.map +1 -1
  88. package/dist/src/health/index.js +54 -6
  89. package/dist/src/health/index.js.map +1 -1
  90. package/dist/src/index.d.ts +12 -1
  91. package/dist/src/index.d.ts.map +1 -1
  92. package/dist/src/index.js +12 -1
  93. package/dist/src/index.js.map +1 -1
  94. package/dist/src/mviProjection.d.ts +42 -6
  95. package/dist/src/mviProjection.d.ts.map +1 -1
  96. package/dist/src/mviProjection.js +31 -5
  97. package/dist/src/mviProjection.js.map +1 -1
  98. package/dist/src/native-loader.d.ts +49 -0
  99. package/dist/src/native-loader.d.ts.map +1 -0
  100. package/dist/src/native-loader.js +56 -0
  101. package/dist/src/native-loader.js.map +1 -0
  102. package/dist/src/problemDetails.d.ts +70 -4
  103. package/dist/src/problemDetails.d.ts.map +1 -1
  104. package/dist/src/problemDetails.js +21 -3
  105. package/dist/src/problemDetails.js.map +1 -1
  106. package/dist/src/shutdown/index.d.ts +96 -7
  107. package/dist/src/shutdown/index.d.ts.map +1 -1
  108. package/dist/src/shutdown/index.js +72 -7
  109. package/dist/src/shutdown/index.js.map +1 -1
  110. package/dist/src/tokenEstimator.d.ts +97 -11
  111. package/dist/src/tokenEstimator.d.ts.map +1 -1
  112. package/dist/src/tokenEstimator.js +90 -11
  113. package/dist/src/tokenEstimator.js.map +1 -1
  114. package/dist/src/types.d.ts +467 -2
  115. package/dist/src/types.d.ts.map +1 -1
  116. package/dist/src/types.js +64 -0
  117. package/dist/src/types.js.map +1 -1
  118. package/dist/src/validateEnvelope.d.ts +59 -1
  119. package/dist/src/validateEnvelope.d.ts.map +1 -1
  120. package/dist/src/validateEnvelope.js +75 -9
  121. package/dist/src/validateEnvelope.js.map +1 -1
  122. package/dist/tsconfig.build.tsbuildinfo +1 -1
  123. package/lafs.md +3 -4
  124. package/package.json +6 -3
  125. package/dist/src/mcpAdapter.d.ts +0 -29
  126. package/dist/src/mcpAdapter.d.ts.map +0 -1
  127. package/dist/src/mcpAdapter.js +0 -286
  128. package/dist/src/mcpAdapter.js.map +0 -1
  129. package/schemas/v1/conformance-profiles.d.ts +0 -15
  130. package/schemas/v1/envelope.schema.d.ts +0 -14
  131. package/schemas/v1/error-registry.d.ts +0 -24
@@ -5,31 +5,64 @@
5
5
  * Uses the approximation: 1 token ≈ 4 characters.
6
6
  * Properly handles nested objects, arrays, Unicode graphemes, and circular references.
7
7
  */
8
+ /**
9
+ * Configuration options for the token estimator.
10
+ *
11
+ * @remarks
12
+ * All options have sensible defaults. Override individual fields to tune
13
+ * estimation accuracy or performance for specific workloads.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const opts: TokenEstimatorOptions = {
18
+ * charsPerToken: 3.5,
19
+ * maxDepth: 50,
20
+ * };
21
+ * ```
22
+ */
8
23
  export interface TokenEstimatorOptions {
9
24
  /**
10
- * Characters per token ratio (default: 4)
25
+ * Characters per token ratio.
26
+ * @defaultValue `4`
11
27
  */
12
28
  charsPerToken?: number;
13
29
  /**
14
- * Maximum depth to traverse for circular reference detection (default: 100)
30
+ * Maximum depth to traverse for circular reference detection.
31
+ * @defaultValue `100`
15
32
  */
16
33
  maxDepth?: number;
17
34
  /**
18
- * Maximum string length to process for Unicode grapheme counting (default: 100000)
35
+ * Maximum string length to process for Unicode grapheme counting.
36
+ * @defaultValue `100000`
19
37
  */
20
38
  maxStringLength?: number;
21
39
  }
22
40
  /**
23
- * TokenEstimator provides character-based token counting for JSON payloads.
41
+ * Character-based token estimator for JSON payloads.
24
42
  *
43
+ * @remarks
25
44
  * Algorithm:
26
- * 1. Serialize value to JSON (handling circular refs)
27
- * 2. Count Unicode graphemes (not bytes)
28
- * 3. Divide by charsPerToken ratio (default 4)
29
- * 4. Add overhead for structural characters
45
+ * 1. Recursively traverse the value (handling circular refs via WeakSet)
46
+ * 2. Count Unicode graphemes (not bytes) for string content
47
+ * 3. Divide by `charsPerToken` ratio (default 4)
48
+ * 4. Add overhead for structural JSON characters
49
+ *
50
+ * The estimator is intentionally conservative to avoid underestimating budget usage.
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const estimator = new TokenEstimator({ charsPerToken: 4 });
55
+ * const tokens = estimator.estimate({ name: "hello", items: [1, 2, 3] });
56
+ * ```
30
57
  */
31
58
  export declare class TokenEstimator {
59
+ /** Resolved configuration with defaults applied */
32
60
  private options;
61
+ /**
62
+ * Create a new TokenEstimator.
63
+ *
64
+ * @param options - Configuration overrides (merged with defaults)
65
+ */
33
66
  constructor(options?: TokenEstimatorOptions);
34
67
  /**
35
68
  * Estimate tokens for any JavaScript value.
@@ -49,40 +82,93 @@ export declare class TokenEstimator {
49
82
  estimateJSON(json: string): number;
50
83
  /**
51
84
  * Internal recursive estimation with circular reference tracking.
85
+ *
86
+ * @param value - Value to estimate
87
+ * @param seen - WeakSet tracking visited objects for circular reference detection
88
+ * @param depth - Current recursion depth
89
+ * @returns Estimated token count for this value
52
90
  */
53
91
  private estimateWithTracking;
54
92
  /**
55
93
  * Estimate tokens for an array.
94
+ *
95
+ * @param arr - Array to estimate
96
+ * @param seen - WeakSet tracking visited objects
97
+ * @param depth - Current recursion depth
98
+ * @returns Estimated token count including brackets and separators
56
99
  */
57
100
  private estimateArray;
58
101
  /**
59
102
  * Estimate tokens for a plain object.
103
+ *
104
+ * @param obj - Object to estimate
105
+ * @param seen - WeakSet tracking visited objects
106
+ * @param depth - Current recursion depth
107
+ * @returns Estimated token count including braces, keys, colons, and separators
60
108
  */
61
109
  private estimateObject;
62
110
  /**
63
111
  * Check if a value can be safely serialized (no circular refs).
112
+ *
113
+ * @param value - Value to check
114
+ * @returns `true` if `JSON.stringify` succeeds without throwing
64
115
  */
65
116
  canSerialize(value: unknown): boolean;
66
117
  /**
67
- * Serialize value to JSON with circular reference handling.
68
- * Circular refs are replaced with "[Circular]".
118
+ * Serialize a value to JSON with circular reference handling.
119
+ *
120
+ * @param value - Value to serialize
121
+ * @returns JSON string with circular references replaced by `"[Circular]"`
69
122
  */
70
123
  safeStringify(value: unknown): string;
71
124
  /**
72
- * Create a safe copy of a value with circular refs removed.
125
+ * Create a deep copy of a value with circular refs replaced by `"[Circular]"`.
126
+ *
127
+ * @param value - Value to copy
128
+ * @returns Deep clone with all circular references replaced
73
129
  */
74
130
  safeCopy<T>(value: T): T;
75
131
  }
76
132
  /**
77
133
  * Global token estimator instance with default settings.
134
+ *
135
+ * @remarks
136
+ * Reuses a single estimator instance to avoid repeated object allocation.
137
+ * All default {@link TokenEstimatorOptions} values apply.
78
138
  */
79
139
  export declare const defaultEstimator: TokenEstimator;
80
140
  /**
81
141
  * Convenience function to estimate tokens for a value.
142
+ *
143
+ * @param value - Any JavaScript value to estimate
144
+ * @param options - Optional estimator configuration overrides
145
+ * @returns Estimated token count
146
+ *
147
+ * @remarks
148
+ * Uses the global {@link defaultEstimator} when no options are provided.
149
+ * Creates a new estimator instance when custom options are given.
150
+ *
151
+ * @example
152
+ * ```typescript
153
+ * const tokens = estimateTokens({ data: [1, 2, 3] });
154
+ * ```
82
155
  */
83
156
  export declare function estimateTokens(value: unknown, options?: TokenEstimatorOptions): number;
84
157
  /**
85
158
  * Convenience function to estimate tokens from a JSON string.
159
+ *
160
+ * @param json - Pre-serialized JSON string
161
+ * @param options - Optional estimator configuration overrides
162
+ * @returns Estimated token count
163
+ *
164
+ * @remarks
165
+ * More efficient than {@link estimateTokens} when you already have the
166
+ * JSON string, since it skips the serialization step.
167
+ *
168
+ * @example
169
+ * ```typescript
170
+ * const tokens = estimateTokensJSON('{"key": "value"}');
171
+ * ```
86
172
  */
87
173
  export declare function estimateTokensJSON(json: string, options?: TokenEstimatorOptions): number;
88
174
  //# sourceMappingURL=tokenEstimator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tokenEstimator.d.ts","sourceRoot":"","sources":["../../src/tokenEstimator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA0BD;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAkC;gBAErC,OAAO,GAAE,qBAA0B;IAI/C;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAIhC;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQlC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiE5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAgCtB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IASrC;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAcrC;;OAEG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;CA+BzB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,gBAAuB,CAAC;AAErD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAGtF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAGxF"}
1
+ {"version":3,"file":"tokenEstimator.d.ts","sourceRoot":"","sources":["../../src/tokenEstimator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAqCD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IACzB,mDAAmD;IACnD,OAAO,CAAC,OAAO,CAAkC;IAEjD;;;;OAIG;gBACS,OAAO,GAAE,qBAA0B;IAI/C;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAIhC;;;;;;OAMG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQlC;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IAiE5B;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAgCtB;;;;;OAKG;IACH,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IASrC;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAcrC;;;;;OAKG;IACH,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC;CA+BzB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,gBAAuB,CAAC;AAErD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAGtF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAGxF"}
@@ -6,8 +6,15 @@
6
6
  * Properly handles nested objects, arrays, Unicode graphemes, and circular references.
7
7
  */
8
8
  /**
9
- * Counts Unicode graphemes in a string using Intl.Segmenter when available.
10
- * Falls back to character counting for environments without Intl.Segmenter.
9
+ * Count Unicode graphemes in a string.
10
+ *
11
+ * @param str - Input string to count
12
+ * @returns Number of grapheme clusters in the string
13
+ *
14
+ * @remarks
15
+ * Uses `Intl.Segmenter` when available (Node.js 16+, modern browsers) for
16
+ * accurate grapheme counting. Falls back to spread-based code-point counting
17
+ * which handles surrogate pairs but not all grapheme clusters.
11
18
  */
12
19
  function countGraphemes(str) {
13
20
  // Use Intl.Segmenter for proper grapheme counting (Node.js 16+, modern browsers)
@@ -19,7 +26,11 @@ function countGraphemes(str) {
19
26
  return [...str].length;
20
27
  }
21
28
  /**
22
- * Default options for token estimation
29
+ * Default options for token estimation.
30
+ *
31
+ * @remarks
32
+ * These values represent the baseline configuration used when no overrides
33
+ * are provided to the {@link TokenEstimator} constructor.
23
34
  */
24
35
  const DEFAULT_OPTIONS = {
25
36
  charsPerToken: 4,
@@ -27,16 +38,31 @@ const DEFAULT_OPTIONS = {
27
38
  maxStringLength: 100000,
28
39
  };
29
40
  /**
30
- * TokenEstimator provides character-based token counting for JSON payloads.
41
+ * Character-based token estimator for JSON payloads.
31
42
  *
43
+ * @remarks
32
44
  * Algorithm:
33
- * 1. Serialize value to JSON (handling circular refs)
34
- * 2. Count Unicode graphemes (not bytes)
35
- * 3. Divide by charsPerToken ratio (default 4)
36
- * 4. Add overhead for structural characters
45
+ * 1. Recursively traverse the value (handling circular refs via WeakSet)
46
+ * 2. Count Unicode graphemes (not bytes) for string content
47
+ * 3. Divide by `charsPerToken` ratio (default 4)
48
+ * 4. Add overhead for structural JSON characters
49
+ *
50
+ * The estimator is intentionally conservative to avoid underestimating budget usage.
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const estimator = new TokenEstimator({ charsPerToken: 4 });
55
+ * const tokens = estimator.estimate({ name: "hello", items: [1, 2, 3] });
56
+ * ```
37
57
  */
38
58
  export class TokenEstimator {
59
+ /** Resolved configuration with defaults applied */
39
60
  options;
61
+ /**
62
+ * Create a new TokenEstimator.
63
+ *
64
+ * @param options - Configuration overrides (merged with defaults)
65
+ */
40
66
  constructor(options = {}) {
41
67
  this.options = { ...DEFAULT_OPTIONS, ...options };
42
68
  }
@@ -66,6 +92,11 @@ export class TokenEstimator {
66
92
  }
67
93
  /**
68
94
  * Internal recursive estimation with circular reference tracking.
95
+ *
96
+ * @param value - Value to estimate
97
+ * @param seen - WeakSet tracking visited objects for circular reference detection
98
+ * @param depth - Current recursion depth
99
+ * @returns Estimated token count for this value
69
100
  */
70
101
  estimateWithTracking(value, seen, depth) {
71
102
  // Prevent infinite recursion
@@ -122,6 +153,11 @@ export class TokenEstimator {
122
153
  }
123
154
  /**
124
155
  * Estimate tokens for an array.
156
+ *
157
+ * @param arr - Array to estimate
158
+ * @param seen - WeakSet tracking visited objects
159
+ * @param depth - Current recursion depth
160
+ * @returns Estimated token count including brackets and separators
125
161
  */
126
162
  estimateArray(arr, seen, depth) {
127
163
  let tokens = 1; // Opening bracket [ (already counted as structural)
@@ -137,6 +173,11 @@ export class TokenEstimator {
137
173
  }
138
174
  /**
139
175
  * Estimate tokens for a plain object.
176
+ *
177
+ * @param obj - Object to estimate
178
+ * @param seen - WeakSet tracking visited objects
179
+ * @param depth - Current recursion depth
180
+ * @returns Estimated token count including braces, keys, colons, and separators
140
181
  */
141
182
  estimateObject(obj, seen, depth) {
142
183
  let tokens = 1; // Opening brace {
@@ -160,6 +201,9 @@ export class TokenEstimator {
160
201
  }
161
202
  /**
162
203
  * Check if a value can be safely serialized (no circular refs).
204
+ *
205
+ * @param value - Value to check
206
+ * @returns `true` if `JSON.stringify` succeeds without throwing
163
207
  */
164
208
  canSerialize(value) {
165
209
  try {
@@ -171,8 +215,10 @@ export class TokenEstimator {
171
215
  }
172
216
  }
173
217
  /**
174
- * Serialize value to JSON with circular reference handling.
175
- * Circular refs are replaced with "[Circular]".
218
+ * Serialize a value to JSON with circular reference handling.
219
+ *
220
+ * @param value - Value to serialize
221
+ * @returns JSON string with circular references replaced by `"[Circular]"`
176
222
  */
177
223
  safeStringify(value) {
178
224
  const seen = new WeakSet();
@@ -187,7 +233,10 @@ export class TokenEstimator {
187
233
  });
188
234
  }
189
235
  /**
190
- * Create a safe copy of a value with circular refs removed.
236
+ * Create a deep copy of a value with circular refs replaced by `"[Circular]"`.
237
+ *
238
+ * @param value - Value to copy
239
+ * @returns Deep clone with all circular references replaced
191
240
  */
192
241
  safeCopy(value) {
193
242
  const seen = new WeakSet();
@@ -218,10 +267,27 @@ export class TokenEstimator {
218
267
  }
219
268
  /**
220
269
  * Global token estimator instance with default settings.
270
+ *
271
+ * @remarks
272
+ * Reuses a single estimator instance to avoid repeated object allocation.
273
+ * All default {@link TokenEstimatorOptions} values apply.
221
274
  */
222
275
  export const defaultEstimator = new TokenEstimator();
223
276
  /**
224
277
  * Convenience function to estimate tokens for a value.
278
+ *
279
+ * @param value - Any JavaScript value to estimate
280
+ * @param options - Optional estimator configuration overrides
281
+ * @returns Estimated token count
282
+ *
283
+ * @remarks
284
+ * Uses the global {@link defaultEstimator} when no options are provided.
285
+ * Creates a new estimator instance when custom options are given.
286
+ *
287
+ * @example
288
+ * ```typescript
289
+ * const tokens = estimateTokens({ data: [1, 2, 3] });
290
+ * ```
225
291
  */
226
292
  export function estimateTokens(value, options) {
227
293
  const estimator = options ? new TokenEstimator(options) : defaultEstimator;
@@ -229,6 +295,19 @@ export function estimateTokens(value, options) {
229
295
  }
230
296
  /**
231
297
  * Convenience function to estimate tokens from a JSON string.
298
+ *
299
+ * @param json - Pre-serialized JSON string
300
+ * @param options - Optional estimator configuration overrides
301
+ * @returns Estimated token count
302
+ *
303
+ * @remarks
304
+ * More efficient than {@link estimateTokens} when you already have the
305
+ * JSON string, since it skips the serialization step.
306
+ *
307
+ * @example
308
+ * ```typescript
309
+ * const tokens = estimateTokensJSON('{"key": "value"}');
310
+ * ```
232
311
  */
233
312
  export function estimateTokensJSON(json, options) {
234
313
  const estimator = options ? new TokenEstimator(options) : defaultEstimator;
@@ -1 +1 @@
1
- {"version":3,"file":"tokenEstimator.js","sourceRoot":"","sources":["../../src/tokenEstimator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenEstimator.js","sourceRoot":"","sources":["../../src/tokenEstimator.ts"],"names":[],"mappings":"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"}