@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,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConflictRecord — first-class contradictions.
|
|
3
|
+
* Source: specs/aletheia-memory-authority-v0.md §6 "Conflict Registry".
|
|
4
|
+
*
|
|
5
|
+
* Rule: contradictions are NEVER overwritten by summaries. They remain
|
|
6
|
+
* queryable until explicitly resolved (or superseded by a later restrictive
|
|
7
|
+
* event).
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { FreshnessSchema, ScopeSchema } from './enums.js';
|
|
11
|
+
import { ConflictIdSchema, IsoTimestampSchema, MemoryIdSchema } from './primitives.js';
|
|
12
|
+
export const ConflictStatusSchema = z.enum([
|
|
13
|
+
'unresolved',
|
|
14
|
+
'resolved',
|
|
15
|
+
'superseded',
|
|
16
|
+
'requires_human',
|
|
17
|
+
]);
|
|
18
|
+
export const ConflictDecisionPolicySchema = z.enum([
|
|
19
|
+
'surface_conflict',
|
|
20
|
+
'prefer_latest_authoritative',
|
|
21
|
+
'ask_human',
|
|
22
|
+
'abstain',
|
|
23
|
+
]);
|
|
24
|
+
/**
|
|
25
|
+
* One side of a conflict: which memory makes what claim, with what authority.
|
|
26
|
+
*/
|
|
27
|
+
export const ConflictClaimSchema = z.object({
|
|
28
|
+
memoryId: MemoryIdSchema,
|
|
29
|
+
/** The value the claim asserts (string serialization of any type). */
|
|
30
|
+
value: z.string(),
|
|
31
|
+
/** Authority score of this claim at the time the conflict was recorded. */
|
|
32
|
+
authority: z.number().min(0).max(1),
|
|
33
|
+
freshness: FreshnessSchema,
|
|
34
|
+
});
|
|
35
|
+
export const ConflictRecordSchema = z.object({
|
|
36
|
+
conflictId: ConflictIdSchema,
|
|
37
|
+
/** Topic of the conflict — what the claims disagree about. */
|
|
38
|
+
topic: z.string().min(1).max(1024),
|
|
39
|
+
scope: ScopeSchema,
|
|
40
|
+
/** All claims in conflict (typically 2, sometimes more). */
|
|
41
|
+
claims: z.array(ConflictClaimSchema).min(2),
|
|
42
|
+
status: ConflictStatusSchema,
|
|
43
|
+
decisionPolicy: ConflictDecisionPolicySchema,
|
|
44
|
+
recordedAt: IsoTimestampSchema,
|
|
45
|
+
resolvedAt: IsoTimestampSchema.nullable(),
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=conflict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict.js","sourceRoot":"","sources":["../../src/types/conflict.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEvF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,gBAAgB;CACjB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAC;IACjD,kBAAkB;IAClB,6BAA6B;IAC7B,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,cAAc;IACxB,sEAAsE;IACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,2EAA2E;IAC3E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,SAAS,EAAE,eAAe;CAC3B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,UAAU,EAAE,gBAAgB;IAC5B,8DAA8D;IAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAClC,KAAK,EAAE,WAAW;IAClB,4DAA4D;IAC5D,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,MAAM,EAAE,oBAAoB;IAC5B,cAAc,EAAE,4BAA4B;IAC5C,UAAU,EAAE,kBAAkB;IAC9B,UAAU,EAAE,kBAAkB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coverage receipt (specs/memory-authority-receipt-v0.md — "Receipt classes").
|
|
3
|
+
*
|
|
4
|
+
* Tells a receiver which high-boundary claims should have been retrieved and
|
|
5
|
+
* which are missing. Missing high-boundary digests are absence-of-retrieval,
|
|
6
|
+
* not permission to ignore them.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export declare const CoverageDecisionSchema: z.ZodEnum<["complete", "partial", "critical_gap", "absent"]>;
|
|
10
|
+
export type CoverageDecision = z.infer<typeof CoverageDecisionSchema>;
|
|
11
|
+
export declare const CoverageReceiptSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<{
|
|
12
|
+
/** Number of high-boundary/must-surface claims in this scope. */
|
|
13
|
+
highBoundaryTotal: z.ZodNumber;
|
|
14
|
+
/** Number of high-boundary claims actually retrieved in this packet. */
|
|
15
|
+
retrievedHighBoundary: z.ZodNumber;
|
|
16
|
+
/** Digests of high-boundary claims that should have been retrieved but weren't. */
|
|
17
|
+
missingHighBoundaryDigests: z.ZodArray<z.ZodString, "many">;
|
|
18
|
+
/** Receiver-side decision based on the above. */
|
|
19
|
+
coverageDecision: z.ZodEnum<["complete", "partial", "critical_gap", "absent"]>;
|
|
20
|
+
}, "strip", z.ZodTypeAny, {
|
|
21
|
+
highBoundaryTotal: number;
|
|
22
|
+
retrievedHighBoundary: number;
|
|
23
|
+
missingHighBoundaryDigests: string[];
|
|
24
|
+
coverageDecision: "partial" | "complete" | "critical_gap" | "absent";
|
|
25
|
+
}, {
|
|
26
|
+
highBoundaryTotal: number;
|
|
27
|
+
retrievedHighBoundary: number;
|
|
28
|
+
missingHighBoundaryDigests: string[];
|
|
29
|
+
coverageDecision: "partial" | "complete" | "critical_gap" | "absent";
|
|
30
|
+
}>, {
|
|
31
|
+
highBoundaryTotal: number;
|
|
32
|
+
retrievedHighBoundary: number;
|
|
33
|
+
missingHighBoundaryDigests: string[];
|
|
34
|
+
coverageDecision: "partial" | "complete" | "critical_gap" | "absent";
|
|
35
|
+
}, {
|
|
36
|
+
highBoundaryTotal: number;
|
|
37
|
+
retrievedHighBoundary: number;
|
|
38
|
+
missingHighBoundaryDigests: string[];
|
|
39
|
+
coverageDecision: "partial" | "complete" | "critical_gap" | "absent";
|
|
40
|
+
}>, {
|
|
41
|
+
highBoundaryTotal: number;
|
|
42
|
+
retrievedHighBoundary: number;
|
|
43
|
+
missingHighBoundaryDigests: string[];
|
|
44
|
+
coverageDecision: "partial" | "complete" | "critical_gap" | "absent";
|
|
45
|
+
}, {
|
|
46
|
+
highBoundaryTotal: number;
|
|
47
|
+
retrievedHighBoundary: number;
|
|
48
|
+
missingHighBoundaryDigests: string[];
|
|
49
|
+
coverageDecision: "partial" | "complete" | "critical_gap" | "absent";
|
|
50
|
+
}>;
|
|
51
|
+
export type CoverageReceipt = z.infer<typeof CoverageReceiptSchema>;
|
|
52
|
+
//# sourceMappingURL=coverage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.d.ts","sourceRoot":"","sources":["../../src/types/coverage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,sBAAsB,8DAA4D,CAAC;AAChG,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,qBAAqB;IAE9B,iEAAiE;;IAEjE,wEAAwE;;IAExE,mFAAmF;;IAEnF,iDAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAalD,CAAC;AACJ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coverage receipt (specs/memory-authority-receipt-v0.md — "Receipt classes").
|
|
3
|
+
*
|
|
4
|
+
* Tells a receiver which high-boundary claims should have been retrieved and
|
|
5
|
+
* which are missing. Missing high-boundary digests are absence-of-retrieval,
|
|
6
|
+
* not permission to ignore them.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { HashDigestSchema } from './primitives.js';
|
|
10
|
+
export const CoverageDecisionSchema = z.enum(['complete', 'partial', 'critical_gap', 'absent']);
|
|
11
|
+
export const CoverageReceiptSchema = z
|
|
12
|
+
.object({
|
|
13
|
+
/** Number of high-boundary/must-surface claims in this scope. */
|
|
14
|
+
highBoundaryTotal: z.number().int().nonnegative(),
|
|
15
|
+
/** Number of high-boundary claims actually retrieved in this packet. */
|
|
16
|
+
retrievedHighBoundary: z.number().int().nonnegative(),
|
|
17
|
+
/** Digests of high-boundary claims that should have been retrieved but weren't. */
|
|
18
|
+
missingHighBoundaryDigests: z.array(HashDigestSchema),
|
|
19
|
+
/** Receiver-side decision based on the above. */
|
|
20
|
+
coverageDecision: CoverageDecisionSchema,
|
|
21
|
+
})
|
|
22
|
+
.refine((c) => c.retrievedHighBoundary <= c.highBoundaryTotal, {
|
|
23
|
+
message: 'retrievedHighBoundary cannot exceed highBoundaryTotal',
|
|
24
|
+
path: ['retrievedHighBoundary'],
|
|
25
|
+
})
|
|
26
|
+
.refine((c) => c.missingHighBoundaryDigests.length === c.highBoundaryTotal - c.retrievedHighBoundary, {
|
|
27
|
+
message: 'missingHighBoundaryDigests count must equal (total - retrieved)',
|
|
28
|
+
path: ['missingHighBoundaryDigests'],
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=coverage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coverage.js","sourceRoot":"","sources":["../../src/types/coverage.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGhG,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,iEAAiE;IACjE,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACjD,wEAAwE;IACxE,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrD,mFAAmF;IACnF,0BAA0B,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;IACrD,iDAAiD;IACjD,gBAAgB,EAAE,sBAAsB;CACzC,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,iBAAiB,EAAE;IAC7D,OAAO,EAAE,uDAAuD;IAChE,IAAI,EAAE,CAAC,uBAAuB,CAAC;CAChC,CAAC;KACD,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,MAAM,KAAK,CAAC,CAAC,iBAAiB,GAAG,CAAC,CAAC,qBAAqB,EAC5F;IACE,OAAO,EAAE,iEAAiE;IAC1E,IAAI,EAAE,CAAC,4BAA4B,CAAC;CACrC,CACF,CAAC"}
|
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision types emitted by the WriteGate, RetrievalRouter, and tryAct().
|
|
3
|
+
*
|
|
4
|
+
* Every decision carries: an outcome verb, a structured reason, and the
|
|
5
|
+
* evidence that supports it. Decisions are values, not exceptions —
|
|
6
|
+
* fail-closed never throws, it returns a structured refusal.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
export declare const DecisionOutcomeSchema: z.ZodEnum<["allow_local_shadow", "fetch_abstain", "ask_human", "block_local", "conflict_boundary_packet", "deny"]>;
|
|
10
|
+
export type DecisionOutcome = z.infer<typeof DecisionOutcomeSchema>;
|
|
11
|
+
/**
|
|
12
|
+
* Why the gate/router/tryAct produced a particular outcome. Discriminated
|
|
13
|
+
* union — every variant has the data needed to debug the decision.
|
|
14
|
+
*/
|
|
15
|
+
export declare const DecisionReasonSchema: z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
16
|
+
kind: z.ZodLiteral<"source_check_failed">;
|
|
17
|
+
detail: z.ZodString;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
kind: "source_check_failed";
|
|
20
|
+
detail: string;
|
|
21
|
+
}, {
|
|
22
|
+
kind: "source_check_failed";
|
|
23
|
+
detail: string;
|
|
24
|
+
}>, z.ZodObject<{
|
|
25
|
+
kind: z.ZodLiteral<"freshness_not_current">;
|
|
26
|
+
observed: z.ZodString;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
kind: "freshness_not_current";
|
|
29
|
+
observed: string;
|
|
30
|
+
}, {
|
|
31
|
+
kind: "freshness_not_current";
|
|
32
|
+
observed: string;
|
|
33
|
+
}>, z.ZodObject<{
|
|
34
|
+
kind: z.ZodLiteral<"scope_outside_boundary">;
|
|
35
|
+
requestedScope: z.ZodString;
|
|
36
|
+
allowedScope: z.ZodString;
|
|
37
|
+
}, "strip", z.ZodTypeAny, {
|
|
38
|
+
kind: "scope_outside_boundary";
|
|
39
|
+
requestedScope: string;
|
|
40
|
+
allowedScope: string;
|
|
41
|
+
}, {
|
|
42
|
+
kind: "scope_outside_boundary";
|
|
43
|
+
requestedScope: string;
|
|
44
|
+
allowedScope: string;
|
|
45
|
+
}>, z.ZodObject<{
|
|
46
|
+
kind: z.ZodLiteral<"promotion_boundary_blocked">;
|
|
47
|
+
detail: z.ZodString;
|
|
48
|
+
}, "strip", z.ZodTypeAny, {
|
|
49
|
+
kind: "promotion_boundary_blocked";
|
|
50
|
+
detail: string;
|
|
51
|
+
}, {
|
|
52
|
+
kind: "promotion_boundary_blocked";
|
|
53
|
+
detail: string;
|
|
54
|
+
}>, z.ZodObject<{
|
|
55
|
+
kind: z.ZodLiteral<"forbidden_effect_present">;
|
|
56
|
+
effect: z.ZodString;
|
|
57
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
|
+
kind: "forbidden_effect_present";
|
|
59
|
+
effect: string;
|
|
60
|
+
}, {
|
|
61
|
+
kind: "forbidden_effect_present";
|
|
62
|
+
effect: string;
|
|
63
|
+
}>, z.ZodObject<{
|
|
64
|
+
kind: z.ZodLiteral<"later_restrictive_event">;
|
|
65
|
+
event: z.ZodString;
|
|
66
|
+
}, "strip", z.ZodTypeAny, {
|
|
67
|
+
kind: "later_restrictive_event";
|
|
68
|
+
event: string;
|
|
69
|
+
}, {
|
|
70
|
+
kind: "later_restrictive_event";
|
|
71
|
+
event: string;
|
|
72
|
+
}>, z.ZodObject<{
|
|
73
|
+
kind: z.ZodLiteral<"tuple_incomplete">;
|
|
74
|
+
missingFields: z.ZodArray<z.ZodString, "many">;
|
|
75
|
+
}, "strip", z.ZodTypeAny, {
|
|
76
|
+
kind: "tuple_incomplete";
|
|
77
|
+
missingFields: string[];
|
|
78
|
+
}, {
|
|
79
|
+
kind: "tuple_incomplete";
|
|
80
|
+
missingFields: string[];
|
|
81
|
+
}>, z.ZodObject<{
|
|
82
|
+
kind: z.ZodLiteral<"sensitive_action">;
|
|
83
|
+
actionClass: z.ZodString;
|
|
84
|
+
}, "strip", z.ZodTypeAny, {
|
|
85
|
+
kind: "sensitive_action";
|
|
86
|
+
actionClass: string;
|
|
87
|
+
}, {
|
|
88
|
+
kind: "sensitive_action";
|
|
89
|
+
actionClass: string;
|
|
90
|
+
}>, z.ZodObject<{
|
|
91
|
+
kind: z.ZodLiteral<"unknown_action">;
|
|
92
|
+
raw: z.ZodString;
|
|
93
|
+
}, "strip", z.ZodTypeAny, {
|
|
94
|
+
kind: "unknown_action";
|
|
95
|
+
raw: string;
|
|
96
|
+
}, {
|
|
97
|
+
kind: "unknown_action";
|
|
98
|
+
raw: string;
|
|
99
|
+
}>, z.ZodObject<{
|
|
100
|
+
kind: z.ZodLiteral<"unresolved_conflict">;
|
|
101
|
+
conflictId: z.ZodBranded<z.ZodString, "ConflictId">;
|
|
102
|
+
}, "strip", z.ZodTypeAny, {
|
|
103
|
+
kind: "unresolved_conflict";
|
|
104
|
+
conflictId: string & z.BRAND<"ConflictId">;
|
|
105
|
+
}, {
|
|
106
|
+
kind: "unresolved_conflict";
|
|
107
|
+
conflictId: string;
|
|
108
|
+
}>, z.ZodObject<{
|
|
109
|
+
kind: z.ZodLiteral<"visibility_denied">;
|
|
110
|
+
detail: z.ZodString;
|
|
111
|
+
}, "strip", z.ZodTypeAny, {
|
|
112
|
+
kind: "visibility_denied";
|
|
113
|
+
detail: string;
|
|
114
|
+
}, {
|
|
115
|
+
kind: "visibility_denied";
|
|
116
|
+
detail: string;
|
|
117
|
+
}>, z.ZodObject<{
|
|
118
|
+
kind: z.ZodLiteral<"all_checks_passed">;
|
|
119
|
+
/** The atoms the action was authorized against. */
|
|
120
|
+
citedMemoryIds: z.ZodArray<z.ZodBranded<z.ZodString, "MemoryId">, "many">;
|
|
121
|
+
}, "strip", z.ZodTypeAny, {
|
|
122
|
+
kind: "all_checks_passed";
|
|
123
|
+
citedMemoryIds: (string & z.BRAND<"MemoryId">)[];
|
|
124
|
+
}, {
|
|
125
|
+
kind: "all_checks_passed";
|
|
126
|
+
citedMemoryIds: string[];
|
|
127
|
+
}>]>;
|
|
128
|
+
export type DecisionReason = z.infer<typeof DecisionReasonSchema>;
|
|
129
|
+
export declare const DecisionSchema: z.ZodObject<{
|
|
130
|
+
outcome: z.ZodEnum<["allow_local_shadow", "fetch_abstain", "ask_human", "block_local", "conflict_boundary_packet", "deny"]>;
|
|
131
|
+
/** Why this outcome was chosen. Multiple reasons can stack. */
|
|
132
|
+
reasons: z.ZodArray<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
133
|
+
kind: z.ZodLiteral<"source_check_failed">;
|
|
134
|
+
detail: z.ZodString;
|
|
135
|
+
}, "strip", z.ZodTypeAny, {
|
|
136
|
+
kind: "source_check_failed";
|
|
137
|
+
detail: string;
|
|
138
|
+
}, {
|
|
139
|
+
kind: "source_check_failed";
|
|
140
|
+
detail: string;
|
|
141
|
+
}>, z.ZodObject<{
|
|
142
|
+
kind: z.ZodLiteral<"freshness_not_current">;
|
|
143
|
+
observed: z.ZodString;
|
|
144
|
+
}, "strip", z.ZodTypeAny, {
|
|
145
|
+
kind: "freshness_not_current";
|
|
146
|
+
observed: string;
|
|
147
|
+
}, {
|
|
148
|
+
kind: "freshness_not_current";
|
|
149
|
+
observed: string;
|
|
150
|
+
}>, z.ZodObject<{
|
|
151
|
+
kind: z.ZodLiteral<"scope_outside_boundary">;
|
|
152
|
+
requestedScope: z.ZodString;
|
|
153
|
+
allowedScope: z.ZodString;
|
|
154
|
+
}, "strip", z.ZodTypeAny, {
|
|
155
|
+
kind: "scope_outside_boundary";
|
|
156
|
+
requestedScope: string;
|
|
157
|
+
allowedScope: string;
|
|
158
|
+
}, {
|
|
159
|
+
kind: "scope_outside_boundary";
|
|
160
|
+
requestedScope: string;
|
|
161
|
+
allowedScope: string;
|
|
162
|
+
}>, z.ZodObject<{
|
|
163
|
+
kind: z.ZodLiteral<"promotion_boundary_blocked">;
|
|
164
|
+
detail: z.ZodString;
|
|
165
|
+
}, "strip", z.ZodTypeAny, {
|
|
166
|
+
kind: "promotion_boundary_blocked";
|
|
167
|
+
detail: string;
|
|
168
|
+
}, {
|
|
169
|
+
kind: "promotion_boundary_blocked";
|
|
170
|
+
detail: string;
|
|
171
|
+
}>, z.ZodObject<{
|
|
172
|
+
kind: z.ZodLiteral<"forbidden_effect_present">;
|
|
173
|
+
effect: z.ZodString;
|
|
174
|
+
}, "strip", z.ZodTypeAny, {
|
|
175
|
+
kind: "forbidden_effect_present";
|
|
176
|
+
effect: string;
|
|
177
|
+
}, {
|
|
178
|
+
kind: "forbidden_effect_present";
|
|
179
|
+
effect: string;
|
|
180
|
+
}>, z.ZodObject<{
|
|
181
|
+
kind: z.ZodLiteral<"later_restrictive_event">;
|
|
182
|
+
event: z.ZodString;
|
|
183
|
+
}, "strip", z.ZodTypeAny, {
|
|
184
|
+
kind: "later_restrictive_event";
|
|
185
|
+
event: string;
|
|
186
|
+
}, {
|
|
187
|
+
kind: "later_restrictive_event";
|
|
188
|
+
event: string;
|
|
189
|
+
}>, z.ZodObject<{
|
|
190
|
+
kind: z.ZodLiteral<"tuple_incomplete">;
|
|
191
|
+
missingFields: z.ZodArray<z.ZodString, "many">;
|
|
192
|
+
}, "strip", z.ZodTypeAny, {
|
|
193
|
+
kind: "tuple_incomplete";
|
|
194
|
+
missingFields: string[];
|
|
195
|
+
}, {
|
|
196
|
+
kind: "tuple_incomplete";
|
|
197
|
+
missingFields: string[];
|
|
198
|
+
}>, z.ZodObject<{
|
|
199
|
+
kind: z.ZodLiteral<"sensitive_action">;
|
|
200
|
+
actionClass: z.ZodString;
|
|
201
|
+
}, "strip", z.ZodTypeAny, {
|
|
202
|
+
kind: "sensitive_action";
|
|
203
|
+
actionClass: string;
|
|
204
|
+
}, {
|
|
205
|
+
kind: "sensitive_action";
|
|
206
|
+
actionClass: string;
|
|
207
|
+
}>, z.ZodObject<{
|
|
208
|
+
kind: z.ZodLiteral<"unknown_action">;
|
|
209
|
+
raw: z.ZodString;
|
|
210
|
+
}, "strip", z.ZodTypeAny, {
|
|
211
|
+
kind: "unknown_action";
|
|
212
|
+
raw: string;
|
|
213
|
+
}, {
|
|
214
|
+
kind: "unknown_action";
|
|
215
|
+
raw: string;
|
|
216
|
+
}>, z.ZodObject<{
|
|
217
|
+
kind: z.ZodLiteral<"unresolved_conflict">;
|
|
218
|
+
conflictId: z.ZodBranded<z.ZodString, "ConflictId">;
|
|
219
|
+
}, "strip", z.ZodTypeAny, {
|
|
220
|
+
kind: "unresolved_conflict";
|
|
221
|
+
conflictId: string & z.BRAND<"ConflictId">;
|
|
222
|
+
}, {
|
|
223
|
+
kind: "unresolved_conflict";
|
|
224
|
+
conflictId: string;
|
|
225
|
+
}>, z.ZodObject<{
|
|
226
|
+
kind: z.ZodLiteral<"visibility_denied">;
|
|
227
|
+
detail: z.ZodString;
|
|
228
|
+
}, "strip", z.ZodTypeAny, {
|
|
229
|
+
kind: "visibility_denied";
|
|
230
|
+
detail: string;
|
|
231
|
+
}, {
|
|
232
|
+
kind: "visibility_denied";
|
|
233
|
+
detail: string;
|
|
234
|
+
}>, z.ZodObject<{
|
|
235
|
+
kind: z.ZodLiteral<"all_checks_passed">;
|
|
236
|
+
/** The atoms the action was authorized against. */
|
|
237
|
+
citedMemoryIds: z.ZodArray<z.ZodBranded<z.ZodString, "MemoryId">, "many">;
|
|
238
|
+
}, "strip", z.ZodTypeAny, {
|
|
239
|
+
kind: "all_checks_passed";
|
|
240
|
+
citedMemoryIds: (string & z.BRAND<"MemoryId">)[];
|
|
241
|
+
}, {
|
|
242
|
+
kind: "all_checks_passed";
|
|
243
|
+
citedMemoryIds: string[];
|
|
244
|
+
}>]>, "many">;
|
|
245
|
+
/** Atoms the decision references (cited, conflicted, etc.). */
|
|
246
|
+
relatedMemoryIds: z.ZodArray<z.ZodBranded<z.ZodString, "MemoryId">, "many">;
|
|
247
|
+
/** Conflicts the decision references. */
|
|
248
|
+
relatedConflictIds: z.ZodArray<z.ZodBranded<z.ZodString, "ConflictId">, "many">;
|
|
249
|
+
/** When the decision was emitted. */
|
|
250
|
+
emittedAt: z.ZodString;
|
|
251
|
+
}, "strip", z.ZodTypeAny, {
|
|
252
|
+
outcome: "ask_human" | "allow_local_shadow" | "fetch_abstain" | "block_local" | "conflict_boundary_packet" | "deny";
|
|
253
|
+
reasons: ({
|
|
254
|
+
kind: "source_check_failed";
|
|
255
|
+
detail: string;
|
|
256
|
+
} | {
|
|
257
|
+
kind: "freshness_not_current";
|
|
258
|
+
observed: string;
|
|
259
|
+
} | {
|
|
260
|
+
kind: "scope_outside_boundary";
|
|
261
|
+
requestedScope: string;
|
|
262
|
+
allowedScope: string;
|
|
263
|
+
} | {
|
|
264
|
+
kind: "promotion_boundary_blocked";
|
|
265
|
+
detail: string;
|
|
266
|
+
} | {
|
|
267
|
+
kind: "forbidden_effect_present";
|
|
268
|
+
effect: string;
|
|
269
|
+
} | {
|
|
270
|
+
kind: "later_restrictive_event";
|
|
271
|
+
event: string;
|
|
272
|
+
} | {
|
|
273
|
+
kind: "tuple_incomplete";
|
|
274
|
+
missingFields: string[];
|
|
275
|
+
} | {
|
|
276
|
+
kind: "sensitive_action";
|
|
277
|
+
actionClass: string;
|
|
278
|
+
} | {
|
|
279
|
+
kind: "unknown_action";
|
|
280
|
+
raw: string;
|
|
281
|
+
} | {
|
|
282
|
+
kind: "unresolved_conflict";
|
|
283
|
+
conflictId: string & z.BRAND<"ConflictId">;
|
|
284
|
+
} | {
|
|
285
|
+
kind: "visibility_denied";
|
|
286
|
+
detail: string;
|
|
287
|
+
} | {
|
|
288
|
+
kind: "all_checks_passed";
|
|
289
|
+
citedMemoryIds: (string & z.BRAND<"MemoryId">)[];
|
|
290
|
+
})[];
|
|
291
|
+
relatedMemoryIds: (string & z.BRAND<"MemoryId">)[];
|
|
292
|
+
relatedConflictIds: (string & z.BRAND<"ConflictId">)[];
|
|
293
|
+
emittedAt: string;
|
|
294
|
+
}, {
|
|
295
|
+
outcome: "ask_human" | "allow_local_shadow" | "fetch_abstain" | "block_local" | "conflict_boundary_packet" | "deny";
|
|
296
|
+
reasons: ({
|
|
297
|
+
kind: "source_check_failed";
|
|
298
|
+
detail: string;
|
|
299
|
+
} | {
|
|
300
|
+
kind: "freshness_not_current";
|
|
301
|
+
observed: string;
|
|
302
|
+
} | {
|
|
303
|
+
kind: "scope_outside_boundary";
|
|
304
|
+
requestedScope: string;
|
|
305
|
+
allowedScope: string;
|
|
306
|
+
} | {
|
|
307
|
+
kind: "promotion_boundary_blocked";
|
|
308
|
+
detail: string;
|
|
309
|
+
} | {
|
|
310
|
+
kind: "forbidden_effect_present";
|
|
311
|
+
effect: string;
|
|
312
|
+
} | {
|
|
313
|
+
kind: "later_restrictive_event";
|
|
314
|
+
event: string;
|
|
315
|
+
} | {
|
|
316
|
+
kind: "tuple_incomplete";
|
|
317
|
+
missingFields: string[];
|
|
318
|
+
} | {
|
|
319
|
+
kind: "sensitive_action";
|
|
320
|
+
actionClass: string;
|
|
321
|
+
} | {
|
|
322
|
+
kind: "unknown_action";
|
|
323
|
+
raw: string;
|
|
324
|
+
} | {
|
|
325
|
+
kind: "unresolved_conflict";
|
|
326
|
+
conflictId: string;
|
|
327
|
+
} | {
|
|
328
|
+
kind: "visibility_denied";
|
|
329
|
+
detail: string;
|
|
330
|
+
} | {
|
|
331
|
+
kind: "all_checks_passed";
|
|
332
|
+
citedMemoryIds: string[];
|
|
333
|
+
})[];
|
|
334
|
+
relatedMemoryIds: string[];
|
|
335
|
+
relatedConflictIds: string[];
|
|
336
|
+
emittedAt: string;
|
|
337
|
+
}>;
|
|
338
|
+
export type Decision = z.infer<typeof DecisionSchema>;
|
|
339
|
+
/** Decision returned by `WriteGate.evaluate(proposal)`. */
|
|
340
|
+
export type WriteGateDecision = Decision;
|
|
341
|
+
/** Decision returned by `RetrievalRouter.recall(query)`. */
|
|
342
|
+
export type RetrievalDecision = Decision;
|
|
343
|
+
/** Decision returned by `tryAct(action, ctx)`. */
|
|
344
|
+
export type ActionDecision = Decision;
|
|
345
|
+
//# sourceMappingURL=decision.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision.d.ts","sourceRoot":"","sources":["../../src/types/decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,qBAAqB,oHAOhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAIpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgD7B,mDAAmD;;;;;;;;IAGrD,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIlE,eAAO,MAAM,cAAc;;IAEzB,+DAA+D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAV7D,mDAAmD;;;;;;;;;IAYrD,+DAA+D;;IAE/D,yCAAyC;;IAEzC,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAErC,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAItD,2DAA2D;AAC3D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACzC,4DAA4D;AAC5D,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACzC,kDAAkD;AAClD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Decision types emitted by the WriteGate, RetrievalRouter, and tryAct().
|
|
3
|
+
*
|
|
4
|
+
* Every decision carries: an outcome verb, a structured reason, and the
|
|
5
|
+
* evidence that supports it. Decisions are values, not exceptions —
|
|
6
|
+
* fail-closed never throws, it returns a structured refusal.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from 'zod';
|
|
9
|
+
import { ConflictIdSchema, MemoryIdSchema } from './primitives.js';
|
|
10
|
+
// -- Decision outcomes (spec §"Retrieval Router outputs", "Receiver decision") -
|
|
11
|
+
export const DecisionOutcomeSchema = z.enum([
|
|
12
|
+
'allow_local_shadow',
|
|
13
|
+
'fetch_abstain',
|
|
14
|
+
'ask_human',
|
|
15
|
+
'block_local',
|
|
16
|
+
'conflict_boundary_packet',
|
|
17
|
+
'deny',
|
|
18
|
+
]);
|
|
19
|
+
// -- Structured reasons -------------------------------------------------------
|
|
20
|
+
/**
|
|
21
|
+
* Why the gate/router/tryAct produced a particular outcome. Discriminated
|
|
22
|
+
* union — every variant has the data needed to debug the decision.
|
|
23
|
+
*/
|
|
24
|
+
export const DecisionReasonSchema = z.discriminatedUnion('kind', [
|
|
25
|
+
z.object({
|
|
26
|
+
kind: z.literal('source_check_failed'),
|
|
27
|
+
detail: z.string().min(1).max(1024),
|
|
28
|
+
}),
|
|
29
|
+
z.object({
|
|
30
|
+
kind: z.literal('freshness_not_current'),
|
|
31
|
+
observed: z.string().min(1),
|
|
32
|
+
}),
|
|
33
|
+
z.object({
|
|
34
|
+
kind: z.literal('scope_outside_boundary'),
|
|
35
|
+
requestedScope: z.string().min(1),
|
|
36
|
+
allowedScope: z.string().min(1),
|
|
37
|
+
}),
|
|
38
|
+
z.object({
|
|
39
|
+
kind: z.literal('promotion_boundary_blocked'),
|
|
40
|
+
detail: z.string().min(1).max(1024),
|
|
41
|
+
}),
|
|
42
|
+
z.object({
|
|
43
|
+
kind: z.literal('forbidden_effect_present'),
|
|
44
|
+
effect: z.string().min(1),
|
|
45
|
+
}),
|
|
46
|
+
z.object({
|
|
47
|
+
kind: z.literal('later_restrictive_event'),
|
|
48
|
+
event: z.string().min(1),
|
|
49
|
+
}),
|
|
50
|
+
z.object({
|
|
51
|
+
kind: z.literal('tuple_incomplete'),
|
|
52
|
+
missingFields: z.array(z.string()).min(1),
|
|
53
|
+
}),
|
|
54
|
+
z.object({
|
|
55
|
+
kind: z.literal('sensitive_action'),
|
|
56
|
+
actionClass: z.string().min(1),
|
|
57
|
+
}),
|
|
58
|
+
z.object({
|
|
59
|
+
kind: z.literal('unknown_action'),
|
|
60
|
+
raw: z.string().min(1),
|
|
61
|
+
}),
|
|
62
|
+
z.object({
|
|
63
|
+
kind: z.literal('unresolved_conflict'),
|
|
64
|
+
conflictId: ConflictIdSchema,
|
|
65
|
+
}),
|
|
66
|
+
z.object({
|
|
67
|
+
kind: z.literal('visibility_denied'),
|
|
68
|
+
detail: z.string().min(1),
|
|
69
|
+
}),
|
|
70
|
+
z.object({
|
|
71
|
+
kind: z.literal('all_checks_passed'),
|
|
72
|
+
/** The atoms the action was authorized against. */
|
|
73
|
+
citedMemoryIds: z.array(MemoryIdSchema),
|
|
74
|
+
}),
|
|
75
|
+
]);
|
|
76
|
+
// -- The decision envelope ----------------------------------------------------
|
|
77
|
+
export const DecisionSchema = z.object({
|
|
78
|
+
outcome: DecisionOutcomeSchema,
|
|
79
|
+
/** Why this outcome was chosen. Multiple reasons can stack. */
|
|
80
|
+
reasons: z.array(DecisionReasonSchema).min(1),
|
|
81
|
+
/** Atoms the decision references (cited, conflicted, etc.). */
|
|
82
|
+
relatedMemoryIds: z.array(MemoryIdSchema),
|
|
83
|
+
/** Conflicts the decision references. */
|
|
84
|
+
relatedConflictIds: z.array(ConflictIdSchema),
|
|
85
|
+
/** When the decision was emitted. */
|
|
86
|
+
emittedAt: z.string().datetime({ offset: false }),
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=decision.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision.js","sourceRoot":"","sources":["../../src/types/decision.ts"],"names":[],"mappings":"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"}
|