@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,305 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ContextBuilder: Fluent API for composing context graphs.
|
|
4
|
+
*
|
|
5
|
+
* Provides a declarative interface for building context from various sources:
|
|
6
|
+
* - System rules (pinned)
|
|
7
|
+
* - References (tool schemas, docs)
|
|
8
|
+
* - State (current workflow/session)
|
|
9
|
+
* - Memory (long-term, RAG results)
|
|
10
|
+
* - History (conversation turns)
|
|
11
|
+
* - Attachments (images, PDFs)
|
|
12
|
+
* - Current turn (user message)
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ContextBuilder = void 0;
|
|
16
|
+
const context_graph_js_1 = require("../graph/context-graph.js");
|
|
17
|
+
const system_rules_codec_js_1 = require("../codecs/system-rules.codec.js");
|
|
18
|
+
const conversation_history_codec_js_1 = require("../codecs/conversation-history.codec.js");
|
|
19
|
+
const hash_js_1 = require("../types/hash.js");
|
|
20
|
+
/**
|
|
21
|
+
* ContextBuilder: Fluent API for composing context.
|
|
22
|
+
*
|
|
23
|
+
* Usage:
|
|
24
|
+
* ```ts
|
|
25
|
+
* const builder = new ContextBuilder();
|
|
26
|
+
* builder
|
|
27
|
+
* .system({ text: 'You are a helpful assistant.' })
|
|
28
|
+
* .history(previousMessages)
|
|
29
|
+
* .turn('What is the capital of France?');
|
|
30
|
+
*
|
|
31
|
+
* const compiled = await builder.compile(policy, 'anthropic');
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
class ContextBuilder {
|
|
35
|
+
graph;
|
|
36
|
+
blockCounter;
|
|
37
|
+
constructor() {
|
|
38
|
+
this.graph = new context_graph_js_1.ContextGraph();
|
|
39
|
+
this.blockCounter = 0;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Add a pinned system rules block.
|
|
43
|
+
*
|
|
44
|
+
* @param rules - System rules payload
|
|
45
|
+
* @param options - Optional block metadata overrides
|
|
46
|
+
* @returns This builder (for chaining)
|
|
47
|
+
*/
|
|
48
|
+
system(rules, options) {
|
|
49
|
+
const block = this.createBlock('pinned', system_rules_codec_js_1.SystemRulesCodec, rules, options);
|
|
50
|
+
this.graph.addBlock(block);
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Add a reference block (tool schema, external doc, etc.).
|
|
55
|
+
*
|
|
56
|
+
* @param codec - Block codec for the reference type
|
|
57
|
+
* @param data - Reference payload
|
|
58
|
+
* @param options - Optional block metadata overrides
|
|
59
|
+
* @returns This builder (for chaining)
|
|
60
|
+
*/
|
|
61
|
+
reference(codec, data, options) {
|
|
62
|
+
const block = this.createBlock('reference', codec, data, options);
|
|
63
|
+
this.graph.addBlock(block);
|
|
64
|
+
return this;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Add a state block (current workflow/session state).
|
|
68
|
+
*
|
|
69
|
+
* @param codec - Block codec for the state type
|
|
70
|
+
* @param data - State payload
|
|
71
|
+
* @param options - Optional block metadata overrides
|
|
72
|
+
* @returns This builder (for chaining)
|
|
73
|
+
*/
|
|
74
|
+
state(codec, data, options) {
|
|
75
|
+
const block = this.createBlock('state', codec, data, options);
|
|
76
|
+
this.graph.addBlock(block);
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Add a memory block (long-term memory, RAG results).
|
|
81
|
+
*
|
|
82
|
+
* @param codec - Block codec for the memory type
|
|
83
|
+
* @param data - Memory payload
|
|
84
|
+
* @param options - Optional block metadata overrides
|
|
85
|
+
* @returns This builder (for chaining)
|
|
86
|
+
*/
|
|
87
|
+
memory(codec, data, options) {
|
|
88
|
+
const block = this.createBlock('memory', codec, data, options);
|
|
89
|
+
this.graph.addBlock(block);
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Add a conversation history block.
|
|
94
|
+
*
|
|
95
|
+
* @param messages - Array of conversation messages
|
|
96
|
+
* @param summary - Optional summary of earlier messages
|
|
97
|
+
* @param options - Optional block metadata overrides
|
|
98
|
+
* @returns This builder (for chaining)
|
|
99
|
+
*/
|
|
100
|
+
history(messages, summary, options) {
|
|
101
|
+
const payload = {
|
|
102
|
+
messages,
|
|
103
|
+
summary,
|
|
104
|
+
};
|
|
105
|
+
const block = this.createBlock('history', conversation_history_codec_js_1.ConversationHistoryCodec, payload, options);
|
|
106
|
+
this.graph.addBlock(block);
|
|
107
|
+
return this;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Add attachment blocks (images, PDFs, etc.).
|
|
111
|
+
* Note: Attachments need to be resolved via AttachmentResolver before compilation.
|
|
112
|
+
*
|
|
113
|
+
* @param attachments - Array of attachments
|
|
114
|
+
* @param codec - Block codec for attachment type
|
|
115
|
+
* @param options - Optional block metadata overrides
|
|
116
|
+
* @returns This builder (for chaining)
|
|
117
|
+
*/
|
|
118
|
+
attachments(attachments, codec, options) {
|
|
119
|
+
// For each attachment, create a reference block
|
|
120
|
+
// The actual resolution happens via AttachmentResolver
|
|
121
|
+
for (const attachment of attachments) {
|
|
122
|
+
const block = this.createBlock('reference', codec, attachment, options);
|
|
123
|
+
this.graph.addBlock(block);
|
|
124
|
+
}
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Add a user turn block (current user message).
|
|
129
|
+
*
|
|
130
|
+
* @param text - User message text
|
|
131
|
+
* @param options - Optional block metadata overrides
|
|
132
|
+
* @returns This builder (for chaining)
|
|
133
|
+
*/
|
|
134
|
+
turn(text, options) {
|
|
135
|
+
// Use a simple text payload for turn blocks
|
|
136
|
+
const payload = { text };
|
|
137
|
+
const block = this.createBlock('turn', {
|
|
138
|
+
codecId: 'user-turn',
|
|
139
|
+
version: '1.0.0',
|
|
140
|
+
payloadSchema: {},
|
|
141
|
+
canonicalize: (p) => ({ text: p.text.trim() }),
|
|
142
|
+
hash: (c) => {
|
|
143
|
+
return (0, hash_js_1.computeBlockHash)({ kind: 'turn', sensitivity: 'public', codecId: 'user-turn', codecVersion: '1.0.0' }, c);
|
|
144
|
+
},
|
|
145
|
+
render: (block) => ({
|
|
146
|
+
anthropic: { role: 'user', content: block.payload.text },
|
|
147
|
+
openai: { role: 'user', content: block.payload.text },
|
|
148
|
+
gemini: { role: 'user', parts: [{ text: block.payload.text }] },
|
|
149
|
+
}),
|
|
150
|
+
validate: (p) => p,
|
|
151
|
+
}, payload, options);
|
|
152
|
+
this.graph.addBlock(block);
|
|
153
|
+
return this;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Create a forked context with filtering.
|
|
157
|
+
* Useful for creating specialized contexts (e.g., public-only for external models).
|
|
158
|
+
*
|
|
159
|
+
* @param options - Fork filtering options
|
|
160
|
+
* @returns New ContextBuilder with filtered blocks
|
|
161
|
+
*/
|
|
162
|
+
fork(options) {
|
|
163
|
+
const forked = new ContextBuilder();
|
|
164
|
+
// Filter blocks based on options
|
|
165
|
+
const allBlocks = this.graph.getAllBlocks();
|
|
166
|
+
for (const block of allBlocks) {
|
|
167
|
+
let include = true;
|
|
168
|
+
// Sensitivity filter
|
|
169
|
+
if (options.maxSensitivity !== undefined) {
|
|
170
|
+
const sensitivityOrder = {
|
|
171
|
+
public: 0,
|
|
172
|
+
internal: 1,
|
|
173
|
+
restricted: 2,
|
|
174
|
+
};
|
|
175
|
+
if (sensitivityOrder[block.meta.sensitivity] > sensitivityOrder[options.maxSensitivity]) {
|
|
176
|
+
include = false;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// Kind filter (include)
|
|
180
|
+
if (options.includeKinds !== undefined) {
|
|
181
|
+
if (!options.includeKinds.includes(block.meta.kind)) {
|
|
182
|
+
include = false;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Kind filter (exclude)
|
|
186
|
+
if (options.excludeKinds !== undefined) {
|
|
187
|
+
if (options.excludeKinds.includes(block.meta.kind)) {
|
|
188
|
+
include = false;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
// Tag filter
|
|
192
|
+
if (options.tags !== undefined && options.tags.length > 0) {
|
|
193
|
+
const blockTags = block.meta.tags ?? [];
|
|
194
|
+
const hasMatchingTag = options.tags.some((tag) => blockTags.includes(tag));
|
|
195
|
+
if (!hasMatchingTag) {
|
|
196
|
+
include = false;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (include) {
|
|
200
|
+
forked.graph.addBlock(block, this.graph.getDerivedFrom(block.blockHash), this.graph.getReferences(block.blockHash));
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return forked;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Compile the context for a specific provider.
|
|
207
|
+
* This is a placeholder - actual compilation happens in provider compilers.
|
|
208
|
+
*
|
|
209
|
+
* @param policy - Context policy configuration
|
|
210
|
+
* @param provider - Target provider
|
|
211
|
+
* @returns Compiled context
|
|
212
|
+
*/
|
|
213
|
+
async compile(policy, provider) {
|
|
214
|
+
// This is a placeholder - the actual implementation will be in provider compilers
|
|
215
|
+
// For now, we'll just create a view and return basic structure
|
|
216
|
+
// Create a simple stub estimator (would use provider-specific estimator in production)
|
|
217
|
+
const stubEstimator = {
|
|
218
|
+
estimate: async (blocks) => ({
|
|
219
|
+
tokens: blocks.length * 100,
|
|
220
|
+
confidence: 'low',
|
|
221
|
+
}),
|
|
222
|
+
estimateBlock: async (block) => ({
|
|
223
|
+
tokens: 100,
|
|
224
|
+
confidence: 'low',
|
|
225
|
+
}),
|
|
226
|
+
};
|
|
227
|
+
const view = await this.graph.createView({
|
|
228
|
+
tokenEstimator: stubEstimator,
|
|
229
|
+
maxTokens: policy.contextWindow - policy.completionReserve,
|
|
230
|
+
});
|
|
231
|
+
return {
|
|
232
|
+
provider,
|
|
233
|
+
modelId: policy.modelId,
|
|
234
|
+
messages: [],
|
|
235
|
+
estimatedTokens: 0,
|
|
236
|
+
blocks: [...view.blocks],
|
|
237
|
+
meta: {
|
|
238
|
+
compiledAt: Math.floor(Date.now() / 1000),
|
|
239
|
+
contextWindow: policy.contextWindow,
|
|
240
|
+
completionReserve: policy.completionReserve,
|
|
241
|
+
availableTokens: policy.contextWindow - policy.completionReserve,
|
|
242
|
+
overflowed: false,
|
|
243
|
+
compacted: false,
|
|
244
|
+
truncated: false,
|
|
245
|
+
tokensByKind: {},
|
|
246
|
+
},
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Get the underlying context graph.
|
|
251
|
+
*
|
|
252
|
+
* @returns Context graph
|
|
253
|
+
*/
|
|
254
|
+
getGraph() {
|
|
255
|
+
return this.graph;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Get the number of blocks in the builder.
|
|
259
|
+
*
|
|
260
|
+
* @returns Block count
|
|
261
|
+
*/
|
|
262
|
+
getBlockCount() {
|
|
263
|
+
return this.graph.getBlockCount();
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Clear all blocks from the builder.
|
|
267
|
+
*/
|
|
268
|
+
clear() {
|
|
269
|
+
this.graph.clear();
|
|
270
|
+
this.blockCounter = 0;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Create a block with generated hash and metadata.
|
|
274
|
+
*
|
|
275
|
+
* @param kind - Block kind
|
|
276
|
+
* @param codec - Block codec
|
|
277
|
+
* @param payload - Block payload
|
|
278
|
+
* @param options - Optional metadata overrides
|
|
279
|
+
* @returns Context block
|
|
280
|
+
*/
|
|
281
|
+
createBlock(kind, codec, payload, options) {
|
|
282
|
+
// Validate payload
|
|
283
|
+
codec.validate(payload);
|
|
284
|
+
// Canonicalize and compute hash
|
|
285
|
+
const canonicalized = codec.canonicalize(payload);
|
|
286
|
+
const blockHash = codec.hash(canonicalized);
|
|
287
|
+
// Generate unique ID for this block instance
|
|
288
|
+
this.blockCounter++;
|
|
289
|
+
return {
|
|
290
|
+
blockHash,
|
|
291
|
+
meta: {
|
|
292
|
+
kind,
|
|
293
|
+
sensitivity: options?.sensitivity ?? 'public',
|
|
294
|
+
codecId: codec.codecId,
|
|
295
|
+
codecVersion: codec.version,
|
|
296
|
+
createdAt: Math.floor(Date.now() / 1000),
|
|
297
|
+
source: options?.source,
|
|
298
|
+
tags: options?.tags,
|
|
299
|
+
},
|
|
300
|
+
payload,
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
exports.ContextBuilder = ContextBuilder;
|
|
305
|
+
//# sourceMappingURL=context-builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../src/builder/context-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContextFork: Create sub-agent contexts with sensitivity enforcement.
|
|
3
|
+
*
|
|
4
|
+
* Enables forking contexts for sub-agents with automatic sensitivity redaction,
|
|
5
|
+
* budget overrides, and schema-enforced output validation.
|
|
6
|
+
*/
|
|
7
|
+
import { type ZodSchema } from 'zod';
|
|
8
|
+
import type { ContextGraph } from '../graph/context-graph.js';
|
|
9
|
+
import type { ContextView } from '../graph/views.js';
|
|
10
|
+
import type { ContextBlock, SensitivityLevel } from '../types/block.js';
|
|
11
|
+
import type { ModelRef } from '../types/policy.js';
|
|
12
|
+
/**
|
|
13
|
+
* Sub-agent task definition with schema-enforced output.
|
|
14
|
+
*/
|
|
15
|
+
export interface SubAgentTask<TOutput = unknown> {
|
|
16
|
+
/** Task instruction for the sub-agent */
|
|
17
|
+
instruction: string;
|
|
18
|
+
/** Expected output schema (Zod schema, required) */
|
|
19
|
+
expectedOutputSchema: ZodSchema<TOutput>;
|
|
20
|
+
/** Maximum output tokens (optional) */
|
|
21
|
+
maxOutputTokens?: number;
|
|
22
|
+
/** Forbidden fields that must not appear in output */
|
|
23
|
+
forbiddenFields?: string[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fork options for creating sub-agent contexts.
|
|
27
|
+
*/
|
|
28
|
+
export interface ContextForkOptions {
|
|
29
|
+
/** Unique agent identifier */
|
|
30
|
+
agentId: string;
|
|
31
|
+
/** Human-readable fork name */
|
|
32
|
+
name: string;
|
|
33
|
+
/** Model to use for this fork */
|
|
34
|
+
model: ModelRef;
|
|
35
|
+
/** Inherit query from parent context */
|
|
36
|
+
inheritQuery?: boolean;
|
|
37
|
+
/** Include conversation history in fork */
|
|
38
|
+
includeHistory?: boolean;
|
|
39
|
+
/** Include state blocks in fork */
|
|
40
|
+
includeState?: boolean;
|
|
41
|
+
/** Maximum sensitivity level to include (default: 'public') */
|
|
42
|
+
maxSensitivity?: SensitivityLevel;
|
|
43
|
+
/** Token budget override (optional) */
|
|
44
|
+
budgetOverride?: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* LLM usage statistics.
|
|
48
|
+
*/
|
|
49
|
+
export interface UsageStats {
|
|
50
|
+
/** Input tokens */
|
|
51
|
+
inputTokens: number;
|
|
52
|
+
/** Output tokens */
|
|
53
|
+
outputTokens: number;
|
|
54
|
+
/** Total tokens */
|
|
55
|
+
totalTokens: number;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Provenance information for fork result.
|
|
59
|
+
*/
|
|
60
|
+
export interface ForkProvenance {
|
|
61
|
+
/** Source view hash */
|
|
62
|
+
sourceViewHash: string;
|
|
63
|
+
/** Execution hash (deterministic) */
|
|
64
|
+
executionHash: string;
|
|
65
|
+
/** Fork creation timestamp */
|
|
66
|
+
forkedAt: number;
|
|
67
|
+
/** Fork completion timestamp */
|
|
68
|
+
completedAt: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Fork execution result.
|
|
72
|
+
*/
|
|
73
|
+
export interface ForkResult<TOutput = unknown> {
|
|
74
|
+
/** Agent ID */
|
|
75
|
+
agentId: string;
|
|
76
|
+
/** Model used */
|
|
77
|
+
model: ModelRef;
|
|
78
|
+
/** Task summary */
|
|
79
|
+
summary: string;
|
|
80
|
+
/** Structured output (validated against schema) */
|
|
81
|
+
output: TOutput;
|
|
82
|
+
/** Generated artifacts (optional) */
|
|
83
|
+
artifacts?: Array<{
|
|
84
|
+
name: string;
|
|
85
|
+
type: string;
|
|
86
|
+
content: string;
|
|
87
|
+
}>;
|
|
88
|
+
/** Citations to source blocks (block hashes) */
|
|
89
|
+
citations?: string[];
|
|
90
|
+
/** Usage statistics */
|
|
91
|
+
usage: UsageStats;
|
|
92
|
+
/** Provenance information */
|
|
93
|
+
provenance: ForkProvenance;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Filter view blocks by sensitivity level.
|
|
97
|
+
* Blocks exceeding maxSensitivity are replaced with redacted stubs.
|
|
98
|
+
*
|
|
99
|
+
* @param view - Source context view
|
|
100
|
+
* @param maxSensitivity - Maximum allowed sensitivity level
|
|
101
|
+
* @returns Filtered blocks with redacted stubs
|
|
102
|
+
*/
|
|
103
|
+
export declare function filterBySensitivity(view: ContextView, maxSensitivity: SensitivityLevel): ContextBlock<unknown>[];
|
|
104
|
+
/**
|
|
105
|
+
* Compute deterministic execution hash.
|
|
106
|
+
* Hash includes: model + compiledViewHash + instruction + schemaHash + toolsetVersion
|
|
107
|
+
*
|
|
108
|
+
* @param model - Model reference
|
|
109
|
+
* @param viewHash - Compiled view hash
|
|
110
|
+
* @param instruction - Task instruction
|
|
111
|
+
* @param schemaHash - Output schema hash
|
|
112
|
+
* @param toolsetVersion - Toolset version (optional)
|
|
113
|
+
* @returns Hex-encoded SHA-256 hash
|
|
114
|
+
*/
|
|
115
|
+
export declare function computeExecutionHash(model: ModelRef, viewHash: string, instruction: string, schemaHash: string, toolsetVersion?: string): string;
|
|
116
|
+
/**
|
|
117
|
+
* Compute schema hash for deterministic execution tracking.
|
|
118
|
+
*
|
|
119
|
+
* @param schema - Zod schema
|
|
120
|
+
* @returns Hex-encoded SHA-256 hash
|
|
121
|
+
*/
|
|
122
|
+
export declare function computeSchemaHash(schema: ZodSchema): string;
|
|
123
|
+
/**
|
|
124
|
+
* ContextFork: Create sub-agent contexts with sensitivity enforcement.
|
|
125
|
+
*/
|
|
126
|
+
export declare class ContextFork {
|
|
127
|
+
private readonly graph;
|
|
128
|
+
private readonly parentView;
|
|
129
|
+
constructor(graph: ContextGraph, parentView: ContextView);
|
|
130
|
+
/**
|
|
131
|
+
* Create a fork with sensitivity filtering and budget override.
|
|
132
|
+
*
|
|
133
|
+
* @param options - Fork options
|
|
134
|
+
* @returns Filtered context view for sub-agent
|
|
135
|
+
*/
|
|
136
|
+
createFork(options: ContextForkOptions): Promise<ContextView>;
|
|
137
|
+
/**
|
|
138
|
+
* Execute a sub-agent task with schema validation.
|
|
139
|
+
*
|
|
140
|
+
* @param task - Sub-agent task definition
|
|
141
|
+
* @param options - Fork options
|
|
142
|
+
* @param executor - Async executor function (calls LLM)
|
|
143
|
+
* @returns Fork result with validated output
|
|
144
|
+
*/
|
|
145
|
+
executeFork<TOutput>(task: SubAgentTask<TOutput>, options: ContextForkOptions, executor: (instruction: string, view: ContextView) => Promise<{
|
|
146
|
+
output: unknown;
|
|
147
|
+
summary: string;
|
|
148
|
+
artifacts?: Array<{
|
|
149
|
+
name: string;
|
|
150
|
+
type: string;
|
|
151
|
+
content: string;
|
|
152
|
+
}>;
|
|
153
|
+
citations?: string[];
|
|
154
|
+
usage: UsageStats;
|
|
155
|
+
}>): Promise<ForkResult<TOutput>>;
|
|
156
|
+
/**
|
|
157
|
+
* Ingest fork result back into parent graph.
|
|
158
|
+
* Adds result as a memory block with provenance tracking.
|
|
159
|
+
*
|
|
160
|
+
* @param result - Fork result to ingest
|
|
161
|
+
* @param asMemory - Add as memory block (default: true)
|
|
162
|
+
* @returns Block hash of ingested result
|
|
163
|
+
*/
|
|
164
|
+
ingestForkResult<TOutput>(result: ForkResult<TOutput>, asMemory?: boolean): string;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=context-fork.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-fork.d.ts","sourceRoot":"","sources":["../../src/builder/context-fork.ts"],"names":[],"mappings":"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"}
|