@longarc/mdash 3.1.2 → 3.1.3
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 +86 -23
- package/SECURITY.md +254 -0
- package/dist/accountability/engine.d.ts +27 -0
- package/dist/accountability/engine.d.ts.map +1 -0
- package/dist/accountability/engine.js +148 -0
- package/dist/accountability/engine.js.map +1 -0
- package/dist/accountability/types.d.ts +46 -0
- package/dist/accountability/types.d.ts.map +1 -0
- package/dist/accountability/types.js +8 -0
- package/dist/accountability/types.js.map +1 -0
- package/dist/checkpoint/engine.d.ts.map +1 -1
- package/dist/checkpoint/engine.js +4 -0
- package/dist/checkpoint/engine.js.map +1 -1
- package/dist/context/compose.d.ts +62 -0
- package/dist/context/compose.d.ts.map +1 -0
- package/dist/context/compose.js +286 -0
- package/dist/context/compose.js.map +1 -0
- package/dist/context/crypto/hash.d.ts +100 -0
- package/dist/context/crypto/hash.d.ts.map +1 -0
- package/dist/context/crypto/hash.js +248 -0
- package/dist/context/crypto/hash.js.map +1 -0
- package/dist/context/crypto/hmac.d.ts +80 -0
- package/dist/context/crypto/hmac.d.ts.map +1 -0
- package/dist/context/crypto/hmac.js +192 -0
- package/dist/context/crypto/hmac.js.map +1 -0
- package/dist/context/crypto/index.d.ts +7 -0
- package/dist/context/crypto/index.d.ts.map +1 -0
- package/dist/context/crypto/index.js +7 -0
- package/dist/context/crypto/index.js.map +1 -0
- package/dist/context/engine-v3.0-backup.d.ts +197 -0
- package/dist/context/engine-v3.0-backup.d.ts.map +1 -0
- package/dist/context/engine-v3.0-backup.js +392 -0
- package/dist/context/engine-v3.0-backup.js.map +1 -0
- package/dist/context/fragment.d.ts +99 -0
- package/dist/context/fragment.d.ts.map +1 -0
- package/dist/context/fragment.js +316 -0
- package/dist/context/fragment.js.map +1 -0
- package/dist/context/index.d.ts +99 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +180 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/provenance.d.ts +80 -0
- package/dist/context/provenance.d.ts.map +1 -0
- package/dist/context/provenance.js +294 -0
- package/dist/context/provenance.js.map +1 -0
- package/dist/context/resolve.d.ts +106 -0
- package/dist/context/resolve.d.ts.map +1 -0
- package/dist/context/resolve.js +440 -0
- package/dist/context/resolve.js.map +1 -0
- package/dist/context/store.d.ts +156 -0
- package/dist/context/store.d.ts.map +1 -0
- package/dist/context/store.js +396 -0
- package/dist/context/store.js.map +1 -0
- package/dist/context/types.d.ts +463 -0
- package/dist/context/types.d.ts.map +1 -0
- package/dist/context/types.js +94 -0
- package/dist/context/types.js.map +1 -0
- package/dist/context/utils/atomic.d.ts +76 -0
- package/dist/context/utils/atomic.d.ts.map +1 -0
- package/dist/context/utils/atomic.js +159 -0
- package/dist/context/utils/atomic.js.map +1 -0
- package/dist/context/utils/credit.d.ts +65 -0
- package/dist/context/utils/credit.d.ts.map +1 -0
- package/dist/context/utils/credit.js +164 -0
- package/dist/context/utils/credit.js.map +1 -0
- package/dist/context/utils/index.d.ts +13 -0
- package/dist/context/utils/index.d.ts.map +1 -0
- package/dist/context/utils/index.js +13 -0
- package/dist/context/utils/index.js.map +1 -0
- package/dist/context/utils/utility.d.ts +63 -0
- package/dist/context/utils/utility.d.ts.map +1 -0
- package/dist/context/utils/utility.js +141 -0
- package/dist/context/utils/utility.js.map +1 -0
- package/dist/core/commitment.d.ts +25 -2
- package/dist/core/commitment.d.ts.map +1 -1
- package/dist/core/commitment.js +44 -6
- package/dist/core/commitment.js.map +1 -1
- package/dist/core/crypto.d.ts +2 -0
- package/dist/core/crypto.d.ts.map +1 -1
- package/dist/core/crypto.js +12 -0
- package/dist/core/crypto.js.map +1 -1
- package/dist/index.d.ts +11 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +35 -10
- package/dist/index.js.map +1 -1
- package/dist/mcca/engine.d.ts.map +1 -1
- package/dist/mcca/engine.js +5 -4
- package/dist/mcca/engine.js.map +1 -1
- package/dist/physics/engine.d.ts +1 -0
- package/dist/physics/engine.d.ts.map +1 -1
- package/dist/physics/engine.js +36 -2
- package/dist/physics/engine.js.map +1 -1
- package/dist/provenance/api-handler.d.ts +45 -0
- package/dist/provenance/api-handler.d.ts.map +1 -0
- package/dist/provenance/api-handler.js +223 -0
- package/dist/provenance/api-handler.js.map +1 -0
- package/dist/provenance/api-types.d.ts +108 -0
- package/dist/provenance/api-types.d.ts.map +1 -0
- package/dist/provenance/api-types.js +9 -0
- package/dist/provenance/api-types.js.map +1 -0
- package/dist/provenance/index.d.ts +6 -0
- package/dist/provenance/index.d.ts.map +1 -0
- package/dist/provenance/index.js +3 -0
- package/dist/provenance/index.js.map +1 -0
- package/dist/provenance/provenance-engine.d.ts +63 -0
- package/dist/provenance/provenance-engine.d.ts.map +1 -0
- package/dist/provenance/provenance-engine.js +311 -0
- package/dist/provenance/provenance-engine.js.map +1 -0
- package/dist/provenance/types.d.ts +193 -0
- package/dist/provenance/types.d.ts.map +1 -0
- package/dist/provenance/types.js +9 -0
- package/dist/provenance/types.js.map +1 -0
- package/dist/tee/engine.d.ts.map +1 -1
- package/dist/tee/engine.js +14 -0
- package/dist/tee/engine.js.map +1 -1
- package/dist/warrant/engine.d.ts +24 -1
- package/dist/warrant/engine.d.ts.map +1 -1
- package/dist/warrant/engine.js +76 -1
- package/dist/warrant/engine.js.map +1 -1
- package/dist/zk/engine.d.ts.map +1 -1
- package/dist/zk/engine.js +7 -4
- package/dist/zk/engine.js.map +1 -1
- package/docs/SECURITY-PATCHES.md +170 -0
- package/package.json +17 -5
- package/src/__tests__/accountability.test.ts +308 -0
- package/src/__tests__/l1-verification-modes.test.ts +424 -0
- package/src/__tests__/phase1.benchmark.test.ts +94 -0
- package/src/__tests__/phase1.test.ts +0 -77
- package/src/__tests__/phase2-4.benchmark.test.ts +60 -0
- package/src/__tests__/phase2-4.test.ts +1 -52
- package/src/__tests__/provenance/api-handler.test.ts +356 -0
- package/src/__tests__/provenance/provenance-engine.test.ts +628 -0
- package/src/__tests__/sa-2026-008.test.ts +45 -0
- package/src/__tests__/sa-2026-009.test.ts +86 -0
- package/src/__tests__/sa-2026-010.test.ts +72 -0
- package/src/__tests__/sa-2026-012.test.ts +65 -0
- package/src/__tests__/sa-2026-nfc.test.ts +40 -0
- package/src/__tests__/security.test.ts +786 -0
- package/src/accountability/engine.ts +230 -0
- package/src/accountability/types.ts +58 -0
- package/src/checkpoint/engine.ts +4 -0
- package/src/context/__tests__/caret-v0.2.0.test.ts +860 -0
- package/src/context/__tests__/integration.test.ts +356 -0
- package/src/context/compose.ts +388 -0
- package/src/context/crypto/hash.ts +277 -0
- package/src/context/crypto/hmac.ts +253 -0
- package/src/context/crypto/index.ts +29 -0
- package/src/context/engine-v3.0-backup.ts +598 -0
- package/src/context/fragment.ts +454 -0
- package/src/context/index.ts +427 -0
- package/src/context/provenance.ts +380 -0
- package/src/context/resolve.ts +581 -0
- package/src/context/store.ts +503 -0
- package/src/context/types.ts +679 -0
- package/src/context/utils/atomic.ts +207 -0
- package/src/context/utils/credit.ts +224 -0
- package/src/context/utils/index.ts +13 -0
- package/src/context/utils/utility.ts +200 -0
- package/src/core/commitment.ts +129 -67
- package/src/core/crypto.ts +13 -0
- package/src/index.ts +62 -10
- package/src/mcca/engine.ts +5 -4
- package/src/physics/engine.ts +40 -3
- package/src/provenance/api-handler.ts +248 -0
- package/src/provenance/api-types.ts +112 -0
- package/src/provenance/index.ts +19 -0
- package/src/provenance/provenance-engine.ts +387 -0
- package/src/provenance/types.ts +211 -0
- package/src/tee/engine.ts +16 -0
- package/src/warrant/engine.ts +89 -1
- package/src/zk/engine.ts +8 -4
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mdash v3.0 - Sealed Context Architecture (SCA)
|
|
3
|
+
*
|
|
4
|
+
* Incremental Merkle sealing with streaming support.
|
|
5
|
+
* O(log n) proof verification.
|
|
6
|
+
*
|
|
7
|
+
* Target Latency:
|
|
8
|
+
* - Context chunk seal: <2ms P50, <5ms P99
|
|
9
|
+
*/
|
|
10
|
+
import { Hash, Seal, Timestamp, FragmentId } from '../core/crypto.js';
|
|
11
|
+
import { IncrementalMerkleTree, CommitmentEngine } from '../core/commitment.js';
|
|
12
|
+
export type SourceClass = 'system' | 'operator' | 'user' | 'derived' | 'agent' | 'external';
|
|
13
|
+
export type ContentType = 'text' | 'structured' | 'code' | 'binary' | 'reference';
|
|
14
|
+
export interface SemanticUnit<T = unknown> {
|
|
15
|
+
/** Content type */
|
|
16
|
+
type: ContentType;
|
|
17
|
+
/** The actual data */
|
|
18
|
+
data: T;
|
|
19
|
+
/** Approximate token count */
|
|
20
|
+
tokens: number;
|
|
21
|
+
/** Optional metadata */
|
|
22
|
+
metadata?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface Provenance {
|
|
25
|
+
/** Source URI */
|
|
26
|
+
source: string;
|
|
27
|
+
/** Attribution type */
|
|
28
|
+
attribution: SourceClass;
|
|
29
|
+
/** Trust level (0-100) */
|
|
30
|
+
trust_level: number;
|
|
31
|
+
/** Creation timestamp */
|
|
32
|
+
timestamp: Timestamp;
|
|
33
|
+
/** Parent fragment (if derived) */
|
|
34
|
+
parent_hash: Hash | null;
|
|
35
|
+
/** Optional signature */
|
|
36
|
+
signature?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ContextFragment<T = unknown> {
|
|
39
|
+
/** Unique identifier */
|
|
40
|
+
id: FragmentId;
|
|
41
|
+
/** Content hash */
|
|
42
|
+
hash: Hash;
|
|
43
|
+
/** Semantic content */
|
|
44
|
+
content: SemanticUnit<T>;
|
|
45
|
+
/** Provenance chain */
|
|
46
|
+
provenance: Provenance;
|
|
47
|
+
/** Seal timestamp */
|
|
48
|
+
sealed_at: Timestamp;
|
|
49
|
+
/** HMAC seal */
|
|
50
|
+
seal: Seal;
|
|
51
|
+
/** Constraints for resolution */
|
|
52
|
+
constraints: ContextConstraint[];
|
|
53
|
+
/** Protocol version */
|
|
54
|
+
version: 'v3.0';
|
|
55
|
+
}
|
|
56
|
+
export interface ContextConstraint {
|
|
57
|
+
kind: 'time' | 'scope' | 'trust' | 'signature';
|
|
58
|
+
type: string;
|
|
59
|
+
params: Record<string, unknown>;
|
|
60
|
+
}
|
|
61
|
+
export declare const DEFAULT_TRUST_LEVELS: Record<SourceClass, number>;
|
|
62
|
+
export interface StreamChunk<T = unknown> {
|
|
63
|
+
/** Chunk index */
|
|
64
|
+
index: number;
|
|
65
|
+
/** Chunk content */
|
|
66
|
+
content: T;
|
|
67
|
+
/** Chunk hash */
|
|
68
|
+
hash: Hash;
|
|
69
|
+
/** Sealed flag */
|
|
70
|
+
sealed: boolean;
|
|
71
|
+
}
|
|
72
|
+
export declare class ContextStream<T = unknown> {
|
|
73
|
+
private chunks;
|
|
74
|
+
private tree;
|
|
75
|
+
private key;
|
|
76
|
+
private sourceClass;
|
|
77
|
+
private source;
|
|
78
|
+
constructor(params: {
|
|
79
|
+
source: string;
|
|
80
|
+
sourceClass: SourceClass;
|
|
81
|
+
maxDepth?: number;
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Initialize with seal key
|
|
85
|
+
*/
|
|
86
|
+
initialize(sealKey: string): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Add a chunk to the stream
|
|
89
|
+
* Target: <2ms P50, <5ms P99
|
|
90
|
+
*/
|
|
91
|
+
addChunk(content: T): Promise<StreamChunk<T>>;
|
|
92
|
+
/**
|
|
93
|
+
* Get the current root hash
|
|
94
|
+
*/
|
|
95
|
+
getRoot(): Promise<Hash>;
|
|
96
|
+
/**
|
|
97
|
+
* Get proof for a specific chunk
|
|
98
|
+
*/
|
|
99
|
+
getProof(index: number): Promise<{
|
|
100
|
+
chunk: StreamChunk<T>;
|
|
101
|
+
path: Array<{
|
|
102
|
+
hash: Hash;
|
|
103
|
+
position: 'left' | 'right';
|
|
104
|
+
}>;
|
|
105
|
+
root: Hash;
|
|
106
|
+
}>;
|
|
107
|
+
/**
|
|
108
|
+
* Finalize the stream into a single sealed fragment
|
|
109
|
+
*/
|
|
110
|
+
finalize(): Promise<ContextFragment<T[]>>;
|
|
111
|
+
/**
|
|
112
|
+
* Get stream statistics
|
|
113
|
+
*/
|
|
114
|
+
getStats(): {
|
|
115
|
+
chunks: number;
|
|
116
|
+
treeStats: ReturnType<IncrementalMerkleTree['getStats']>;
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export declare class SealedContextEngine {
|
|
120
|
+
private key;
|
|
121
|
+
private commitmentEngine;
|
|
122
|
+
private fragments;
|
|
123
|
+
private byHash;
|
|
124
|
+
constructor(commitmentEngine: CommitmentEngine);
|
|
125
|
+
/**
|
|
126
|
+
* Initialize the engine with a seal key
|
|
127
|
+
*/
|
|
128
|
+
initialize(sealKey: string): Promise<void>;
|
|
129
|
+
/**
|
|
130
|
+
* Create a sealed context fragment
|
|
131
|
+
*/
|
|
132
|
+
seal<T>(params: {
|
|
133
|
+
content: T;
|
|
134
|
+
contentType: ContentType;
|
|
135
|
+
source: string;
|
|
136
|
+
sourceClass: SourceClass;
|
|
137
|
+
parentHash?: Hash;
|
|
138
|
+
constraints?: ContextConstraint[];
|
|
139
|
+
tokens?: number;
|
|
140
|
+
}): Promise<ContextFragment<T>>;
|
|
141
|
+
/**
|
|
142
|
+
* Derive a new fragment from an existing one
|
|
143
|
+
*/
|
|
144
|
+
derive<T, U>(params: {
|
|
145
|
+
parent: ContextFragment<T>;
|
|
146
|
+
transform: (data: T) => U;
|
|
147
|
+
source: string;
|
|
148
|
+
constraints?: ContextConstraint[];
|
|
149
|
+
}): Promise<ContextFragment<U>>;
|
|
150
|
+
/**
|
|
151
|
+
* Verify a fragment
|
|
152
|
+
*/
|
|
153
|
+
verify<T>(fragment: ContextFragment<T>): Promise<boolean>;
|
|
154
|
+
/**
|
|
155
|
+
* Resolve a fragment (check constraints)
|
|
156
|
+
*/
|
|
157
|
+
resolve<T>(fragment: ContextFragment<T>, context: {
|
|
158
|
+
domain?: string;
|
|
159
|
+
now?: Date;
|
|
160
|
+
}): Promise<{
|
|
161
|
+
success: boolean;
|
|
162
|
+
violations: Array<{
|
|
163
|
+
constraint: ContextConstraint;
|
|
164
|
+
reason: string;
|
|
165
|
+
}>;
|
|
166
|
+
}>;
|
|
167
|
+
/**
|
|
168
|
+
* Get fragment by ID
|
|
169
|
+
*/
|
|
170
|
+
get<T>(id: FragmentId): ContextFragment<T> | null;
|
|
171
|
+
/**
|
|
172
|
+
* Get fragment by hash
|
|
173
|
+
*/
|
|
174
|
+
getByHash<T>(hash: Hash): ContextFragment<T> | null;
|
|
175
|
+
/**
|
|
176
|
+
* Create a streaming context
|
|
177
|
+
*/
|
|
178
|
+
createStream<T>(params: {
|
|
179
|
+
source: string;
|
|
180
|
+
sourceClass: SourceClass;
|
|
181
|
+
}): ContextStream<T>;
|
|
182
|
+
/**
|
|
183
|
+
* Estimate tokens (rough: ~4 chars/token)
|
|
184
|
+
*/
|
|
185
|
+
private estimateTokens;
|
|
186
|
+
/**
|
|
187
|
+
* Get statistics
|
|
188
|
+
*/
|
|
189
|
+
getStats(): {
|
|
190
|
+
fragments: number;
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
export declare function maxAge(ms: number): ContextConstraint;
|
|
194
|
+
export declare function requireTrust(minimum: number): ContextConstraint;
|
|
195
|
+
export declare function allowDomains(domains: string[]): ContextConstraint;
|
|
196
|
+
export declare function requireSignature(signers: string[]): ContextConstraint;
|
|
197
|
+
//# sourceMappingURL=engine-v3.0-backup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-v3.0-backup.d.ts","sourceRoot":"","sources":["../../src/context/engine-v3.0-backup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mdash v3.0 - Sealed Context Architecture (SCA)
|
|
3
|
+
*
|
|
4
|
+
* Incremental Merkle sealing with streaming support.
|
|
5
|
+
* O(log n) proof verification.
|
|
6
|
+
*
|
|
7
|
+
* Target Latency:
|
|
8
|
+
* - Context chunk seal: <2ms P50, <5ms P99
|
|
9
|
+
*/
|
|
10
|
+
import { generateFragmentId, generateTimestamp, sha256Object, hmacSeal, hmacVerify, deriveKey, deterministicStringify, } from '../core/crypto.js';
|
|
11
|
+
import { IncrementalMerkleTree } from '../core/commitment.js';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// TRUST LEVELS
|
|
14
|
+
// ============================================================================
|
|
15
|
+
export const DEFAULT_TRUST_LEVELS = {
|
|
16
|
+
system: 100,
|
|
17
|
+
operator: 90,
|
|
18
|
+
user: 70,
|
|
19
|
+
derived: 60,
|
|
20
|
+
agent: 50,
|
|
21
|
+
external: 30,
|
|
22
|
+
};
|
|
23
|
+
export class ContextStream {
|
|
24
|
+
chunks = [];
|
|
25
|
+
tree;
|
|
26
|
+
key = null;
|
|
27
|
+
sourceClass;
|
|
28
|
+
source;
|
|
29
|
+
constructor(params) {
|
|
30
|
+
this.source = params.source;
|
|
31
|
+
this.sourceClass = params.sourceClass;
|
|
32
|
+
this.tree = new IncrementalMerkleTree(params.maxDepth || 16);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Initialize with seal key
|
|
36
|
+
*/
|
|
37
|
+
async initialize(sealKey) {
|
|
38
|
+
this.key = await deriveKey(sealKey);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Add a chunk to the stream
|
|
42
|
+
* Target: <2ms P50, <5ms P99
|
|
43
|
+
*/
|
|
44
|
+
async addChunk(content) {
|
|
45
|
+
const startTime = performance.now();
|
|
46
|
+
const index = this.chunks.length;
|
|
47
|
+
const hash = await sha256Object({ index, content });
|
|
48
|
+
const chunk = {
|
|
49
|
+
index,
|
|
50
|
+
content,
|
|
51
|
+
hash,
|
|
52
|
+
sealed: false,
|
|
53
|
+
};
|
|
54
|
+
// Add to Merkle tree
|
|
55
|
+
await this.tree.addLeaf(hash);
|
|
56
|
+
chunk.sealed = true;
|
|
57
|
+
this.chunks.push(chunk);
|
|
58
|
+
const elapsed = performance.now() - startTime;
|
|
59
|
+
if (elapsed > 5) {
|
|
60
|
+
console.warn(`Context chunk seal exceeded P99: ${elapsed.toFixed(2)}ms`);
|
|
61
|
+
}
|
|
62
|
+
return chunk;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get the current root hash
|
|
66
|
+
*/
|
|
67
|
+
async getRoot() {
|
|
68
|
+
return this.tree.getRoot();
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Get proof for a specific chunk
|
|
72
|
+
*/
|
|
73
|
+
async getProof(index) {
|
|
74
|
+
if (index < 0 || index >= this.chunks.length) {
|
|
75
|
+
throw new Error(`Invalid chunk index: ${index}`);
|
|
76
|
+
}
|
|
77
|
+
const chunk = this.chunks[index];
|
|
78
|
+
if (!chunk) {
|
|
79
|
+
throw new Error(`Chunk not found at index: ${index}`);
|
|
80
|
+
}
|
|
81
|
+
const path = await this.tree.getProof(index);
|
|
82
|
+
const root = await this.tree.getRoot();
|
|
83
|
+
return { chunk, path, root };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Finalize the stream into a single sealed fragment
|
|
87
|
+
*/
|
|
88
|
+
async finalize() {
|
|
89
|
+
if (!this.key) {
|
|
90
|
+
throw new Error('Stream not initialized. Call initialize() first.');
|
|
91
|
+
}
|
|
92
|
+
const id = generateFragmentId();
|
|
93
|
+
const now = generateTimestamp();
|
|
94
|
+
const root = await this.tree.getRoot();
|
|
95
|
+
// Collect all chunk data
|
|
96
|
+
const data = this.chunks.map(c => c.content);
|
|
97
|
+
const totalTokens = this.chunks.length * 100; // Approximate
|
|
98
|
+
const content = {
|
|
99
|
+
type: 'structured',
|
|
100
|
+
data,
|
|
101
|
+
tokens: totalTokens,
|
|
102
|
+
metadata: {
|
|
103
|
+
chunks: this.chunks.length,
|
|
104
|
+
merkle_root: root,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
const provenance = {
|
|
108
|
+
source: this.source,
|
|
109
|
+
attribution: this.sourceClass,
|
|
110
|
+
trust_level: DEFAULT_TRUST_LEVELS[this.sourceClass],
|
|
111
|
+
timestamp: now,
|
|
112
|
+
parent_hash: null,
|
|
113
|
+
};
|
|
114
|
+
const hash = await sha256Object({
|
|
115
|
+
content,
|
|
116
|
+
provenance,
|
|
117
|
+
sealed_at: now,
|
|
118
|
+
});
|
|
119
|
+
const sealData = {
|
|
120
|
+
_v: 1,
|
|
121
|
+
id,
|
|
122
|
+
hash,
|
|
123
|
+
content,
|
|
124
|
+
provenance,
|
|
125
|
+
sealed_at: now,
|
|
126
|
+
constraints: [],
|
|
127
|
+
};
|
|
128
|
+
const seal = await hmacSeal(sealData, this.key);
|
|
129
|
+
return {
|
|
130
|
+
id,
|
|
131
|
+
hash,
|
|
132
|
+
content,
|
|
133
|
+
provenance,
|
|
134
|
+
sealed_at: now,
|
|
135
|
+
seal,
|
|
136
|
+
constraints: [],
|
|
137
|
+
version: 'v3.0',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get stream statistics
|
|
142
|
+
*/
|
|
143
|
+
getStats() {
|
|
144
|
+
return {
|
|
145
|
+
chunks: this.chunks.length,
|
|
146
|
+
treeStats: this.tree.getStats(),
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// ============================================================================
|
|
151
|
+
// SEALED CONTEXT ENGINE
|
|
152
|
+
// ============================================================================
|
|
153
|
+
export class SealedContextEngine {
|
|
154
|
+
key = null;
|
|
155
|
+
commitmentEngine;
|
|
156
|
+
fragments = new Map();
|
|
157
|
+
byHash = new Map();
|
|
158
|
+
constructor(commitmentEngine) {
|
|
159
|
+
this.commitmentEngine = commitmentEngine;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Initialize the engine with a seal key
|
|
163
|
+
*/
|
|
164
|
+
async initialize(sealKey) {
|
|
165
|
+
this.key = await deriveKey(sealKey);
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Create a sealed context fragment
|
|
169
|
+
*/
|
|
170
|
+
async seal(params) {
|
|
171
|
+
if (!this.key) {
|
|
172
|
+
throw new Error('Engine not initialized. Call initialize() first.');
|
|
173
|
+
}
|
|
174
|
+
const startTime = performance.now();
|
|
175
|
+
const id = generateFragmentId();
|
|
176
|
+
const now = generateTimestamp();
|
|
177
|
+
const semanticUnit = {
|
|
178
|
+
type: params.contentType,
|
|
179
|
+
data: params.content,
|
|
180
|
+
tokens: params.tokens ?? this.estimateTokens(params.content),
|
|
181
|
+
};
|
|
182
|
+
const provenance = {
|
|
183
|
+
source: params.source,
|
|
184
|
+
attribution: params.sourceClass,
|
|
185
|
+
trust_level: DEFAULT_TRUST_LEVELS[params.sourceClass],
|
|
186
|
+
timestamp: now,
|
|
187
|
+
parent_hash: params.parentHash || null,
|
|
188
|
+
};
|
|
189
|
+
const hash = await sha256Object({
|
|
190
|
+
content: semanticUnit,
|
|
191
|
+
provenance,
|
|
192
|
+
sealed_at: now,
|
|
193
|
+
});
|
|
194
|
+
const sealData = {
|
|
195
|
+
_v: 1,
|
|
196
|
+
id,
|
|
197
|
+
hash,
|
|
198
|
+
content: semanticUnit,
|
|
199
|
+
provenance,
|
|
200
|
+
sealed_at: now,
|
|
201
|
+
constraints: params.constraints || [],
|
|
202
|
+
};
|
|
203
|
+
const seal = await hmacSeal(sealData, this.key);
|
|
204
|
+
const fragment = {
|
|
205
|
+
id,
|
|
206
|
+
hash,
|
|
207
|
+
content: semanticUnit,
|
|
208
|
+
provenance,
|
|
209
|
+
sealed_at: now,
|
|
210
|
+
seal,
|
|
211
|
+
constraints: params.constraints || [],
|
|
212
|
+
version: 'v3.0',
|
|
213
|
+
};
|
|
214
|
+
// Commit to L1
|
|
215
|
+
await this.commitmentEngine.commit(fragment, `context:${id}`);
|
|
216
|
+
// Store
|
|
217
|
+
this.fragments.set(id, fragment);
|
|
218
|
+
this.byHash.set(hash, id);
|
|
219
|
+
const elapsed = performance.now() - startTime;
|
|
220
|
+
if (elapsed > 5) {
|
|
221
|
+
console.warn(`Context seal exceeded P99: ${elapsed.toFixed(2)}ms`);
|
|
222
|
+
}
|
|
223
|
+
return fragment;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Derive a new fragment from an existing one
|
|
227
|
+
*/
|
|
228
|
+
async derive(params) {
|
|
229
|
+
const derived = params.transform(params.parent.content.data);
|
|
230
|
+
const sealParams = {
|
|
231
|
+
content: derived,
|
|
232
|
+
contentType: params.parent.content.type,
|
|
233
|
+
source: params.source,
|
|
234
|
+
sourceClass: 'derived',
|
|
235
|
+
parentHash: params.parent.hash,
|
|
236
|
+
};
|
|
237
|
+
if (params.constraints) {
|
|
238
|
+
sealParams.constraints = params.constraints;
|
|
239
|
+
}
|
|
240
|
+
return this.seal(sealParams);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Verify a fragment
|
|
244
|
+
*/
|
|
245
|
+
async verify(fragment) {
|
|
246
|
+
if (!this.key) {
|
|
247
|
+
throw new Error('Engine not initialized. Call initialize() first.');
|
|
248
|
+
}
|
|
249
|
+
// Verify hash
|
|
250
|
+
const expectedHash = await sha256Object({
|
|
251
|
+
content: fragment.content,
|
|
252
|
+
provenance: fragment.provenance,
|
|
253
|
+
sealed_at: fragment.sealed_at,
|
|
254
|
+
});
|
|
255
|
+
if (expectedHash !== fragment.hash) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
// Verify seal
|
|
259
|
+
const sealData = {
|
|
260
|
+
_v: 1,
|
|
261
|
+
id: fragment.id,
|
|
262
|
+
hash: fragment.hash,
|
|
263
|
+
content: fragment.content,
|
|
264
|
+
provenance: fragment.provenance,
|
|
265
|
+
sealed_at: fragment.sealed_at,
|
|
266
|
+
constraints: fragment.constraints,
|
|
267
|
+
};
|
|
268
|
+
return hmacVerify(sealData, fragment.seal, this.key);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Resolve a fragment (check constraints)
|
|
272
|
+
*/
|
|
273
|
+
async resolve(fragment, context) {
|
|
274
|
+
const violations = [];
|
|
275
|
+
const now = context.now || new Date();
|
|
276
|
+
for (const constraint of fragment.constraints) {
|
|
277
|
+
switch (constraint.kind) {
|
|
278
|
+
case 'time': {
|
|
279
|
+
if (constraint.type === 'max_age') {
|
|
280
|
+
const maxAgeMs = constraint.params.max_age_ms;
|
|
281
|
+
const sealedAt = new Date(fragment.sealed_at);
|
|
282
|
+
if (now.getTime() - sealedAt.getTime() > maxAgeMs) {
|
|
283
|
+
violations.push({
|
|
284
|
+
constraint,
|
|
285
|
+
reason: `Fragment age exceeds max_age_ms: ${maxAgeMs}`,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
case 'trust': {
|
|
292
|
+
if (constraint.type === 'minimum') {
|
|
293
|
+
const minTrust = constraint.params.minimum_trust;
|
|
294
|
+
if (fragment.provenance.trust_level < minTrust) {
|
|
295
|
+
violations.push({
|
|
296
|
+
constraint,
|
|
297
|
+
reason: `Trust ${fragment.provenance.trust_level} < required ${minTrust}`,
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
break;
|
|
302
|
+
}
|
|
303
|
+
case 'scope': {
|
|
304
|
+
if (constraint.type === 'domain' && context.domain) {
|
|
305
|
+
const allowed = constraint.params.allowed_domains;
|
|
306
|
+
if (!allowed.includes(context.domain)) {
|
|
307
|
+
violations.push({
|
|
308
|
+
constraint,
|
|
309
|
+
reason: `Domain ${context.domain} not in allowed list`,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return {
|
|
318
|
+
success: violations.length === 0,
|
|
319
|
+
violations,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Get fragment by ID
|
|
324
|
+
*/
|
|
325
|
+
get(id) {
|
|
326
|
+
return this.fragments.get(id) || null;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Get fragment by hash
|
|
330
|
+
*/
|
|
331
|
+
getByHash(hash) {
|
|
332
|
+
const id = this.byHash.get(hash);
|
|
333
|
+
if (!id)
|
|
334
|
+
return null;
|
|
335
|
+
return this.get(id);
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Create a streaming context
|
|
339
|
+
*/
|
|
340
|
+
createStream(params) {
|
|
341
|
+
return new ContextStream(params);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Estimate tokens (rough: ~4 chars/token)
|
|
345
|
+
*/
|
|
346
|
+
estimateTokens(content) {
|
|
347
|
+
const str = typeof content === 'string'
|
|
348
|
+
? content
|
|
349
|
+
: deterministicStringify(content);
|
|
350
|
+
return Math.ceil(str.length / 4);
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Get statistics
|
|
354
|
+
*/
|
|
355
|
+
getStats() {
|
|
356
|
+
return {
|
|
357
|
+
fragments: this.fragments.size,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// ============================================================================
|
|
362
|
+
// CONSTRAINT BUILDERS
|
|
363
|
+
// ============================================================================
|
|
364
|
+
export function maxAge(ms) {
|
|
365
|
+
return {
|
|
366
|
+
kind: 'time',
|
|
367
|
+
type: 'max_age',
|
|
368
|
+
params: { max_age_ms: ms },
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
export function requireTrust(minimum) {
|
|
372
|
+
return {
|
|
373
|
+
kind: 'trust',
|
|
374
|
+
type: 'minimum',
|
|
375
|
+
params: { minimum_trust: minimum },
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
export function allowDomains(domains) {
|
|
379
|
+
return {
|
|
380
|
+
kind: 'scope',
|
|
381
|
+
type: 'domain',
|
|
382
|
+
params: { allowed_domains: domains },
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
export function requireSignature(signers) {
|
|
386
|
+
return {
|
|
387
|
+
kind: 'signature',
|
|
388
|
+
type: 'required',
|
|
389
|
+
params: { allowed_signers: signers },
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
//# sourceMappingURL=engine-v3.0-backup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-v3.0-backup.js","sourceRoot":"","sources":["../../src/context/engine-v3.0-backup.ts"],"names":[],"mappings":"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"}
|