@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.
- package/README.md +270 -0
- package/dist/__tests__/attachment-selector.test.d.ts +11 -0
- package/dist/__tests__/attachment-selector.test.d.ts.map +1 -0
- package/dist/__tests__/attachment-selector.test.js +449 -0
- package/dist/__tests__/attachment-selector.test.js.map +1 -0
- package/dist/__tests__/cache-breakpoints.test.d.ts +11 -0
- package/dist/__tests__/cache-breakpoints.test.d.ts.map +1 -0
- package/dist/__tests__/cache-breakpoints.test.js +398 -0
- package/dist/__tests__/cache-breakpoints.test.js.map +1 -0
- package/dist/__tests__/codecs.test.d.ts +7 -0
- package/dist/__tests__/codecs.test.d.ts.map +1 -0
- package/dist/__tests__/codecs.test.js +331 -0
- package/dist/__tests__/codecs.test.js.map +1 -0
- package/dist/__tests__/compactor.test.d.ts +11 -0
- package/dist/__tests__/compactor.test.d.ts.map +1 -0
- package/dist/__tests__/compactor.test.js +519 -0
- package/dist/__tests__/compactor.test.js.map +1 -0
- package/dist/__tests__/context-graph.test.d.ts +7 -0
- package/dist/__tests__/context-graph.test.d.ts.map +1 -0
- package/dist/__tests__/context-graph.test.js +262 -0
- package/dist/__tests__/context-graph.test.js.map +1 -0
- package/dist/__tests__/hash.test.d.ts +7 -0
- package/dist/__tests__/hash.test.d.ts.map +1 -0
- package/dist/__tests__/hash.test.js +228 -0
- package/dist/__tests__/hash.test.js.map +1 -0
- package/dist/__tests__/integration.test.d.ts +15 -0
- package/dist/__tests__/integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration.test.js +728 -0
- package/dist/__tests__/integration.test.js.map +1 -0
- package/dist/__tests__/kind-order.test.d.ts +7 -0
- package/dist/__tests__/kind-order.test.d.ts.map +1 -0
- package/dist/__tests__/kind-order.test.js +243 -0
- package/dist/__tests__/kind-order.test.js.map +1 -0
- package/dist/__tests__/phase2-integration.test.d.ts +5 -0
- package/dist/__tests__/phase2-integration.test.d.ts.map +1 -0
- package/dist/__tests__/phase2-integration.test.js +222 -0
- package/dist/__tests__/phase2-integration.test.js.map +1 -0
- package/dist/__tests__/queries.test.d.ts +7 -0
- package/dist/__tests__/queries.test.d.ts.map +1 -0
- package/dist/__tests__/queries.test.js +254 -0
- package/dist/__tests__/queries.test.js.map +1 -0
- package/dist/__tests__/token-estimator.test.d.ts +7 -0
- package/dist/__tests__/token-estimator.test.d.ts.map +1 -0
- package/dist/__tests__/token-estimator.test.js +267 -0
- package/dist/__tests__/token-estimator.test.js.map +1 -0
- package/dist/adapters/anthropic-estimator.d.ts +38 -0
- package/dist/adapters/anthropic-estimator.d.ts.map +1 -0
- package/dist/adapters/anthropic-estimator.js +108 -0
- package/dist/adapters/anthropic-estimator.js.map +1 -0
- package/dist/adapters/attachment-resolver.d.ts +96 -0
- package/dist/adapters/attachment-resolver.d.ts.map +1 -0
- package/dist/adapters/attachment-resolver.js +176 -0
- package/dist/adapters/attachment-resolver.js.map +1 -0
- package/dist/adapters/attachment-selector.d.ts +59 -0
- package/dist/adapters/attachment-selector.d.ts.map +1 -0
- package/dist/adapters/attachment-selector.js +163 -0
- package/dist/adapters/attachment-selector.js.map +1 -0
- package/dist/adapters/gemini-estimator.d.ts +27 -0
- package/dist/adapters/gemini-estimator.d.ts.map +1 -0
- package/dist/adapters/gemini-estimator.js +80 -0
- package/dist/adapters/gemini-estimator.js.map +1 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +28 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/memory-store.d.ts +139 -0
- package/dist/adapters/memory-store.d.ts.map +1 -0
- package/dist/adapters/memory-store.js +187 -0
- package/dist/adapters/memory-store.js.map +1 -0
- package/dist/adapters/openai-estimator.d.ts +35 -0
- package/dist/adapters/openai-estimator.d.ts.map +1 -0
- package/dist/adapters/openai-estimator.js +89 -0
- package/dist/adapters/openai-estimator.js.map +1 -0
- package/dist/adapters/summarizer.d.ts +121 -0
- package/dist/adapters/summarizer.d.ts.map +1 -0
- package/dist/adapters/summarizer.js +121 -0
- package/dist/adapters/summarizer.js.map +1 -0
- package/dist/adapters/token-estimator.d.ts +63 -0
- package/dist/adapters/token-estimator.d.ts.map +1 -0
- package/dist/adapters/token-estimator.js +37 -0
- package/dist/adapters/token-estimator.js.map +1 -0
- package/dist/builder/context-builder.d.ts +186 -0
- package/dist/builder/context-builder.d.ts.map +1 -0
- package/dist/builder/context-builder.js +305 -0
- package/dist/builder/context-builder.js.map +1 -0
- package/dist/builder/context-fork.d.ts +166 -0
- package/dist/builder/context-fork.d.ts.map +1 -0
- package/dist/builder/context-fork.js +282 -0
- package/dist/builder/context-fork.js.map +1 -0
- package/dist/builder/index.d.ts +6 -0
- package/dist/builder/index.d.ts.map +1 -0
- package/dist/builder/index.js +22 -0
- package/dist/builder/index.js.map +1 -0
- package/dist/codecs/base.d.ts +18 -0
- package/dist/codecs/base.d.ts.map +1 -0
- package/dist/codecs/base.js +39 -0
- package/dist/codecs/base.js.map +1 -0
- package/dist/codecs/conversation-history.codec.d.ts +81 -0
- package/dist/codecs/conversation-history.codec.d.ts.map +1 -0
- package/dist/codecs/conversation-history.codec.js +89 -0
- package/dist/codecs/conversation-history.codec.js.map +1 -0
- package/dist/codecs/index.d.ts +31 -0
- package/dist/codecs/index.d.ts.map +1 -0
- package/dist/codecs/index.js +71 -0
- package/dist/codecs/index.js.map +1 -0
- package/dist/codecs/redacted-stub.codec.d.ts +32 -0
- package/dist/codecs/redacted-stub.codec.d.ts.map +1 -0
- package/dist/codecs/redacted-stub.codec.js +64 -0
- package/dist/codecs/redacted-stub.codec.js.map +1 -0
- package/dist/codecs/structured-reference.codec.d.ts +40 -0
- package/dist/codecs/structured-reference.codec.d.ts.map +1 -0
- package/dist/codecs/structured-reference.codec.js +81 -0
- package/dist/codecs/structured-reference.codec.js.map +1 -0
- package/dist/codecs/system-rules.codec.d.ts +32 -0
- package/dist/codecs/system-rules.codec.d.ts.map +1 -0
- package/dist/codecs/system-rules.codec.js +62 -0
- package/dist/codecs/system-rules.codec.js.map +1 -0
- package/dist/codecs/tool-output.codec.d.ts +66 -0
- package/dist/codecs/tool-output.codec.d.ts.map +1 -0
- package/dist/codecs/tool-output.codec.js +95 -0
- package/dist/codecs/tool-output.codec.js.map +1 -0
- package/dist/codecs/tool-schema.codec.d.ts +36 -0
- package/dist/codecs/tool-schema.codec.d.ts.map +1 -0
- package/dist/codecs/tool-schema.codec.js +74 -0
- package/dist/codecs/tool-schema.codec.js.map +1 -0
- package/dist/codecs/unsafe-text.codec.d.ts +28 -0
- package/dist/codecs/unsafe-text.codec.d.ts.map +1 -0
- package/dist/codecs/unsafe-text.codec.js +63 -0
- package/dist/codecs/unsafe-text.codec.js.map +1 -0
- package/dist/graph/context-graph.d.ts +121 -0
- package/dist/graph/context-graph.d.ts.map +1 -0
- package/dist/graph/context-graph.js +166 -0
- package/dist/graph/context-graph.js.map +1 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +24 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/graph/kind-order.d.ts +60 -0
- package/dist/graph/kind-order.d.ts.map +1 -0
- package/dist/graph/kind-order.js +113 -0
- package/dist/graph/kind-order.js.map +1 -0
- package/dist/graph/queries.d.ts +68 -0
- package/dist/graph/queries.d.ts.map +1 -0
- package/dist/graph/queries.js +240 -0
- package/dist/graph/queries.js.map +1 -0
- package/dist/graph/views.d.ts +90 -0
- package/dist/graph/views.d.ts.map +1 -0
- package/dist/graph/views.js +173 -0
- package/dist/graph/views.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline/compactor.d.ts +128 -0
- package/dist/pipeline/compactor.d.ts.map +1 -0
- package/dist/pipeline/compactor.js +346 -0
- package/dist/pipeline/compactor.js.map +1 -0
- package/dist/pipeline/index.d.ts +6 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +22 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/summarizer.d.ts +18 -0
- package/dist/pipeline/summarizer.d.ts.map +1 -0
- package/dist/pipeline/summarizer.js +68 -0
- package/dist/pipeline/summarizer.js.map +1 -0
- package/dist/policies/default-policy.d.ts +29 -0
- package/dist/policies/default-policy.d.ts.map +1 -0
- package/dist/policies/default-policy.js +58 -0
- package/dist/policies/default-policy.js.map +1 -0
- package/dist/policies/index.d.ts +5 -0
- package/dist/policies/index.d.ts.map +1 -0
- package/dist/policies/index.js +21 -0
- package/dist/policies/index.js.map +1 -0
- package/dist/providers/anthropic-compiler.d.ts +58 -0
- package/dist/providers/anthropic-compiler.d.ts.map +1 -0
- package/dist/providers/anthropic-compiler.js +182 -0
- package/dist/providers/anthropic-compiler.js.map +1 -0
- package/dist/providers/capabilities.d.ts +54 -0
- package/dist/providers/capabilities.d.ts.map +1 -0
- package/dist/providers/capabilities.js +87 -0
- package/dist/providers/capabilities.js.map +1 -0
- package/dist/providers/gemini-compiler.d.ts +51 -0
- package/dist/providers/gemini-compiler.d.ts.map +1 -0
- package/dist/providers/gemini-compiler.js +206 -0
- package/dist/providers/gemini-compiler.js.map +1 -0
- package/dist/providers/index.d.ts +8 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +24 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/openai-compiler.d.ts +46 -0
- package/dist/providers/openai-compiler.d.ts.map +1 -0
- package/dist/providers/openai-compiler.js +149 -0
- package/dist/providers/openai-compiler.js.map +1 -0
- package/dist/types/attachment.d.ts +62 -0
- package/dist/types/attachment.d.ts.map +1 -0
- package/dist/types/attachment.js +6 -0
- package/dist/types/attachment.js.map +1 -0
- package/dist/types/block.d.ts +61 -0
- package/dist/types/block.d.ts.map +1 -0
- package/dist/types/block.js +8 -0
- package/dist/types/block.js.map +1 -0
- package/dist/types/codec.d.ts +58 -0
- package/dist/types/codec.d.ts.map +1 -0
- package/dist/types/codec.js +6 -0
- package/dist/types/codec.js.map +1 -0
- package/dist/types/compiled.d.ts +91 -0
- package/dist/types/compiled.d.ts.map +1 -0
- package/dist/types/compiled.js +6 -0
- package/dist/types/compiled.js.map +1 -0
- package/dist/types/hash.d.ts +24 -0
- package/dist/types/hash.d.ts.map +1 -0
- package/dist/types/hash.js +49 -0
- package/dist/types/hash.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +26 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/policy.d.ts +128 -0
- package/dist/types/policy.d.ts.map +1 -0
- package/dist/types/policy.js +55 -0
- package/dist/types/policy.js.map +1 -0
- package/package.json +55 -0
- package/postcss.config.js +4 -0
- package/src/__tests__/attachment-selector.test.ts +559 -0
- package/src/__tests__/cache-breakpoints.test.ts +566 -0
- package/src/__tests__/codecs.test.ts +417 -0
- package/src/__tests__/compactor.test.ts +608 -0
- package/src/__tests__/context-graph.test.ts +383 -0
- package/src/__tests__/hash.test.ts +274 -0
- package/src/__tests__/integration.test.ts +866 -0
- package/src/__tests__/kind-order.test.ts +312 -0
- package/src/__tests__/phase2-integration.test.ts +253 -0
- package/src/__tests__/queries.test.ts +387 -0
- package/src/__tests__/token-estimator.test.ts +326 -0
- package/src/adapters/anthropic-estimator.ts +125 -0
- package/src/adapters/attachment-resolver.ts +295 -0
- package/src/adapters/attachment-selector.ts +218 -0
- package/src/adapters/gemini-estimator.ts +93 -0
- package/src/adapters/index.ts +12 -0
- package/src/adapters/memory-store.ts +299 -0
- package/src/adapters/openai-estimator.ts +105 -0
- package/src/adapters/summarizer.ts +250 -0
- package/src/adapters/token-estimator.ts +74 -0
- package/src/builder/context-builder.ts +467 -0
- package/src/builder/context-fork.ts +471 -0
- package/src/builder/index.ts +6 -0
- package/src/codecs/base.ts +36 -0
- package/src/codecs/conversation-history.codec.ts +108 -0
- package/src/codecs/index.ts +57 -0
- package/src/codecs/redacted-stub.codec.ts +76 -0
- package/src/codecs/structured-reference.codec.ts +96 -0
- package/src/codecs/system-rules.codec.ts +74 -0
- package/src/codecs/tool-output.codec.ts +109 -0
- package/src/codecs/tool-schema.codec.ts +87 -0
- package/src/codecs/unsafe-text.codec.ts +74 -0
- package/src/graph/context-graph.ts +205 -0
- package/src/graph/index.ts +8 -0
- package/src/graph/kind-order.ts +125 -0
- package/src/graph/queries.ts +306 -0
- package/src/graph/views.ts +255 -0
- package/src/index.ts +31 -0
- package/src/pipeline/compactor.ts +563 -0
- package/src/pipeline/index.ts +6 -0
- package/src/pipeline/summarizer.ts +76 -0
- package/src/policies/default-policy.ts +69 -0
- package/src/policies/index.ts +5 -0
- package/src/providers/anthropic-compiler.ts +294 -0
- package/src/providers/capabilities.ts +144 -0
- package/src/providers/gemini-compiler.ts +272 -0
- package/src/providers/index.ts +8 -0
- package/src/providers/openai-compiler.ts +191 -0
- package/src/types/attachment.ts +86 -0
- package/src/types/block.ts +84 -0
- package/src/types/codec.ts +68 -0
- package/src/types/compiled.ts +109 -0
- package/src/types/hash.ts +58 -0
- package/src/types/index.ts +10 -0
- package/src/types/policy.ts +194 -0
- package/tsconfig.json +21 -0
- 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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"}
|