@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.
Files changed (61) hide show
  1. package/README.md +10 -0
  2. package/dist/abc.d.ts +214 -0
  3. package/dist/abc.d.ts.map +1 -0
  4. package/dist/abc.js +273 -0
  5. package/dist/abc.js.map +1 -0
  6. package/dist/artifacts.d.ts +10 -0
  7. package/dist/artifacts.d.ts.map +1 -0
  8. package/dist/artifacts.js +147 -0
  9. package/dist/artifacts.js.map +1 -0
  10. package/dist/authority.d.ts +21 -0
  11. package/dist/authority.d.ts.map +1 -0
  12. package/dist/authority.js +73 -0
  13. package/dist/authority.js.map +1 -0
  14. package/dist/canonical.d.ts +3 -0
  15. package/dist/canonical.d.ts.map +1 -0
  16. package/dist/canonical.js +38 -0
  17. package/dist/canonical.js.map +1 -0
  18. package/dist/contractual.d.ts +52 -0
  19. package/dist/contractual.d.ts.map +1 -0
  20. package/dist/contractual.js +126 -0
  21. package/dist/contractual.js.map +1 -0
  22. package/dist/escalation.d.ts +40 -0
  23. package/dist/escalation.d.ts.map +1 -0
  24. package/dist/escalation.js +114 -0
  25. package/dist/escalation.js.map +1 -0
  26. package/dist/fixtures-index.d.ts +16 -0
  27. package/dist/fixtures-index.d.ts.map +1 -0
  28. package/dist/fixtures-index.js +11 -0
  29. package/dist/fixtures-index.js.map +1 -0
  30. package/dist/governance-boundary.d.ts +118 -0
  31. package/dist/governance-boundary.d.ts.map +1 -0
  32. package/dist/governance-boundary.js +143 -0
  33. package/dist/governance-boundary.js.map +1 -0
  34. package/dist/index.d.ts +21 -2
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +12 -1
  37. package/dist/index.js.map +1 -1
  38. package/dist/journal.d.ts +37 -0
  39. package/dist/journal.d.ts.map +1 -0
  40. package/dist/journal.js +73 -0
  41. package/dist/journal.js.map +1 -0
  42. package/dist/multi-human.d.ts +106 -0
  43. package/dist/multi-human.d.ts.map +1 -0
  44. package/dist/multi-human.js +116 -0
  45. package/dist/multi-human.js.map +1 -0
  46. package/dist/signature.d.ts +8 -0
  47. package/dist/signature.d.ts.map +1 -0
  48. package/dist/signature.js +39 -0
  49. package/dist/signature.js.map +1 -0
  50. package/dist/types.d.ts +105 -1
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js +12 -1
  53. package/dist/types.js.map +1 -1
  54. package/fixtures/authority.json +1 -0
  55. package/fixtures/contract.json +1 -0
  56. package/fixtures/enforcement-plan.json +1 -0
  57. package/fixtures/engagement.json +1 -0
  58. package/fixtures/mandate.json +1 -0
  59. package/fixtures/manifest.json +38 -0
  60. package/fixtures/policy.json +1 -0
  61. package/package.json +4 -3
@@ -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"}
@@ -0,0 +1,116 @@
1
+ export const H2A_MULTI_HUMAN_MODE_IDS = [
2
+ "PEER_DIALOGUE",
3
+ "DELEGATED_COORDINATION",
4
+ "SHARED_ENGAGEMENT",
5
+ "FEDERATED_EXECUTIF",
6
+ "CONSORTIUM_QUORUM",
7
+ "PUBLIC_AUTHORITY"
8
+ ];
9
+ export const H2A_MULTI_HUMAN_MODES = Object.freeze({
10
+ PEER_DIALOGUE: Object.freeze({
11
+ id: "PEER_DIALOGUE",
12
+ label: "peer dialogue",
13
+ primaryChannel: "principal-principal",
14
+ primaryAuthorityKind: "PRINCIPAL",
15
+ requiresSharedEngagement: false,
16
+ requiresExecutiveScope: false,
17
+ requiresQuorumGovernance: false,
18
+ requiresExternalAuthority: false,
19
+ summary: "Informal PRINCIPAL-to-PRINCIPAL dialogue between mini-organizations; no shared operational charter yet."
20
+ }),
21
+ DELEGATED_COORDINATION: Object.freeze({
22
+ id: "DELEGATED_COORDINATION",
23
+ label: "delegated coordination",
24
+ primaryChannel: "conductor-conductor",
25
+ primaryAuthorityKind: "PRINCIPAL",
26
+ requiresSharedEngagement: false,
27
+ requiresExecutiveScope: false,
28
+ requiresQuorumGovernance: false,
29
+ requiresExternalAuthority: false,
30
+ summary: "Repeated operational coordination delegated to CONDUCTORs while each PRINCIPAL keeps local authority."
31
+ }),
32
+ SHARED_ENGAGEMENT: Object.freeze({
33
+ id: "SHARED_ENGAGEMENT",
34
+ label: "shared engagement",
35
+ primaryChannel: "shared-engagement",
36
+ primaryAuthorityKind: "PRINCIPAL",
37
+ requiresSharedEngagement: true,
38
+ requiresExecutiveScope: false,
39
+ requiresQuorumGovernance: false,
40
+ requiresExternalAuthority: false,
41
+ summary: "Shared charter with role bindings, controls, policies, success criteria, and its own journal."
42
+ }),
43
+ FEDERATED_EXECUTIF: Object.freeze({
44
+ id: "FEDERATED_EXECUTIF",
45
+ label: "federated executif",
46
+ primaryChannel: "executif-scope",
47
+ primaryAuthorityKind: "EXECUTIF",
48
+ requiresSharedEngagement: true,
49
+ requiresExecutiveScope: true,
50
+ requiresQuorumGovernance: false,
51
+ requiresExternalAuthority: false,
52
+ summary: "A higher scope has an EXECUTIF accountable for the activity without erasing local PRINCIPAL authority."
53
+ }),
54
+ CONSORTIUM_QUORUM: Object.freeze({
55
+ id: "CONSORTIUM_QUORUM",
56
+ label: "consortium quorum",
57
+ primaryChannel: "quorum-governance",
58
+ primaryAuthorityKind: "QUORUM",
59
+ requiresSharedEngagement: true,
60
+ requiresExecutiveScope: false,
61
+ requiresQuorumGovernance: true,
62
+ requiresExternalAuthority: false,
63
+ summary: "Peer organizations govern a shared scope through quorum or committee authority instead of one EXECUTIF."
64
+ }),
65
+ PUBLIC_AUTHORITY: Object.freeze({
66
+ id: "PUBLIC_AUTHORITY",
67
+ label: "public authority",
68
+ primaryChannel: "public-authority",
69
+ primaryAuthorityKind: "EXTERNAL_AUTHORITY",
70
+ requiresSharedEngagement: true,
71
+ requiresExecutiveScope: false,
72
+ requiresQuorumGovernance: false,
73
+ requiresExternalAuthority: true,
74
+ summary: "A public/regulatory/external authority can impose policy, receive evidence, or route recourse."
75
+ })
76
+ });
77
+ export function getMultiHumanMode(modeId) {
78
+ if (!H2A_MULTI_HUMAN_MODE_IDS.includes(modeId)) {
79
+ return undefined;
80
+ }
81
+ return H2A_MULTI_HUMAN_MODES[modeId];
82
+ }
83
+ function selectionFor(mode) {
84
+ return {
85
+ ok: true,
86
+ modeId: mode.id,
87
+ primaryChannel: mode.primaryChannel,
88
+ primaryAuthorityKind: mode.primaryAuthorityKind,
89
+ issues: []
90
+ };
91
+ }
92
+ export function selectMultiHumanMode(request) {
93
+ if (!Number.isInteger(request.principalCount) || request.principalCount < 2) {
94
+ return {
95
+ ok: false,
96
+ issues: ["multi-human mode requires at least 2 PRINCIPAL scopes"]
97
+ };
98
+ }
99
+ if (request.externalAuthority) {
100
+ return selectionFor(H2A_MULTI_HUMAN_MODES.PUBLIC_AUTHORITY);
101
+ }
102
+ if (request.executiveScope) {
103
+ return selectionFor(H2A_MULTI_HUMAN_MODES.FEDERATED_EXECUTIF);
104
+ }
105
+ if (request.quorumGovernance) {
106
+ return selectionFor(H2A_MULTI_HUMAN_MODES.CONSORTIUM_QUORUM);
107
+ }
108
+ if (request.sharedCommitments) {
109
+ return selectionFor(H2A_MULTI_HUMAN_MODES.SHARED_ENGAGEMENT);
110
+ }
111
+ if (request.repeatedOperationalCoordination) {
112
+ return selectionFor(H2A_MULTI_HUMAN_MODES.DELEGATED_COORDINATION);
113
+ }
114
+ return selectionFor(H2A_MULTI_HUMAN_MODES.PEER_DIALOGUE);
115
+ }
116
+ //# sourceMappingURL=multi-human.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-human.js","sourceRoot":"","sources":["../src/multi-human.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { H2ASignature } from "./types.js";
2
+ export interface SignOptions {
3
+ by: string;
4
+ privateKeyPem: string;
5
+ }
6
+ export declare function signCanonical(value: unknown, options: SignOptions): H2ASignature;
7
+ export declare function verifyCanonical(value: unknown, signature: H2ASignature, publicKeyPem: string): boolean;
8
+ //# sourceMappingURL=signature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,YAAY,CAShF;AAED,wBAAgB,eAAe,CAC7B,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,YAAY,EACvB,YAAY,EAAE,MAAM,GACnB,OAAO,CAsBT"}
@@ -0,0 +1,39 @@
1
+ import { createPrivateKey, createPublicKey, sign, verify } from "node:crypto";
2
+ import { canonicalize } from "./canonical.js";
3
+ export function signCanonical(value, options) {
4
+ const key = createPrivateKey({ key: options.privateKeyPem, format: "pem" });
5
+ const message = Buffer.from(canonicalize(value), "utf8");
6
+ const signature = sign(null, message, key);
7
+ return {
8
+ by: options.by,
9
+ alg: "ed25519",
10
+ value: signature.toString("base64")
11
+ };
12
+ }
13
+ export function verifyCanonical(value, signature, publicKeyPem) {
14
+ if (signature.alg !== "ed25519") {
15
+ return false;
16
+ }
17
+ let key;
18
+ try {
19
+ key = createPublicKey({ key: publicKeyPem, format: "pem" });
20
+ }
21
+ catch {
22
+ return false;
23
+ }
24
+ const message = Buffer.from(canonicalize(value), "utf8");
25
+ let raw;
26
+ try {
27
+ raw = Buffer.from(signature.value, "base64");
28
+ }
29
+ catch {
30
+ return false;
31
+ }
32
+ try {
33
+ return verify(null, message, key, raw);
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ9C,MAAM,UAAU,aAAa,CAAC,KAAc,EAAE,OAAoB;IAChE,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAC3C,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAc,EACd,SAAuB,EACvB,YAAoB;IAEpB,IAAI,SAAS,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAG,CAAC;IACR,IAAI,CAAC;QACH,GAAG,GAAG,eAAe,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IACzD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,11 +1,15 @@
1
1
  export declare const H2A_PROTOCOL = "sentropic.h2a";
2
2
  export declare const H2A_VERSION = "0.1";
3
3
  export declare const H2A_ROLES: readonly ["PRINCIPAL", "EXECUTIF", "CONDUCTOR", "AGENTS", "CONTROL", "MANDATAIRE"];
4
- export declare const H2A_ARTIFACT_KINDS: readonly ["CONTRACT", "POLICY", "ENGAGEMENT", "AMENDMENT"];
4
+ export declare const H2A_ARTIFACT_KINDS: readonly ["CONTRACT", "POLICY", "ENGAGEMENT", "AMENDMENT", "MANDATE", "AUTHORITY", "SIGNATURE", "ENFORCEMENT_PLAN"];
5
+ export declare const H2A_POLICY_ADOPTION_MODES: readonly ["ratified", "contractual", "imposed", "acknowledged"];
6
+ export declare const H2A_AUTHORITY_KINDS: readonly ["instance", "quorum"];
5
7
  export declare const H2A_ENVELOPE_TYPES: readonly ["register", "propose", "accept", "reject", "counter", "withdraw", "event", "escalate"];
6
8
  export declare const H2A_NEGOTIATION_STATES: readonly ["draft", "proposed", "countered", "accepted", "rejected", "withdrawn", "expired", "stabilized", "abandoned"];
7
9
  export type H2ARole = (typeof H2A_ROLES)[number];
8
10
  export type H2AArtifactKind = (typeof H2A_ARTIFACT_KINDS)[number];
11
+ export type H2APolicyAdoptionMode = (typeof H2A_POLICY_ADOPTION_MODES)[number];
12
+ export type H2AAuthorityKind = (typeof H2A_AUTHORITY_KINDS)[number];
9
13
  export type H2AEnvelopeType = (typeof H2A_ENVELOPE_TYPES)[number];
10
14
  export type H2ANegotiationState = (typeof H2A_NEGOTIATION_STATES)[number];
11
15
  export interface H2AActorRef {
@@ -66,4 +70,104 @@ export interface H2ANegotiationRecord {
66
70
  currentArtifactHash?: string;
67
71
  deadline?: string;
68
72
  }
73
+ export interface H2AContract {
74
+ kind: "CONTRACT";
75
+ id: string;
76
+ parties: string[];
77
+ scope: string;
78
+ clauses: unknown[];
79
+ policies: string[];
80
+ engagements: string[];
81
+ signatures: H2ASignature[];
82
+ baseArtifactHash?: string;
83
+ obligations?: unknown[];
84
+ rights?: unknown[];
85
+ references?: string[];
86
+ createdAt?: string;
87
+ }
88
+ export interface H2APolicy {
89
+ kind: "POLICY";
90
+ id: string;
91
+ scope: string;
92
+ rule: string;
93
+ sourceAuthority: string;
94
+ adoptionMode: H2APolicyAdoptionMode;
95
+ version?: string;
96
+ parameters?: Record<string, unknown>;
97
+ references?: string[];
98
+ }
99
+ export interface H2AEngagement {
100
+ kind: "ENGAGEMENT";
101
+ id: string;
102
+ scope: string;
103
+ charter: Record<string, unknown>;
104
+ roleBindings: Array<{
105
+ role: H2ARole;
106
+ instance: string;
107
+ binding?: string;
108
+ }>;
109
+ controls: string[];
110
+ policies: string[];
111
+ successCriteria: unknown[];
112
+ contractId?: string;
113
+ amendments?: string[];
114
+ status?: H2ANegotiationState;
115
+ }
116
+ export interface H2AAmendment {
117
+ kind: "AMENDMENT";
118
+ id: string;
119
+ targetKind: H2AArtifactKind;
120
+ targetId: string;
121
+ baseArtifactHash: string;
122
+ changes: Array<{
123
+ op: string;
124
+ path: string;
125
+ value?: unknown;
126
+ }>;
127
+ signatures: H2ASignature[];
128
+ reason?: string;
129
+ createdAt?: string;
130
+ }
131
+ export interface H2AMandate {
132
+ kind: "MANDATE";
133
+ id: string;
134
+ instance: string;
135
+ role: H2ARole;
136
+ scope: string;
137
+ rights: string[];
138
+ authorityId?: string;
139
+ expiresAt?: string;
140
+ conditions?: Record<string, unknown>;
141
+ }
142
+ export interface H2AAuthority {
143
+ kind: "AUTHORITY";
144
+ id: string;
145
+ authorityKind: H2AAuthorityKind;
146
+ members: string[];
147
+ threshold?: number;
148
+ scope?: string;
149
+ }
150
+ export interface H2AEnforcementPlan {
151
+ kind: "ENFORCEMENT_PLAN";
152
+ id: string;
153
+ scope: string;
154
+ controls: Array<{
155
+ domain: string;
156
+ instance: string;
157
+ rights?: string[];
158
+ }>;
159
+ escalations: Array<{
160
+ trigger: string;
161
+ target: string;
162
+ channel?: "advise" | "decide" | "alert";
163
+ scope?: string;
164
+ authorityKind?: "PRINCIPAL" | "EXECUTIF" | "QUORUM" | "CONTROL" | "EXTERNAL_AUTHORITY" | "RECOURSE";
165
+ domain?: string;
166
+ }>;
167
+ triggers: Array<{
168
+ name: string;
169
+ condition: string;
170
+ }>;
171
+ references?: string[];
172
+ }
69
173
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -12,8 +12,19 @@ export const H2A_ARTIFACT_KINDS = [
12
12
  "CONTRACT",
13
13
  "POLICY",
14
14
  "ENGAGEMENT",
15
- "AMENDMENT"
15
+ "AMENDMENT",
16
+ "MANDATE",
17
+ "AUTHORITY",
18
+ "SIGNATURE",
19
+ "ENFORCEMENT_PLAN"
16
20
  ];
21
+ export const H2A_POLICY_ADOPTION_MODES = [
22
+ "ratified",
23
+ "contractual",
24
+ "imposed",
25
+ "acknowledged"
26
+ ];
27
+ export const H2A_AUTHORITY_KINDS = ["instance", "quorum"];
17
28
  export const H2A_ENVELOPE_TYPES = [
18
29
  "register",
19
30
  "propose",
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAEjC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW;IACX,UAAU;IACV,WAAW;IACX,QAAQ;IACR,SAAS;IACT,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,OAAO;IACP,UAAU;CACF,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,OAAO;IACP,UAAU;IACV,WAAW;IACX,UAAU;IACV,UAAU;IACV,WAAW;IACX,SAAS;IACT,YAAY;IACZ,WAAW;CACH,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAEjC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW;IACX,UAAU;IACV,WAAW;IACX,QAAQ;IACR,SAAS;IACT,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,WAAW;IACX,SAAS;IACT,WAAW;IACX,WAAW;IACX,kBAAkB;CACV,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,UAAU;IACV,aAAa;IACb,SAAS;IACT,cAAc;CACN,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAU,CAAC;AAEnE,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,UAAU;IACV,OAAO;IACP,UAAU;CACF,CAAC;AAEX,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,OAAO;IACP,UAAU;IACV,WAAW;IACX,UAAU;IACV,UAAU;IACV,WAAW;IACX,SAAS;IACT,YAAY;IACZ,WAAW;CACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"authorityKind":"quorum","id":"authority:canonical-001","kind":"AUTHORITY","members":["conductor:01","conductor:02","conductor:03"],"scope":"scope:engagement/ship-v1","threshold":2}
@@ -0,0 +1 @@
1
+ {"clauses":[{"id":"c1","text":"deliver v1 by 2026-06-30"}],"engagements":["engagement:ship-v1"],"id":"contract:canonical-001","kind":"CONTRACT","parties":["human:antoine","conductor:01"],"policies":["policy:no-secrets-in-logs"],"scope":"scope:engagement/ship-v1","signatures":[]}
@@ -0,0 +1 @@
1
+ {"controls":[{"domain":"cyber","instance":"control:cyber","rights":["audit"]}],"escalations":[{"channel":"alert","target":"human:antoine","trigger":"breach"}],"id":"enforce:canonical-001","kind":"ENFORCEMENT_PLAN","scope":"scope:org/antoine","triggers":[{"condition":"secrets-in-logs > 0","name":"breach"}]}
@@ -0,0 +1 @@
1
+ {"charter":{"goal":"ship v1"},"controls":[],"id":"engagement:canonical-001","kind":"ENGAGEMENT","policies":[],"roleBindings":[{"instance":"human:antoine","role":"PRINCIPAL"},{"binding":"lead","instance":"conductor:01","role":"CONDUCTOR"}],"scope":"scope:engagement/ship-v1","successCriteria":["green ci","principal sign-off"]}
@@ -0,0 +1 @@
1
+ {"id":"mandate:canonical-001","instance":"conductor:01","kind":"MANDATE","rights":["sign","amend"],"role":"CONDUCTOR","scope":"scope:engagement/ship-v1"}
@@ -0,0 +1,38 @@
1
+ [
2
+ {
3
+ "path": "fixtures/contract.json",
4
+ "kind": "CONTRACT",
5
+ "id": "contract:canonical-001",
6
+ "sha256": "d33707bee89eb7a9b146a37c3846d78ed2b795dd375422fb6172c5aee54d1a7b"
7
+ },
8
+ {
9
+ "path": "fixtures/policy.json",
10
+ "kind": "POLICY",
11
+ "id": "policy:canonical-001",
12
+ "sha256": "0f72f1d871f1908588ab458cf43a1cd52e45757a7a686673b284de4593ca6b20"
13
+ },
14
+ {
15
+ "path": "fixtures/engagement.json",
16
+ "kind": "ENGAGEMENT",
17
+ "id": "engagement:canonical-001",
18
+ "sha256": "345447100be5c1c058f898cb12d73795fd31c6cafba33c749c7870b416bd3523"
19
+ },
20
+ {
21
+ "path": "fixtures/mandate.json",
22
+ "kind": "MANDATE",
23
+ "id": "mandate:canonical-001",
24
+ "sha256": "52b5ed8c11996ab311d0eebe2a0889cc08efd20aef09079695d68857e29c2c75"
25
+ },
26
+ {
27
+ "path": "fixtures/authority.json",
28
+ "kind": "AUTHORITY",
29
+ "id": "authority:canonical-001",
30
+ "sha256": "f689cc0d93f6b021894949f7d809cc2c566ac6c5f159f62ea16a914b831ec748"
31
+ },
32
+ {
33
+ "path": "fixtures/enforcement-plan.json",
34
+ "kind": "ENFORCEMENT_PLAN",
35
+ "id": "enforce:canonical-001",
36
+ "sha256": "3e21c43e851c569afc4f2b0d5458c317dddd5ba184f430702ceb60b143108e23"
37
+ }
38
+ ]
@@ -0,0 +1 @@
1
+ {"adoptionMode":"ratified","id":"policy:canonical-001","kind":"POLICY","rule":"no-secrets-in-logs","scope":"scope:org/antoine","sourceAuthority":"authority:cyber"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@sentropic/h2a",
3
- "version": "0.1.0",
3
+ "version": "0.1.6",
4
4
  "description": "Core contracts and runtime primitives for human-to-agent coordination.",
5
- "license": "UNLICENSED",
5
+ "license": "MIT",
6
6
  "type": "module",
7
7
  "main": "./dist/index.js",
8
8
  "types": "./dist/index.d.ts",
@@ -29,7 +29,8 @@
29
29
  }
30
30
  },
31
31
  "files": [
32
- "dist"
32
+ "dist",
33
+ "fixtures"
33
34
  ],
34
35
  "publishConfig": {
35
36
  "access": "public"