@sentropic/h2a 0.1.0 → 0.1.6
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 +10 -0
- package/dist/abc.d.ts +214 -0
- package/dist/abc.d.ts.map +1 -0
- package/dist/abc.js +273 -0
- package/dist/abc.js.map +1 -0
- package/dist/artifacts.d.ts +10 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +147 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/authority.d.ts +21 -0
- package/dist/authority.d.ts.map +1 -0
- package/dist/authority.js +73 -0
- package/dist/authority.js.map +1 -0
- package/dist/canonical.d.ts +3 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +38 -0
- package/dist/canonical.js.map +1 -0
- package/dist/contractual.d.ts +52 -0
- package/dist/contractual.d.ts.map +1 -0
- package/dist/contractual.js +126 -0
- package/dist/contractual.js.map +1 -0
- package/dist/escalation.d.ts +40 -0
- package/dist/escalation.d.ts.map +1 -0
- package/dist/escalation.js +114 -0
- package/dist/escalation.js.map +1 -0
- package/dist/fixtures-index.d.ts +16 -0
- package/dist/fixtures-index.d.ts.map +1 -0
- package/dist/fixtures-index.js +11 -0
- package/dist/fixtures-index.js.map +1 -0
- package/dist/governance-boundary.d.ts +118 -0
- package/dist/governance-boundary.d.ts.map +1 -0
- package/dist/governance-boundary.js +143 -0
- package/dist/governance-boundary.js.map +1 -0
- package/dist/index.d.ts +21 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/journal.d.ts +37 -0
- package/dist/journal.d.ts.map +1 -0
- package/dist/journal.js +73 -0
- package/dist/journal.js.map +1 -0
- package/dist/multi-human.d.ts +106 -0
- package/dist/multi-human.d.ts.map +1 -0
- package/dist/multi-human.js +116 -0
- package/dist/multi-human.js.map +1 -0
- package/dist/signature.d.ts +8 -0
- package/dist/signature.d.ts.map +1 -0
- package/dist/signature.js +39 -0
- package/dist/signature.js.map +1 -0
- package/dist/types.d.ts +105 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -1
- package/dist/types.js.map +1 -1
- package/fixtures/authority.json +1 -0
- package/fixtures/contract.json +1 -0
- package/fixtures/enforcement-plan.json +1 -0
- package/fixtures/engagement.json +1 -0
- package/fixtures/mandate.json +1 -0
- package/fixtures/manifest.json +38 -0
- package/fixtures/policy.json +1 -0
- package/package.json +4 -3
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
export const H2A_ESCALATION_CHANNELS = [
|
|
2
|
+
"advise",
|
|
3
|
+
"decide",
|
|
4
|
+
"alert"
|
|
5
|
+
];
|
|
6
|
+
export const H2A_ESCALATION_AUTHORITY_KINDS = [
|
|
7
|
+
"PRINCIPAL",
|
|
8
|
+
"EXECUTIF",
|
|
9
|
+
"QUORUM",
|
|
10
|
+
"CONTROL",
|
|
11
|
+
"EXTERNAL_AUTHORITY",
|
|
12
|
+
"RECOURSE"
|
|
13
|
+
];
|
|
14
|
+
function isEscalationChannel(value) {
|
|
15
|
+
return H2A_ESCALATION_CHANNELS.includes(value);
|
|
16
|
+
}
|
|
17
|
+
function isEscalationAuthorityKind(value) {
|
|
18
|
+
return (typeof value === "string" &&
|
|
19
|
+
H2A_ESCALATION_AUTHORITY_KINDS.includes(value));
|
|
20
|
+
}
|
|
21
|
+
function withOptionalRequestFields(base, request, routeDomain) {
|
|
22
|
+
return {
|
|
23
|
+
...base,
|
|
24
|
+
...(request.trigger ? { trigger: request.trigger } : {}),
|
|
25
|
+
...(request.domain && routeDomain === request.domain
|
|
26
|
+
? { domain: request.domain }
|
|
27
|
+
: {})
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function resolveEscalationTarget(plan, request, options = {}) {
|
|
31
|
+
if (!isEscalationChannel(request.channel)) {
|
|
32
|
+
return {
|
|
33
|
+
ok: false,
|
|
34
|
+
scope: request.scope,
|
|
35
|
+
channel: request.channel,
|
|
36
|
+
trigger: request.trigger,
|
|
37
|
+
domain: request.domain,
|
|
38
|
+
issues: [
|
|
39
|
+
`unknown escalation channel "${request.channel}" (expected advise|decide|alert)`
|
|
40
|
+
]
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const candidates = plan.escalations
|
|
44
|
+
.map((route, index) => {
|
|
45
|
+
if (typeof route.target !== "string" || route.target.length === 0) {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
if (route.channel !== undefined && route.channel !== request.channel) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
if (route.scope !== undefined && route.scope !== request.scope) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
if (request.trigger && route.trigger !== request.trigger) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
if (request.domain &&
|
|
58
|
+
route.domain !== undefined &&
|
|
59
|
+
route.domain !== request.domain) {
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
let score = 0;
|
|
63
|
+
if (request.domain && route.domain === request.domain)
|
|
64
|
+
score += 8;
|
|
65
|
+
if (request.trigger && route.trigger === request.trigger)
|
|
66
|
+
score += 4;
|
|
67
|
+
if (route.scope === request.scope)
|
|
68
|
+
score += 2;
|
|
69
|
+
if (route.channel === request.channel)
|
|
70
|
+
score += 1;
|
|
71
|
+
return { route, index, score };
|
|
72
|
+
})
|
|
73
|
+
.filter((entry) => entry !== undefined)
|
|
74
|
+
.sort((a, b) => b.score - a.score || a.index - b.index);
|
|
75
|
+
const selected = candidates[0]?.route;
|
|
76
|
+
if (selected) {
|
|
77
|
+
return withOptionalRequestFields({
|
|
78
|
+
ok: true,
|
|
79
|
+
scope: request.scope,
|
|
80
|
+
channel: request.channel,
|
|
81
|
+
authorityKind: isEscalationAuthorityKind(selected.authorityKind)
|
|
82
|
+
? selected.authorityKind
|
|
83
|
+
: "PRINCIPAL",
|
|
84
|
+
target: selected.target,
|
|
85
|
+
source: "enforcement-plan"
|
|
86
|
+
}, request, selected.domain);
|
|
87
|
+
}
|
|
88
|
+
if (options.fallbackPrincipal) {
|
|
89
|
+
return withOptionalRequestFields({
|
|
90
|
+
ok: true,
|
|
91
|
+
scope: request.scope,
|
|
92
|
+
channel: request.channel,
|
|
93
|
+
authorityKind: "PRINCIPAL",
|
|
94
|
+
target: options.fallbackPrincipal,
|
|
95
|
+
source: "fallback-principal"
|
|
96
|
+
}, request);
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
ok: false,
|
|
100
|
+
scope: request.scope,
|
|
101
|
+
channel: request.channel,
|
|
102
|
+
trigger: request.trigger,
|
|
103
|
+
domain: request.domain,
|
|
104
|
+
issues: [
|
|
105
|
+
`no escalation target for scope=${request.scope}, channel=${request.channel}${request.trigger ? `, trigger=${request.trigger}` : ""}${request.domain ? `, domain=${request.domain}` : ""}`
|
|
106
|
+
]
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
export function assertEscalationTargetResolved(resolution) {
|
|
110
|
+
if (!resolution.ok) {
|
|
111
|
+
throw new Error(`Escalation target unresolved: ${resolution.issues.join("; ")}`);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=escalation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalation.js","sourceRoot":"","sources":["../src/escalation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { H2AArtifactKind } from "./types.js";
|
|
2
|
+
export interface H2ACanonicalFixtureManifestEntry {
|
|
3
|
+
/** Path relative to the package root (e.g. `fixtures/contract.json`). */
|
|
4
|
+
path: string;
|
|
5
|
+
/** The canonical {@link H2AArtifactKind} this fixture is an instance of. */
|
|
6
|
+
kind: H2AArtifactKind;
|
|
7
|
+
/** The fixture artifact's own `id`. */
|
|
8
|
+
id: string;
|
|
9
|
+
/**
|
|
10
|
+
* SHA-256 hex of the file content bytes (no `sha256:` prefix). The full
|
|
11
|
+
* canonical hash is `"sha256:" + sha256` and matches `computeHash(parsed)`.
|
|
12
|
+
*/
|
|
13
|
+
sha256: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const H2A_CANONICAL_FIXTURES: readonly H2ACanonicalFixtureManifestEntry[];
|
|
16
|
+
//# sourceMappingURL=fixtures-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures-index.d.ts","sourceRoot":"","sources":["../src/fixtures-index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,WAAW,gCAAgC;IAC/C,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,EAAE,eAAe,CAAC;IACtB,uCAAuC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAUD,eAAO,MAAM,sBAAsB,EAAE,SAAS,gCAAgC,EACX,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
// `dist/fixtures-index.js` → package root is one level up; fixtures sit at
|
|
6
|
+
// `<package>/fixtures/` (DEC-035). Loaded once at module init from disk so
|
|
7
|
+
// the canonical bytes never drift between source and runtime.
|
|
8
|
+
const MANIFEST_PATH = join(HERE, "..", "fixtures", "manifest.json");
|
|
9
|
+
const parsed = JSON.parse(readFileSync(MANIFEST_PATH, "utf8"));
|
|
10
|
+
export const H2A_CANONICAL_FIXTURES = Object.freeze(parsed.map((entry) => Object.freeze({ ...entry })));
|
|
11
|
+
//# sourceMappingURL=fixtures-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures-index.js","sourceRoot":"","sources":["../src/fixtures-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAkBzC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACrD,2EAA2E;AAC3E,2EAA2E;AAC3E,8DAA8D;AAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAEpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAuC,CAAC;AAErG,MAAM,CAAC,MAAM,sBAAsB,GACjC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
export declare const H2A_GOVERNANCE_BOUNDARY_LAYERS: readonly ["PROTOCOL", "POLICY", "IMPLEMENTATION"];
|
|
2
|
+
export declare const H2A_GOVERNANCE_BOUNDARY_STATUSES: readonly ["v1-shipped", "v1-open", "v2-deferred"];
|
|
3
|
+
export type H2AGovernanceBoundaryLayer = (typeof H2A_GOVERNANCE_BOUNDARY_LAYERS)[number];
|
|
4
|
+
export type H2AGovernanceBoundaryStatus = (typeof H2A_GOVERNANCE_BOUNDARY_STATUSES)[number];
|
|
5
|
+
export interface H2AGovernanceBoundaryItemDescriptor {
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly layer: H2AGovernanceBoundaryLayer;
|
|
8
|
+
readonly status: H2AGovernanceBoundaryStatus;
|
|
9
|
+
readonly summary: string;
|
|
10
|
+
readonly references: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export declare const H2A_GOVERNANCE_BOUNDARY_ITEMS: readonly [{
|
|
13
|
+
readonly id: "protocol-identity";
|
|
14
|
+
readonly layer: "PROTOCOL";
|
|
15
|
+
readonly status: "v1-shipped";
|
|
16
|
+
readonly summary: "Protocol id, version, envelope frame, and canonical public vocabulary.";
|
|
17
|
+
readonly references: readonly ["REQ-001", "DEC-010"];
|
|
18
|
+
}, {
|
|
19
|
+
readonly id: "canonical-artifacts";
|
|
20
|
+
readonly layer: "PROTOCOL";
|
|
21
|
+
readonly status: "v1-shipped";
|
|
22
|
+
readonly summary: "Artifact kinds, guards, canonical JSON, hashes, and byte fixtures.";
|
|
23
|
+
readonly references: readonly ["DEC-031", "DEC-035", "DEC-039"];
|
|
24
|
+
}, {
|
|
25
|
+
readonly id: "mandated-signatures";
|
|
26
|
+
readonly layer: "PROTOCOL";
|
|
27
|
+
readonly status: "v1-shipped";
|
|
28
|
+
readonly summary: "A scope never signs; an authorized instance signs through role, mandate, and signature.";
|
|
29
|
+
readonly references: readonly ["DEC-021", "DEC-035"];
|
|
30
|
+
}, {
|
|
31
|
+
readonly id: "negotiation-ledger";
|
|
32
|
+
readonly layer: "PROTOCOL";
|
|
33
|
+
readonly status: "v1-shipped";
|
|
34
|
+
readonly summary: "Negotiation state machine, append-only journal, canonical artifact hash, and stabilization rule.";
|
|
35
|
+
readonly references: readonly ["DEC-019", "DEC-022", "DEC-033"];
|
|
36
|
+
}, {
|
|
37
|
+
readonly id: "scope-authority-escalation";
|
|
38
|
+
readonly layer: "PROTOCOL";
|
|
39
|
+
readonly status: "v1-shipped";
|
|
40
|
+
readonly summary: "Escalation channels and target resolution by scope authority.";
|
|
41
|
+
readonly references: readonly ["DEC-012", "DEC-024", "DEC-040"];
|
|
42
|
+
}, {
|
|
43
|
+
readonly id: "abc-model-profiles";
|
|
44
|
+
readonly layer: "PROTOCOL";
|
|
45
|
+
readonly status: "v1-shipped";
|
|
46
|
+
readonly summary: "Stable ABC model profile ids and compatibility audit vocabulary.";
|
|
47
|
+
readonly references: readonly ["DEC-041"];
|
|
48
|
+
}, {
|
|
49
|
+
readonly id: "multi-human-mode-taxonomy";
|
|
50
|
+
readonly layer: "PROTOCOL";
|
|
51
|
+
readonly status: "v1-shipped";
|
|
52
|
+
readonly summary: "Deterministic taxonomy for peer, delegated, shared, federated, quorum, and public-authority modes.";
|
|
53
|
+
readonly references: readonly ["DEC-042"];
|
|
54
|
+
}, {
|
|
55
|
+
readonly id: "policy-precedence";
|
|
56
|
+
readonly layer: "POLICY";
|
|
57
|
+
readonly status: "v1-open";
|
|
58
|
+
readonly summary: "Conflict precedence between local, contractual, federated, and public policies is not hard-coded in V1.";
|
|
59
|
+
readonly references: readonly ["REQ-041", "DEC-039", "DEC-041"];
|
|
60
|
+
}, {
|
|
61
|
+
readonly id: "controlled-disclosure-profiles";
|
|
62
|
+
readonly layer: "POLICY";
|
|
63
|
+
readonly status: "v1-open";
|
|
64
|
+
readonly summary: "Redaction levels, evidence packages, and CONTROL disclosure limits remain policy profiles.";
|
|
65
|
+
readonly references: readonly ["REQ-070", "DEC-041"];
|
|
66
|
+
}, {
|
|
67
|
+
readonly id: "recurring-obligation-cadence";
|
|
68
|
+
readonly layer: "POLICY";
|
|
69
|
+
readonly status: "v1-open";
|
|
70
|
+
readonly summary: "Cadence, grace periods, and reporting thresholds for recurring obligations are domain policy.";
|
|
71
|
+
readonly references: readonly ["REQ-063", "DEC-041"];
|
|
72
|
+
}, {
|
|
73
|
+
readonly id: "mandataire-assignment";
|
|
74
|
+
readonly layer: "POLICY";
|
|
75
|
+
readonly status: "v1-open";
|
|
76
|
+
readonly summary: "The protocol requires neutral presentation where applicable; assigning an instance is governance policy.";
|
|
77
|
+
readonly references: readonly ["DEC-005", "DEC-013"];
|
|
78
|
+
}, {
|
|
79
|
+
readonly id: "conflict-blocking-thresholds";
|
|
80
|
+
readonly layer: "POLICY";
|
|
81
|
+
readonly status: "v1-open";
|
|
82
|
+
readonly summary: "Which conflicts block signatures versus escalate is a policy decision until a future engine is adopted.";
|
|
83
|
+
readonly references: readonly ["REQ-054", "DEC-041"];
|
|
84
|
+
}, {
|
|
85
|
+
readonly id: "local-files-store";
|
|
86
|
+
readonly layer: "IMPLEMENTATION";
|
|
87
|
+
readonly status: "v1-shipped";
|
|
88
|
+
readonly summary: "The local-files layout, schema sentinel, and advisory locks are the reference V1 runtime, not the protocol itself.";
|
|
89
|
+
readonly references: readonly ["DEC-031", "DEC-036"];
|
|
90
|
+
}, {
|
|
91
|
+
readonly id: "mcp-stdio-server";
|
|
92
|
+
readonly layer: "IMPLEMENTATION";
|
|
93
|
+
readonly status: "v1-shipped";
|
|
94
|
+
readonly summary: "The stdio JSON-RPC MCP server is a transport binding over the protocol tools.";
|
|
95
|
+
readonly references: readonly ["DEC-026", "DEC-034"];
|
|
96
|
+
}, {
|
|
97
|
+
readonly id: "host-setup-snippets";
|
|
98
|
+
readonly layer: "IMPLEMENTATION";
|
|
99
|
+
readonly status: "v1-shipped";
|
|
100
|
+
readonly summary: "Codex and Claude config snippets are replaceable host adapter behavior.";
|
|
101
|
+
readonly references: readonly ["DEC-028", "DEC-037"];
|
|
102
|
+
}, {
|
|
103
|
+
readonly id: "cli-json-contract";
|
|
104
|
+
readonly layer: "IMPLEMENTATION";
|
|
105
|
+
readonly status: "v1-shipped";
|
|
106
|
+
readonly summary: "CLI JSON envelopes and exit codes are a stable implementation contract for the shipped CLI.";
|
|
107
|
+
readonly references: readonly ["DEC-034"];
|
|
108
|
+
}, {
|
|
109
|
+
readonly id: "transport-auth";
|
|
110
|
+
readonly layer: "IMPLEMENTATION";
|
|
111
|
+
readonly status: "v2-deferred";
|
|
112
|
+
readonly summary: "mTLS, signed bearer, or equivalent multi-user transport auth is deferred to V2.";
|
|
113
|
+
readonly references: readonly ["DEC-032"];
|
|
114
|
+
}];
|
|
115
|
+
export type H2AGovernanceBoundaryItemId = (typeof H2A_GOVERNANCE_BOUNDARY_ITEMS)[number]["id"];
|
|
116
|
+
export declare function classifyGovernanceBoundary(itemId: string): H2AGovernanceBoundaryItemDescriptor | undefined;
|
|
117
|
+
export declare function listGovernanceBoundaryItems(layer?: string): readonly H2AGovernanceBoundaryItemDescriptor[];
|
|
118
|
+
//# sourceMappingURL=governance-boundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance-boundary.d.ts","sourceRoot":"","sources":["../src/governance-boundary.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,mDAIjC,CAAC;AAEX,eAAO,MAAM,gCAAgC,mDAInC,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,CAAC,OAAO,8BAA8B,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,0BAA0B,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,2BAA2B,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwH0B,CAAC;AAErE,MAAM,MAAM,2BAA2B,GACrC,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,GACb,mCAAmC,GAAG,SAAS,CAEjD;AAED,wBAAgB,2BAA2B,CACzC,KAAK,CAAC,EAAE,MAAM,GACb,SAAS,mCAAmC,EAAE,CAUhD"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
export const H2A_GOVERNANCE_BOUNDARY_LAYERS = [
|
|
2
|
+
"PROTOCOL",
|
|
3
|
+
"POLICY",
|
|
4
|
+
"IMPLEMENTATION"
|
|
5
|
+
];
|
|
6
|
+
export const H2A_GOVERNANCE_BOUNDARY_STATUSES = [
|
|
7
|
+
"v1-shipped",
|
|
8
|
+
"v1-open",
|
|
9
|
+
"v2-deferred"
|
|
10
|
+
];
|
|
11
|
+
export const H2A_GOVERNANCE_BOUNDARY_ITEMS = Object.freeze([
|
|
12
|
+
{
|
|
13
|
+
id: "protocol-identity",
|
|
14
|
+
layer: "PROTOCOL",
|
|
15
|
+
status: "v1-shipped",
|
|
16
|
+
summary: "Protocol id, version, envelope frame, and canonical public vocabulary.",
|
|
17
|
+
references: ["REQ-001", "DEC-010"]
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: "canonical-artifacts",
|
|
21
|
+
layer: "PROTOCOL",
|
|
22
|
+
status: "v1-shipped",
|
|
23
|
+
summary: "Artifact kinds, guards, canonical JSON, hashes, and byte fixtures.",
|
|
24
|
+
references: ["DEC-031", "DEC-035", "DEC-039"]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "mandated-signatures",
|
|
28
|
+
layer: "PROTOCOL",
|
|
29
|
+
status: "v1-shipped",
|
|
30
|
+
summary: "A scope never signs; an authorized instance signs through role, mandate, and signature.",
|
|
31
|
+
references: ["DEC-021", "DEC-035"]
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "negotiation-ledger",
|
|
35
|
+
layer: "PROTOCOL",
|
|
36
|
+
status: "v1-shipped",
|
|
37
|
+
summary: "Negotiation state machine, append-only journal, canonical artifact hash, and stabilization rule.",
|
|
38
|
+
references: ["DEC-019", "DEC-022", "DEC-033"]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: "scope-authority-escalation",
|
|
42
|
+
layer: "PROTOCOL",
|
|
43
|
+
status: "v1-shipped",
|
|
44
|
+
summary: "Escalation channels and target resolution by scope authority.",
|
|
45
|
+
references: ["DEC-012", "DEC-024", "DEC-040"]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "abc-model-profiles",
|
|
49
|
+
layer: "PROTOCOL",
|
|
50
|
+
status: "v1-shipped",
|
|
51
|
+
summary: "Stable ABC model profile ids and compatibility audit vocabulary.",
|
|
52
|
+
references: ["DEC-041"]
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: "multi-human-mode-taxonomy",
|
|
56
|
+
layer: "PROTOCOL",
|
|
57
|
+
status: "v1-shipped",
|
|
58
|
+
summary: "Deterministic taxonomy for peer, delegated, shared, federated, quorum, and public-authority modes.",
|
|
59
|
+
references: ["DEC-042"]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
id: "policy-precedence",
|
|
63
|
+
layer: "POLICY",
|
|
64
|
+
status: "v1-open",
|
|
65
|
+
summary: "Conflict precedence between local, contractual, federated, and public policies is not hard-coded in V1.",
|
|
66
|
+
references: ["REQ-041", "DEC-039", "DEC-041"]
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
id: "controlled-disclosure-profiles",
|
|
70
|
+
layer: "POLICY",
|
|
71
|
+
status: "v1-open",
|
|
72
|
+
summary: "Redaction levels, evidence packages, and CONTROL disclosure limits remain policy profiles.",
|
|
73
|
+
references: ["REQ-070", "DEC-041"]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: "recurring-obligation-cadence",
|
|
77
|
+
layer: "POLICY",
|
|
78
|
+
status: "v1-open",
|
|
79
|
+
summary: "Cadence, grace periods, and reporting thresholds for recurring obligations are domain policy.",
|
|
80
|
+
references: ["REQ-063", "DEC-041"]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: "mandataire-assignment",
|
|
84
|
+
layer: "POLICY",
|
|
85
|
+
status: "v1-open",
|
|
86
|
+
summary: "The protocol requires neutral presentation where applicable; assigning an instance is governance policy.",
|
|
87
|
+
references: ["DEC-005", "DEC-013"]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
id: "conflict-blocking-thresholds",
|
|
91
|
+
layer: "POLICY",
|
|
92
|
+
status: "v1-open",
|
|
93
|
+
summary: "Which conflicts block signatures versus escalate is a policy decision until a future engine is adopted.",
|
|
94
|
+
references: ["REQ-054", "DEC-041"]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
id: "local-files-store",
|
|
98
|
+
layer: "IMPLEMENTATION",
|
|
99
|
+
status: "v1-shipped",
|
|
100
|
+
summary: "The local-files layout, schema sentinel, and advisory locks are the reference V1 runtime, not the protocol itself.",
|
|
101
|
+
references: ["DEC-031", "DEC-036"]
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
id: "mcp-stdio-server",
|
|
105
|
+
layer: "IMPLEMENTATION",
|
|
106
|
+
status: "v1-shipped",
|
|
107
|
+
summary: "The stdio JSON-RPC MCP server is a transport binding over the protocol tools.",
|
|
108
|
+
references: ["DEC-026", "DEC-034"]
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: "host-setup-snippets",
|
|
112
|
+
layer: "IMPLEMENTATION",
|
|
113
|
+
status: "v1-shipped",
|
|
114
|
+
summary: "Codex and Claude config snippets are replaceable host adapter behavior.",
|
|
115
|
+
references: ["DEC-028", "DEC-037"]
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
id: "cli-json-contract",
|
|
119
|
+
layer: "IMPLEMENTATION",
|
|
120
|
+
status: "v1-shipped",
|
|
121
|
+
summary: "CLI JSON envelopes and exit codes are a stable implementation contract for the shipped CLI.",
|
|
122
|
+
references: ["DEC-034"]
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: "transport-auth",
|
|
126
|
+
layer: "IMPLEMENTATION",
|
|
127
|
+
status: "v2-deferred",
|
|
128
|
+
summary: "mTLS, signed bearer, or equivalent multi-user transport auth is deferred to V2.",
|
|
129
|
+
references: ["DEC-032"]
|
|
130
|
+
}
|
|
131
|
+
]);
|
|
132
|
+
export function classifyGovernanceBoundary(itemId) {
|
|
133
|
+
return H2A_GOVERNANCE_BOUNDARY_ITEMS.find((item) => item.id === itemId);
|
|
134
|
+
}
|
|
135
|
+
export function listGovernanceBoundaryItems(layer) {
|
|
136
|
+
if (!layer)
|
|
137
|
+
return H2A_GOVERNANCE_BOUNDARY_ITEMS;
|
|
138
|
+
if (!H2A_GOVERNANCE_BOUNDARY_LAYERS.includes(layer)) {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
return H2A_GOVERNANCE_BOUNDARY_ITEMS.filter((item) => item.layer === layer);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=governance-boundary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance-boundary.js","sourceRoot":"","sources":["../src/governance-boundary.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
|
+
export { H2A_ABC_MODEL_CAPABILITIES, H2A_ABC_MODEL_IDS, H2A_ABC_MODEL_PROFILES, auditAbcModelCompatibility, getAbcModelProfile } from "./abc.js";
|
|
2
|
+
export type { H2AAbcModelCapability, H2AAbcModelCapabilityDescriptor, H2AAbcModelCapabilityStatus, H2AAbcModelCompatibilityResult, H2AAbcModelId, H2AAbcModelProfileDescriptor, H2AAbcTopology, H2AAbcTrack } from "./abc.js";
|
|
3
|
+
export { H2A_MULTI_HUMAN_MODE_IDS, H2A_MULTI_HUMAN_MODES, getMultiHumanMode, selectMultiHumanMode } from "./multi-human.js";
|
|
4
|
+
export type { H2AMultiHumanChannel, H2AMultiHumanModeDescriptor, H2AMultiHumanModeId, H2AMultiHumanModeRequest, H2AMultiHumanModeSelection, H2AMultiHumanModeSelectionFailure, H2AMultiHumanModeSelectionResult } from "./multi-human.js";
|
|
5
|
+
export { H2A_GOVERNANCE_BOUNDARY_ITEMS, H2A_GOVERNANCE_BOUNDARY_LAYERS, H2A_GOVERNANCE_BOUNDARY_STATUSES, classifyGovernanceBoundary, listGovernanceBoundaryItems } from "./governance-boundary.js";
|
|
6
|
+
export type { H2AGovernanceBoundaryItemDescriptor, H2AGovernanceBoundaryItemId, H2AGovernanceBoundaryLayer, H2AGovernanceBoundaryStatus } from "./governance-boundary.js";
|
|
1
7
|
export { createEnvelope, isH2AEnvelope } from "./envelope.js";
|
|
2
8
|
export { assertValidNegotiationState } from "./negotiation.js";
|
|
3
|
-
export {
|
|
4
|
-
export
|
|
9
|
+
export { canonicalize, computeHash } from "./canonical.js";
|
|
10
|
+
export { signCanonical, verifyCanonical } from "./signature.js";
|
|
11
|
+
export type { SignOptions } from "./signature.js";
|
|
12
|
+
export { appendJournalEntry, createJournalEntry, journalEntryAsCanonicalString, verifyJournalChain } from "./journal.js";
|
|
13
|
+
export type { H2AJournalEntry, H2AJournalPayload, H2AJournalVerification } from "./journal.js";
|
|
14
|
+
export { isAmendment, isAuthority, isContract, isEnforcementPlan, isEngagement, isMandate, isPolicy, isSignature } from "./artifacts.js";
|
|
15
|
+
export { H2A_AUTHORITY_MATRIX, assertCanSignArtifactKind, canSignArtifactKind } from "./authority.js";
|
|
16
|
+
export { H2A_CONTRACTUAL_ARTIFACT_PROFILES, assertContractualArtifactInvariants, auditContractualArtifact, getContractualArtifactProfile } from "./contractual.js";
|
|
17
|
+
export type { H2AContractualArtifact, H2AContractualArtifactAuditResult, H2AContractualArtifactKind, H2AContractualArtifactProfile, H2AContractualArtifactProfileDescriptor } from "./contractual.js";
|
|
18
|
+
export { H2A_ESCALATION_AUTHORITY_KINDS, H2A_ESCALATION_CHANNELS, assertEscalationTargetResolved, resolveEscalationTarget } from "./escalation.js";
|
|
19
|
+
export type { H2AEscalationAuthorityKind, H2AEscalationChannel, H2AEscalationResolution, H2AEscalationResolveOptions, H2AEscalationResolvedTarget, H2AEscalationTargetRequest, H2AEscalationUnresolvedTarget } from "./escalation.js";
|
|
20
|
+
export { H2A_CANONICAL_FIXTURES } from "./fixtures-index.js";
|
|
21
|
+
export type { H2ACanonicalFixtureManifestEntry } from "./fixtures-index.js";
|
|
22
|
+
export { H2A_ARTIFACT_KINDS, H2A_AUTHORITY_KINDS, H2A_ENVELOPE_TYPES, H2A_NEGOTIATION_STATES, H2A_POLICY_ADOPTION_MODES, H2A_PROTOCOL, H2A_ROLES, H2A_VERSION } from "./types.js";
|
|
23
|
+
export type { H2AActorRef, H2AActorRegistration, H2AAmendment, H2AArtifactKind, H2AAuthority, H2AAuthorityKind, H2AContract, H2AEnforcementPlan, H2AEngagement, H2AEnvelope, H2AEnvelopeType, H2AMandate, H2ANegotiationRecord, H2ANegotiationState, H2APolicy, H2APolicyAdoptionMode, H2ARole, H2ASignature } from "./types.js";
|
|
5
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,eAAe,EACf,oBAAoB,EACpB,mBAAmB,EACnB,OAAO,EACP,YAAY,EACb,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
|
+
export { H2A_ABC_MODEL_CAPABILITIES, H2A_ABC_MODEL_IDS, H2A_ABC_MODEL_PROFILES, auditAbcModelCompatibility, getAbcModelProfile } from "./abc.js";
|
|
2
|
+
export { H2A_MULTI_HUMAN_MODE_IDS, H2A_MULTI_HUMAN_MODES, getMultiHumanMode, selectMultiHumanMode } from "./multi-human.js";
|
|
3
|
+
export { H2A_GOVERNANCE_BOUNDARY_ITEMS, H2A_GOVERNANCE_BOUNDARY_LAYERS, H2A_GOVERNANCE_BOUNDARY_STATUSES, classifyGovernanceBoundary, listGovernanceBoundaryItems } from "./governance-boundary.js";
|
|
1
4
|
export { createEnvelope, isH2AEnvelope } from "./envelope.js";
|
|
2
5
|
export { assertValidNegotiationState } from "./negotiation.js";
|
|
3
|
-
export {
|
|
6
|
+
export { canonicalize, computeHash } from "./canonical.js";
|
|
7
|
+
export { signCanonical, verifyCanonical } from "./signature.js";
|
|
8
|
+
export { appendJournalEntry, createJournalEntry, journalEntryAsCanonicalString, verifyJournalChain } from "./journal.js";
|
|
9
|
+
export { isAmendment, isAuthority, isContract, isEnforcementPlan, isEngagement, isMandate, isPolicy, isSignature } from "./artifacts.js";
|
|
10
|
+
export { H2A_AUTHORITY_MATRIX, assertCanSignArtifactKind, canSignArtifactKind } from "./authority.js";
|
|
11
|
+
export { H2A_CONTRACTUAL_ARTIFACT_PROFILES, assertContractualArtifactInvariants, auditContractualArtifact, getContractualArtifactProfile } from "./contractual.js";
|
|
12
|
+
export { H2A_ESCALATION_AUTHORITY_KINDS, H2A_ESCALATION_CHANNELS, assertEscalationTargetResolved, resolveEscalationTarget } from "./escalation.js";
|
|
13
|
+
export { H2A_CANONICAL_FIXTURES } from "./fixtures-index.js";
|
|
14
|
+
export { H2A_ARTIFACT_KINDS, H2A_AUTHORITY_KINDS, H2A_ENVELOPE_TYPES, H2A_NEGOTIATION_STATES, H2A_POLICY_ADOPTION_MODES, H2A_PROTOCOL, H2A_ROLES, H2A_VERSION } from "./types.js";
|
|
4
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAWlB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAU1B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,gCAAgC,EAChC,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EACL,cAAc,EACd,aAAa,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,6BAA6B,EAC7B,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAMtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iCAAiC,EACjC,mCAAmC,EACnC,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAUzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { H2A_PROTOCOL, H2A_VERSION, type H2AActorRef, type H2AEnvelopeType, type H2ASignature } from "./types.js";
|
|
2
|
+
export interface H2AJournalPayload<TBody = unknown> {
|
|
3
|
+
id: string;
|
|
4
|
+
type: H2AEnvelopeType;
|
|
5
|
+
actor: H2AActorRef;
|
|
6
|
+
body: TBody;
|
|
7
|
+
createdAt: string;
|
|
8
|
+
target?: Partial<H2AActorRef>;
|
|
9
|
+
artifactKind?: string;
|
|
10
|
+
contractId?: string;
|
|
11
|
+
engagementId?: string;
|
|
12
|
+
negotiationId?: string;
|
|
13
|
+
policyIds?: string[];
|
|
14
|
+
baseArtifactHash?: string;
|
|
15
|
+
causationId?: string;
|
|
16
|
+
correlationId?: string;
|
|
17
|
+
signatures?: H2ASignature[];
|
|
18
|
+
}
|
|
19
|
+
export interface H2AJournalEntry<TBody = unknown> extends H2AJournalPayload<TBody> {
|
|
20
|
+
protocol: typeof H2A_PROTOCOL;
|
|
21
|
+
version: typeof H2A_VERSION;
|
|
22
|
+
sequence: number;
|
|
23
|
+
prevHash?: string;
|
|
24
|
+
contentHash: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function createJournalEntry<TBody>(payload: H2AJournalPayload<TBody>): H2AJournalEntry<TBody>;
|
|
27
|
+
export declare function appendJournalEntry<TBody>(previous: H2AJournalEntry<unknown>, payload: H2AJournalPayload<TBody>): H2AJournalEntry<TBody>;
|
|
28
|
+
export type H2AJournalVerification = {
|
|
29
|
+
ok: true;
|
|
30
|
+
} | {
|
|
31
|
+
ok: false;
|
|
32
|
+
index: number;
|
|
33
|
+
reason: string;
|
|
34
|
+
};
|
|
35
|
+
export declare function verifyJournalChain(entries: ReadonlyArray<H2AJournalEntry<unknown>>): H2AJournalVerification;
|
|
36
|
+
export declare function journalEntryAsCanonicalString(entry: H2AJournalEntry<unknown>): string;
|
|
37
|
+
//# sourceMappingURL=journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal.d.ts","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EACZ,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,iBAAiB,CAAC,KAAK,GAAG,OAAO;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,WAAW,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe,CAAC,KAAK,GAAG,OAAO,CAAE,SAAQ,iBAAiB,CAAC,KAAK,CAAC;IAChF,QAAQ,EAAE,OAAO,YAAY,CAAC;IAC9B,OAAO,EAAE,OAAO,WAAW,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAmBD,wBAAgB,kBAAkB,CAAC,KAAK,EACtC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAChC,eAAe,CAAC,KAAK,CAAC,CASxB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EACtC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAClC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAChC,eAAe,CAAC,KAAK,CAAC,CASxB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAC/C,sBAAsB,CA4CxB;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,GAC9B,MAAM,CAER"}
|
package/dist/journal.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { canonicalize, computeHash } from "./canonical.js";
|
|
2
|
+
import { H2A_PROTOCOL, H2A_VERSION } from "./types.js";
|
|
3
|
+
function stripFrame(entry) {
|
|
4
|
+
const { protocol, version, sequence, prevHash, contentHash, ...payload } = entry;
|
|
5
|
+
void protocol;
|
|
6
|
+
void version;
|
|
7
|
+
void sequence;
|
|
8
|
+
void prevHash;
|
|
9
|
+
void contentHash;
|
|
10
|
+
return payload;
|
|
11
|
+
}
|
|
12
|
+
export function createJournalEntry(payload) {
|
|
13
|
+
const contentHash = computeHash(payload);
|
|
14
|
+
return {
|
|
15
|
+
protocol: H2A_PROTOCOL,
|
|
16
|
+
version: H2A_VERSION,
|
|
17
|
+
sequence: 0,
|
|
18
|
+
contentHash,
|
|
19
|
+
...payload
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export function appendJournalEntry(previous, payload) {
|
|
23
|
+
return {
|
|
24
|
+
protocol: H2A_PROTOCOL,
|
|
25
|
+
version: H2A_VERSION,
|
|
26
|
+
sequence: previous.sequence + 1,
|
|
27
|
+
prevHash: previous.contentHash,
|
|
28
|
+
contentHash: computeHash(payload),
|
|
29
|
+
...payload
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export function verifyJournalChain(entries) {
|
|
33
|
+
let prev;
|
|
34
|
+
for (let i = 0; i < entries.length; i++) {
|
|
35
|
+
const entry = entries[i];
|
|
36
|
+
if (entry.protocol !== H2A_PROTOCOL) {
|
|
37
|
+
return { ok: false, index: i, reason: `bad protocol: ${entry.protocol}` };
|
|
38
|
+
}
|
|
39
|
+
if (entry.version !== H2A_VERSION) {
|
|
40
|
+
return { ok: false, index: i, reason: `bad version: ${entry.version}` };
|
|
41
|
+
}
|
|
42
|
+
const expectedSequence = prev ? prev.sequence + 1 : 0;
|
|
43
|
+
if (entry.sequence !== expectedSequence) {
|
|
44
|
+
return {
|
|
45
|
+
ok: false,
|
|
46
|
+
index: i,
|
|
47
|
+
reason: `bad sequence: expected ${expectedSequence}, got ${entry.sequence}`
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const expectedPrev = prev ? prev.contentHash : undefined;
|
|
51
|
+
if (entry.prevHash !== expectedPrev) {
|
|
52
|
+
return {
|
|
53
|
+
ok: false,
|
|
54
|
+
index: i,
|
|
55
|
+
reason: `bad prevHash: expected ${expectedPrev ?? "<none>"}, got ${entry.prevHash ?? "<none>"}`
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const expectedHash = computeHash(stripFrame(entry));
|
|
59
|
+
if (entry.contentHash !== expectedHash) {
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
index: i,
|
|
63
|
+
reason: `bad contentHash: expected ${expectedHash}, got ${entry.contentHash}`
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
prev = entry;
|
|
67
|
+
}
|
|
68
|
+
return { ok: true };
|
|
69
|
+
}
|
|
70
|
+
export function journalEntryAsCanonicalString(entry) {
|
|
71
|
+
return canonicalize(entry);
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journal.js","sourceRoot":"","sources":["../src/journal.ts"],"names":[],"mappings":"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"}
|