@sentropic/h2a 0.1.0 → 0.1.7
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 +11 -0
- package/dist/abc.d.ts +199 -0
- package/dist/abc.d.ts.map +1 -0
- package/dist/abc.js +268 -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 +23 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -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/policy-precedence.d.ts +50 -0
- package/dist/policy-precedence.d.ts.map +1 -0
- package/dist/policy-precedence.js +98 -0
- package/dist/policy-precedence.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,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,26 @@
|
|
|
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";
|
|
7
|
+
export { H2A_POLICY_PRECEDENCE_CONFLICT_DISPOSITIONS, H2A_POLICY_PRECEDENCE_PROFILES, H2A_POLICY_PRECEDENCE_TIERS, auditPolicyPrecedenceProfile, getPolicyPrecedenceProfile } from "./policy-precedence.js";
|
|
8
|
+
export type { H2APolicyPrecedenceAuditResult, H2APolicyPrecedenceConflictDisposition, H2APolicyPrecedenceProfileDescriptor, H2APolicyPrecedenceTier } from "./policy-precedence.js";
|
|
1
9
|
export { createEnvelope, isH2AEnvelope } from "./envelope.js";
|
|
2
10
|
export { assertValidNegotiationState } from "./negotiation.js";
|
|
3
|
-
export {
|
|
4
|
-
export
|
|
11
|
+
export { canonicalize, computeHash } from "./canonical.js";
|
|
12
|
+
export { signCanonical, verifyCanonical } from "./signature.js";
|
|
13
|
+
export type { SignOptions } from "./signature.js";
|
|
14
|
+
export { appendJournalEntry, createJournalEntry, journalEntryAsCanonicalString, verifyJournalChain } from "./journal.js";
|
|
15
|
+
export type { H2AJournalEntry, H2AJournalPayload, H2AJournalVerification } from "./journal.js";
|
|
16
|
+
export { isAmendment, isAuthority, isContract, isEnforcementPlan, isEngagement, isMandate, isPolicy, isSignature } from "./artifacts.js";
|
|
17
|
+
export { H2A_AUTHORITY_MATRIX, assertCanSignArtifactKind, canSignArtifactKind } from "./authority.js";
|
|
18
|
+
export { H2A_CONTRACTUAL_ARTIFACT_PROFILES, assertContractualArtifactInvariants, auditContractualArtifact, getContractualArtifactProfile } from "./contractual.js";
|
|
19
|
+
export type { H2AContractualArtifact, H2AContractualArtifactAuditResult, H2AContractualArtifactKind, H2AContractualArtifactProfile, H2AContractualArtifactProfileDescriptor } from "./contractual.js";
|
|
20
|
+
export { H2A_ESCALATION_AUTHORITY_KINDS, H2A_ESCALATION_CHANNELS, assertEscalationTargetResolved, resolveEscalationTarget } from "./escalation.js";
|
|
21
|
+
export type { H2AEscalationAuthorityKind, H2AEscalationChannel, H2AEscalationResolution, H2AEscalationResolveOptions, H2AEscalationResolvedTarget, H2AEscalationTargetRequest, H2AEscalationUnresolvedTarget } from "./escalation.js";
|
|
22
|
+
export { H2A_CANONICAL_FIXTURES } from "./fixtures-index.js";
|
|
23
|
+
export type { H2ACanonicalFixtureManifestEntry } from "./fixtures-index.js";
|
|
24
|
+
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";
|
|
25
|
+
export type { H2AActorRef, H2AActorRegistration, H2AAmendment, H2AArtifactKind, H2AAuthority, H2AAuthorityKind, H2AContract, H2AEnforcementPlan, H2AEngagement, H2AEnvelope, H2AEnvelopeType, H2AMandate, H2ANegotiationRecord, H2ANegotiationState, H2APolicy, H2APolicyAdoptionMode, H2ARole, H2ASignature } from "./types.js";
|
|
5
26
|
//# 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,16 @@
|
|
|
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";
|
|
4
|
+
export { H2A_POLICY_PRECEDENCE_CONFLICT_DISPOSITIONS, H2A_POLICY_PRECEDENCE_PROFILES, H2A_POLICY_PRECEDENCE_TIERS, auditPolicyPrecedenceProfile, getPolicyPrecedenceProfile } from "./policy-precedence.js";
|
|
1
5
|
export { createEnvelope, isH2AEnvelope } from "./envelope.js";
|
|
2
6
|
export { assertValidNegotiationState } from "./negotiation.js";
|
|
3
|
-
export {
|
|
7
|
+
export { canonicalize, computeHash } from "./canonical.js";
|
|
8
|
+
export { signCanonical, verifyCanonical } from "./signature.js";
|
|
9
|
+
export { appendJournalEntry, createJournalEntry, journalEntryAsCanonicalString, verifyJournalChain } from "./journal.js";
|
|
10
|
+
export { isAmendment, isAuthority, isContract, isEnforcementPlan, isEngagement, isMandate, isPolicy, isSignature } from "./artifacts.js";
|
|
11
|
+
export { H2A_AUTHORITY_MATRIX, assertCanSignArtifactKind, canSignArtifactKind } from "./authority.js";
|
|
12
|
+
export { H2A_CONTRACTUAL_ARTIFACT_PROFILES, assertContractualArtifactInvariants, auditContractualArtifact, getContractualArtifactProfile } from "./contractual.js";
|
|
13
|
+
export { H2A_ESCALATION_AUTHORITY_KINDS, H2A_ESCALATION_CHANNELS, assertEscalationTargetResolved, resolveEscalationTarget } from "./escalation.js";
|
|
14
|
+
export { H2A_CANONICAL_FIXTURES } from "./fixtures-index.js";
|
|
15
|
+
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
16
|
//# 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,2CAA2C,EAC3C,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAOhC,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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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import type { H2AEscalationAuthorityKind } from "./escalation.js";
|
|
2
|
+
export declare const H2A_MULTI_HUMAN_MODE_IDS: readonly ["PEER_DIALOGUE", "DELEGATED_COORDINATION", "SHARED_ENGAGEMENT", "FEDERATED_EXECUTIF", "CONSORTIUM_QUORUM", "PUBLIC_AUTHORITY"];
|
|
3
|
+
export type H2AMultiHumanModeId = (typeof H2A_MULTI_HUMAN_MODE_IDS)[number];
|
|
4
|
+
export type H2AMultiHumanChannel = "principal-principal" | "conductor-conductor" | "shared-engagement" | "executif-scope" | "quorum-governance" | "public-authority";
|
|
5
|
+
export interface H2AMultiHumanModeDescriptor {
|
|
6
|
+
readonly id: H2AMultiHumanModeId;
|
|
7
|
+
readonly label: string;
|
|
8
|
+
readonly primaryChannel: H2AMultiHumanChannel;
|
|
9
|
+
readonly primaryAuthorityKind: H2AEscalationAuthorityKind;
|
|
10
|
+
readonly requiresSharedEngagement: boolean;
|
|
11
|
+
readonly requiresExecutiveScope: boolean;
|
|
12
|
+
readonly requiresQuorumGovernance: boolean;
|
|
13
|
+
readonly requiresExternalAuthority: boolean;
|
|
14
|
+
readonly summary: string;
|
|
15
|
+
}
|
|
16
|
+
export interface H2AMultiHumanModeRequest {
|
|
17
|
+
readonly principalCount: number;
|
|
18
|
+
readonly repeatedOperationalCoordination?: boolean;
|
|
19
|
+
readonly sharedCommitments?: boolean;
|
|
20
|
+
readonly executiveScope?: boolean;
|
|
21
|
+
readonly quorumGovernance?: boolean;
|
|
22
|
+
readonly externalAuthority?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface H2AMultiHumanModeSelection {
|
|
25
|
+
readonly ok: true;
|
|
26
|
+
readonly modeId: H2AMultiHumanModeId;
|
|
27
|
+
readonly primaryChannel: H2AMultiHumanChannel;
|
|
28
|
+
readonly primaryAuthorityKind: H2AEscalationAuthorityKind;
|
|
29
|
+
readonly issues: readonly [];
|
|
30
|
+
}
|
|
31
|
+
export interface H2AMultiHumanModeSelectionFailure {
|
|
32
|
+
readonly ok: false;
|
|
33
|
+
readonly issues: readonly string[];
|
|
34
|
+
}
|
|
35
|
+
export type H2AMultiHumanModeSelectionResult = H2AMultiHumanModeSelection | H2AMultiHumanModeSelectionFailure;
|
|
36
|
+
export declare const H2A_MULTI_HUMAN_MODES: Readonly<{
|
|
37
|
+
readonly PEER_DIALOGUE: Readonly<{
|
|
38
|
+
id: "PEER_DIALOGUE";
|
|
39
|
+
label: "peer dialogue";
|
|
40
|
+
primaryChannel: "principal-principal";
|
|
41
|
+
primaryAuthorityKind: "PRINCIPAL";
|
|
42
|
+
requiresSharedEngagement: false;
|
|
43
|
+
requiresExecutiveScope: false;
|
|
44
|
+
requiresQuorumGovernance: false;
|
|
45
|
+
requiresExternalAuthority: false;
|
|
46
|
+
summary: "Informal PRINCIPAL-to-PRINCIPAL dialogue between mini-organizations; no shared operational charter yet.";
|
|
47
|
+
}>;
|
|
48
|
+
readonly DELEGATED_COORDINATION: Readonly<{
|
|
49
|
+
id: "DELEGATED_COORDINATION";
|
|
50
|
+
label: "delegated coordination";
|
|
51
|
+
primaryChannel: "conductor-conductor";
|
|
52
|
+
primaryAuthorityKind: "PRINCIPAL";
|
|
53
|
+
requiresSharedEngagement: false;
|
|
54
|
+
requiresExecutiveScope: false;
|
|
55
|
+
requiresQuorumGovernance: false;
|
|
56
|
+
requiresExternalAuthority: false;
|
|
57
|
+
summary: "Repeated operational coordination delegated to CONDUCTORs while each PRINCIPAL keeps local authority.";
|
|
58
|
+
}>;
|
|
59
|
+
readonly SHARED_ENGAGEMENT: Readonly<{
|
|
60
|
+
id: "SHARED_ENGAGEMENT";
|
|
61
|
+
label: "shared engagement";
|
|
62
|
+
primaryChannel: "shared-engagement";
|
|
63
|
+
primaryAuthorityKind: "PRINCIPAL";
|
|
64
|
+
requiresSharedEngagement: true;
|
|
65
|
+
requiresExecutiveScope: false;
|
|
66
|
+
requiresQuorumGovernance: false;
|
|
67
|
+
requiresExternalAuthority: false;
|
|
68
|
+
summary: "Shared charter with role bindings, controls, policies, success criteria, and its own journal.";
|
|
69
|
+
}>;
|
|
70
|
+
readonly FEDERATED_EXECUTIF: Readonly<{
|
|
71
|
+
id: "FEDERATED_EXECUTIF";
|
|
72
|
+
label: "federated executif";
|
|
73
|
+
primaryChannel: "executif-scope";
|
|
74
|
+
primaryAuthorityKind: "EXECUTIF";
|
|
75
|
+
requiresSharedEngagement: true;
|
|
76
|
+
requiresExecutiveScope: true;
|
|
77
|
+
requiresQuorumGovernance: false;
|
|
78
|
+
requiresExternalAuthority: false;
|
|
79
|
+
summary: "A higher scope has an EXECUTIF accountable for the activity without erasing local PRINCIPAL authority.";
|
|
80
|
+
}>;
|
|
81
|
+
readonly CONSORTIUM_QUORUM: Readonly<{
|
|
82
|
+
id: "CONSORTIUM_QUORUM";
|
|
83
|
+
label: "consortium quorum";
|
|
84
|
+
primaryChannel: "quorum-governance";
|
|
85
|
+
primaryAuthorityKind: "QUORUM";
|
|
86
|
+
requiresSharedEngagement: true;
|
|
87
|
+
requiresExecutiveScope: false;
|
|
88
|
+
requiresQuorumGovernance: true;
|
|
89
|
+
requiresExternalAuthority: false;
|
|
90
|
+
summary: "Peer organizations govern a shared scope through quorum or committee authority instead of one EXECUTIF.";
|
|
91
|
+
}>;
|
|
92
|
+
readonly PUBLIC_AUTHORITY: Readonly<{
|
|
93
|
+
id: "PUBLIC_AUTHORITY";
|
|
94
|
+
label: "public authority";
|
|
95
|
+
primaryChannel: "public-authority";
|
|
96
|
+
primaryAuthorityKind: "EXTERNAL_AUTHORITY";
|
|
97
|
+
requiresSharedEngagement: true;
|
|
98
|
+
requiresExecutiveScope: false;
|
|
99
|
+
requiresQuorumGovernance: false;
|
|
100
|
+
requiresExternalAuthority: true;
|
|
101
|
+
summary: "A public/regulatory/external authority can impose policy, receive evidence, or route recourse.";
|
|
102
|
+
}>;
|
|
103
|
+
}>;
|
|
104
|
+
export declare function getMultiHumanMode(modeId: string): H2AMultiHumanModeDescriptor | undefined;
|
|
105
|
+
export declare function selectMultiHumanMode(request: H2AMultiHumanModeRequest): H2AMultiHumanModeSelectionResult;
|
|
106
|
+
//# sourceMappingURL=multi-human.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-human.d.ts","sourceRoot":"","sources":["../src/multi-human.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAElE,eAAO,MAAM,wBAAwB,0IAO3B,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5C,MAAM,MAAM,oBAAoB,GAC5B,qBAAqB,GACrB,qBAAqB,GACrB,mBAAmB,GACnB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,EAAE,mBAAmB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;IAC1D,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IACnD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,0BAA0B,CAAC;IAC1D,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,MAAM,gCAAgC,GACxC,0BAA0B,GAC1B,iCAAiC,CAAC;AAEtC,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4EhC,CAAC;AAEH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GACb,2BAA2B,GAAG,SAAS,CAKzC;AAcD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,wBAAwB,GAChC,gCAAgC,CAwBlC"}
|