@diyor28/context 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/README.md +270 -0
  2. package/dist/__tests__/attachment-selector.test.d.ts +11 -0
  3. package/dist/__tests__/attachment-selector.test.d.ts.map +1 -0
  4. package/dist/__tests__/attachment-selector.test.js +449 -0
  5. package/dist/__tests__/attachment-selector.test.js.map +1 -0
  6. package/dist/__tests__/cache-breakpoints.test.d.ts +11 -0
  7. package/dist/__tests__/cache-breakpoints.test.d.ts.map +1 -0
  8. package/dist/__tests__/cache-breakpoints.test.js +398 -0
  9. package/dist/__tests__/cache-breakpoints.test.js.map +1 -0
  10. package/dist/__tests__/codecs.test.d.ts +7 -0
  11. package/dist/__tests__/codecs.test.d.ts.map +1 -0
  12. package/dist/__tests__/codecs.test.js +331 -0
  13. package/dist/__tests__/codecs.test.js.map +1 -0
  14. package/dist/__tests__/compactor.test.d.ts +11 -0
  15. package/dist/__tests__/compactor.test.d.ts.map +1 -0
  16. package/dist/__tests__/compactor.test.js +519 -0
  17. package/dist/__tests__/compactor.test.js.map +1 -0
  18. package/dist/__tests__/context-graph.test.d.ts +7 -0
  19. package/dist/__tests__/context-graph.test.d.ts.map +1 -0
  20. package/dist/__tests__/context-graph.test.js +262 -0
  21. package/dist/__tests__/context-graph.test.js.map +1 -0
  22. package/dist/__tests__/hash.test.d.ts +7 -0
  23. package/dist/__tests__/hash.test.d.ts.map +1 -0
  24. package/dist/__tests__/hash.test.js +228 -0
  25. package/dist/__tests__/hash.test.js.map +1 -0
  26. package/dist/__tests__/integration.test.d.ts +15 -0
  27. package/dist/__tests__/integration.test.d.ts.map +1 -0
  28. package/dist/__tests__/integration.test.js +728 -0
  29. package/dist/__tests__/integration.test.js.map +1 -0
  30. package/dist/__tests__/kind-order.test.d.ts +7 -0
  31. package/dist/__tests__/kind-order.test.d.ts.map +1 -0
  32. package/dist/__tests__/kind-order.test.js +243 -0
  33. package/dist/__tests__/kind-order.test.js.map +1 -0
  34. package/dist/__tests__/phase2-integration.test.d.ts +5 -0
  35. package/dist/__tests__/phase2-integration.test.d.ts.map +1 -0
  36. package/dist/__tests__/phase2-integration.test.js +222 -0
  37. package/dist/__tests__/phase2-integration.test.js.map +1 -0
  38. package/dist/__tests__/queries.test.d.ts +7 -0
  39. package/dist/__tests__/queries.test.d.ts.map +1 -0
  40. package/dist/__tests__/queries.test.js +254 -0
  41. package/dist/__tests__/queries.test.js.map +1 -0
  42. package/dist/__tests__/token-estimator.test.d.ts +7 -0
  43. package/dist/__tests__/token-estimator.test.d.ts.map +1 -0
  44. package/dist/__tests__/token-estimator.test.js +267 -0
  45. package/dist/__tests__/token-estimator.test.js.map +1 -0
  46. package/dist/adapters/anthropic-estimator.d.ts +38 -0
  47. package/dist/adapters/anthropic-estimator.d.ts.map +1 -0
  48. package/dist/adapters/anthropic-estimator.js +108 -0
  49. package/dist/adapters/anthropic-estimator.js.map +1 -0
  50. package/dist/adapters/attachment-resolver.d.ts +96 -0
  51. package/dist/adapters/attachment-resolver.d.ts.map +1 -0
  52. package/dist/adapters/attachment-resolver.js +176 -0
  53. package/dist/adapters/attachment-resolver.js.map +1 -0
  54. package/dist/adapters/attachment-selector.d.ts +59 -0
  55. package/dist/adapters/attachment-selector.d.ts.map +1 -0
  56. package/dist/adapters/attachment-selector.js +163 -0
  57. package/dist/adapters/attachment-selector.js.map +1 -0
  58. package/dist/adapters/gemini-estimator.d.ts +27 -0
  59. package/dist/adapters/gemini-estimator.d.ts.map +1 -0
  60. package/dist/adapters/gemini-estimator.js +80 -0
  61. package/dist/adapters/gemini-estimator.js.map +1 -0
  62. package/dist/adapters/index.d.ts +12 -0
  63. package/dist/adapters/index.d.ts.map +1 -0
  64. package/dist/adapters/index.js +28 -0
  65. package/dist/adapters/index.js.map +1 -0
  66. package/dist/adapters/memory-store.d.ts +139 -0
  67. package/dist/adapters/memory-store.d.ts.map +1 -0
  68. package/dist/adapters/memory-store.js +187 -0
  69. package/dist/adapters/memory-store.js.map +1 -0
  70. package/dist/adapters/openai-estimator.d.ts +35 -0
  71. package/dist/adapters/openai-estimator.d.ts.map +1 -0
  72. package/dist/adapters/openai-estimator.js +89 -0
  73. package/dist/adapters/openai-estimator.js.map +1 -0
  74. package/dist/adapters/summarizer.d.ts +121 -0
  75. package/dist/adapters/summarizer.d.ts.map +1 -0
  76. package/dist/adapters/summarizer.js +121 -0
  77. package/dist/adapters/summarizer.js.map +1 -0
  78. package/dist/adapters/token-estimator.d.ts +63 -0
  79. package/dist/adapters/token-estimator.d.ts.map +1 -0
  80. package/dist/adapters/token-estimator.js +37 -0
  81. package/dist/adapters/token-estimator.js.map +1 -0
  82. package/dist/builder/context-builder.d.ts +186 -0
  83. package/dist/builder/context-builder.d.ts.map +1 -0
  84. package/dist/builder/context-builder.js +305 -0
  85. package/dist/builder/context-builder.js.map +1 -0
  86. package/dist/builder/context-fork.d.ts +166 -0
  87. package/dist/builder/context-fork.d.ts.map +1 -0
  88. package/dist/builder/context-fork.js +282 -0
  89. package/dist/builder/context-fork.js.map +1 -0
  90. package/dist/builder/index.d.ts +6 -0
  91. package/dist/builder/index.d.ts.map +1 -0
  92. package/dist/builder/index.js +22 -0
  93. package/dist/builder/index.js.map +1 -0
  94. package/dist/codecs/base.d.ts +18 -0
  95. package/dist/codecs/base.d.ts.map +1 -0
  96. package/dist/codecs/base.js +39 -0
  97. package/dist/codecs/base.js.map +1 -0
  98. package/dist/codecs/conversation-history.codec.d.ts +81 -0
  99. package/dist/codecs/conversation-history.codec.d.ts.map +1 -0
  100. package/dist/codecs/conversation-history.codec.js +89 -0
  101. package/dist/codecs/conversation-history.codec.js.map +1 -0
  102. package/dist/codecs/index.d.ts +31 -0
  103. package/dist/codecs/index.d.ts.map +1 -0
  104. package/dist/codecs/index.js +71 -0
  105. package/dist/codecs/index.js.map +1 -0
  106. package/dist/codecs/redacted-stub.codec.d.ts +32 -0
  107. package/dist/codecs/redacted-stub.codec.d.ts.map +1 -0
  108. package/dist/codecs/redacted-stub.codec.js +64 -0
  109. package/dist/codecs/redacted-stub.codec.js.map +1 -0
  110. package/dist/codecs/structured-reference.codec.d.ts +40 -0
  111. package/dist/codecs/structured-reference.codec.d.ts.map +1 -0
  112. package/dist/codecs/structured-reference.codec.js +81 -0
  113. package/dist/codecs/structured-reference.codec.js.map +1 -0
  114. package/dist/codecs/system-rules.codec.d.ts +32 -0
  115. package/dist/codecs/system-rules.codec.d.ts.map +1 -0
  116. package/dist/codecs/system-rules.codec.js +62 -0
  117. package/dist/codecs/system-rules.codec.js.map +1 -0
  118. package/dist/codecs/tool-output.codec.d.ts +66 -0
  119. package/dist/codecs/tool-output.codec.d.ts.map +1 -0
  120. package/dist/codecs/tool-output.codec.js +95 -0
  121. package/dist/codecs/tool-output.codec.js.map +1 -0
  122. package/dist/codecs/tool-schema.codec.d.ts +36 -0
  123. package/dist/codecs/tool-schema.codec.d.ts.map +1 -0
  124. package/dist/codecs/tool-schema.codec.js +74 -0
  125. package/dist/codecs/tool-schema.codec.js.map +1 -0
  126. package/dist/codecs/unsafe-text.codec.d.ts +28 -0
  127. package/dist/codecs/unsafe-text.codec.d.ts.map +1 -0
  128. package/dist/codecs/unsafe-text.codec.js +63 -0
  129. package/dist/codecs/unsafe-text.codec.js.map +1 -0
  130. package/dist/graph/context-graph.d.ts +121 -0
  131. package/dist/graph/context-graph.d.ts.map +1 -0
  132. package/dist/graph/context-graph.js +166 -0
  133. package/dist/graph/context-graph.js.map +1 -0
  134. package/dist/graph/index.d.ts +8 -0
  135. package/dist/graph/index.d.ts.map +1 -0
  136. package/dist/graph/index.js +24 -0
  137. package/dist/graph/index.js.map +1 -0
  138. package/dist/graph/kind-order.d.ts +60 -0
  139. package/dist/graph/kind-order.d.ts.map +1 -0
  140. package/dist/graph/kind-order.js +113 -0
  141. package/dist/graph/kind-order.js.map +1 -0
  142. package/dist/graph/queries.d.ts +68 -0
  143. package/dist/graph/queries.d.ts.map +1 -0
  144. package/dist/graph/queries.js +240 -0
  145. package/dist/graph/queries.js.map +1 -0
  146. package/dist/graph/views.d.ts +90 -0
  147. package/dist/graph/views.d.ts.map +1 -0
  148. package/dist/graph/views.js +173 -0
  149. package/dist/graph/views.js.map +1 -0
  150. package/dist/index.d.ts +16 -0
  151. package/dist/index.d.ts.map +1 -0
  152. package/dist/index.js +40 -0
  153. package/dist/index.js.map +1 -0
  154. package/dist/pipeline/compactor.d.ts +128 -0
  155. package/dist/pipeline/compactor.d.ts.map +1 -0
  156. package/dist/pipeline/compactor.js +346 -0
  157. package/dist/pipeline/compactor.js.map +1 -0
  158. package/dist/pipeline/index.d.ts +6 -0
  159. package/dist/pipeline/index.d.ts.map +1 -0
  160. package/dist/pipeline/index.js +22 -0
  161. package/dist/pipeline/index.js.map +1 -0
  162. package/dist/pipeline/summarizer.d.ts +18 -0
  163. package/dist/pipeline/summarizer.d.ts.map +1 -0
  164. package/dist/pipeline/summarizer.js +68 -0
  165. package/dist/pipeline/summarizer.js.map +1 -0
  166. package/dist/policies/default-policy.d.ts +29 -0
  167. package/dist/policies/default-policy.d.ts.map +1 -0
  168. package/dist/policies/default-policy.js +58 -0
  169. package/dist/policies/default-policy.js.map +1 -0
  170. package/dist/policies/index.d.ts +5 -0
  171. package/dist/policies/index.d.ts.map +1 -0
  172. package/dist/policies/index.js +21 -0
  173. package/dist/policies/index.js.map +1 -0
  174. package/dist/providers/anthropic-compiler.d.ts +58 -0
  175. package/dist/providers/anthropic-compiler.d.ts.map +1 -0
  176. package/dist/providers/anthropic-compiler.js +182 -0
  177. package/dist/providers/anthropic-compiler.js.map +1 -0
  178. package/dist/providers/capabilities.d.ts +54 -0
  179. package/dist/providers/capabilities.d.ts.map +1 -0
  180. package/dist/providers/capabilities.js +87 -0
  181. package/dist/providers/capabilities.js.map +1 -0
  182. package/dist/providers/gemini-compiler.d.ts +51 -0
  183. package/dist/providers/gemini-compiler.d.ts.map +1 -0
  184. package/dist/providers/gemini-compiler.js +206 -0
  185. package/dist/providers/gemini-compiler.js.map +1 -0
  186. package/dist/providers/index.d.ts +8 -0
  187. package/dist/providers/index.d.ts.map +1 -0
  188. package/dist/providers/index.js +24 -0
  189. package/dist/providers/index.js.map +1 -0
  190. package/dist/providers/openai-compiler.d.ts +46 -0
  191. package/dist/providers/openai-compiler.d.ts.map +1 -0
  192. package/dist/providers/openai-compiler.js +149 -0
  193. package/dist/providers/openai-compiler.js.map +1 -0
  194. package/dist/types/attachment.d.ts +62 -0
  195. package/dist/types/attachment.d.ts.map +1 -0
  196. package/dist/types/attachment.js +6 -0
  197. package/dist/types/attachment.js.map +1 -0
  198. package/dist/types/block.d.ts +61 -0
  199. package/dist/types/block.d.ts.map +1 -0
  200. package/dist/types/block.js +8 -0
  201. package/dist/types/block.js.map +1 -0
  202. package/dist/types/codec.d.ts +58 -0
  203. package/dist/types/codec.d.ts.map +1 -0
  204. package/dist/types/codec.js +6 -0
  205. package/dist/types/codec.js.map +1 -0
  206. package/dist/types/compiled.d.ts +91 -0
  207. package/dist/types/compiled.d.ts.map +1 -0
  208. package/dist/types/compiled.js +6 -0
  209. package/dist/types/compiled.js.map +1 -0
  210. package/dist/types/hash.d.ts +24 -0
  211. package/dist/types/hash.d.ts.map +1 -0
  212. package/dist/types/hash.js +49 -0
  213. package/dist/types/hash.js.map +1 -0
  214. package/dist/types/index.d.ts +10 -0
  215. package/dist/types/index.d.ts.map +1 -0
  216. package/dist/types/index.js +26 -0
  217. package/dist/types/index.js.map +1 -0
  218. package/dist/types/policy.d.ts +128 -0
  219. package/dist/types/policy.d.ts.map +1 -0
  220. package/dist/types/policy.js +55 -0
  221. package/dist/types/policy.js.map +1 -0
  222. package/package.json +55 -0
  223. package/postcss.config.js +4 -0
  224. package/src/__tests__/attachment-selector.test.ts +559 -0
  225. package/src/__tests__/cache-breakpoints.test.ts +566 -0
  226. package/src/__tests__/codecs.test.ts +417 -0
  227. package/src/__tests__/compactor.test.ts +608 -0
  228. package/src/__tests__/context-graph.test.ts +383 -0
  229. package/src/__tests__/hash.test.ts +274 -0
  230. package/src/__tests__/integration.test.ts +866 -0
  231. package/src/__tests__/kind-order.test.ts +312 -0
  232. package/src/__tests__/phase2-integration.test.ts +253 -0
  233. package/src/__tests__/queries.test.ts +387 -0
  234. package/src/__tests__/token-estimator.test.ts +326 -0
  235. package/src/adapters/anthropic-estimator.ts +125 -0
  236. package/src/adapters/attachment-resolver.ts +295 -0
  237. package/src/adapters/attachment-selector.ts +218 -0
  238. package/src/adapters/gemini-estimator.ts +93 -0
  239. package/src/adapters/index.ts +12 -0
  240. package/src/adapters/memory-store.ts +299 -0
  241. package/src/adapters/openai-estimator.ts +105 -0
  242. package/src/adapters/summarizer.ts +250 -0
  243. package/src/adapters/token-estimator.ts +74 -0
  244. package/src/builder/context-builder.ts +467 -0
  245. package/src/builder/context-fork.ts +471 -0
  246. package/src/builder/index.ts +6 -0
  247. package/src/codecs/base.ts +36 -0
  248. package/src/codecs/conversation-history.codec.ts +108 -0
  249. package/src/codecs/index.ts +57 -0
  250. package/src/codecs/redacted-stub.codec.ts +76 -0
  251. package/src/codecs/structured-reference.codec.ts +96 -0
  252. package/src/codecs/system-rules.codec.ts +74 -0
  253. package/src/codecs/tool-output.codec.ts +109 -0
  254. package/src/codecs/tool-schema.codec.ts +87 -0
  255. package/src/codecs/unsafe-text.codec.ts +74 -0
  256. package/src/graph/context-graph.ts +205 -0
  257. package/src/graph/index.ts +8 -0
  258. package/src/graph/kind-order.ts +125 -0
  259. package/src/graph/queries.ts +306 -0
  260. package/src/graph/views.ts +255 -0
  261. package/src/index.ts +31 -0
  262. package/src/pipeline/compactor.ts +563 -0
  263. package/src/pipeline/index.ts +6 -0
  264. package/src/pipeline/summarizer.ts +76 -0
  265. package/src/policies/default-policy.ts +69 -0
  266. package/src/policies/index.ts +5 -0
  267. package/src/providers/anthropic-compiler.ts +294 -0
  268. package/src/providers/capabilities.ts +144 -0
  269. package/src/providers/gemini-compiler.ts +272 -0
  270. package/src/providers/index.ts +8 -0
  271. package/src/providers/openai-compiler.ts +191 -0
  272. package/src/types/attachment.ts +86 -0
  273. package/src/types/block.ts +84 -0
  274. package/src/types/codec.ts +68 -0
  275. package/src/types/compiled.ts +109 -0
  276. package/src/types/hash.ts +58 -0
  277. package/src/types/index.ts +10 -0
  278. package/src/types/policy.ts +194 -0
  279. package/tsconfig.json +21 -0
  280. package/vitest.config.ts +21 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Summarizer: Generate summaries with sensitivity filtering.
3
+ *
4
+ * Provides schema-enforced summarization with forbidden field validation.
5
+ */
6
+ import type { ZodSchema } from 'zod';
7
+ import type { ContextBlock, SensitivityLevel } from '../types/block.js';
8
+ import type { ModelRef } from '../types/policy.js';
9
+ /**
10
+ * Summarization provenance.
11
+ */
12
+ export interface SummaryProvenance {
13
+ /** Source block hashes */
14
+ derivedFrom: string[];
15
+ /** Summarization method */
16
+ method: 'summarize';
17
+ /** Summarizer version */
18
+ version: string;
19
+ /** Source content snapshot hash */
20
+ snapshotHash: string;
21
+ /** Creation timestamp */
22
+ createdAt: number;
23
+ }
24
+ /**
25
+ * Summary block result.
26
+ */
27
+ export interface SummaryBlock<TOutput = unknown> {
28
+ /** Validated summary output */
29
+ summary: TOutput;
30
+ /** Provenance information */
31
+ provenance: SummaryProvenance;
32
+ /** Token usage */
33
+ usage: {
34
+ inputTokens: number;
35
+ outputTokens: number;
36
+ totalTokens: number;
37
+ };
38
+ }
39
+ /**
40
+ * Summarizer interface.
41
+ */
42
+ export interface Summarizer {
43
+ /**
44
+ * Generate a summary of blocks with schema validation.
45
+ *
46
+ * @param blocks - Blocks to summarize
47
+ * @param schema - Expected output schema
48
+ * @param options - Summarization options
49
+ * @returns Summary block
50
+ */
51
+ summarize<TOutput>(blocks: ContextBlock<unknown>[], schema: ZodSchema<TOutput>, options?: SummarizationOptions): Promise<SummaryBlock<TOutput>>;
52
+ }
53
+ /**
54
+ * Summarization options.
55
+ */
56
+ export interface SummarizationOptions {
57
+ /** Instruction/prompt for summarization */
58
+ instruction?: string;
59
+ /** Maximum output tokens */
60
+ maxOutputTokens?: number;
61
+ /** Forbidden fields that must not appear in summary */
62
+ forbiddenFields?: string[];
63
+ /** Allowed sensitivity levels for summarization */
64
+ allowedForSummarization?: SensitivityLevel[];
65
+ }
66
+ /**
67
+ * Default summarization options.
68
+ */
69
+ export declare const DEFAULT_SUMMARIZATION_OPTIONS: Required<Omit<SummarizationOptions, 'instruction' | 'maxOutputTokens'>>;
70
+ /**
71
+ * Default summarizer using gpt-5-nano.
72
+ */
73
+ export declare class DefaultSummarizer implements Summarizer {
74
+ private readonly modelRef;
75
+ private readonly executor?;
76
+ private readonly version;
77
+ constructor(modelRef?: ModelRef, executor?: ((instruction: string, content: string, schema: ZodSchema) => Promise<{
78
+ output: unknown;
79
+ usage: {
80
+ inputTokens: number;
81
+ outputTokens: number;
82
+ totalTokens: number;
83
+ };
84
+ }>) | undefined);
85
+ /**
86
+ * Filter blocks by sensitivity level.
87
+ *
88
+ * @param blocks - Blocks to filter
89
+ * @param allowedLevels - Allowed sensitivity levels
90
+ * @returns Filtered blocks
91
+ */
92
+ private filterBySensitivity;
93
+ /**
94
+ * Compute snapshot hash from block hashes.
95
+ *
96
+ * @param blocks - Blocks to hash
97
+ * @returns Hex-encoded SHA-256 hash
98
+ */
99
+ private computeSnapshotHash;
100
+ /**
101
+ * Default executor (throws error - must be provided).
102
+ */
103
+ private defaultExecutor;
104
+ summarize<TOutput>(blocks: ContextBlock<unknown>[], schema: ZodSchema<TOutput>, options?: SummarizationOptions): Promise<SummaryBlock<TOutput>>;
105
+ }
106
+ /**
107
+ * Create a summarizer with custom model.
108
+ *
109
+ * @param modelRef - Model reference
110
+ * @param executor - Executor function
111
+ * @returns Summarizer instance
112
+ */
113
+ export declare function createSummarizer(modelRef: ModelRef, executor: (instruction: string, content: string, schema: ZodSchema) => Promise<{
114
+ output: unknown;
115
+ usage: {
116
+ inputTokens: number;
117
+ outputTokens: number;
118
+ totalTokens: number;
119
+ };
120
+ }>): Summarizer;
121
+ //# sourceMappingURL=summarizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarizer.d.ts","sourceRoot":"","sources":["../../src/adapters/summarizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+ /**
3
+ * Summarizer: Generate summaries with sensitivity filtering.
4
+ *
5
+ * Provides schema-enforced summarization with forbidden field validation.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.DefaultSummarizer = exports.DEFAULT_SUMMARIZATION_OPTIONS = void 0;
9
+ exports.createSummarizer = createSummarizer;
10
+ const crypto_1 = require("crypto");
11
+ /**
12
+ * Default summarization options.
13
+ */
14
+ exports.DEFAULT_SUMMARIZATION_OPTIONS = {
15
+ forbiddenFields: ['raw_messages', 'full_transcript', 'raw_history'],
16
+ allowedForSummarization: ['public'],
17
+ };
18
+ /**
19
+ * Default summarizer using gpt-5-nano.
20
+ */
21
+ class DefaultSummarizer {
22
+ modelRef;
23
+ executor;
24
+ version = '1.0.0';
25
+ constructor(modelRef = {
26
+ provider: 'openai',
27
+ model: 'gpt-5-nano',
28
+ }, executor) {
29
+ this.modelRef = modelRef;
30
+ this.executor = executor;
31
+ }
32
+ /**
33
+ * Filter blocks by sensitivity level.
34
+ *
35
+ * @param blocks - Blocks to filter
36
+ * @param allowedLevels - Allowed sensitivity levels
37
+ * @returns Filtered blocks
38
+ */
39
+ filterBySensitivity(blocks, allowedLevels) {
40
+ return blocks.filter((block) => allowedLevels.includes(block.meta.sensitivity));
41
+ }
42
+ /**
43
+ * Compute snapshot hash from block hashes.
44
+ *
45
+ * @param blocks - Blocks to hash
46
+ * @returns Hex-encoded SHA-256 hash
47
+ */
48
+ computeSnapshotHash(blocks) {
49
+ const concatenated = blocks.map((b) => b.blockHash).join('|');
50
+ return (0, crypto_1.createHash)('sha256').update(concatenated).digest('hex');
51
+ }
52
+ /**
53
+ * Default executor (throws error - must be provided).
54
+ */
55
+ async defaultExecutor(instruction, content, schema) {
56
+ throw new Error('Summarizer executor not provided. Please provide an executor function in constructor.');
57
+ }
58
+ async summarize(blocks, schema, options) {
59
+ const opts = {
60
+ ...exports.DEFAULT_SUMMARIZATION_OPTIONS,
61
+ ...options,
62
+ };
63
+ // Filter blocks by sensitivity
64
+ const filteredBlocks = this.filterBySensitivity(blocks, opts.allowedForSummarization ?? exports.DEFAULT_SUMMARIZATION_OPTIONS.allowedForSummarization);
65
+ if (filteredBlocks.length === 0) {
66
+ throw new Error('No blocks available for summarization after sensitivity filtering');
67
+ }
68
+ // Build content string from blocks
69
+ const content = filteredBlocks
70
+ .map((block, idx) => {
71
+ return `[Block ${idx + 1}/${filteredBlocks.length}]\nKind: ${block.meta.kind}\nPayload: ${JSON.stringify(block.payload, null, 2)}`;
72
+ })
73
+ .join('\n\n---\n\n');
74
+ // Build instruction
75
+ const instruction = opts.instruction ??
76
+ 'Summarize the following context blocks concisely. Focus on key information and maintain accuracy.';
77
+ // Add forbidden fields note if specified
78
+ const enhancedInstruction = opts.forbiddenFields
79
+ ? `${instruction}\n\nIMPORTANT: Your summary MUST NOT include these fields: ${opts.forbiddenFields.join(', ')}`
80
+ : instruction;
81
+ // Execute summarization
82
+ const executor = this.executor ?? this.defaultExecutor.bind(this);
83
+ const result = await executor(enhancedInstruction, content, schema);
84
+ // Validate output against schema
85
+ const validatedOutput = schema.parse(result.output);
86
+ // Check for forbidden fields
87
+ if (opts.forbiddenFields && opts.forbiddenFields.length > 0) {
88
+ const outputStr = JSON.stringify(validatedOutput);
89
+ for (const field of opts.forbiddenFields) {
90
+ if (outputStr.includes(field)) {
91
+ throw new Error(`Summarization failed: Output contains forbidden field '${field}'`);
92
+ }
93
+ }
94
+ }
95
+ // Compute snapshot hash
96
+ const snapshotHash = this.computeSnapshotHash(filteredBlocks);
97
+ return {
98
+ summary: validatedOutput,
99
+ provenance: {
100
+ derivedFrom: filteredBlocks.map((b) => b.blockHash),
101
+ method: 'summarize',
102
+ version: this.version,
103
+ snapshotHash,
104
+ createdAt: Math.floor(Date.now() / 1000),
105
+ },
106
+ usage: result.usage,
107
+ };
108
+ }
109
+ }
110
+ exports.DefaultSummarizer = DefaultSummarizer;
111
+ /**
112
+ * Create a summarizer with custom model.
113
+ *
114
+ * @param modelRef - Model reference
115
+ * @param executor - Executor function
116
+ * @returns Summarizer instance
117
+ */
118
+ function createSummarizer(modelRef, executor) {
119
+ return new DefaultSummarizer(modelRef, executor);
120
+ }
121
+ //# sourceMappingURL=summarizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summarizer.js","sourceRoot":"","sources":["../../src/adapters/summarizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * TokenEstimator: Single source of truth for token counting.
3
+ *
4
+ * Provides provider-specific token estimation for context blocks.
5
+ * NOT implemented by codecs - this is the only place token counting happens.
6
+ */
7
+ import type { ContextBlock } from '../types/block.js';
8
+ /**
9
+ * Token estimation result.
10
+ */
11
+ export interface TokenEstimate {
12
+ /** Estimated token count */
13
+ tokens: number;
14
+ /**
15
+ * Confidence level:
16
+ * - 'exact': API-provided count (Anthropic)
17
+ * - 'high': tiktoken-based (OpenAI/Gemini)
18
+ * - 'low': Heuristic fallback (chars / 4)
19
+ */
20
+ confidence: 'exact' | 'high' | 'low';
21
+ }
22
+ /**
23
+ * TokenEstimator interface.
24
+ * All implementations must be async (Anthropic uses API calls).
25
+ */
26
+ export interface TokenEstimator {
27
+ /**
28
+ * Estimate tokens for a list of blocks.
29
+ *
30
+ * @param blocks - Blocks to estimate
31
+ * @returns Token estimate
32
+ */
33
+ estimate(blocks: ContextBlock<unknown>[]): Promise<TokenEstimate>;
34
+ /**
35
+ * Estimate tokens for a single block.
36
+ *
37
+ * @param block - Block to estimate
38
+ * @returns Token estimate
39
+ */
40
+ estimateBlock(block: ContextBlock<unknown>): Promise<TokenEstimate>;
41
+ }
42
+ /**
43
+ * Safety multiplier for low-confidence estimates.
44
+ * Applies 1.2x multiplier to heuristic estimates to avoid budget overruns.
45
+ */
46
+ export declare const LOW_CONFIDENCE_MULTIPLIER = 1.2;
47
+ /**
48
+ * Heuristic token estimation (chars / 4).
49
+ * Used as fallback when tiktoken/API is unavailable.
50
+ *
51
+ * @param text - Text to estimate
52
+ * @returns Token count
53
+ */
54
+ export declare function heuristicTokenCount(text: string): number;
55
+ /**
56
+ * Serialize a block to text for token estimation.
57
+ * Uses JSON.stringify as a reasonable approximation of rendered content.
58
+ *
59
+ * @param block - Block to serialize
60
+ * @returns Serialized text
61
+ */
62
+ export declare function serializeBlockForEstimation(block: ContextBlock<unknown>): string;
63
+ //# sourceMappingURL=token-estimator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../../src/adapters/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAElE;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CACrE;AAED;;;GAGG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,GAAG,MAAM,CAEhF"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ /**
3
+ * TokenEstimator: Single source of truth for token counting.
4
+ *
5
+ * Provides provider-specific token estimation for context blocks.
6
+ * NOT implemented by codecs - this is the only place token counting happens.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.LOW_CONFIDENCE_MULTIPLIER = void 0;
10
+ exports.heuristicTokenCount = heuristicTokenCount;
11
+ exports.serializeBlockForEstimation = serializeBlockForEstimation;
12
+ /**
13
+ * Safety multiplier for low-confidence estimates.
14
+ * Applies 1.2x multiplier to heuristic estimates to avoid budget overruns.
15
+ */
16
+ exports.LOW_CONFIDENCE_MULTIPLIER = 1.2;
17
+ /**
18
+ * Heuristic token estimation (chars / 4).
19
+ * Used as fallback when tiktoken/API is unavailable.
20
+ *
21
+ * @param text - Text to estimate
22
+ * @returns Token count
23
+ */
24
+ function heuristicTokenCount(text) {
25
+ return Math.ceil((text.length / 4) * exports.LOW_CONFIDENCE_MULTIPLIER);
26
+ }
27
+ /**
28
+ * Serialize a block to text for token estimation.
29
+ * Uses JSON.stringify as a reasonable approximation of rendered content.
30
+ *
31
+ * @param block - Block to serialize
32
+ * @returns Serialized text
33
+ */
34
+ function serializeBlockForEstimation(block) {
35
+ return JSON.stringify(block.payload);
36
+ }
37
+ //# sourceMappingURL=token-estimator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-estimator.js","sourceRoot":"","sources":["../../src/adapters/token-estimator.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAuDH,kDAEC;AASD,kEAEC;AA1BD;;;GAGG;AACU,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAE7C;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,iCAAyB,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,2BAA2B,CAAC,KAA4B;IACtE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * ContextBuilder: Fluent API for composing context graphs.
3
+ *
4
+ * Provides a declarative interface for building context from various sources:
5
+ * - System rules (pinned)
6
+ * - References (tool schemas, docs)
7
+ * - State (current workflow/session)
8
+ * - Memory (long-term, RAG results)
9
+ * - History (conversation turns)
10
+ * - Attachments (images, PDFs)
11
+ * - Current turn (user message)
12
+ */
13
+ import type { BlockKind, SensitivityLevel } from '../types/block.js';
14
+ import type { BlockCodec } from '../types/codec.js';
15
+ import type { ContextPolicy, Provider } from '../types/policy.js';
16
+ import type { AttachmentRef } from '../types/attachment.js';
17
+ import type { CompiledContext } from '../types/compiled.js';
18
+ import { ContextGraph } from '../graph/context-graph.js';
19
+ import { type SystemRulesPayload } from '../codecs/system-rules.codec.js';
20
+ import { type ConversationMessage } from '../codecs/conversation-history.codec.js';
21
+ /**
22
+ * Fork options for creating specialized contexts.
23
+ */
24
+ export interface ForkOptions {
25
+ /** Maximum sensitivity level to include */
26
+ maxSensitivity?: SensitivityLevel;
27
+ /** Block kinds to include (omit = include all) */
28
+ includeKinds?: BlockKind[];
29
+ /** Block kinds to exclude */
30
+ excludeKinds?: BlockKind[];
31
+ /** Optional tag filter */
32
+ tags?: string[];
33
+ }
34
+ /**
35
+ * ContextBuilder: Fluent API for composing context.
36
+ *
37
+ * Usage:
38
+ * ```ts
39
+ * const builder = new ContextBuilder();
40
+ * builder
41
+ * .system({ text: 'You are a helpful assistant.' })
42
+ * .history(previousMessages)
43
+ * .turn('What is the capital of France?');
44
+ *
45
+ * const compiled = await builder.compile(policy, 'anthropic');
46
+ * ```
47
+ */
48
+ export declare class ContextBuilder {
49
+ private readonly graph;
50
+ private blockCounter;
51
+ constructor();
52
+ /**
53
+ * Add a pinned system rules block.
54
+ *
55
+ * @param rules - System rules payload
56
+ * @param options - Optional block metadata overrides
57
+ * @returns This builder (for chaining)
58
+ */
59
+ system(rules: SystemRulesPayload, options?: {
60
+ sensitivity?: SensitivityLevel;
61
+ source?: string;
62
+ tags?: string[];
63
+ }): this;
64
+ /**
65
+ * Add a reference block (tool schema, external doc, etc.).
66
+ *
67
+ * @param codec - Block codec for the reference type
68
+ * @param data - Reference payload
69
+ * @param options - Optional block metadata overrides
70
+ * @returns This builder (for chaining)
71
+ */
72
+ reference<TPayload>(codec: BlockCodec<TPayload>, data: TPayload, options?: {
73
+ sensitivity?: SensitivityLevel;
74
+ source?: string;
75
+ tags?: string[];
76
+ }): this;
77
+ /**
78
+ * Add a state block (current workflow/session state).
79
+ *
80
+ * @param codec - Block codec for the state type
81
+ * @param data - State payload
82
+ * @param options - Optional block metadata overrides
83
+ * @returns This builder (for chaining)
84
+ */
85
+ state<TPayload>(codec: BlockCodec<TPayload>, data: TPayload, options?: {
86
+ sensitivity?: SensitivityLevel;
87
+ source?: string;
88
+ tags?: string[];
89
+ }): this;
90
+ /**
91
+ * Add a memory block (long-term memory, RAG results).
92
+ *
93
+ * @param codec - Block codec for the memory type
94
+ * @param data - Memory payload
95
+ * @param options - Optional block metadata overrides
96
+ * @returns This builder (for chaining)
97
+ */
98
+ memory<TPayload>(codec: BlockCodec<TPayload>, data: TPayload, options?: {
99
+ sensitivity?: SensitivityLevel;
100
+ source?: string;
101
+ tags?: string[];
102
+ }): this;
103
+ /**
104
+ * Add a conversation history block.
105
+ *
106
+ * @param messages - Array of conversation messages
107
+ * @param summary - Optional summary of earlier messages
108
+ * @param options - Optional block metadata overrides
109
+ * @returns This builder (for chaining)
110
+ */
111
+ history(messages: ConversationMessage[], summary?: string, options?: {
112
+ sensitivity?: SensitivityLevel;
113
+ source?: string;
114
+ tags?: string[];
115
+ }): this;
116
+ /**
117
+ * Add attachment blocks (images, PDFs, etc.).
118
+ * Note: Attachments need to be resolved via AttachmentResolver before compilation.
119
+ *
120
+ * @param attachments - Array of attachments
121
+ * @param codec - Block codec for attachment type
122
+ * @param options - Optional block metadata overrides
123
+ * @returns This builder (for chaining)
124
+ */
125
+ attachments<TPayload>(attachments: AttachmentRef[], codec: BlockCodec<TPayload>, options?: {
126
+ sensitivity?: SensitivityLevel;
127
+ source?: string;
128
+ tags?: string[];
129
+ }): this;
130
+ /**
131
+ * Add a user turn block (current user message).
132
+ *
133
+ * @param text - User message text
134
+ * @param options - Optional block metadata overrides
135
+ * @returns This builder (for chaining)
136
+ */
137
+ turn(text: string, options?: {
138
+ sensitivity?: SensitivityLevel;
139
+ source?: string;
140
+ tags?: string[];
141
+ }): this;
142
+ /**
143
+ * Create a forked context with filtering.
144
+ * Useful for creating specialized contexts (e.g., public-only for external models).
145
+ *
146
+ * @param options - Fork filtering options
147
+ * @returns New ContextBuilder with filtered blocks
148
+ */
149
+ fork(options: ForkOptions): ContextBuilder;
150
+ /**
151
+ * Compile the context for a specific provider.
152
+ * This is a placeholder - actual compilation happens in provider compilers.
153
+ *
154
+ * @param policy - Context policy configuration
155
+ * @param provider - Target provider
156
+ * @returns Compiled context
157
+ */
158
+ compile(policy: ContextPolicy, provider: Provider): Promise<CompiledContext>;
159
+ /**
160
+ * Get the underlying context graph.
161
+ *
162
+ * @returns Context graph
163
+ */
164
+ getGraph(): ContextGraph;
165
+ /**
166
+ * Get the number of blocks in the builder.
167
+ *
168
+ * @returns Block count
169
+ */
170
+ getBlockCount(): number;
171
+ /**
172
+ * Clear all blocks from the builder.
173
+ */
174
+ clear(): void;
175
+ /**
176
+ * Create a block with generated hash and metadata.
177
+ *
178
+ * @param kind - Block kind
179
+ * @param codec - Block codec
180
+ * @param payload - Block payload
181
+ * @param options - Optional metadata overrides
182
+ * @returns Context block
183
+ */
184
+ private createBlock;
185
+ }
186
+ //# sourceMappingURL=context-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../src/builder/context-builder.ts"],"names":[],"mappings":"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"}