@longarc/mdash 3.1.1 → 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 +2 -2
- package/dist/checkpoint/engine.d.ts.map +1 -1
- package/dist/checkpoint/engine.js +5 -1
- 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/engine.d.ts +2 -2
- package/dist/context/engine.d.ts.map +1 -1
- package/dist/context/engine.js +2 -2
- package/dist/context/engine.js.map +1 -1
- 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 +26 -3
- package/dist/core/commitment.d.ts.map +1 -1
- package/dist/core/commitment.js +45 -7
- 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 +3 -2
- package/dist/physics/engine.d.ts.map +1 -1
- package/dist/physics/engine.js +37 -3
- 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 +6 -2
- 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/engine.ts +2 -2
- 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 +130 -68
- 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 +42 -5
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/context/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAKL,kBAAkB,EAClB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,SAAS,EACT,sBAAsB,GACvB,MAAM,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/context/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caret — Context Fragment Implementation
|
|
3
|
+
* @module @longarcstudios/caret/fragment
|
|
4
|
+
*
|
|
5
|
+
* The atomic unit of structured context.
|
|
6
|
+
* Immutable, sealed, attributable.
|
|
7
|
+
*/
|
|
8
|
+
import type { ContextFragment, SemanticUnit, SemanticType, TokenCount, Constraint, Attribution, SourceURI, TrustLevel } from './types.js';
|
|
9
|
+
/** Tokenizer function type */
|
|
10
|
+
type Tokenizer = (content: unknown) => TokenCount;
|
|
11
|
+
/**
|
|
12
|
+
* Set a custom tokenizer function.
|
|
13
|
+
*/
|
|
14
|
+
export declare function setTokenizer(tokenizer: Tokenizer): void;
|
|
15
|
+
/**
|
|
16
|
+
* Count tokens in content using current tokenizer.
|
|
17
|
+
*/
|
|
18
|
+
export declare function countTokens(content: unknown): TokenCount;
|
|
19
|
+
/**
|
|
20
|
+
* Create a SemanticUnit from content.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createSemanticUnit<T>(data: T, options?: {
|
|
23
|
+
type?: SemanticType;
|
|
24
|
+
compression_ratio?: number;
|
|
25
|
+
}): SemanticUnit<T>;
|
|
26
|
+
/** Options for creating a fragment */
|
|
27
|
+
export interface CreateFragmentOptions<T = unknown> {
|
|
28
|
+
/** The content to store */
|
|
29
|
+
content: T;
|
|
30
|
+
/** Source URI for provenance */
|
|
31
|
+
source: SourceURI | string;
|
|
32
|
+
/** Attribution type */
|
|
33
|
+
attribution: Attribution;
|
|
34
|
+
/** Trust level (0-100, optional) */
|
|
35
|
+
trust_level?: number;
|
|
36
|
+
/** Constraints to apply */
|
|
37
|
+
constraints?: Constraint[];
|
|
38
|
+
/** Parent fragment for provenance chain */
|
|
39
|
+
parent?: ContextFragment;
|
|
40
|
+
/** Optional signature */
|
|
41
|
+
signature?: string;
|
|
42
|
+
/** Semantic type override */
|
|
43
|
+
semantic_type?: SemanticType;
|
|
44
|
+
/** Secret key for sealing */
|
|
45
|
+
seal_key: string;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Create a new ContextFragment.
|
|
49
|
+
* This is the primary factory function for fragments.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createFragment<T = unknown>(options: CreateFragmentOptions<T>): Promise<ContextFragment<T>>;
|
|
52
|
+
/**
|
|
53
|
+
* Verify a fragment's integrity.
|
|
54
|
+
* Checks both the content hash and the HMAC seal.
|
|
55
|
+
*/
|
|
56
|
+
export declare function verifyFragment(fragment: ContextFragment, seal_key: string): Promise<{
|
|
57
|
+
valid: boolean;
|
|
58
|
+
errors: string[];
|
|
59
|
+
}>;
|
|
60
|
+
/**
|
|
61
|
+
* Derive a new fragment from an existing one.
|
|
62
|
+
* Creates a new fragment with the parent's provenance extended.
|
|
63
|
+
*/
|
|
64
|
+
export declare function deriveFragment<T, U = T>(parent: ContextFragment<T>, options: {
|
|
65
|
+
content: U;
|
|
66
|
+
source: SourceURI | string;
|
|
67
|
+
attribution?: Attribution;
|
|
68
|
+
trust_level?: number;
|
|
69
|
+
constraints?: Constraint[];
|
|
70
|
+
seal_key: string;
|
|
71
|
+
}): Promise<ContextFragment<U>>;
|
|
72
|
+
/**
|
|
73
|
+
* Clone a fragment with new constraints.
|
|
74
|
+
* Creates a new fragment with the same content but different constraints.
|
|
75
|
+
*/
|
|
76
|
+
export declare function withConstraints<T>(fragment: ContextFragment<T>, constraints: Constraint[], seal_key: string): Promise<ContextFragment<T>>;
|
|
77
|
+
/**
|
|
78
|
+
* Get the age of a fragment in milliseconds.
|
|
79
|
+
*/
|
|
80
|
+
export declare function getFragmentAge(fragment: ContextFragment): number;
|
|
81
|
+
/**
|
|
82
|
+
* Check if a fragment is expired based on time constraints.
|
|
83
|
+
*/
|
|
84
|
+
export declare function isFragmentExpired(fragment: ContextFragment): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Get the trust level of a fragment (minimum in chain).
|
|
87
|
+
*/
|
|
88
|
+
export declare function getFragmentTrust(fragment: ContextFragment): TrustLevel;
|
|
89
|
+
/**
|
|
90
|
+
* Serialize a fragment to JSON.
|
|
91
|
+
*/
|
|
92
|
+
export declare function serializeFragment(fragment: ContextFragment): string;
|
|
93
|
+
/**
|
|
94
|
+
* Deserialize a fragment from JSON.
|
|
95
|
+
* Note: Does NOT verify integrity — call verifyFragment separately.
|
|
96
|
+
*/
|
|
97
|
+
export declare function deserializeFragment<T = unknown>(json: string): ContextFragment<T>;
|
|
98
|
+
export {};
|
|
99
|
+
//# sourceMappingURL=fragment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment.d.ts","sourceRoot":"","sources":["../../src/context/fragment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Caret — Context Fragment Implementation
|
|
3
|
+
* @module @longarcstudios/caret/fragment
|
|
4
|
+
*
|
|
5
|
+
* The atomic unit of structured context.
|
|
6
|
+
* Immutable, sealed, attributable.
|
|
7
|
+
*/
|
|
8
|
+
import { sha256Object } from './crypto/hash.js';
|
|
9
|
+
import { sealFragment, verifyFragmentSeal } from './crypto/hmac.js';
|
|
10
|
+
import { createProvenanceRecord, createProvenanceChain, extendProvenanceChain, } from './provenance.js';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// UUID GENERATION
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* Generate a UUID v4.
|
|
16
|
+
* Uses crypto.randomUUID if available, falls back to crypto.getRandomValues.
|
|
17
|
+
* SECURITY: Never falls back to Math.random — fails instead.
|
|
18
|
+
*/
|
|
19
|
+
function generateUUID() {
|
|
20
|
+
// Preferred: native randomUUID
|
|
21
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
22
|
+
return crypto.randomUUID();
|
|
23
|
+
}
|
|
24
|
+
// Fallback: manual UUID from getRandomValues (still cryptographically secure)
|
|
25
|
+
if (typeof crypto !== 'undefined' && crypto.getRandomValues) {
|
|
26
|
+
const bytes = new Uint8Array(16);
|
|
27
|
+
crypto.getRandomValues(bytes);
|
|
28
|
+
// Set version (4) and variant (RFC4122)
|
|
29
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
30
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
31
|
+
const hex = Array.from(bytes, b => b.toString(16).padStart(2, '0')).join('');
|
|
32
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
33
|
+
}
|
|
34
|
+
// SECURITY: Do not fall back to Math.random — fail secure
|
|
35
|
+
throw new Error('Cryptographically secure random number generator not available');
|
|
36
|
+
}
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// TOKEN COUNTING
|
|
39
|
+
// ============================================================================
|
|
40
|
+
/** Default tokenizer: approximate cl100k_base behavior */
|
|
41
|
+
function defaultTokenCount(text) {
|
|
42
|
+
// Rough approximation: ~4 chars per token for English
|
|
43
|
+
// More accurate would require actual tokenizer
|
|
44
|
+
const charCount = text.length;
|
|
45
|
+
const estimate = Math.ceil(charCount / 4);
|
|
46
|
+
return estimate;
|
|
47
|
+
}
|
|
48
|
+
/** Current tokenizer (can be replaced) */
|
|
49
|
+
let currentTokenizer = (content) => {
|
|
50
|
+
const text = typeof content === 'string'
|
|
51
|
+
? content
|
|
52
|
+
: JSON.stringify(content);
|
|
53
|
+
return defaultTokenCount(text);
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Set a custom tokenizer function.
|
|
57
|
+
*/
|
|
58
|
+
export function setTokenizer(tokenizer) {
|
|
59
|
+
currentTokenizer = tokenizer;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Count tokens in content using current tokenizer.
|
|
63
|
+
*/
|
|
64
|
+
export function countTokens(content) {
|
|
65
|
+
return currentTokenizer(content);
|
|
66
|
+
}
|
|
67
|
+
// ============================================================================
|
|
68
|
+
// SEMANTIC UNIT
|
|
69
|
+
// ============================================================================
|
|
70
|
+
/**
|
|
71
|
+
* Create a SemanticUnit from content.
|
|
72
|
+
*/
|
|
73
|
+
export function createSemanticUnit(data, options = {}) {
|
|
74
|
+
const type = options.type ?? inferSemanticType(data);
|
|
75
|
+
const token_count = countTokens(data);
|
|
76
|
+
return {
|
|
77
|
+
type,
|
|
78
|
+
data,
|
|
79
|
+
token_count,
|
|
80
|
+
compression_ratio: options.compression_ratio,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Infer semantic type from data.
|
|
85
|
+
*/
|
|
86
|
+
function inferSemanticType(data) {
|
|
87
|
+
if (typeof data === 'string') {
|
|
88
|
+
return 'text';
|
|
89
|
+
}
|
|
90
|
+
if (typeof data === 'object' && data !== null) {
|
|
91
|
+
// Check for special object patterns
|
|
92
|
+
if ('$ref' in data || 'uri' in data || 'url' in data) {
|
|
93
|
+
return 'reference';
|
|
94
|
+
}
|
|
95
|
+
return 'structured';
|
|
96
|
+
}
|
|
97
|
+
return 'text';
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create a new ContextFragment.
|
|
101
|
+
* This is the primary factory function for fragments.
|
|
102
|
+
*/
|
|
103
|
+
export async function createFragment(options) {
|
|
104
|
+
const id = generateUUID();
|
|
105
|
+
const sealed_at = new Date().toISOString();
|
|
106
|
+
// Create semantic unit
|
|
107
|
+
const content = createSemanticUnit(options.content, {
|
|
108
|
+
type: options.semantic_type,
|
|
109
|
+
});
|
|
110
|
+
// Create provenance
|
|
111
|
+
const record = await createProvenanceRecord({
|
|
112
|
+
source: options.source,
|
|
113
|
+
attribution: options.attribution,
|
|
114
|
+
trust_level: options.trust_level,
|
|
115
|
+
parent_hash: options.parent?.hash ?? null,
|
|
116
|
+
signature: options.signature,
|
|
117
|
+
});
|
|
118
|
+
let provenance;
|
|
119
|
+
if (options.parent) {
|
|
120
|
+
provenance = await extendProvenanceChain(options.parent.provenance, record);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
provenance = await createProvenanceChain(record);
|
|
124
|
+
}
|
|
125
|
+
// Compute content hash
|
|
126
|
+
const hash = await sha256Object({
|
|
127
|
+
content,
|
|
128
|
+
provenance,
|
|
129
|
+
sealed_at,
|
|
130
|
+
});
|
|
131
|
+
// Create seal
|
|
132
|
+
const fragmentData = {
|
|
133
|
+
id,
|
|
134
|
+
hash,
|
|
135
|
+
content,
|
|
136
|
+
provenance,
|
|
137
|
+
sealed_at,
|
|
138
|
+
constraints: options.constraints ?? [],
|
|
139
|
+
};
|
|
140
|
+
const seal = await sealFragment(fragmentData, options.seal_key);
|
|
141
|
+
return {
|
|
142
|
+
id,
|
|
143
|
+
hash,
|
|
144
|
+
content,
|
|
145
|
+
provenance,
|
|
146
|
+
sealed_at,
|
|
147
|
+
seal,
|
|
148
|
+
constraints: options.constraints ?? [],
|
|
149
|
+
version: 'v3.1',
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// ============================================================================
|
|
153
|
+
// FRAGMENT VERIFICATION
|
|
154
|
+
// ============================================================================
|
|
155
|
+
/**
|
|
156
|
+
* Verify a fragment's integrity.
|
|
157
|
+
* Checks both the content hash and the HMAC seal.
|
|
158
|
+
*/
|
|
159
|
+
export async function verifyFragment(fragment, seal_key) {
|
|
160
|
+
const errors = [];
|
|
161
|
+
// Verify content hash
|
|
162
|
+
const expectedHash = await sha256Object({
|
|
163
|
+
content: fragment.content,
|
|
164
|
+
provenance: fragment.provenance,
|
|
165
|
+
sealed_at: fragment.sealed_at,
|
|
166
|
+
});
|
|
167
|
+
if (expectedHash !== fragment.hash) {
|
|
168
|
+
errors.push('Content hash mismatch');
|
|
169
|
+
}
|
|
170
|
+
// Verify HMAC seal
|
|
171
|
+
const sealValid = await verifyFragmentSeal({
|
|
172
|
+
id: fragment.id,
|
|
173
|
+
hash: fragment.hash,
|
|
174
|
+
content: fragment.content,
|
|
175
|
+
provenance: fragment.provenance,
|
|
176
|
+
sealed_at: fragment.sealed_at,
|
|
177
|
+
constraints: fragment.constraints,
|
|
178
|
+
seal: fragment.seal,
|
|
179
|
+
}, seal_key);
|
|
180
|
+
if (!sealValid) {
|
|
181
|
+
errors.push('HMAC seal verification failed');
|
|
182
|
+
}
|
|
183
|
+
// Verify version (accept both v3.1 and legacy 1.0)
|
|
184
|
+
if (fragment.version !== 'v3.1' && fragment.version !== '1.0') {
|
|
185
|
+
errors.push(`Unknown fragment version: ${fragment.version}`);
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
valid: errors.length === 0,
|
|
189
|
+
errors,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// ============================================================================
|
|
193
|
+
// FRAGMENT OPERATIONS
|
|
194
|
+
// ============================================================================
|
|
195
|
+
/**
|
|
196
|
+
* Derive a new fragment from an existing one.
|
|
197
|
+
* Creates a new fragment with the parent's provenance extended.
|
|
198
|
+
*/
|
|
199
|
+
export async function deriveFragment(parent, options) {
|
|
200
|
+
return createFragment({
|
|
201
|
+
content: options.content,
|
|
202
|
+
source: options.source,
|
|
203
|
+
attribution: options.attribution ?? 'derived',
|
|
204
|
+
trust_level: options.trust_level,
|
|
205
|
+
constraints: [...(options.constraints ?? parent.constraints)],
|
|
206
|
+
parent,
|
|
207
|
+
seal_key: options.seal_key,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Clone a fragment with new constraints.
|
|
212
|
+
* Creates a new fragment with the same content but different constraints.
|
|
213
|
+
*/
|
|
214
|
+
export async function withConstraints(fragment, constraints, seal_key) {
|
|
215
|
+
return deriveFragment(fragment, {
|
|
216
|
+
content: fragment.content.data,
|
|
217
|
+
source: fragment.provenance.head.source,
|
|
218
|
+
attribution: 'derived',
|
|
219
|
+
constraints,
|
|
220
|
+
seal_key,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get the age of a fragment in milliseconds.
|
|
225
|
+
*/
|
|
226
|
+
export function getFragmentAge(fragment) {
|
|
227
|
+
const sealed = new Date(fragment.sealed_at).getTime();
|
|
228
|
+
return Date.now() - sealed;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Check if a fragment is expired based on time constraints.
|
|
232
|
+
*/
|
|
233
|
+
export function isFragmentExpired(fragment) {
|
|
234
|
+
for (const constraint of fragment.constraints) {
|
|
235
|
+
if (constraint.kind === 'time') {
|
|
236
|
+
// Check max_age
|
|
237
|
+
if (constraint.max_age_ms !== undefined) {
|
|
238
|
+
const age = getFragmentAge(fragment);
|
|
239
|
+
if (age > constraint.max_age_ms) {
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Check not_after
|
|
244
|
+
if (constraint.not_after !== undefined) {
|
|
245
|
+
const deadline = new Date(constraint.not_after).getTime();
|
|
246
|
+
if (Date.now() > deadline) {
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return false;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Get the trust level of a fragment (minimum in chain).
|
|
256
|
+
*/
|
|
257
|
+
export function getFragmentTrust(fragment) {
|
|
258
|
+
let min = fragment.provenance.head.trust_level;
|
|
259
|
+
let current = fragment.provenance.tail;
|
|
260
|
+
while (current !== null) {
|
|
261
|
+
if (current.head.trust_level < min) {
|
|
262
|
+
min = current.head.trust_level;
|
|
263
|
+
}
|
|
264
|
+
current = current.tail;
|
|
265
|
+
}
|
|
266
|
+
return min;
|
|
267
|
+
}
|
|
268
|
+
// ============================================================================
|
|
269
|
+
// SERIALIZATION
|
|
270
|
+
// ============================================================================
|
|
271
|
+
/**
|
|
272
|
+
* Serialize a fragment to JSON.
|
|
273
|
+
*/
|
|
274
|
+
export function serializeFragment(fragment) {
|
|
275
|
+
return JSON.stringify(fragment);
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Sanitize an object to prevent prototype pollution.
|
|
279
|
+
* Removes __proto__, constructor, and prototype properties recursively.
|
|
280
|
+
*/
|
|
281
|
+
function sanitizeObject(obj) {
|
|
282
|
+
if (obj === null || typeof obj !== 'object') {
|
|
283
|
+
return obj;
|
|
284
|
+
}
|
|
285
|
+
if (Array.isArray(obj)) {
|
|
286
|
+
return obj.map(sanitizeObject);
|
|
287
|
+
}
|
|
288
|
+
const sanitized = Object.create(null);
|
|
289
|
+
for (const key of Object.keys(obj)) {
|
|
290
|
+
// Block dangerous properties
|
|
291
|
+
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
|
|
292
|
+
continue;
|
|
293
|
+
}
|
|
294
|
+
sanitized[key] = sanitizeObject(obj[key]);
|
|
295
|
+
}
|
|
296
|
+
return sanitized;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Deserialize a fragment from JSON.
|
|
300
|
+
* Note: Does NOT verify integrity — call verifyFragment separately.
|
|
301
|
+
*/
|
|
302
|
+
export function deserializeFragment(json) {
|
|
303
|
+
const raw = JSON.parse(json);
|
|
304
|
+
// Sanitize to prevent prototype pollution
|
|
305
|
+
const parsed = sanitizeObject(raw);
|
|
306
|
+
// Type validation
|
|
307
|
+
if (!parsed.id || !parsed.hash || !parsed.content || !parsed.provenance) {
|
|
308
|
+
throw new Error('Invalid fragment structure');
|
|
309
|
+
}
|
|
310
|
+
if (parsed.version !== 'v3.1' && parsed.version !== '1.0') {
|
|
311
|
+
// SECURITY: Do not leak version value in error message
|
|
312
|
+
throw new Error('Unsupported fragment version');
|
|
313
|
+
}
|
|
314
|
+
return parsed;
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=fragment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fragment.js","sourceRoot":"","sources":["../../src/context/fragment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mdash v3.1 — Context Module (formerly Caret)
|
|
3
|
+
* @module @longarcstudios/mdash/context
|
|
4
|
+
* @version 3.1.0
|
|
5
|
+
*
|
|
6
|
+
* The context primitive runtime, now integrated into mdash.
|
|
7
|
+
*
|
|
8
|
+
* Architecture: LLM at the edges, cryptography at the core.
|
|
9
|
+
*
|
|
10
|
+
* v3.1.0: Merged into mdash from Caret v0.2.0
|
|
11
|
+
* - MdashActionCode for standardized action vocabulary
|
|
12
|
+
* - InfluenceBudget for MCCA-compliant bounds
|
|
13
|
+
* - InfluenceConstraint for influence-based resolution
|
|
14
|
+
* - Outcome<T> for Intent-Experience-Utility tracking
|
|
15
|
+
* - Atomic encoding with coreference resolution
|
|
16
|
+
* - Utility learning and credit assignment utilities
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { createCaret, requireInfluence } from '@longarcstudios/caret';
|
|
21
|
+
*
|
|
22
|
+
* const caret = createCaret({ seal_key: 'your-secret-key' });
|
|
23
|
+
*
|
|
24
|
+
* // Seal content into a fragment with MCCA constraints
|
|
25
|
+
* const fragment = await caret.seal({
|
|
26
|
+
* content: { message: 'Hello, world!' },
|
|
27
|
+
* source: 'app://example/greeting',
|
|
28
|
+
* attribution: 'system',
|
|
29
|
+
* constraints: [
|
|
30
|
+
* requireInfluence({ system: 0.45, user: 0.30, environment: 0.15, assistant: 0.10 })
|
|
31
|
+
* ],
|
|
32
|
+
* atomic_encoding: { enabled: true }
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* // Compose multiple fragments
|
|
36
|
+
* const manifold = await caret.compose([
|
|
37
|
+
* fragment,
|
|
38
|
+
* anotherFragment
|
|
39
|
+
* ], { ceiling: '8k tokens' });
|
|
40
|
+
*
|
|
41
|
+
* // Resolve through constraints
|
|
42
|
+
* const result = await caret.resolve(fragment);
|
|
43
|
+
* if (result.success) {
|
|
44
|
+
* console.log('Fragment is valid:', result.fragment);
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
import type { CaretRuntime, FragmentStore } from './types.js';
|
|
49
|
+
/**
|
|
50
|
+
* Options for creating a Caret instance.
|
|
51
|
+
*/
|
|
52
|
+
export interface CreateCaretOptions {
|
|
53
|
+
/** Secret key for HMAC sealing (required) */
|
|
54
|
+
seal_key: string;
|
|
55
|
+
/** Default trust level for unspecified sources */
|
|
56
|
+
default_trust?: number;
|
|
57
|
+
/** Whether to enforce signature requirements */
|
|
58
|
+
require_signatures?: boolean;
|
|
59
|
+
/** Token counting strategy */
|
|
60
|
+
tokenizer?: 'cl100k' | 'p50k' | 'custom';
|
|
61
|
+
/** Custom tokenizer function */
|
|
62
|
+
custom_tokenizer?: (text: string) => number;
|
|
63
|
+
/** Custom store implementation */
|
|
64
|
+
store?: FragmentStore;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Create a Caret runtime instance.
|
|
68
|
+
*
|
|
69
|
+
* @param options - Configuration options
|
|
70
|
+
* @returns The Caret runtime
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* const caret = createCaret({
|
|
75
|
+
* seal_key: process.env.CARET_SEAL_KEY!,
|
|
76
|
+
* default_trust: 50,
|
|
77
|
+
* });
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function createCaret(options: CreateCaretOptions): CaretRuntime;
|
|
81
|
+
export type { ContextFragment, Manifold, FragmentId, Hash, Seal, Timestamp, SourceURI, TokenCount, TrustLevel, Attribution, SemanticUnit, SemanticType, ProvenanceRecord, ProvenanceChain, Constraint, TimeConstraint, ScopeConstraint, TrustConstraint, SignatureConstraint, InfluenceConstraint, MdashActionCode, InfluenceBudget, Outcome, ExecutionStep, ExecutionTrace, UtilityScore, UtilityFeedback, LiabilityShare, StepCredit, CreditAssignment, CoreferenceContext, ComposeOptions, CompositionStrategy, ResolutionResult, ConstraintViolation, CaretRuntime, CaretConfig, SealOptions, FragmentStore, } from './types.js';
|
|
82
|
+
export { maxAge, notBefore, notAfter, allowDomains, requireTrust, requireSignature, requireInfluence, requireMCCA, } from './resolve.js';
|
|
83
|
+
export type { ResolutionContext } from './resolve.js';
|
|
84
|
+
export { MemoryStore, CachedStore, CompositeStore, ExtendedMemoryStore, createStore, } from './store.js';
|
|
85
|
+
export type { EmbeddingFunction } from './store.js';
|
|
86
|
+
export { verifyFragment, serializeFragment, deserializeFragment, getFragmentAge, getFragmentTrust, isFragmentExpired, countTokens, setTokenizer, } from './fragment.js';
|
|
87
|
+
export { verifyManifold, getManifoldStats, fitsInBudget, parseTokenCeiling, } from './compose.js';
|
|
88
|
+
export { createProvenanceRecord, createProvenanceChain, extendProvenanceChain, flattenChain, verifyChain, mergeChains, getMinTrust, getMaxTrust, } from './provenance.js';
|
|
89
|
+
export { sha256, sha256Object, sha256Binary, rollingHash, verifyHash, isValidHash, deterministicStringify, } from './crypto/hash.js';
|
|
90
|
+
export { hmacSeal, hmacVerify, isValidSeal, } from './crypto/hmac.js';
|
|
91
|
+
export { isHash, isFragmentId, isTimestamp, isTrustLevel, isTokenCount, isContextFragment, isValidInfluenceBudget, isMdashActionCode, sumInfluence, } from './types.js';
|
|
92
|
+
export { resolveCoreferences, createDefaultContext, hasUnresolvedCoreferences, extractEntityIds, canonicalEncode, computeCommitmentHash, isValidSubject, isValidTimestamp, } from './utils/atomic.js';
|
|
93
|
+
export { updateUtilityScore, updateOutcomeUtility, createInitialUtility, createUtilityFromHistory, predictSuccess, expectedUtility, compareUtility, selectBestOutcome, } from './utils/utility.js';
|
|
94
|
+
export { assignCredit, validateCreditAssignment, attributeLiability, validateLiabilityShares, createDefaultInfluenceBudget, isMCCACompliant, normalizeInfluenceBudget, addInfluenceBudgets, computeTraceInfluence, } from './utils/credit.js';
|
|
95
|
+
export declare const VERSION = "3.1.0";
|
|
96
|
+
export declare const FORMERLY = "Caret v0.2.0";
|
|
97
|
+
/** Alias for createCaret - use this for new code */
|
|
98
|
+
export declare const createContext: typeof createCaret;
|
|
99
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"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"}
|