@aletheia-labs/core 0.1.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/LICENSE +176 -0
- package/README.md +163 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/runtime/action-authorizer.d.ts +48 -0
- package/dist/runtime/action-authorizer.d.ts.map +1 -0
- package/dist/runtime/action-authorizer.js +231 -0
- package/dist/runtime/action-authorizer.js.map +1 -0
- package/dist/runtime/authority-engine.d.ts +68 -0
- package/dist/runtime/authority-engine.d.ts.map +1 -0
- package/dist/runtime/authority-engine.js +99 -0
- package/dist/runtime/authority-engine.js.map +1 -0
- package/dist/runtime/decision-helpers.d.ts +17 -0
- package/dist/runtime/decision-helpers.d.ts.map +1 -0
- package/dist/runtime/decision-helpers.js +23 -0
- package/dist/runtime/decision-helpers.js.map +1 -0
- package/dist/runtime/index.d.ts +9 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +9 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/proposal-safety.d.ts +18 -0
- package/dist/runtime/proposal-safety.d.ts.map +1 -0
- package/dist/runtime/proposal-safety.js +76 -0
- package/dist/runtime/proposal-safety.js.map +1 -0
- package/dist/runtime/retrieval-router.d.ts +60 -0
- package/dist/runtime/retrieval-router.d.ts.map +1 -0
- package/dist/runtime/retrieval-router.js +223 -0
- package/dist/runtime/retrieval-router.js.map +1 -0
- package/dist/runtime/scope-helpers.d.ts +22 -0
- package/dist/runtime/scope-helpers.d.ts.map +1 -0
- package/dist/runtime/scope-helpers.js +29 -0
- package/dist/runtime/scope-helpers.js.map +1 -0
- package/dist/runtime/visibility-policy.d.ts +29 -0
- package/dist/runtime/visibility-policy.d.ts.map +1 -0
- package/dist/runtime/visibility-policy.js +23 -0
- package/dist/runtime/visibility-policy.js.map +1 -0
- package/dist/runtime/write-gate.d.ts +66 -0
- package/dist/runtime/write-gate.d.ts.map +1 -0
- package/dist/runtime/write-gate.js +293 -0
- package/dist/runtime/write-gate.js.map +1 -0
- package/dist/storage/conflict-registry.d.ts +61 -0
- package/dist/storage/conflict-registry.d.ts.map +1 -0
- package/dist/storage/conflict-registry.js +15 -0
- package/dist/storage/conflict-registry.js.map +1 -0
- package/dist/storage/event-ledger.d.ts +61 -0
- package/dist/storage/event-ledger.d.ts.map +1 -0
- package/dist/storage/event-ledger.js +14 -0
- package/dist/storage/event-ledger.js.map +1 -0
- package/dist/storage/index.d.ts +8 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +8 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/memory-store.d.ts +94 -0
- package/dist/storage/memory-store.d.ts.map +1 -0
- package/dist/storage/memory-store.js +14 -0
- package/dist/storage/memory-store.js.map +1 -0
- package/dist/types/action.d.ts +211 -0
- package/dist/types/action.d.ts.map +1 -0
- package/dist/types/action.js +50 -0
- package/dist/types/action.js.map +1 -0
- package/dist/types/compressed-receipt.d.ts +117 -0
- package/dist/types/compressed-receipt.d.ts.map +1 -0
- package/dist/types/compressed-receipt.js +100 -0
- package/dist/types/compressed-receipt.js.map +1 -0
- package/dist/types/conflict.d.ts +159 -0
- package/dist/types/conflict.d.ts.map +1 -0
- package/dist/types/conflict.js +47 -0
- package/dist/types/conflict.js.map +1 -0
- package/dist/types/coverage.d.ts +52 -0
- package/dist/types/coverage.d.ts.map +1 -0
- package/dist/types/coverage.js +30 -0
- package/dist/types/coverage.js.map +1 -0
- package/dist/types/decision.d.ts +345 -0
- package/dist/types/decision.d.ts.map +1 -0
- package/dist/types/decision.js +88 -0
- package/dist/types/decision.js.map +1 -0
- package/dist/types/enums.d.ts +135 -0
- package/dist/types/enums.d.ts.map +1 -0
- package/dist/types/enums.js +146 -0
- package/dist/types/enums.js.map +1 -0
- package/dist/types/event.d.ts +187 -0
- package/dist/types/event.d.ts.map +1 -0
- package/dist/types/event.js +44 -0
- package/dist/types/event.js.map +1 -0
- package/dist/types/human-receipt.d.ts +108 -0
- package/dist/types/human-receipt.d.ts.map +1 -0
- package/dist/types/human-receipt.js +41 -0
- package/dist/types/human-receipt.js.map +1 -0
- package/dist/types/index.d.ts +25 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +25 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/keys.d.ts +31 -0
- package/dist/types/keys.d.ts.map +1 -0
- package/dist/types/keys.js +53 -0
- package/dist/types/keys.js.map +1 -0
- package/dist/types/memory-atom.d.ts +291 -0
- package/dist/types/memory-atom.d.ts.map +1 -0
- package/dist/types/memory-atom.js +62 -0
- package/dist/types/memory-atom.js.map +1 -0
- package/dist/types/memory-proposal.d.ts +207 -0
- package/dist/types/memory-proposal.d.ts.map +1 -0
- package/dist/types/memory-proposal.js +34 -0
- package/dist/types/memory-proposal.js.map +1 -0
- package/dist/types/packet.d.ts +564 -0
- package/dist/types/packet.d.ts.map +1 -0
- package/dist/types/packet.js +43 -0
- package/dist/types/packet.js.map +1 -0
- package/dist/types/primitives.d.ts +39 -0
- package/dist/types/primitives.d.ts.map +1 -0
- package/dist/types/primitives.js +42 -0
- package/dist/types/primitives.js.map +1 -0
- package/dist/types/status-transitions.d.ts +23 -0
- package/dist/types/status-transitions.d.ts.map +1 -0
- package/dist/types/status-transitions.js +48 -0
- package/dist/types/status-transitions.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Human-readable receipt (specs/memory-authority-receipt-v0.md §"Canonical fields").
|
|
3
|
+
*
|
|
4
|
+
* The verbose YAML/Markdown form for audits and human handoffs. Less compact
|
|
5
|
+
* than CompressedReceipt but carries the same authority semantics.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { ActionClassSchema, EffectBoundarySchema, FreshnessSchema, LineageCompletenessSchema, PromotionBoundarySchema, ReadinessBoundarySchema, RiskTierSchema, TargetStatusSchema, } from './enums.js';
|
|
9
|
+
import { IsoTimestampSchema, SourceArtifactIdSchema, SourcePathSchema } from './primitives.js';
|
|
10
|
+
/**
|
|
11
|
+
* The "nextAllowedAction" sub-object of a human-readable receipt.
|
|
12
|
+
* Spec rule: must be exact; generic "continue" is not authority.
|
|
13
|
+
*/
|
|
14
|
+
export const NextAllowedActionSchema = z.object({
|
|
15
|
+
/** Specific verb the receiver is allowed to take. */
|
|
16
|
+
action: ActionClassSchema,
|
|
17
|
+
/** Exact next target (e.g. file path, fixture id). */
|
|
18
|
+
target: z.string().min(1).max(512),
|
|
19
|
+
/** The source target this succeeds. */
|
|
20
|
+
successorOf: z.string().min(1).max(512),
|
|
21
|
+
/** Whether re-running the action is allowed. */
|
|
22
|
+
redoAllowed: z.boolean(),
|
|
23
|
+
});
|
|
24
|
+
export const HumanReadableReceiptSchema = z.object({
|
|
25
|
+
sourceArtifactId: SourceArtifactIdSchema,
|
|
26
|
+
sourceArtifactPath: SourcePathSchema,
|
|
27
|
+
producedAt: IsoTimestampSchema,
|
|
28
|
+
receiverFreshness: FreshnessSchema,
|
|
29
|
+
targetStatus: TargetStatusSchema,
|
|
30
|
+
readinessBoundary: ReadinessBoundarySchema,
|
|
31
|
+
effectBoundary: EffectBoundarySchema,
|
|
32
|
+
promotionBoundary: PromotionBoundarySchema,
|
|
33
|
+
lineageCompleteness: LineageCompletenessSchema,
|
|
34
|
+
riskTier: RiskTierSchema,
|
|
35
|
+
nextAllowedAction: NextAllowedActionSchema,
|
|
36
|
+
/** How the claim was checked (free text, audit only). */
|
|
37
|
+
validation: z.string().min(1).max(2048),
|
|
38
|
+
/** Local/shadow safety result string (audit only). */
|
|
39
|
+
safetyResult: z.string().min(1).max(2048),
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=human-receipt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-receipt.js","sourceRoot":"","sources":["../../src/types/human-receipt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,yBAAyB,EACzB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE/F;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,qDAAqD;IACrD,MAAM,EAAE,iBAAiB;IACzB,sDAAsD;IACtD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAClC,uCAAuC;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACvC,gDAAgD;IAChD,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;CACzB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,gBAAgB,EAAE,sBAAsB;IACxC,kBAAkB,EAAE,gBAAgB;IACpC,UAAU,EAAE,kBAAkB;IAC9B,iBAAiB,EAAE,eAAe;IAClC,YAAY,EAAE,kBAAkB;IAChC,iBAAiB,EAAE,uBAAuB;IAC1C,cAAc,EAAE,oBAAoB;IACpC,iBAAiB,EAAE,uBAAuB;IAC1C,mBAAmB,EAAE,yBAAyB;IAC9C,QAAQ,EAAE,cAAc;IACxB,iBAAiB,EAAE,uBAAuB;IAC1C,yDAAyD;IACzD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACvC,sDAAsD;IACtD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;CAC1C,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exports every domain type and schema.
|
|
3
|
+
*
|
|
4
|
+
* Convention:
|
|
5
|
+
* - `FooSchema` — zod schema (use for parsing untrusted input).
|
|
6
|
+
* - `Foo` — TypeScript type (use as function signatures and storage).
|
|
7
|
+
*
|
|
8
|
+
* Hand-built values (when you trust the input) get the type.
|
|
9
|
+
* Anything coming over a wire, from disk, or from an LLM goes through the schema.
|
|
10
|
+
*/
|
|
11
|
+
export * from './primitives.js';
|
|
12
|
+
export * from './enums.js';
|
|
13
|
+
export * from './keys.js';
|
|
14
|
+
export * from './status-transitions.js';
|
|
15
|
+
export * from './event.js';
|
|
16
|
+
export * from './compressed-receipt.js';
|
|
17
|
+
export * from './human-receipt.js';
|
|
18
|
+
export * from './coverage.js';
|
|
19
|
+
export * from './memory-atom.js';
|
|
20
|
+
export * from './memory-proposal.js';
|
|
21
|
+
export * from './conflict.js';
|
|
22
|
+
export * from './action.js';
|
|
23
|
+
export * from './decision.js';
|
|
24
|
+
export * from './packet.js';
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Re-exports every domain type and schema.
|
|
3
|
+
*
|
|
4
|
+
* Convention:
|
|
5
|
+
* - `FooSchema` — zod schema (use for parsing untrusted input).
|
|
6
|
+
* - `Foo` — TypeScript type (use as function signatures and storage).
|
|
7
|
+
*
|
|
8
|
+
* Hand-built values (when you trust the input) get the type.
|
|
9
|
+
* Anything coming over a wire, from disk, or from an LLM goes through the schema.
|
|
10
|
+
*/
|
|
11
|
+
export * from './primitives.js';
|
|
12
|
+
export * from './enums.js';
|
|
13
|
+
export * from './keys.js';
|
|
14
|
+
export * from './status-transitions.js';
|
|
15
|
+
export * from './event.js';
|
|
16
|
+
export * from './compressed-receipt.js';
|
|
17
|
+
export * from './human-receipt.js';
|
|
18
|
+
export * from './coverage.js';
|
|
19
|
+
export * from './memory-atom.js';
|
|
20
|
+
export * from './memory-proposal.js';
|
|
21
|
+
export * from './conflict.js';
|
|
22
|
+
export * from './action.js';
|
|
23
|
+
export * from './decision.js';
|
|
24
|
+
export * from './packet.js';
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical string keys for Scope and Visibility.
|
|
3
|
+
*
|
|
4
|
+
* Any storage backend needs a single-string representation of these
|
|
5
|
+
* discriminated unions for indexing and permission filtering. Defining the
|
|
6
|
+
* canonical form once in `core` guarantees every backend agrees on it.
|
|
7
|
+
*
|
|
8
|
+
* Format is irreversible-by-design: a parser is provided, but storage layers
|
|
9
|
+
* should keep the original JSON alongside the key so the round-trip is exact.
|
|
10
|
+
*/
|
|
11
|
+
import type { Scope, Visibility } from './enums.js';
|
|
12
|
+
/**
|
|
13
|
+
* Visibility → string key.
|
|
14
|
+
* private:agent → "private:agent"
|
|
15
|
+
* private:user → "private:user"
|
|
16
|
+
* team → "team:<name>"
|
|
17
|
+
* global:safe → "global:safe"
|
|
18
|
+
* sealed:sensitive → "sealed:sensitive"
|
|
19
|
+
* ephemeral → "ephemeral"
|
|
20
|
+
*/
|
|
21
|
+
export declare function visibilityKey(v: Visibility): string;
|
|
22
|
+
/**
|
|
23
|
+
* Scope → string key.
|
|
24
|
+
* local → "local"
|
|
25
|
+
* project → "project:<projectId>"
|
|
26
|
+
* user → "user:<userId>"
|
|
27
|
+
* team → "team:<teamId>"
|
|
28
|
+
* global → "global"
|
|
29
|
+
*/
|
|
30
|
+
export declare function scopeKey(s: Scope): string;
|
|
31
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/types/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,CAWnD;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,CAYzC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical string keys for Scope and Visibility.
|
|
3
|
+
*
|
|
4
|
+
* Any storage backend needs a single-string representation of these
|
|
5
|
+
* discriminated unions for indexing and permission filtering. Defining the
|
|
6
|
+
* canonical form once in `core` guarantees every backend agrees on it.
|
|
7
|
+
*
|
|
8
|
+
* Format is irreversible-by-design: a parser is provided, but storage layers
|
|
9
|
+
* should keep the original JSON alongside the key so the round-trip is exact.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Visibility → string key.
|
|
13
|
+
* private:agent → "private:agent"
|
|
14
|
+
* private:user → "private:user"
|
|
15
|
+
* team → "team:<name>"
|
|
16
|
+
* global:safe → "global:safe"
|
|
17
|
+
* sealed:sensitive → "sealed:sensitive"
|
|
18
|
+
* ephemeral → "ephemeral"
|
|
19
|
+
*/
|
|
20
|
+
export function visibilityKey(v) {
|
|
21
|
+
switch (v.kind) {
|
|
22
|
+
case 'private:agent':
|
|
23
|
+
case 'private:user':
|
|
24
|
+
case 'global:safe':
|
|
25
|
+
case 'sealed:sensitive':
|
|
26
|
+
case 'ephemeral':
|
|
27
|
+
return v.kind;
|
|
28
|
+
case 'team':
|
|
29
|
+
return `team:${v.name}`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Scope → string key.
|
|
34
|
+
* local → "local"
|
|
35
|
+
* project → "project:<projectId>"
|
|
36
|
+
* user → "user:<userId>"
|
|
37
|
+
* team → "team:<teamId>"
|
|
38
|
+
* global → "global"
|
|
39
|
+
*/
|
|
40
|
+
export function scopeKey(s) {
|
|
41
|
+
switch (s.kind) {
|
|
42
|
+
case 'local':
|
|
43
|
+
case 'global':
|
|
44
|
+
return s.kind;
|
|
45
|
+
case 'project':
|
|
46
|
+
return `project:${s.projectId}`;
|
|
47
|
+
case 'user':
|
|
48
|
+
return `user:${s.userId}`;
|
|
49
|
+
case 'team':
|
|
50
|
+
return `team:${s.teamId}`;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/types/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,CAAa;IACzC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,eAAe,CAAC;QACrB,KAAK,cAAc,CAAC;QACpB,KAAK,aAAa,CAAC;QACnB,KAAK,kBAAkB,CAAC;QACxB,KAAK,WAAW;YACd,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAQ;IAC/B,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,IAAI,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MemoryAtom — the smallest actionable memory unit.
|
|
3
|
+
* Source: specs/aletheia-memory-authority-v0.md §4.
|
|
4
|
+
*
|
|
5
|
+
* Atoms are append-only. A "modification" produces a successor atom with a
|
|
6
|
+
* `supersedes` link. Status transitions are tracked separately (Phase 2).
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
/**
|
|
10
|
+
* Scores attached to a MemoryAtom.
|
|
11
|
+
*
|
|
12
|
+
* Hard rule from spec: "No single score is authoritative. `confidence` cannot
|
|
13
|
+
* override weak evidence, stale freshness, wrong scope, or missing permission."
|
|
14
|
+
*
|
|
15
|
+
* Scores inform routing and ranking; they NEVER substitute for receipt fields.
|
|
16
|
+
*/
|
|
17
|
+
export declare const MemoryScoresSchema: z.ZodObject<{
|
|
18
|
+
confidence: z.ZodNumber;
|
|
19
|
+
evidence: z.ZodNumber;
|
|
20
|
+
authority: z.ZodNumber;
|
|
21
|
+
freshness: z.ZodNumber;
|
|
22
|
+
stability: z.ZodNumber;
|
|
23
|
+
consensus: z.ZodNumber;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
confidence: number;
|
|
26
|
+
evidence: number;
|
|
27
|
+
authority: number;
|
|
28
|
+
freshness: number;
|
|
29
|
+
stability: number;
|
|
30
|
+
consensus: number;
|
|
31
|
+
}, {
|
|
32
|
+
confidence: number;
|
|
33
|
+
evidence: number;
|
|
34
|
+
authority: number;
|
|
35
|
+
freshness: number;
|
|
36
|
+
stability: number;
|
|
37
|
+
consensus: number;
|
|
38
|
+
}>;
|
|
39
|
+
export type MemoryScores = z.infer<typeof MemoryScoresSchema>;
|
|
40
|
+
/**
|
|
41
|
+
* A typed edge from one atom to another.
|
|
42
|
+
* The relation determines whether the link is informational (`derived_from`)
|
|
43
|
+
* or has authority implications (`supersedes`, `contradicts`).
|
|
44
|
+
*/
|
|
45
|
+
export declare const MemoryLinkSchema: z.ZodObject<{
|
|
46
|
+
relation: z.ZodEnum<["supports", "contradicts", "supersedes", "derived_from"]>;
|
|
47
|
+
targetMemoryId: z.ZodBranded<z.ZodString, "MemoryId">;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
relation: "supports" | "contradicts" | "supersedes" | "derived_from";
|
|
50
|
+
targetMemoryId: string & z.BRAND<"MemoryId">;
|
|
51
|
+
}, {
|
|
52
|
+
relation: "supports" | "contradicts" | "supersedes" | "derived_from";
|
|
53
|
+
targetMemoryId: string;
|
|
54
|
+
}>;
|
|
55
|
+
export type MemoryLink = z.infer<typeof MemoryLinkSchema>;
|
|
56
|
+
export declare const MemoryAtomSchema: z.ZodObject<{
|
|
57
|
+
memoryId: z.ZodBranded<z.ZodString, "MemoryId">;
|
|
58
|
+
memoryType: z.ZodEnum<["observation", "claim", "preference", "policy", "decision", "task_state", "warning", "skill"]>;
|
|
59
|
+
/** The actual claim/observation/decision text. */
|
|
60
|
+
content: z.ZodString;
|
|
61
|
+
/** Which agent produced this atom (proposer, not authority). */
|
|
62
|
+
sourceAgentId: z.ZodBranded<z.ZodString, "AgentId">;
|
|
63
|
+
/** Raw events this atom is grounded in. */
|
|
64
|
+
sourceEventIds: z.ZodArray<z.ZodBranded<z.ZodString, "EventId">, "many">;
|
|
65
|
+
/** Other atoms this one is derived from (chain of summarization). */
|
|
66
|
+
sourceMemoryIds: z.ZodArray<z.ZodBranded<z.ZodString, "MemoryId">, "many">;
|
|
67
|
+
scope: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
68
|
+
kind: z.ZodLiteral<"local">;
|
|
69
|
+
}, "strip", z.ZodTypeAny, {
|
|
70
|
+
kind: "local";
|
|
71
|
+
}, {
|
|
72
|
+
kind: "local";
|
|
73
|
+
}>, z.ZodObject<{
|
|
74
|
+
kind: z.ZodLiteral<"project">;
|
|
75
|
+
projectId: z.ZodString;
|
|
76
|
+
}, "strip", z.ZodTypeAny, {
|
|
77
|
+
kind: "project";
|
|
78
|
+
projectId: string;
|
|
79
|
+
}, {
|
|
80
|
+
kind: "project";
|
|
81
|
+
projectId: string;
|
|
82
|
+
}>, z.ZodObject<{
|
|
83
|
+
kind: z.ZodLiteral<"user">;
|
|
84
|
+
userId: z.ZodString;
|
|
85
|
+
}, "strip", z.ZodTypeAny, {
|
|
86
|
+
kind: "user";
|
|
87
|
+
userId: string;
|
|
88
|
+
}, {
|
|
89
|
+
kind: "user";
|
|
90
|
+
userId: string;
|
|
91
|
+
}>, z.ZodObject<{
|
|
92
|
+
kind: z.ZodLiteral<"team">;
|
|
93
|
+
teamId: z.ZodString;
|
|
94
|
+
}, "strip", z.ZodTypeAny, {
|
|
95
|
+
kind: "team";
|
|
96
|
+
teamId: string;
|
|
97
|
+
}, {
|
|
98
|
+
kind: "team";
|
|
99
|
+
teamId: string;
|
|
100
|
+
}>, z.ZodObject<{
|
|
101
|
+
kind: z.ZodLiteral<"global">;
|
|
102
|
+
}, "strip", z.ZodTypeAny, {
|
|
103
|
+
kind: "global";
|
|
104
|
+
}, {
|
|
105
|
+
kind: "global";
|
|
106
|
+
}>]>;
|
|
107
|
+
visibility: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
108
|
+
kind: z.ZodLiteral<"private:agent">;
|
|
109
|
+
}, "strip", z.ZodTypeAny, {
|
|
110
|
+
kind: "private:agent";
|
|
111
|
+
}, {
|
|
112
|
+
kind: "private:agent";
|
|
113
|
+
}>, z.ZodObject<{
|
|
114
|
+
kind: z.ZodLiteral<"private:user">;
|
|
115
|
+
}, "strip", z.ZodTypeAny, {
|
|
116
|
+
kind: "private:user";
|
|
117
|
+
}, {
|
|
118
|
+
kind: "private:user";
|
|
119
|
+
}>, z.ZodObject<{
|
|
120
|
+
kind: z.ZodLiteral<"team">;
|
|
121
|
+
name: z.ZodString;
|
|
122
|
+
}, "strip", z.ZodTypeAny, {
|
|
123
|
+
kind: "team";
|
|
124
|
+
name: string;
|
|
125
|
+
}, {
|
|
126
|
+
kind: "team";
|
|
127
|
+
name: string;
|
|
128
|
+
}>, z.ZodObject<{
|
|
129
|
+
kind: z.ZodLiteral<"global:safe">;
|
|
130
|
+
}, "strip", z.ZodTypeAny, {
|
|
131
|
+
kind: "global:safe";
|
|
132
|
+
}, {
|
|
133
|
+
kind: "global:safe";
|
|
134
|
+
}>, z.ZodObject<{
|
|
135
|
+
kind: z.ZodLiteral<"sealed:sensitive">;
|
|
136
|
+
}, "strip", z.ZodTypeAny, {
|
|
137
|
+
kind: "sealed:sensitive";
|
|
138
|
+
}, {
|
|
139
|
+
kind: "sealed:sensitive";
|
|
140
|
+
}>, z.ZodObject<{
|
|
141
|
+
kind: z.ZodLiteral<"ephemeral">;
|
|
142
|
+
}, "strip", z.ZodTypeAny, {
|
|
143
|
+
kind: "ephemeral";
|
|
144
|
+
}, {
|
|
145
|
+
kind: "ephemeral";
|
|
146
|
+
}>]>;
|
|
147
|
+
status: z.ZodEnum<["candidate", "verified", "trusted", "deprecated", "rejected", "sealed", "human_required"]>;
|
|
148
|
+
scores: z.ZodObject<{
|
|
149
|
+
confidence: z.ZodNumber;
|
|
150
|
+
evidence: z.ZodNumber;
|
|
151
|
+
authority: z.ZodNumber;
|
|
152
|
+
freshness: z.ZodNumber;
|
|
153
|
+
stability: z.ZodNumber;
|
|
154
|
+
consensus: z.ZodNumber;
|
|
155
|
+
}, "strip", z.ZodTypeAny, {
|
|
156
|
+
confidence: number;
|
|
157
|
+
evidence: number;
|
|
158
|
+
authority: number;
|
|
159
|
+
freshness: number;
|
|
160
|
+
stability: number;
|
|
161
|
+
consensus: number;
|
|
162
|
+
}, {
|
|
163
|
+
confidence: number;
|
|
164
|
+
evidence: number;
|
|
165
|
+
authority: number;
|
|
166
|
+
freshness: number;
|
|
167
|
+
stability: number;
|
|
168
|
+
consensus: number;
|
|
169
|
+
}>;
|
|
170
|
+
/** When this atom became (or will become) valid. */
|
|
171
|
+
validFrom: z.ZodString;
|
|
172
|
+
/** When this atom expires; null means open-ended. */
|
|
173
|
+
validUntil: z.ZodNullable<z.ZodString>;
|
|
174
|
+
/** Last time the atom was explicitly re-confirmed. */
|
|
175
|
+
lastConfirmedAt: z.ZodNullable<z.ZodString>;
|
|
176
|
+
/** Graph edges to other atoms. */
|
|
177
|
+
links: z.ZodArray<z.ZodObject<{
|
|
178
|
+
relation: z.ZodEnum<["supports", "contradicts", "supersedes", "derived_from"]>;
|
|
179
|
+
targetMemoryId: z.ZodBranded<z.ZodString, "MemoryId">;
|
|
180
|
+
}, "strip", z.ZodTypeAny, {
|
|
181
|
+
relation: "supports" | "contradicts" | "supersedes" | "derived_from";
|
|
182
|
+
targetMemoryId: string & z.BRAND<"MemoryId">;
|
|
183
|
+
}, {
|
|
184
|
+
relation: "supports" | "contradicts" | "supersedes" | "derived_from";
|
|
185
|
+
targetMemoryId: string;
|
|
186
|
+
}>, "many">;
|
|
187
|
+
}, "strip", z.ZodTypeAny, {
|
|
188
|
+
status: "candidate" | "verified" | "trusted" | "deprecated" | "rejected" | "sealed" | "human_required";
|
|
189
|
+
memoryId: string & z.BRAND<"MemoryId">;
|
|
190
|
+
memoryType: "observation" | "claim" | "preference" | "policy" | "decision" | "task_state" | "warning" | "skill";
|
|
191
|
+
content: string;
|
|
192
|
+
sourceAgentId: string & z.BRAND<"AgentId">;
|
|
193
|
+
sourceEventIds: (string & z.BRAND<"EventId">)[];
|
|
194
|
+
sourceMemoryIds: (string & z.BRAND<"MemoryId">)[];
|
|
195
|
+
scope: {
|
|
196
|
+
kind: "local";
|
|
197
|
+
} | {
|
|
198
|
+
kind: "project";
|
|
199
|
+
projectId: string;
|
|
200
|
+
} | {
|
|
201
|
+
kind: "user";
|
|
202
|
+
userId: string;
|
|
203
|
+
} | {
|
|
204
|
+
kind: "team";
|
|
205
|
+
teamId: string;
|
|
206
|
+
} | {
|
|
207
|
+
kind: "global";
|
|
208
|
+
};
|
|
209
|
+
visibility: {
|
|
210
|
+
kind: "private:agent";
|
|
211
|
+
} | {
|
|
212
|
+
kind: "private:user";
|
|
213
|
+
} | {
|
|
214
|
+
kind: "team";
|
|
215
|
+
name: string;
|
|
216
|
+
} | {
|
|
217
|
+
kind: "global:safe";
|
|
218
|
+
} | {
|
|
219
|
+
kind: "sealed:sensitive";
|
|
220
|
+
} | {
|
|
221
|
+
kind: "ephemeral";
|
|
222
|
+
};
|
|
223
|
+
scores: {
|
|
224
|
+
confidence: number;
|
|
225
|
+
evidence: number;
|
|
226
|
+
authority: number;
|
|
227
|
+
freshness: number;
|
|
228
|
+
stability: number;
|
|
229
|
+
consensus: number;
|
|
230
|
+
};
|
|
231
|
+
validFrom: string;
|
|
232
|
+
validUntil: string | null;
|
|
233
|
+
lastConfirmedAt: string | null;
|
|
234
|
+
links: {
|
|
235
|
+
relation: "supports" | "contradicts" | "supersedes" | "derived_from";
|
|
236
|
+
targetMemoryId: string & z.BRAND<"MemoryId">;
|
|
237
|
+
}[];
|
|
238
|
+
}, {
|
|
239
|
+
status: "candidate" | "verified" | "trusted" | "deprecated" | "rejected" | "sealed" | "human_required";
|
|
240
|
+
memoryId: string;
|
|
241
|
+
memoryType: "observation" | "claim" | "preference" | "policy" | "decision" | "task_state" | "warning" | "skill";
|
|
242
|
+
content: string;
|
|
243
|
+
sourceAgentId: string;
|
|
244
|
+
sourceEventIds: string[];
|
|
245
|
+
sourceMemoryIds: string[];
|
|
246
|
+
scope: {
|
|
247
|
+
kind: "local";
|
|
248
|
+
} | {
|
|
249
|
+
kind: "project";
|
|
250
|
+
projectId: string;
|
|
251
|
+
} | {
|
|
252
|
+
kind: "user";
|
|
253
|
+
userId: string;
|
|
254
|
+
} | {
|
|
255
|
+
kind: "team";
|
|
256
|
+
teamId: string;
|
|
257
|
+
} | {
|
|
258
|
+
kind: "global";
|
|
259
|
+
};
|
|
260
|
+
visibility: {
|
|
261
|
+
kind: "private:agent";
|
|
262
|
+
} | {
|
|
263
|
+
kind: "private:user";
|
|
264
|
+
} | {
|
|
265
|
+
kind: "team";
|
|
266
|
+
name: string;
|
|
267
|
+
} | {
|
|
268
|
+
kind: "global:safe";
|
|
269
|
+
} | {
|
|
270
|
+
kind: "sealed:sensitive";
|
|
271
|
+
} | {
|
|
272
|
+
kind: "ephemeral";
|
|
273
|
+
};
|
|
274
|
+
scores: {
|
|
275
|
+
confidence: number;
|
|
276
|
+
evidence: number;
|
|
277
|
+
authority: number;
|
|
278
|
+
freshness: number;
|
|
279
|
+
stability: number;
|
|
280
|
+
consensus: number;
|
|
281
|
+
};
|
|
282
|
+
validFrom: string;
|
|
283
|
+
validUntil: string | null;
|
|
284
|
+
lastConfirmedAt: string | null;
|
|
285
|
+
links: {
|
|
286
|
+
relation: "supports" | "contradicts" | "supersedes" | "derived_from";
|
|
287
|
+
targetMemoryId: string;
|
|
288
|
+
}[];
|
|
289
|
+
}>;
|
|
290
|
+
export type MemoryAtom = z.infer<typeof MemoryAtomSchema>;
|
|
291
|
+
//# sourceMappingURL=memory-atom.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-atom.d.ts","sourceRoot":"","sources":["../../src/types/memory-atom.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;EAO7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,gBAAgB;;;IAG3B,kDAAkD;;IAElD,gEAAgE;;IAEhE,2CAA2C;;IAI3C,qEAAqE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMrE,oDAAoD;;IAEpD,qDAAqD;;IAErD,sDAAsD;;IAEtD,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAElC,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MemoryAtom — the smallest actionable memory unit.
|
|
3
|
+
* Source: specs/aletheia-memory-authority-v0.md §4.
|
|
4
|
+
*
|
|
5
|
+
* Atoms are append-only. A "modification" produces a successor atom with a
|
|
6
|
+
* `supersedes` link. Status transitions are tracked separately (Phase 2).
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { LinkRelationSchema, MemoryStatusSchema, MemoryTypeSchema, ScopeSchema, VisibilitySchema, } from './enums.js';
|
|
10
|
+
import { AgentIdSchema, EventIdSchema, IsoTimestampSchema, MemoryIdSchema } from './primitives.js';
|
|
11
|
+
/**
|
|
12
|
+
* Scores attached to a MemoryAtom.
|
|
13
|
+
*
|
|
14
|
+
* Hard rule from spec: "No single score is authoritative. `confidence` cannot
|
|
15
|
+
* override weak evidence, stale freshness, wrong scope, or missing permission."
|
|
16
|
+
*
|
|
17
|
+
* Scores inform routing and ranking; they NEVER substitute for receipt fields.
|
|
18
|
+
*/
|
|
19
|
+
export const MemoryScoresSchema = z.object({
|
|
20
|
+
confidence: z.number().min(0).max(1),
|
|
21
|
+
evidence: z.number().min(0).max(1),
|
|
22
|
+
authority: z.number().min(0).max(1),
|
|
23
|
+
freshness: z.number().min(0).max(1),
|
|
24
|
+
stability: z.number().min(0).max(1),
|
|
25
|
+
consensus: z.number().min(0).max(1),
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* A typed edge from one atom to another.
|
|
29
|
+
* The relation determines whether the link is informational (`derived_from`)
|
|
30
|
+
* or has authority implications (`supersedes`, `contradicts`).
|
|
31
|
+
*/
|
|
32
|
+
export const MemoryLinkSchema = z.object({
|
|
33
|
+
relation: LinkRelationSchema,
|
|
34
|
+
targetMemoryId: MemoryIdSchema,
|
|
35
|
+
});
|
|
36
|
+
export const MemoryAtomSchema = z.object({
|
|
37
|
+
memoryId: MemoryIdSchema,
|
|
38
|
+
memoryType: MemoryTypeSchema,
|
|
39
|
+
/** The actual claim/observation/decision text. */
|
|
40
|
+
content: z.string().min(1),
|
|
41
|
+
/** Which agent produced this atom (proposer, not authority). */
|
|
42
|
+
sourceAgentId: AgentIdSchema,
|
|
43
|
+
/** Raw events this atom is grounded in. */
|
|
44
|
+
sourceEventIds: z.array(EventIdSchema).min(1, {
|
|
45
|
+
message: 'an atom must reference at least one source event',
|
|
46
|
+
}),
|
|
47
|
+
/** Other atoms this one is derived from (chain of summarization). */
|
|
48
|
+
sourceMemoryIds: z.array(MemoryIdSchema),
|
|
49
|
+
scope: ScopeSchema,
|
|
50
|
+
visibility: VisibilitySchema,
|
|
51
|
+
status: MemoryStatusSchema,
|
|
52
|
+
scores: MemoryScoresSchema,
|
|
53
|
+
/** When this atom became (or will become) valid. */
|
|
54
|
+
validFrom: IsoTimestampSchema,
|
|
55
|
+
/** When this atom expires; null means open-ended. */
|
|
56
|
+
validUntil: IsoTimestampSchema.nullable(),
|
|
57
|
+
/** Last time the atom was explicitly re-confirmed. */
|
|
58
|
+
lastConfirmedAt: IsoTimestampSchema.nullable(),
|
|
59
|
+
/** Graph edges to other atoms. */
|
|
60
|
+
links: z.array(MemoryLinkSchema),
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=memory-atom.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-atom.js","sourceRoot":"","sources":["../../src/types/memory-atom.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnG;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC;AAGH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,kBAAkB;IAC5B,cAAc,EAAE,cAAc;CAC/B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,cAAc;IACxB,UAAU,EAAE,gBAAgB;IAC5B,kDAAkD;IAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,gEAAgE;IAChE,aAAa,EAAE,aAAa;IAC5B,2CAA2C;IAC3C,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE;QAC5C,OAAO,EAAE,kDAAkD;KAC5D,CAAC;IACF,qEAAqE;IACrE,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IACxC,KAAK,EAAE,WAAW;IAClB,UAAU,EAAE,gBAAgB;IAC5B,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,kBAAkB;IAC1B,oDAAoD;IACpD,SAAS,EAAE,kBAAkB;IAC7B,qDAAqD;IACrD,UAAU,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACzC,sDAAsD;IACtD,eAAe,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IAC9C,kCAAkC;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CACjC,CAAC,CAAC"}
|