holarchy-core-contract 0.1.1
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/dist/authority-store.d.ts +46 -0
- package/dist/authority-store.d.ts.map +1 -0
- package/dist/authority-store.js +12 -0
- package/dist/authority-store.js.map +1 -0
- package/dist/domain.d.ts +320 -0
- package/dist/domain.d.ts.map +1 -0
- package/dist/domain.js +20 -0
- package/dist/domain.js.map +1 -0
- package/dist/effective-snapshot.d.ts +111 -0
- package/dist/effective-snapshot.d.ts.map +1 -0
- package/dist/effective-snapshot.js +577 -0
- package/dist/effective-snapshot.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/package.json +25 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { JsonObject } from "depa-domain-protocol";
|
|
2
|
+
export declare const HOLON_AUTHORITY_API_VERSION: "holarchy.authority/v1";
|
|
3
|
+
export declare const HOLON_AUTHORITY_ENTITIES: readonly ["OrganizationalSubject", "Member", "MemberVersion", "Holon", "HolonVersion", "HolonMembership", "HolonMembershipVersion", "Role", "RoleVersion", "RoleAssignment", "RoleAssignmentVersion", "GovernancePolicy", "GovernancePolicyVersion", "HolarchyChangeSet", "HolarchyChange", "HolarchyChangeEvent"];
|
|
4
|
+
export type HolonAuthorityEntity = (typeof HOLON_AUTHORITY_ENTITIES)[number];
|
|
5
|
+
export type HolonAuthorityTables = Readonly<Partial<Record<HolonAuthorityEntity, readonly JsonObject[]>>>;
|
|
6
|
+
export interface HolonAuthoritySnapshot {
|
|
7
|
+
readonly apiVersion: typeof HOLON_AUTHORITY_API_VERSION;
|
|
8
|
+
readonly authorityId: string;
|
|
9
|
+
readonly revision: number;
|
|
10
|
+
readonly sequence: number;
|
|
11
|
+
readonly tables: HolonAuthorityTables;
|
|
12
|
+
}
|
|
13
|
+
export interface HolonAuthorityCommitInput {
|
|
14
|
+
readonly expectedRevision: number;
|
|
15
|
+
readonly executionId: string;
|
|
16
|
+
readonly executionInstant: string;
|
|
17
|
+
readonly stateDigest: string;
|
|
18
|
+
readonly next: HolonAuthoritySnapshot;
|
|
19
|
+
}
|
|
20
|
+
export interface HolonAuthorityCommitReceipt {
|
|
21
|
+
readonly apiVersion: typeof HOLON_AUTHORITY_API_VERSION;
|
|
22
|
+
readonly authorityId: string;
|
|
23
|
+
readonly executionId: string;
|
|
24
|
+
readonly revision: number;
|
|
25
|
+
readonly sequence: number;
|
|
26
|
+
readonly stateDigest: string;
|
|
27
|
+
readonly committedAt: string;
|
|
28
|
+
}
|
|
29
|
+
/** The only mutable authority effect required by Holarchy governance Processors. */
|
|
30
|
+
export interface HolonAuthorityStorePort {
|
|
31
|
+
load(): Promise<HolonAuthoritySnapshot>;
|
|
32
|
+
compareAndSwap(input: HolonAuthorityCommitInput): Promise<HolonAuthorityCommitReceipt>;
|
|
33
|
+
}
|
|
34
|
+
export interface HolonGovernanceRuntime {
|
|
35
|
+
readonly store: HolonAuthorityStorePort;
|
|
36
|
+
}
|
|
37
|
+
export interface CommitHolonAuthorityInput {
|
|
38
|
+
readonly expectedRevision: number;
|
|
39
|
+
readonly tables: unknown;
|
|
40
|
+
}
|
|
41
|
+
export interface CommitHolonAuthorityConfig {
|
|
42
|
+
readonly authorityId: string;
|
|
43
|
+
readonly executionId: string;
|
|
44
|
+
readonly executionInstant: string;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=authority-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-store.d.ts","sourceRoot":"","sources":["../src/authority-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD,eAAO,MAAM,2BAA2B,EAAG,uBAAgC,CAAC;AAC5E,eAAO,MAAM,wBAAwB,oTAS1B,CAAC;AAEZ,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,MAAM,MAAM,oBAAoB,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AAE1G,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,UAAU,EAAE,OAAO,2BAA2B,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;CACvC;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;CACvC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,UAAU,EAAE,OAAO,2BAA2B,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,oFAAoF;AACpF,MAAM,WAAW,uBAAuB;IACtC,IAAI,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxC,cAAc,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAAC;CACxF;AAED,MAAM,WAAW,sBAAsB;IAAG,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAA;CAAE;AACnF,MAAM,WAAW,yBAAyB;IAAG,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AAC1G,MAAM,WAAW,0BAA0B;IAAG,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const HOLON_AUTHORITY_API_VERSION = "holarchy.authority/v1";
|
|
2
|
+
export const HOLON_AUTHORITY_ENTITIES = Object.freeze([
|
|
3
|
+
"OrganizationalSubject",
|
|
4
|
+
"Member", "MemberVersion",
|
|
5
|
+
"Holon", "HolonVersion",
|
|
6
|
+
"HolonMembership", "HolonMembershipVersion",
|
|
7
|
+
"Role", "RoleVersion",
|
|
8
|
+
"RoleAssignment", "RoleAssignmentVersion",
|
|
9
|
+
"GovernancePolicy", "GovernancePolicyVersion",
|
|
10
|
+
"HolarchyChangeSet", "HolarchyChange", "HolarchyChangeEvent",
|
|
11
|
+
]);
|
|
12
|
+
//# sourceMappingURL=authority-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authority-store.js","sourceRoot":"","sources":["../src/authority-store.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,2BAA2B,GAAG,uBAAgC,CAAC;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC;IACpD,uBAAuB;IACvB,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;IACvB,iBAAiB,EAAE,wBAAwB;IAC3C,MAAM,EAAE,aAAa;IACrB,gBAAgB,EAAE,uBAAuB;IACzC,kBAAkB,EAAE,yBAAyB;IAC7C,mBAAmB,EAAE,gBAAgB,EAAE,qBAAqB;CACpD,CAAC,CAAC"}
|
package/dist/domain.d.ts
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import type { ExecuteOperationRequest, JsonObject, JsonValue } from "depa-domain-protocol";
|
|
2
|
+
export declare const HOLON_CONTEXT_ID: "holon-governance";
|
|
3
|
+
export declare const HOLON_CONTEXT_VERSION: "holon-governance@2";
|
|
4
|
+
export declare const HOLON_OPERATION_REFS: readonly ["Holarchy.Timeline.Snapshot", "Holon.Timeline.History", "Holarchy.Timeline.Compare", "HolarchyChangeSet.List", "HolarchyChangeSet.AuthorDraft", "HolarchyChangeSet.Preview", "HolarchyChangeSet.Validate", "HolarchyChangeSet.MarkValidated", "HolarchyChangeSet.Approve", "HolarchyChangeSet.Cancel", "HolarchyChangeSet.Apply"];
|
|
5
|
+
export declare const HOLON_CHANGE_KINDS: readonly ["MemberCreate", "MemberRevise", "MemberDeactivate", "HolonCreate", "HolonRevise", "HolonDeactivate", "RoleCreate", "RoleRevise", "RoleDeactivate", "GovernancePolicyCreate", "GovernancePolicyRevise", "GovernancePolicyDeactivate", "MembershipEstablish", "MembershipReconfigure", "MembershipEnd", "RoleAssignmentEstablish", "RoleAssignmentReconfigure", "RoleAssignmentEnd"];
|
|
6
|
+
export declare const MEMBER_PRINCIPAL_KINDS: readonly ["human", "ai", "hybrid", "service", "unspecified"];
|
|
7
|
+
export type HolonOperationRef = (typeof HOLON_OPERATION_REFS)[number];
|
|
8
|
+
export type HolarchyChangeKind = (typeof HOLON_CHANGE_KINDS)[number];
|
|
9
|
+
export type MemberPrincipalKind = (typeof MEMBER_PRINCIPAL_KINDS)[number];
|
|
10
|
+
export type OrganizationalSubjectType = "member" | "holon";
|
|
11
|
+
export type MembershipMode = "primary" | "affiliate";
|
|
12
|
+
export type HolarchyChangeSetState = "DRAFT" | "VALIDATED" | "APPROVED" | "APPLIED" | "CANCELLED";
|
|
13
|
+
export type HolarchyResourceType = "Member" | "Holon" | "Role" | "GovernancePolicy" | "Membership" | "RoleAssignment";
|
|
14
|
+
/** The sole business-effective event shape for governed Holon facts. */
|
|
15
|
+
export interface EffectiveDatedFact {
|
|
16
|
+
readonly id: string;
|
|
17
|
+
readonly effectiveDate: string;
|
|
18
|
+
readonly effectiveState: boolean;
|
|
19
|
+
readonly createdAt: string;
|
|
20
|
+
readonly createdBy: string;
|
|
21
|
+
readonly changeSetId: string;
|
|
22
|
+
readonly sequence: number;
|
|
23
|
+
}
|
|
24
|
+
export interface Member {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly subjectId: string;
|
|
27
|
+
readonly createdAt: string;
|
|
28
|
+
readonly createdBy: string;
|
|
29
|
+
}
|
|
30
|
+
export interface MemberVersion extends EffectiveDatedFact {
|
|
31
|
+
readonly memberId: string;
|
|
32
|
+
readonly displayName: string;
|
|
33
|
+
readonly principalKind: MemberPrincipalKind;
|
|
34
|
+
}
|
|
35
|
+
export interface Holon {
|
|
36
|
+
readonly id: string;
|
|
37
|
+
readonly subjectId: string;
|
|
38
|
+
readonly code: string;
|
|
39
|
+
readonly createdAt: string;
|
|
40
|
+
readonly createdBy: string;
|
|
41
|
+
}
|
|
42
|
+
export interface HolonVersion extends EffectiveDatedFact {
|
|
43
|
+
readonly holonId: string;
|
|
44
|
+
readonly name: string;
|
|
45
|
+
readonly purpose: string;
|
|
46
|
+
readonly boundary: string;
|
|
47
|
+
}
|
|
48
|
+
export interface HolonMembership {
|
|
49
|
+
readonly id: string;
|
|
50
|
+
readonly createdAt: string;
|
|
51
|
+
readonly createdBy: string;
|
|
52
|
+
}
|
|
53
|
+
export interface HolonMembershipVersion extends EffectiveDatedFact {
|
|
54
|
+
readonly membershipId: string;
|
|
55
|
+
readonly parentHolonId: string;
|
|
56
|
+
readonly subjectId: string;
|
|
57
|
+
readonly mode: MembershipMode;
|
|
58
|
+
}
|
|
59
|
+
export interface Role {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
readonly holonId: string;
|
|
62
|
+
readonly createdAt: string;
|
|
63
|
+
readonly createdBy: string;
|
|
64
|
+
}
|
|
65
|
+
export interface RoleVersion extends EffectiveDatedFact {
|
|
66
|
+
readonly roleId: string;
|
|
67
|
+
readonly name: string;
|
|
68
|
+
readonly purpose: string;
|
|
69
|
+
readonly domains: readonly string[];
|
|
70
|
+
readonly accountabilities: readonly string[];
|
|
71
|
+
readonly policies: readonly string[];
|
|
72
|
+
readonly capabilityRequirements: readonly string[];
|
|
73
|
+
}
|
|
74
|
+
export interface RoleAssignment {
|
|
75
|
+
readonly id: string;
|
|
76
|
+
readonly createdAt: string;
|
|
77
|
+
readonly createdBy: string;
|
|
78
|
+
}
|
|
79
|
+
export interface RoleAssignmentVersion extends EffectiveDatedFact {
|
|
80
|
+
readonly roleAssignmentId: string;
|
|
81
|
+
readonly membershipId: string;
|
|
82
|
+
readonly roleId: string;
|
|
83
|
+
}
|
|
84
|
+
export interface GovernancePolicy {
|
|
85
|
+
readonly id: string;
|
|
86
|
+
readonly holonId: string;
|
|
87
|
+
readonly createdAt: string;
|
|
88
|
+
readonly createdBy: string;
|
|
89
|
+
}
|
|
90
|
+
export interface GovernancePolicyVersion extends EffectiveDatedFact {
|
|
91
|
+
readonly governancePolicyId: string;
|
|
92
|
+
readonly holonId: string;
|
|
93
|
+
readonly name: string;
|
|
94
|
+
readonly profile: string;
|
|
95
|
+
readonly rules: JsonValue;
|
|
96
|
+
}
|
|
97
|
+
export interface ProjectedEffectiveFact {
|
|
98
|
+
readonly versionId: string;
|
|
99
|
+
readonly effectiveDate: string;
|
|
100
|
+
readonly effectiveState: true;
|
|
101
|
+
readonly createdAt: string;
|
|
102
|
+
readonly createdBy: string;
|
|
103
|
+
readonly changeSetId: string;
|
|
104
|
+
readonly sequence: number;
|
|
105
|
+
}
|
|
106
|
+
export interface MemberDto extends ProjectedEffectiveFact {
|
|
107
|
+
readonly id: string;
|
|
108
|
+
readonly subjectId: string;
|
|
109
|
+
readonly displayName: string;
|
|
110
|
+
readonly principalKind: MemberPrincipalKind;
|
|
111
|
+
}
|
|
112
|
+
export interface HolonDto extends ProjectedEffectiveFact {
|
|
113
|
+
readonly id: string;
|
|
114
|
+
readonly subjectId: string;
|
|
115
|
+
readonly code: string;
|
|
116
|
+
readonly name: string;
|
|
117
|
+
readonly purpose: string;
|
|
118
|
+
readonly boundary: string;
|
|
119
|
+
}
|
|
120
|
+
export interface HolonMembershipDto extends ProjectedEffectiveFact {
|
|
121
|
+
readonly id: string;
|
|
122
|
+
readonly parentHolonId: string;
|
|
123
|
+
readonly subjectId: string;
|
|
124
|
+
readonly subjectType: OrganizationalSubjectType;
|
|
125
|
+
readonly mode: MembershipMode;
|
|
126
|
+
}
|
|
127
|
+
export interface RoleDto extends ProjectedEffectiveFact {
|
|
128
|
+
readonly id: string;
|
|
129
|
+
readonly holonId: string;
|
|
130
|
+
readonly name: string;
|
|
131
|
+
readonly purpose: string;
|
|
132
|
+
readonly domains: readonly string[];
|
|
133
|
+
readonly accountabilities: readonly string[];
|
|
134
|
+
readonly policies: readonly string[];
|
|
135
|
+
readonly capabilityRequirements: readonly string[];
|
|
136
|
+
}
|
|
137
|
+
export interface RoleAssignmentDto extends ProjectedEffectiveFact {
|
|
138
|
+
readonly id: string;
|
|
139
|
+
readonly membershipId: string;
|
|
140
|
+
readonly roleId: string;
|
|
141
|
+
}
|
|
142
|
+
export interface GovernancePolicyDto extends ProjectedEffectiveFact {
|
|
143
|
+
readonly id: string;
|
|
144
|
+
readonly holonId: string;
|
|
145
|
+
readonly name: string;
|
|
146
|
+
readonly profile: string;
|
|
147
|
+
readonly rules: JsonValue;
|
|
148
|
+
}
|
|
149
|
+
export interface HolarchySnapshotDto {
|
|
150
|
+
readonly effectiveDate: string;
|
|
151
|
+
readonly members: readonly MemberDto[];
|
|
152
|
+
readonly holons: readonly HolonDto[];
|
|
153
|
+
readonly memberships: readonly HolonMembershipDto[];
|
|
154
|
+
readonly roles: readonly RoleDto[];
|
|
155
|
+
readonly roleAssignments: readonly RoleAssignmentDto[];
|
|
156
|
+
readonly governancePolicies: readonly GovernancePolicyDto[];
|
|
157
|
+
}
|
|
158
|
+
interface ChangeBase<K extends HolarchyChangeKind, P extends object> {
|
|
159
|
+
readonly id: string;
|
|
160
|
+
readonly order: number;
|
|
161
|
+
readonly kind: K;
|
|
162
|
+
readonly resourceId: string;
|
|
163
|
+
readonly effectiveState: boolean;
|
|
164
|
+
readonly payload: P;
|
|
165
|
+
}
|
|
166
|
+
export interface MemberCreatePayload {
|
|
167
|
+
readonly subjectId: string;
|
|
168
|
+
readonly displayName: string;
|
|
169
|
+
readonly principalKind: MemberPrincipalKind;
|
|
170
|
+
}
|
|
171
|
+
export type MemberRevisePayload = {
|
|
172
|
+
readonly displayName: string;
|
|
173
|
+
readonly principalKind?: MemberPrincipalKind;
|
|
174
|
+
} | {
|
|
175
|
+
readonly displayName?: string;
|
|
176
|
+
readonly principalKind: MemberPrincipalKind;
|
|
177
|
+
};
|
|
178
|
+
export interface HolonCreatePayload {
|
|
179
|
+
readonly subjectId: string;
|
|
180
|
+
readonly code: string;
|
|
181
|
+
readonly name: string;
|
|
182
|
+
readonly purpose: string;
|
|
183
|
+
readonly boundary: string;
|
|
184
|
+
}
|
|
185
|
+
export interface HolonRevisePayload {
|
|
186
|
+
readonly name?: string;
|
|
187
|
+
readonly purpose?: string;
|
|
188
|
+
readonly boundary?: string;
|
|
189
|
+
}
|
|
190
|
+
export interface RoleCreatePayload {
|
|
191
|
+
readonly holonId: string;
|
|
192
|
+
readonly name: string;
|
|
193
|
+
readonly purpose: string;
|
|
194
|
+
readonly domains: readonly string[];
|
|
195
|
+
readonly accountabilities: readonly string[];
|
|
196
|
+
readonly policies: readonly string[];
|
|
197
|
+
readonly capabilityRequirements: readonly string[];
|
|
198
|
+
}
|
|
199
|
+
export interface RoleRevisePayload {
|
|
200
|
+
readonly name?: string;
|
|
201
|
+
readonly purpose?: string;
|
|
202
|
+
readonly domains?: readonly string[];
|
|
203
|
+
readonly accountabilities?: readonly string[];
|
|
204
|
+
readonly policies?: readonly string[];
|
|
205
|
+
readonly capabilityRequirements?: readonly string[];
|
|
206
|
+
}
|
|
207
|
+
export interface GovernancePolicyCreatePayload {
|
|
208
|
+
readonly holonId: string;
|
|
209
|
+
readonly name: string;
|
|
210
|
+
readonly profile: string;
|
|
211
|
+
readonly rules: JsonValue;
|
|
212
|
+
}
|
|
213
|
+
export interface GovernancePolicyRevisePayload {
|
|
214
|
+
readonly name?: string;
|
|
215
|
+
readonly profile?: string;
|
|
216
|
+
readonly rules?: JsonValue;
|
|
217
|
+
}
|
|
218
|
+
export interface MembershipPayload {
|
|
219
|
+
readonly subjectId: string;
|
|
220
|
+
readonly parentHolonId: string;
|
|
221
|
+
readonly mode: MembershipMode;
|
|
222
|
+
}
|
|
223
|
+
export interface RoleAssignmentPayload {
|
|
224
|
+
readonly membershipId: string;
|
|
225
|
+
readonly roleId: string;
|
|
226
|
+
}
|
|
227
|
+
export type HolarchyChangeDto = ChangeBase<"MemberCreate", MemberCreatePayload> | ChangeBase<"MemberRevise", MemberRevisePayload> | ChangeBase<"MemberDeactivate", JsonObject> | ChangeBase<"HolonCreate", HolonCreatePayload> | ChangeBase<"HolonRevise", HolonRevisePayload> | ChangeBase<"HolonDeactivate", JsonObject> | ChangeBase<"RoleCreate", RoleCreatePayload> | ChangeBase<"RoleRevise", RoleRevisePayload> | ChangeBase<"RoleDeactivate", JsonObject> | ChangeBase<"GovernancePolicyCreate", GovernancePolicyCreatePayload> | ChangeBase<"GovernancePolicyRevise", GovernancePolicyRevisePayload> | ChangeBase<"GovernancePolicyDeactivate", JsonObject> | ChangeBase<"MembershipEstablish", MembershipPayload> | ChangeBase<"MembershipReconfigure", MembershipPayload> | ChangeBase<"MembershipEnd", JsonObject> | ChangeBase<"RoleAssignmentEstablish", RoleAssignmentPayload> | ChangeBase<"RoleAssignmentReconfigure", RoleAssignmentPayload> | ChangeBase<"RoleAssignmentEnd", JsonObject>;
|
|
228
|
+
export interface HolarchyChangeSetDto {
|
|
229
|
+
readonly id: string;
|
|
230
|
+
readonly title: string;
|
|
231
|
+
readonly state: HolarchyChangeSetState;
|
|
232
|
+
readonly effectiveDate: string;
|
|
233
|
+
readonly actorRef: string;
|
|
234
|
+
readonly revision: number;
|
|
235
|
+
readonly createdAt: string;
|
|
236
|
+
readonly createdBy: string;
|
|
237
|
+
readonly updatedAt: string;
|
|
238
|
+
readonly updatedBy: string;
|
|
239
|
+
readonly approvedBy?: string;
|
|
240
|
+
readonly appliedAt?: string;
|
|
241
|
+
readonly changes: readonly HolarchyChangeDto[];
|
|
242
|
+
}
|
|
243
|
+
export interface HolarchyDraftInput {
|
|
244
|
+
readonly id: string;
|
|
245
|
+
readonly title: string;
|
|
246
|
+
readonly effectiveDate: string;
|
|
247
|
+
readonly actorRef: string;
|
|
248
|
+
readonly changes: readonly HolarchyChangeDto[];
|
|
249
|
+
}
|
|
250
|
+
export type AuthorDraftCommand = {
|
|
251
|
+
readonly action: "Create";
|
|
252
|
+
readonly draft: HolarchyDraftInput;
|
|
253
|
+
} | {
|
|
254
|
+
readonly action: "Replace";
|
|
255
|
+
readonly expectedRevision: number;
|
|
256
|
+
readonly draft: HolarchyDraftInput;
|
|
257
|
+
} | {
|
|
258
|
+
readonly action: "Delete";
|
|
259
|
+
readonly expectedRevision: number;
|
|
260
|
+
};
|
|
261
|
+
export type AggregateDiffKind = "Added" | "Changed" | "Deactivated" | "Reactivated";
|
|
262
|
+
export interface AggregateDiffItemDto {
|
|
263
|
+
readonly resourceType: HolarchyResourceType;
|
|
264
|
+
readonly resourceId: string;
|
|
265
|
+
readonly kind: AggregateDiffKind;
|
|
266
|
+
readonly before?: JsonValue;
|
|
267
|
+
readonly after?: JsonValue;
|
|
268
|
+
}
|
|
269
|
+
export interface AggregateDiffDto {
|
|
270
|
+
readonly items: readonly AggregateDiffItemDto[];
|
|
271
|
+
readonly added: number;
|
|
272
|
+
readonly changed: number;
|
|
273
|
+
readonly deactivated: number;
|
|
274
|
+
readonly reactivated: number;
|
|
275
|
+
}
|
|
276
|
+
export type DependencyImpactResolution = "ResolvedInBatch" | "BlocksApply";
|
|
277
|
+
export interface DependencyImpactDto {
|
|
278
|
+
readonly changeId: string;
|
|
279
|
+
readonly resourceType: HolarchyResourceType;
|
|
280
|
+
readonly resourceId: string;
|
|
281
|
+
readonly resolution: DependencyImpactResolution;
|
|
282
|
+
readonly path: string;
|
|
283
|
+
readonly message: string;
|
|
284
|
+
}
|
|
285
|
+
export type VersionFrontier = Readonly<Record<"MemberVersion" | "HolonVersion" | "HolonMembershipVersion" | "RoleVersion" | "RoleAssignmentVersion" | "GovernancePolicyVersion", number>>;
|
|
286
|
+
export interface PreviewBasisDto {
|
|
287
|
+
readonly schema: "HolonPreviewBasis@1";
|
|
288
|
+
readonly algorithm: "SHA-256";
|
|
289
|
+
readonly token: string;
|
|
290
|
+
readonly changeSetId: string;
|
|
291
|
+
readonly changeSetRevision: number;
|
|
292
|
+
readonly effectiveDate: string;
|
|
293
|
+
readonly authoritySequence: VersionFrontier;
|
|
294
|
+
}
|
|
295
|
+
export interface ChangeSetPreviewDto {
|
|
296
|
+
readonly changeSet: HolarchyChangeSetDto;
|
|
297
|
+
readonly basis: PreviewBasisDto;
|
|
298
|
+
readonly orderedChanges: readonly HolarchyChangeDto[];
|
|
299
|
+
readonly before: HolarchySnapshotDto;
|
|
300
|
+
readonly after: HolarchySnapshotDto;
|
|
301
|
+
readonly aggregateDiff: AggregateDiffDto;
|
|
302
|
+
readonly dependencyImpacts: readonly DependencyImpactDto[];
|
|
303
|
+
readonly diagnostics: readonly HolonDiagnostic[];
|
|
304
|
+
readonly valid: boolean;
|
|
305
|
+
}
|
|
306
|
+
export type HolonDiagnosticCode = "INVALID_TIMELINE" | "INVALID_EFFECTIVE_FACT" | "DUPLICATE_EFFECTIVE_ORDER" | "TEMPORAL_REFERENCE_NOT_FOUND" | "PRIMARY_MEMBERSHIP_REQUIRED" | "MULTIPLE_PRIMARY_MEMBERSHIPS" | "HOLARCHY_CYCLE" | "ROLE_SCOPE_MISMATCH" | "DEPENDENT_FACT_ACTIVE" | "DEPENDENCY_BLOCKS_APPLY" | "INVALID_CHANGE_SET_STATE" | "CHANGE_SET_NOT_FOUND" | "CHANGE_SET_ALREADY_EXISTS" | "REVISION_CONFLICT" | "UNSUPPORTED_CHANGE" | "INVALID_CHANGE_PAYLOAD" | "INVALID_AUTHORING_ACTION" | "DUPLICATE_RESOURCE" | "MISSING_IDENTITY" | "FROZEN_SCOPE_DRIFT" | "EMPTY_REVISION" | "PREVIEW_BASIS_REQUIRED" | "STALE_PREVIEW_BASIS";
|
|
307
|
+
export interface HolonDiagnostic {
|
|
308
|
+
readonly code: HolonDiagnosticCode;
|
|
309
|
+
readonly path: string;
|
|
310
|
+
readonly message: string;
|
|
311
|
+
}
|
|
312
|
+
export interface HolonOperationPreset {
|
|
313
|
+
readonly key: string;
|
|
314
|
+
readonly title?: string;
|
|
315
|
+
readonly operationRef: HolonOperationRef;
|
|
316
|
+
readonly request: ExecuteOperationRequest;
|
|
317
|
+
readonly metadata?: JsonObject;
|
|
318
|
+
}
|
|
319
|
+
export {};
|
|
320
|
+
//# sourceMappingURL=domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"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"}
|
package/dist/domain.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export const HOLON_CONTEXT_ID = "holon-governance";
|
|
2
|
+
export const HOLON_CONTEXT_VERSION = "holon-governance@2";
|
|
3
|
+
export const HOLON_OPERATION_REFS = Object.freeze([
|
|
4
|
+
"Holarchy.Timeline.Snapshot", "Holon.Timeline.History", "Holarchy.Timeline.Compare",
|
|
5
|
+
"HolarchyChangeSet.List", "HolarchyChangeSet.AuthorDraft", "HolarchyChangeSet.Preview",
|
|
6
|
+
"HolarchyChangeSet.Validate", "HolarchyChangeSet.MarkValidated", "HolarchyChangeSet.Approve",
|
|
7
|
+
"HolarchyChangeSet.Cancel", "HolarchyChangeSet.Apply",
|
|
8
|
+
]);
|
|
9
|
+
export const HOLON_CHANGE_KINDS = Object.freeze([
|
|
10
|
+
"MemberCreate", "MemberRevise", "MemberDeactivate",
|
|
11
|
+
"HolonCreate", "HolonRevise", "HolonDeactivate",
|
|
12
|
+
"RoleCreate", "RoleRevise", "RoleDeactivate",
|
|
13
|
+
"GovernancePolicyCreate", "GovernancePolicyRevise", "GovernancePolicyDeactivate",
|
|
14
|
+
"MembershipEstablish", "MembershipReconfigure", "MembershipEnd",
|
|
15
|
+
"RoleAssignmentEstablish", "RoleAssignmentReconfigure", "RoleAssignmentEnd",
|
|
16
|
+
]);
|
|
17
|
+
export const MEMBER_PRINCIPAL_KINDS = Object.freeze([
|
|
18
|
+
"human", "ai", "hybrid", "service", "unspecified",
|
|
19
|
+
]);
|
|
20
|
+
//# sourceMappingURL=domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.js","sourceRoot":"","sources":["../src/domain.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAA2B,CAAC;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,oBAA6B,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,4BAA4B,EAAE,wBAAwB,EAAE,2BAA2B;IACnF,wBAAwB,EAAE,+BAA+B,EAAE,2BAA2B;IACtF,4BAA4B,EAAE,iCAAiC,EAAE,2BAA2B;IAC5F,0BAA0B,EAAE,yBAAyB;CAC7C,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,cAAc,EAAE,cAAc,EAAE,kBAAkB;IAClD,aAAa,EAAE,aAAa,EAAE,iBAAiB;IAC/C,YAAY,EAAE,YAAY,EAAE,gBAAgB;IAC5C,wBAAwB,EAAE,wBAAwB,EAAE,4BAA4B;IAChF,qBAAqB,EAAE,uBAAuB,EAAE,eAAe;IAC/D,yBAAyB,EAAE,2BAA2B,EAAE,mBAAmB;CACnE,CAAC,CAAC;AAEZ,MAAM,CAAC,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa;CACzC,CAAC,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { type GovernancePolicy, type GovernancePolicyVersion, type Holon, type HolonMembership, type HolonMembershipVersion, type HolonVersion, type Member, type MemberVersion, type OrganizationalSubjectType, type Role, type RoleAssignment, type RoleAssignmentVersion, type RoleVersion } from "./domain";
|
|
2
|
+
export declare const HOLON_EFFECTIVE_SNAPSHOT_KIND: "HolonEffectiveSnapshot";
|
|
3
|
+
export declare const HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_FQN: "Holon.Workbench.KindDefinition.HolonEffectiveSnapshot";
|
|
4
|
+
export declare const HOLON_EFFECTIVE_SNAPSHOT_API_VERSION: "holon.workbench/v1";
|
|
5
|
+
export declare const HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_VERSION: "1.0.0";
|
|
6
|
+
export declare const HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_SOURCE: "<KindDefinition #Holon.Workbench.KindDefinition.HolonEffectiveSnapshot apiVersion=\"halfcode.resources/v1\" version=\"1.0.0\" {\n lifecycle = \"Stable\"\n resourceKind = \"HolonEffectiveSnapshot\"\n sourceShapes = [\"single-file\"]\n currentApiVersion = \"holon.workbench/v1\"\n supportedApiVersions = [\"holon.workbench/v1\"]\n description = \"Canonical closed effective organization snapshot issued by Holon Workbench.\"\n}>\n";
|
|
7
|
+
export declare const HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_BYTES: Readonly<Uint8Array>;
|
|
8
|
+
export declare const EFFECTIVE_ORGANIZATION_RECORD_KINDS: readonly ["OrganizationalSubject", "Holon", "Member", "HolonMembership", "Role", "RoleAssignment", "GovernancePolicy", "HolonVersion", "MemberVersion", "HolonMembershipVersion", "RoleVersion", "RoleAssignmentVersion", "GovernancePolicyVersion"];
|
|
9
|
+
export type EffectiveOrganizationRecordKind = (typeof EFFECTIVE_ORGANIZATION_RECORD_KINDS)[number];
|
|
10
|
+
export type HolonEffectiveSnapshotTreeDigest = `sha256:${string}`;
|
|
11
|
+
export interface OrganizationalSubject {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
readonly subjectType: OrganizationalSubjectType;
|
|
14
|
+
}
|
|
15
|
+
type RecordOf<K extends EffectiveOrganizationRecordKind, T> = Readonly<T & {
|
|
16
|
+
readonly kind: K;
|
|
17
|
+
}>;
|
|
18
|
+
type SelectedVersion<T> = Omit<T, "effectiveState"> & {
|
|
19
|
+
readonly effectiveState: true;
|
|
20
|
+
};
|
|
21
|
+
export type EffectiveOrganizationRecord = RecordOf<"OrganizationalSubject", OrganizationalSubject> | RecordOf<"Holon", Holon> | RecordOf<"Member", Member> | RecordOf<"HolonMembership", HolonMembership> | RecordOf<"Role", Role> | RecordOf<"RoleAssignment", RoleAssignment> | RecordOf<"GovernancePolicy", GovernancePolicy> | RecordOf<"HolonVersion", SelectedVersion<HolonVersion>> | RecordOf<"MemberVersion", SelectedVersion<MemberVersion>> | RecordOf<"HolonMembershipVersion", SelectedVersion<HolonMembershipVersion>> | RecordOf<"RoleVersion", SelectedVersion<RoleVersion>> | RecordOf<"RoleAssignmentVersion", SelectedVersion<RoleAssignmentVersion>> | RecordOf<"GovernancePolicyVersion", SelectedVersion<GovernancePolicyVersion>>;
|
|
22
|
+
export interface HolonEffectiveSnapshotTree {
|
|
23
|
+
readonly apiVersion: typeof HOLON_EFFECTIVE_SNAPSHOT_API_VERSION;
|
|
24
|
+
readonly kind: typeof HOLON_EFFECTIVE_SNAPSHOT_KIND;
|
|
25
|
+
readonly snapshotId: string;
|
|
26
|
+
readonly rootHolonRef: string;
|
|
27
|
+
readonly effectiveAt: string;
|
|
28
|
+
readonly sourceRevision: string;
|
|
29
|
+
readonly records: readonly EffectiveOrganizationRecord[];
|
|
30
|
+
}
|
|
31
|
+
export interface HolonEffectiveSnapshot extends HolonEffectiveSnapshotTree {
|
|
32
|
+
readonly treeDigest: HolonEffectiveSnapshotTreeDigest;
|
|
33
|
+
}
|
|
34
|
+
export interface HolonEffectiveSnapshotIssuanceReceipt {
|
|
35
|
+
readonly snapshotRef: string;
|
|
36
|
+
readonly sourceAuthorityId: string;
|
|
37
|
+
readonly sourceRevision: string;
|
|
38
|
+
readonly effectiveAt: string;
|
|
39
|
+
readonly treeDigest: HolonEffectiveSnapshotTreeDigest;
|
|
40
|
+
readonly issuedAt: string;
|
|
41
|
+
}
|
|
42
|
+
export interface NestedHolonMembership {
|
|
43
|
+
readonly membershipRef: string;
|
|
44
|
+
readonly parentHolonRef: string;
|
|
45
|
+
readonly childHolonRef: string;
|
|
46
|
+
readonly mode: HolonMembershipVersion["mode"];
|
|
47
|
+
}
|
|
48
|
+
export interface EffectiveMemberMembership {
|
|
49
|
+
readonly membershipRef: string;
|
|
50
|
+
readonly parentHolonRef: string;
|
|
51
|
+
readonly memberRef: string;
|
|
52
|
+
readonly mode: HolonMembershipVersion["mode"];
|
|
53
|
+
}
|
|
54
|
+
export interface EffectiveRoleEligibility {
|
|
55
|
+
readonly assignmentRef: string;
|
|
56
|
+
readonly membershipRef: string;
|
|
57
|
+
readonly roleRef: string;
|
|
58
|
+
readonly memberRef: string;
|
|
59
|
+
}
|
|
60
|
+
export interface ReconstructedHolonEffectiveSnapshot {
|
|
61
|
+
readonly snapshot: HolonEffectiveSnapshot;
|
|
62
|
+
readonly nestedHolonMemberships: readonly NestedHolonMembership[];
|
|
63
|
+
readonly memberMemberships: readonly EffectiveMemberMembership[];
|
|
64
|
+
readonly roleEligibility: readonly EffectiveRoleEligibility[];
|
|
65
|
+
}
|
|
66
|
+
export interface OrganizationSnapshotTimelineReadInput {
|
|
67
|
+
readonly rootHolonRef: string;
|
|
68
|
+
readonly effectiveAt: string;
|
|
69
|
+
}
|
|
70
|
+
export interface OrganizationSnapshotTimelineReadResult {
|
|
71
|
+
readonly sourceAuthorityId: string;
|
|
72
|
+
readonly sourceRevision: string;
|
|
73
|
+
readonly observedAt: string;
|
|
74
|
+
readonly records: readonly EffectiveOrganizationRecord[];
|
|
75
|
+
}
|
|
76
|
+
export interface OrganizationSnapshotTimelineReadPort {
|
|
77
|
+
readEffectiveOrganization(input: OrganizationSnapshotTimelineReadInput): Promise<OrganizationSnapshotTimelineReadResult>;
|
|
78
|
+
}
|
|
79
|
+
export interface ProjectOrganizationSnapshotRuntime {
|
|
80
|
+
readonly timeline: OrganizationSnapshotTimelineReadPort;
|
|
81
|
+
}
|
|
82
|
+
export interface ProjectOrganizationSnapshotInput {
|
|
83
|
+
readonly rootHolonRef: string;
|
|
84
|
+
readonly effectiveAt: string;
|
|
85
|
+
}
|
|
86
|
+
export interface ProjectOrganizationSnapshotConfig {
|
|
87
|
+
readonly maxDepth: number;
|
|
88
|
+
readonly maxRecords: number;
|
|
89
|
+
}
|
|
90
|
+
export interface ProjectOrganizationSnapshotOutput {
|
|
91
|
+
readonly snapshot: HolonEffectiveSnapshot;
|
|
92
|
+
readonly canonicalBytes: Uint8Array;
|
|
93
|
+
readonly issuanceReceipt: HolonEffectiveSnapshotIssuanceReceipt;
|
|
94
|
+
}
|
|
95
|
+
export declare class HolonEffectiveSnapshotContractError extends Error {
|
|
96
|
+
readonly path: string;
|
|
97
|
+
constructor(path: string, message: string);
|
|
98
|
+
}
|
|
99
|
+
export declare function compareUtf16CodeUnits(left: string, right: string): number;
|
|
100
|
+
export declare function normalizeHolonEffectiveSnapshotTree(value: unknown): HolonEffectiveSnapshotTree;
|
|
101
|
+
export declare function canonicalHolonEffectiveSnapshotTreeBytes(value: unknown): Uint8Array;
|
|
102
|
+
export declare function computeHolonEffectiveSnapshotTreeDigest(value: unknown): Promise<HolonEffectiveSnapshotTreeDigest>;
|
|
103
|
+
export declare function normalizeHolonEffectiveSnapshot(value: unknown): HolonEffectiveSnapshot;
|
|
104
|
+
export declare function canonicalHolonEffectiveSnapshotBytes(value: unknown): Promise<Uint8Array>;
|
|
105
|
+
export declare function parseHolonEffectiveSnapshotBytes(bytes: Uint8Array): Promise<HolonEffectiveSnapshot>;
|
|
106
|
+
export declare function validateHolonEffectiveSnapshotIssuanceReceipt(value: unknown, snapshot?: HolonEffectiveSnapshot): HolonEffectiveSnapshotIssuanceReceipt;
|
|
107
|
+
export declare function canonicalHolonEffectiveSnapshotIssuanceReceiptBytes(value: unknown, snapshot?: HolonEffectiveSnapshot): Uint8Array;
|
|
108
|
+
export declare function parseHolonEffectiveSnapshotIssuanceReceiptBytes(bytes: Uint8Array, snapshot?: HolonEffectiveSnapshot): HolonEffectiveSnapshotIssuanceReceipt;
|
|
109
|
+
export declare function reconstructHolonEffectiveSnapshot(bytes: Uint8Array): Promise<ReconstructedHolonEffectiveSnapshot>;
|
|
110
|
+
export {};
|
|
111
|
+
//# sourceMappingURL=effective-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-snapshot.d.ts","sourceRoot":"","sources":["../src/effective-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,577 @@
|
|
|
1
|
+
import { MEMBER_PRINCIPAL_KINDS, } from "./domain";
|
|
2
|
+
export const HOLON_EFFECTIVE_SNAPSHOT_KIND = "HolonEffectiveSnapshot";
|
|
3
|
+
export const HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_FQN = "Holon.Workbench.KindDefinition.HolonEffectiveSnapshot";
|
|
4
|
+
export const HOLON_EFFECTIVE_SNAPSHOT_API_VERSION = "holon.workbench/v1";
|
|
5
|
+
export const HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_VERSION = "1.0.0";
|
|
6
|
+
export const HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_SOURCE = `<KindDefinition #Holon.Workbench.KindDefinition.HolonEffectiveSnapshot apiVersion="halfcode.resources/v1" version="1.0.0" {
|
|
7
|
+
lifecycle = "Stable"
|
|
8
|
+
resourceKind = "HolonEffectiveSnapshot"
|
|
9
|
+
sourceShapes = ["single-file"]
|
|
10
|
+
currentApiVersion = "holon.workbench/v1"
|
|
11
|
+
supportedApiVersions = ["holon.workbench/v1"]
|
|
12
|
+
description = "Canonical closed effective organization snapshot issued by Holon Workbench."
|
|
13
|
+
}>
|
|
14
|
+
`;
|
|
15
|
+
export const HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_BYTES = new TextEncoder()
|
|
16
|
+
.encode(HOLON_EFFECTIVE_SNAPSHOT_KIND_DEFINITION_SOURCE);
|
|
17
|
+
export const EFFECTIVE_ORGANIZATION_RECORD_KINDS = Object.freeze([
|
|
18
|
+
"OrganizationalSubject",
|
|
19
|
+
"Holon",
|
|
20
|
+
"Member",
|
|
21
|
+
"HolonMembership",
|
|
22
|
+
"Role",
|
|
23
|
+
"RoleAssignment",
|
|
24
|
+
"GovernancePolicy",
|
|
25
|
+
"HolonVersion",
|
|
26
|
+
"MemberVersion",
|
|
27
|
+
"HolonMembershipVersion",
|
|
28
|
+
"RoleVersion",
|
|
29
|
+
"RoleAssignmentVersion",
|
|
30
|
+
"GovernancePolicyVersion",
|
|
31
|
+
]);
|
|
32
|
+
export class HolonEffectiveSnapshotContractError extends Error {
|
|
33
|
+
path;
|
|
34
|
+
constructor(path, message) {
|
|
35
|
+
super(`${path}: ${message}`);
|
|
36
|
+
this.path = path;
|
|
37
|
+
this.name = "HolonEffectiveSnapshotContractError";
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function compareUtf16CodeUnits(left, right) {
|
|
41
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
42
|
+
}
|
|
43
|
+
function invalid(path, message) {
|
|
44
|
+
throw new HolonEffectiveSnapshotContractError(path, message);
|
|
45
|
+
}
|
|
46
|
+
function cloneClosedValue(value, path, active = new Set()) {
|
|
47
|
+
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
48
|
+
return value;
|
|
49
|
+
if (typeof value === "number") {
|
|
50
|
+
if (!Number.isFinite(value))
|
|
51
|
+
invalid(path, "Expected a finite number");
|
|
52
|
+
return value;
|
|
53
|
+
}
|
|
54
|
+
if (typeof value !== "object")
|
|
55
|
+
return invalid(path, "Expected JSON-compatible plain data");
|
|
56
|
+
if (active.has(value))
|
|
57
|
+
return invalid(path, "Cycles are not allowed");
|
|
58
|
+
active.add(value);
|
|
59
|
+
try {
|
|
60
|
+
if (Array.isArray(value)) {
|
|
61
|
+
if (Object.getPrototypeOf(value) !== Array.prototype)
|
|
62
|
+
invalid(path, "Expected a plain array");
|
|
63
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
64
|
+
const output = [];
|
|
65
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
66
|
+
const descriptor = descriptors[String(index)];
|
|
67
|
+
if (descriptor === undefined || !("value" in descriptor) || descriptor.enumerable !== true) {
|
|
68
|
+
invalid(`${path}[${index}]`, "Expected a dense enumerable own-data entry");
|
|
69
|
+
}
|
|
70
|
+
output.push(cloneClosedValue(descriptor.value, `${path}[${index}]`, active));
|
|
71
|
+
}
|
|
72
|
+
for (const key of Reflect.ownKeys(descriptors)) {
|
|
73
|
+
if (key === "length")
|
|
74
|
+
continue;
|
|
75
|
+
if (typeof key !== "string" || !/^(0|[1-9][0-9]*)$/.test(key) || Number(key) >= value.length) {
|
|
76
|
+
invalid(path, "Symbol and extra array properties are not allowed");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return Object.freeze(output);
|
|
80
|
+
}
|
|
81
|
+
const prototype = Object.getPrototypeOf(value);
|
|
82
|
+
if (prototype !== Object.prototype && prototype !== null)
|
|
83
|
+
invalid(path, "Expected a plain object");
|
|
84
|
+
const descriptors = Object.getOwnPropertyDescriptors(value);
|
|
85
|
+
const keys = Reflect.ownKeys(descriptors);
|
|
86
|
+
if (keys.some((key) => typeof key !== "string"))
|
|
87
|
+
invalid(path, "symbol properties are not allowed");
|
|
88
|
+
const output = Object.create(null);
|
|
89
|
+
for (const key of keys.sort(compareUtf16CodeUnits)) {
|
|
90
|
+
const descriptor = descriptors[key];
|
|
91
|
+
if (descriptor === undefined || !("value" in descriptor) || descriptor.enumerable !== true) {
|
|
92
|
+
invalid(`${path}.${key}`, "Expected an enumerable own-data property");
|
|
93
|
+
}
|
|
94
|
+
output[key] = cloneClosedValue(descriptor.value, `${path}.${key}`, active);
|
|
95
|
+
}
|
|
96
|
+
return Object.freeze(output);
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
active.delete(value);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function objectValue(value, path) {
|
|
103
|
+
if (value === null || value === undefined || Array.isArray(value) || typeof value !== "object")
|
|
104
|
+
invalid(path, "Expected an object");
|
|
105
|
+
return value;
|
|
106
|
+
}
|
|
107
|
+
function arrayValue(value, path) {
|
|
108
|
+
if (!Array.isArray(value))
|
|
109
|
+
invalid(path, "Expected an array");
|
|
110
|
+
return value;
|
|
111
|
+
}
|
|
112
|
+
function exactKeys(value, expected, path) {
|
|
113
|
+
const actual = Object.keys(value);
|
|
114
|
+
const expectedSet = new Set(expected);
|
|
115
|
+
const extra = actual.find((key) => !expectedSet.has(key));
|
|
116
|
+
if (extra !== undefined)
|
|
117
|
+
invalid(`${path}.${extra}`, "Unsupported field");
|
|
118
|
+
const missing = expected.find((key) => !Object.prototype.hasOwnProperty.call(value, key));
|
|
119
|
+
if (missing !== undefined)
|
|
120
|
+
invalid(`${path}.${missing}`, "Required field is missing");
|
|
121
|
+
}
|
|
122
|
+
function exactString(value, path) {
|
|
123
|
+
if (typeof value !== "string" || value.length === 0 || value !== value.trim())
|
|
124
|
+
invalid(path, "Expected an exact non-empty string");
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
127
|
+
function canonicalDay(value, path) {
|
|
128
|
+
const result = exactString(value, path);
|
|
129
|
+
const parsed = Date.parse(`${result}T00:00:00.000Z`);
|
|
130
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(result) || Number.isNaN(parsed) || new Date(parsed).toISOString().slice(0, 10) !== result) {
|
|
131
|
+
invalid(path, "Expected a canonical YYYY-MM-DD date");
|
|
132
|
+
}
|
|
133
|
+
return result;
|
|
134
|
+
}
|
|
135
|
+
function utcInstant(value, path) {
|
|
136
|
+
const result = exactString(value, path);
|
|
137
|
+
const parsed = Date.parse(result);
|
|
138
|
+
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(result) || Number.isNaN(parsed) || new Date(parsed).toISOString() !== result) {
|
|
139
|
+
invalid(path, "Expected a canonical UTC instant");
|
|
140
|
+
}
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
function safeSequence(value, path) {
|
|
144
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0)
|
|
145
|
+
invalid(path, "Expected a non-negative safe integer");
|
|
146
|
+
return value;
|
|
147
|
+
}
|
|
148
|
+
function stringArray(value, path) {
|
|
149
|
+
return Object.freeze(arrayValue(value, path).map((item, index) => exactString(item, `${path}[${index}]`)));
|
|
150
|
+
}
|
|
151
|
+
const stableProvenance = ["createdAt", "createdBy"];
|
|
152
|
+
const effectiveProvenance = ["id", "effectiveDate", "effectiveState", "createdAt", "createdBy", "changeSetId", "sequence"];
|
|
153
|
+
function validateStableProvenance(value, path) {
|
|
154
|
+
utcInstant(value.createdAt, `${path}.createdAt`);
|
|
155
|
+
exactString(value.createdBy, `${path}.createdBy`);
|
|
156
|
+
}
|
|
157
|
+
function validateSelectedVersion(value, path) {
|
|
158
|
+
exactString(value.id, `${path}.id`);
|
|
159
|
+
canonicalDay(value.effectiveDate, `${path}.effectiveDate`);
|
|
160
|
+
if (value.effectiveState !== true)
|
|
161
|
+
invalid(`${path}.effectiveState`, "A selected Version must be effective");
|
|
162
|
+
validateStableProvenance(value, path);
|
|
163
|
+
exactString(value.changeSetId, `${path}.changeSetId`);
|
|
164
|
+
safeSequence(value.sequence, `${path}.sequence`);
|
|
165
|
+
}
|
|
166
|
+
function normalizeRecord(value, path) {
|
|
167
|
+
const record = objectValue(value, path);
|
|
168
|
+
const kind = exactString(record.kind, `${path}.kind`);
|
|
169
|
+
if (!EFFECTIVE_ORGANIZATION_RECORD_KINDS.includes(kind))
|
|
170
|
+
invalid(`${path}.kind`, "Unsupported record kind");
|
|
171
|
+
const effectiveKeys = (fields) => ["kind", ...effectiveProvenance, ...fields];
|
|
172
|
+
switch (kind) {
|
|
173
|
+
case "OrganizationalSubject":
|
|
174
|
+
exactKeys(record, ["kind", "id", "subjectType"], path);
|
|
175
|
+
exactString(record.id, `${path}.id`);
|
|
176
|
+
if (record.subjectType !== "member" && record.subjectType !== "holon")
|
|
177
|
+
invalid(`${path}.subjectType`, "Unsupported subject type");
|
|
178
|
+
break;
|
|
179
|
+
case "Holon":
|
|
180
|
+
exactKeys(record, ["kind", "id", "subjectId", "code", ...stableProvenance], path);
|
|
181
|
+
exactString(record.id, `${path}.id`);
|
|
182
|
+
exactString(record.subjectId, `${path}.subjectId`);
|
|
183
|
+
exactString(record.code, `${path}.code`);
|
|
184
|
+
validateStableProvenance(record, path);
|
|
185
|
+
break;
|
|
186
|
+
case "Member":
|
|
187
|
+
exactKeys(record, ["kind", "id", "subjectId", ...stableProvenance], path);
|
|
188
|
+
exactString(record.id, `${path}.id`);
|
|
189
|
+
exactString(record.subjectId, `${path}.subjectId`);
|
|
190
|
+
validateStableProvenance(record, path);
|
|
191
|
+
break;
|
|
192
|
+
case "HolonMembership":
|
|
193
|
+
case "RoleAssignment":
|
|
194
|
+
exactKeys(record, ["kind", "id", ...stableProvenance], path);
|
|
195
|
+
exactString(record.id, `${path}.id`);
|
|
196
|
+
validateStableProvenance(record, path);
|
|
197
|
+
break;
|
|
198
|
+
case "Role":
|
|
199
|
+
case "GovernancePolicy":
|
|
200
|
+
exactKeys(record, ["kind", "id", "holonId", ...stableProvenance], path);
|
|
201
|
+
exactString(record.id, `${path}.id`);
|
|
202
|
+
exactString(record.holonId, `${path}.holonId`);
|
|
203
|
+
validateStableProvenance(record, path);
|
|
204
|
+
break;
|
|
205
|
+
case "HolonVersion":
|
|
206
|
+
exactKeys(record, effectiveKeys(["holonId", "name", "purpose", "boundary"]), path);
|
|
207
|
+
validateSelectedVersion(record, path);
|
|
208
|
+
exactString(record.holonId, `${path}.holonId`);
|
|
209
|
+
exactString(record.name, `${path}.name`);
|
|
210
|
+
exactString(record.purpose, `${path}.purpose`);
|
|
211
|
+
exactString(record.boundary, `${path}.boundary`);
|
|
212
|
+
break;
|
|
213
|
+
case "MemberVersion":
|
|
214
|
+
exactKeys(record, effectiveKeys(["memberId", "displayName", "principalKind"]), path);
|
|
215
|
+
validateSelectedVersion(record, path);
|
|
216
|
+
exactString(record.memberId, `${path}.memberId`);
|
|
217
|
+
exactString(record.displayName, `${path}.displayName`);
|
|
218
|
+
if (!MEMBER_PRINCIPAL_KINDS.includes(record.principalKind))
|
|
219
|
+
invalid(`${path}.principalKind`, "Unsupported Member principal kind");
|
|
220
|
+
break;
|
|
221
|
+
case "HolonMembershipVersion":
|
|
222
|
+
exactKeys(record, effectiveKeys(["membershipId", "parentHolonId", "subjectId", "mode"]), path);
|
|
223
|
+
validateSelectedVersion(record, path);
|
|
224
|
+
exactString(record.membershipId, `${path}.membershipId`);
|
|
225
|
+
exactString(record.parentHolonId, `${path}.parentHolonId`);
|
|
226
|
+
exactString(record.subjectId, `${path}.subjectId`);
|
|
227
|
+
if (record.mode !== "primary" && record.mode !== "affiliate")
|
|
228
|
+
invalid(`${path}.mode`, "Unsupported membership mode");
|
|
229
|
+
break;
|
|
230
|
+
case "RoleVersion":
|
|
231
|
+
exactKeys(record, effectiveKeys(["roleId", "name", "purpose", "domains", "accountabilities", "policies", "capabilityRequirements"]), path);
|
|
232
|
+
validateSelectedVersion(record, path);
|
|
233
|
+
exactString(record.roleId, `${path}.roleId`);
|
|
234
|
+
exactString(record.name, `${path}.name`);
|
|
235
|
+
exactString(record.purpose, `${path}.purpose`);
|
|
236
|
+
stringArray(record.domains, `${path}.domains`);
|
|
237
|
+
stringArray(record.accountabilities, `${path}.accountabilities`);
|
|
238
|
+
stringArray(record.policies, `${path}.policies`);
|
|
239
|
+
stringArray(record.capabilityRequirements, `${path}.capabilityRequirements`);
|
|
240
|
+
break;
|
|
241
|
+
case "RoleAssignmentVersion":
|
|
242
|
+
exactKeys(record, effectiveKeys(["roleAssignmentId", "membershipId", "roleId"]), path);
|
|
243
|
+
validateSelectedVersion(record, path);
|
|
244
|
+
exactString(record.roleAssignmentId, `${path}.roleAssignmentId`);
|
|
245
|
+
exactString(record.membershipId, `${path}.membershipId`);
|
|
246
|
+
exactString(record.roleId, `${path}.roleId`);
|
|
247
|
+
break;
|
|
248
|
+
case "GovernancePolicyVersion":
|
|
249
|
+
exactKeys(record, effectiveKeys(["governancePolicyId", "holonId", "name", "profile", "rules"]), path);
|
|
250
|
+
validateSelectedVersion(record, path);
|
|
251
|
+
exactString(record.governancePolicyId, `${path}.governancePolicyId`);
|
|
252
|
+
exactString(record.holonId, `${path}.holonId`);
|
|
253
|
+
exactString(record.name, `${path}.name`);
|
|
254
|
+
exactString(record.profile, `${path}.profile`);
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
return record;
|
|
258
|
+
}
|
|
259
|
+
function recordsOf(records, kind) {
|
|
260
|
+
return records.filter((record) => record.kind === kind);
|
|
261
|
+
}
|
|
262
|
+
function uniqueMap(records, kind) {
|
|
263
|
+
const result = new Map();
|
|
264
|
+
for (const record of records) {
|
|
265
|
+
if (result.has(record.id))
|
|
266
|
+
invalid("$.records", `Duplicate ${kind} identity '${record.id}'`);
|
|
267
|
+
result.set(record.id, record);
|
|
268
|
+
}
|
|
269
|
+
return result;
|
|
270
|
+
}
|
|
271
|
+
function pairedVersions(identities, versions, logicalId, kind) {
|
|
272
|
+
const result = new Map();
|
|
273
|
+
for (const version of versions) {
|
|
274
|
+
const id = logicalId(version);
|
|
275
|
+
if (!identities.has(id))
|
|
276
|
+
invalid("$.records", `${kind} '${version.id}' has a dangling stable identity '${id}'`);
|
|
277
|
+
if (result.has(id))
|
|
278
|
+
invalid("$.records", `Duplicate selected ${kind} identity '${id}'`);
|
|
279
|
+
result.set(id, version);
|
|
280
|
+
}
|
|
281
|
+
for (const id of identities.keys())
|
|
282
|
+
if (!result.has(id))
|
|
283
|
+
invalid("$.records", `${kind} '${id}' is missing its selected Version`);
|
|
284
|
+
return result;
|
|
285
|
+
}
|
|
286
|
+
function validateClosure(tree) {
|
|
287
|
+
const records = tree.records;
|
|
288
|
+
const allIdentities = new Set();
|
|
289
|
+
for (const record of records) {
|
|
290
|
+
const identity = `${record.kind}\0${record.id}`;
|
|
291
|
+
if (allIdentities.has(identity))
|
|
292
|
+
invalid("$.records", `Duplicate record identity '${record.kind}:${record.id}'`);
|
|
293
|
+
allIdentities.add(identity);
|
|
294
|
+
if ("effectiveDate" in record && record.effectiveDate > tree.effectiveAt.slice(0, 10))
|
|
295
|
+
invalid("$.records", `${record.kind} '${record.id}' is later than effectiveAt`);
|
|
296
|
+
}
|
|
297
|
+
const subjects = uniqueMap(recordsOf(records, "OrganizationalSubject"), "OrganizationalSubject");
|
|
298
|
+
const holons = uniqueMap(recordsOf(records, "Holon"), "Holon");
|
|
299
|
+
const members = uniqueMap(recordsOf(records, "Member"), "Member");
|
|
300
|
+
const memberships = uniqueMap(recordsOf(records, "HolonMembership"), "HolonMembership");
|
|
301
|
+
const roles = uniqueMap(recordsOf(records, "Role"), "Role");
|
|
302
|
+
const assignments = uniqueMap(recordsOf(records, "RoleAssignment"), "RoleAssignment");
|
|
303
|
+
const policies = uniqueMap(recordsOf(records, "GovernancePolicy"), "GovernancePolicy");
|
|
304
|
+
pairedVersions(holons, recordsOf(records, "HolonVersion"), (record) => record.holonId, "Holon");
|
|
305
|
+
pairedVersions(members, recordsOf(records, "MemberVersion"), (record) => record.memberId, "Member");
|
|
306
|
+
const membershipVersions = pairedVersions(memberships, recordsOf(records, "HolonMembershipVersion"), (record) => record.membershipId, "HolonMembership");
|
|
307
|
+
pairedVersions(roles, recordsOf(records, "RoleVersion"), (record) => record.roleId, "Role");
|
|
308
|
+
const assignmentVersions = pairedVersions(assignments, recordsOf(records, "RoleAssignmentVersion"), (record) => record.roleAssignmentId, "RoleAssignment");
|
|
309
|
+
const policyVersions = pairedVersions(policies, recordsOf(records, "GovernancePolicyVersion"), (record) => record.governancePolicyId, "GovernancePolicy");
|
|
310
|
+
const subjectOwners = new Map();
|
|
311
|
+
for (const holon of holons.values()) {
|
|
312
|
+
if (subjects.get(holon.subjectId)?.subjectType !== "holon")
|
|
313
|
+
invalid("$.records", `Holon '${holon.id}' has a dangling holon subject '${holon.subjectId}'`);
|
|
314
|
+
if (subjectOwners.has(holon.subjectId))
|
|
315
|
+
invalid("$.records", `Subject '${holon.subjectId}' has duplicate stable owners`);
|
|
316
|
+
subjectOwners.set(holon.subjectId, { kind: "Holon", id: holon.id });
|
|
317
|
+
}
|
|
318
|
+
for (const member of members.values()) {
|
|
319
|
+
if (subjects.get(member.subjectId)?.subjectType !== "member")
|
|
320
|
+
invalid("$.records", `Member '${member.id}' has a dangling member subject '${member.subjectId}'`);
|
|
321
|
+
if (subjectOwners.has(member.subjectId))
|
|
322
|
+
invalid("$.records", `Subject '${member.subjectId}' has duplicate stable owners`);
|
|
323
|
+
subjectOwners.set(member.subjectId, { kind: "Member", id: member.id });
|
|
324
|
+
}
|
|
325
|
+
for (const subject of subjects.values())
|
|
326
|
+
if (!subjectOwners.has(subject.id))
|
|
327
|
+
invalid("$.records", `OrganizationalSubject '${subject.id}' is missing its stable identity`);
|
|
328
|
+
if (!holons.has(tree.rootHolonRef))
|
|
329
|
+
invalid("$.rootHolonRef", "Root Holon does not resolve inside the snapshot");
|
|
330
|
+
const reachableHolons = new Set([tree.rootHolonRef]);
|
|
331
|
+
const reachableMembers = new Set();
|
|
332
|
+
const reachableMemberships = new Set();
|
|
333
|
+
let changed = true;
|
|
334
|
+
while (changed) {
|
|
335
|
+
changed = false;
|
|
336
|
+
for (const version of membershipVersions.values()) {
|
|
337
|
+
if (!reachableHolons.has(version.parentHolonId))
|
|
338
|
+
continue;
|
|
339
|
+
if (!holons.has(version.parentHolonId))
|
|
340
|
+
invalid("$.records", `Membership '${version.membershipId}' has a dangling parent Holon`);
|
|
341
|
+
const owner = subjectOwners.get(version.subjectId);
|
|
342
|
+
if (owner === undefined)
|
|
343
|
+
invalid("$.records", `Membership '${version.membershipId}' has a dangling subject`);
|
|
344
|
+
reachableMemberships.add(version.membershipId);
|
|
345
|
+
const target = owner.kind === "Holon" ? reachableHolons : reachableMembers;
|
|
346
|
+
if (!target.has(owner.id)) {
|
|
347
|
+
target.add(owner.id);
|
|
348
|
+
changed = true;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
for (const id of holons.keys())
|
|
353
|
+
if (!reachableHolons.has(id))
|
|
354
|
+
invalid("$.records", `Holon '${id}' is outside the root closure`);
|
|
355
|
+
for (const id of members.keys())
|
|
356
|
+
if (!reachableMembers.has(id))
|
|
357
|
+
invalid("$.records", `Member '${id}' is outside the root closure`);
|
|
358
|
+
for (const id of memberships.keys())
|
|
359
|
+
if (!reachableMemberships.has(id))
|
|
360
|
+
invalid("$.records", `Membership '${id}' is outside the root closure`);
|
|
361
|
+
const nestedHolons = new Map();
|
|
362
|
+
for (const version of membershipVersions.values()) {
|
|
363
|
+
const owner = subjectOwners.get(version.subjectId);
|
|
364
|
+
if (owner?.kind === "Holon")
|
|
365
|
+
nestedHolons.set(version.parentHolonId, [...(nestedHolons.get(version.parentHolonId) ?? []), owner.id]);
|
|
366
|
+
}
|
|
367
|
+
const visiting = new Set();
|
|
368
|
+
const visited = new Set();
|
|
369
|
+
function visitHolon(holonId) {
|
|
370
|
+
if (visiting.has(holonId))
|
|
371
|
+
invalid("$.records", `Nested Holon membership contains a cycle through '${holonId}'`);
|
|
372
|
+
if (visited.has(holonId))
|
|
373
|
+
return;
|
|
374
|
+
visiting.add(holonId);
|
|
375
|
+
for (const childId of nestedHolons.get(holonId) ?? [])
|
|
376
|
+
visitHolon(childId);
|
|
377
|
+
visiting.delete(holonId);
|
|
378
|
+
visited.add(holonId);
|
|
379
|
+
}
|
|
380
|
+
visitHolon(tree.rootHolonRef);
|
|
381
|
+
for (const role of roles.values())
|
|
382
|
+
if (!reachableHolons.has(role.holonId))
|
|
383
|
+
invalid("$.records", `Role '${role.id}' has a dangling Holon`);
|
|
384
|
+
for (const policy of policies.values())
|
|
385
|
+
if (!reachableHolons.has(policy.holonId))
|
|
386
|
+
invalid("$.records", `GovernancePolicy '${policy.id}' has a dangling Holon`);
|
|
387
|
+
for (const version of policyVersions.values()) {
|
|
388
|
+
if (policies.get(version.governancePolicyId)?.holonId !== version.holonId)
|
|
389
|
+
invalid("$.records", `GovernancePolicyVersion '${version.id}' has mismatched stable authority`);
|
|
390
|
+
}
|
|
391
|
+
for (const version of assignmentVersions.values()) {
|
|
392
|
+
const membership = membershipVersions.get(version.membershipId);
|
|
393
|
+
const role = roles.get(version.roleId);
|
|
394
|
+
if (membership === undefined || role === undefined)
|
|
395
|
+
invalid("$.records", `RoleAssignment '${version.roleAssignmentId}' has a dangling Membership or Role`);
|
|
396
|
+
if (membership.parentHolonId !== role.holonId)
|
|
397
|
+
invalid("$.records", `RoleAssignment '${version.roleAssignmentId}' crosses Holon scope`);
|
|
398
|
+
if (subjectOwners.get(membership.subjectId)?.kind !== "Member")
|
|
399
|
+
invalid("$.records", `RoleAssignment '${version.roleAssignmentId}' does not resolve an eligible Member`);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
function normalizedTree(value) {
|
|
403
|
+
const root = objectValue(cloneClosedValue(value, "$"), "$");
|
|
404
|
+
exactKeys(root, ["apiVersion", "kind", "snapshotId", "rootHolonRef", "effectiveAt", "sourceRevision", "records"], "$");
|
|
405
|
+
if (root.apiVersion !== HOLON_EFFECTIVE_SNAPSHOT_API_VERSION)
|
|
406
|
+
invalid("$.apiVersion", "Unsupported apiVersion");
|
|
407
|
+
if (root.kind !== HOLON_EFFECTIVE_SNAPSHOT_KIND)
|
|
408
|
+
invalid("$.kind", "Unsupported Resource kind");
|
|
409
|
+
const snapshotId = exactString(root.snapshotId, "$.snapshotId");
|
|
410
|
+
const rootHolonRef = exactString(root.rootHolonRef, "$.rootHolonRef");
|
|
411
|
+
const effectiveAt = utcInstant(root.effectiveAt, "$.effectiveAt");
|
|
412
|
+
const sourceRevision = exactString(root.sourceRevision, "$.sourceRevision");
|
|
413
|
+
const records = arrayValue(root.records, "$.records").map((record, index) => normalizeRecord(record, `$.records[${index}]`));
|
|
414
|
+
records.sort((left, right) => EFFECTIVE_ORGANIZATION_RECORD_KINDS.indexOf(left.kind) - EFFECTIVE_ORGANIZATION_RECORD_KINDS.indexOf(right.kind) || compareUtf16CodeUnits(left.id, right.id));
|
|
415
|
+
const result = Object.freeze({
|
|
416
|
+
apiVersion: HOLON_EFFECTIVE_SNAPSHOT_API_VERSION,
|
|
417
|
+
kind: HOLON_EFFECTIVE_SNAPSHOT_KIND,
|
|
418
|
+
snapshotId,
|
|
419
|
+
rootHolonRef,
|
|
420
|
+
effectiveAt,
|
|
421
|
+
sourceRevision,
|
|
422
|
+
records: Object.freeze(records),
|
|
423
|
+
});
|
|
424
|
+
validateClosure(result);
|
|
425
|
+
return result;
|
|
426
|
+
}
|
|
427
|
+
export function normalizeHolonEffectiveSnapshotTree(value) {
|
|
428
|
+
return normalizedTree(value);
|
|
429
|
+
}
|
|
430
|
+
function canonicalJson(value) {
|
|
431
|
+
if (value === null || typeof value !== "object")
|
|
432
|
+
return JSON.stringify(value);
|
|
433
|
+
if (Array.isArray(value))
|
|
434
|
+
return `[${value.map((item) => canonicalJson(item)).join(",")}]`;
|
|
435
|
+
const record = value;
|
|
436
|
+
return `{${Object.keys(record).sort(compareUtf16CodeUnits).map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`).join(",")}}`;
|
|
437
|
+
}
|
|
438
|
+
export function canonicalHolonEffectiveSnapshotTreeBytes(value) {
|
|
439
|
+
return new TextEncoder().encode(canonicalJson(normalizedTree(value)));
|
|
440
|
+
}
|
|
441
|
+
async function sha256(bytes) {
|
|
442
|
+
const input = new Uint8Array(bytes.byteLength);
|
|
443
|
+
input.set(bytes);
|
|
444
|
+
const digest = await globalThis.crypto.subtle.digest("SHA-256", input.buffer);
|
|
445
|
+
const hex = [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
446
|
+
return `sha256:${hex}`;
|
|
447
|
+
}
|
|
448
|
+
export async function computeHolonEffectiveSnapshotTreeDigest(value) {
|
|
449
|
+
return sha256(canonicalHolonEffectiveSnapshotTreeBytes(value));
|
|
450
|
+
}
|
|
451
|
+
function digestValue(value, path) {
|
|
452
|
+
const result = exactString(value, path);
|
|
453
|
+
if (!/^sha256:[0-9a-f]{64}$/.test(result))
|
|
454
|
+
invalid(path, "Expected a lowercase SHA-256 digest");
|
|
455
|
+
return result;
|
|
456
|
+
}
|
|
457
|
+
export function normalizeHolonEffectiveSnapshot(value) {
|
|
458
|
+
const root = objectValue(cloneClosedValue(value, "$"), "$");
|
|
459
|
+
exactKeys(root, ["apiVersion", "kind", "snapshotId", "rootHolonRef", "effectiveAt", "sourceRevision", "records", "treeDigest"], "$");
|
|
460
|
+
const tree = normalizedTree({
|
|
461
|
+
apiVersion: root.apiVersion,
|
|
462
|
+
kind: root.kind,
|
|
463
|
+
snapshotId: root.snapshotId,
|
|
464
|
+
rootHolonRef: root.rootHolonRef,
|
|
465
|
+
effectiveAt: root.effectiveAt,
|
|
466
|
+
sourceRevision: root.sourceRevision,
|
|
467
|
+
records: root.records,
|
|
468
|
+
});
|
|
469
|
+
return Object.freeze({ ...tree, treeDigest: digestValue(root.treeDigest, "$.treeDigest") });
|
|
470
|
+
}
|
|
471
|
+
function snapshotTree(snapshot) {
|
|
472
|
+
return {
|
|
473
|
+
apiVersion: snapshot.apiVersion,
|
|
474
|
+
kind: snapshot.kind,
|
|
475
|
+
snapshotId: snapshot.snapshotId,
|
|
476
|
+
rootHolonRef: snapshot.rootHolonRef,
|
|
477
|
+
effectiveAt: snapshot.effectiveAt,
|
|
478
|
+
sourceRevision: snapshot.sourceRevision,
|
|
479
|
+
records: snapshot.records,
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
export async function canonicalHolonEffectiveSnapshotBytes(value) {
|
|
483
|
+
const snapshot = normalizeHolonEffectiveSnapshot(value);
|
|
484
|
+
const expected = await computeHolonEffectiveSnapshotTreeDigest(snapshotTree(snapshot));
|
|
485
|
+
if (snapshot.treeDigest !== expected)
|
|
486
|
+
invalid("$.treeDigest", "Digest does not bind the canonical snapshot tree bytes");
|
|
487
|
+
return new TextEncoder().encode(canonicalJson(snapshot));
|
|
488
|
+
}
|
|
489
|
+
function sameBytes(left, right) {
|
|
490
|
+
return left.byteLength === right.byteLength && left.every((byte, index) => byte === right[index]);
|
|
491
|
+
}
|
|
492
|
+
export async function parseHolonEffectiveSnapshotBytes(bytes) {
|
|
493
|
+
if (!(bytes instanceof Uint8Array))
|
|
494
|
+
invalid("$bytes", "Expected UTF-8 bytes");
|
|
495
|
+
let value;
|
|
496
|
+
try {
|
|
497
|
+
value = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
|
|
498
|
+
}
|
|
499
|
+
catch {
|
|
500
|
+
return invalid("$bytes", "Expected one canonical UTF-8 JSON document");
|
|
501
|
+
}
|
|
502
|
+
const snapshot = normalizeHolonEffectiveSnapshot(value);
|
|
503
|
+
const canonical = await canonicalHolonEffectiveSnapshotBytes(snapshot);
|
|
504
|
+
if (!sameBytes(bytes, canonical))
|
|
505
|
+
invalid("$bytes", "Snapshot bytes are not canonical");
|
|
506
|
+
return snapshot;
|
|
507
|
+
}
|
|
508
|
+
export function validateHolonEffectiveSnapshotIssuanceReceipt(value, snapshot) {
|
|
509
|
+
const root = objectValue(cloneClosedValue(value, "$receipt"), "$receipt");
|
|
510
|
+
exactKeys(root, ["snapshotRef", "sourceAuthorityId", "sourceRevision", "effectiveAt", "treeDigest", "issuedAt"], "$receipt");
|
|
511
|
+
const receipt = Object.freeze({
|
|
512
|
+
snapshotRef: exactString(root.snapshotRef, "$receipt.snapshotRef"),
|
|
513
|
+
sourceAuthorityId: exactString(root.sourceAuthorityId, "$receipt.sourceAuthorityId"),
|
|
514
|
+
sourceRevision: exactString(root.sourceRevision, "$receipt.sourceRevision"),
|
|
515
|
+
effectiveAt: utcInstant(root.effectiveAt, "$receipt.effectiveAt"),
|
|
516
|
+
treeDigest: digestValue(root.treeDigest, "$receipt.treeDigest"),
|
|
517
|
+
issuedAt: utcInstant(root.issuedAt, "$receipt.issuedAt"),
|
|
518
|
+
});
|
|
519
|
+
const boundSnapshot = snapshot === undefined ? undefined : normalizeHolonEffectiveSnapshot(snapshot);
|
|
520
|
+
if (boundSnapshot !== undefined && (receipt.snapshotRef !== boundSnapshot.snapshotId || receipt.sourceRevision !== boundSnapshot.sourceRevision
|
|
521
|
+
|| receipt.effectiveAt !== boundSnapshot.effectiveAt || receipt.treeDigest !== boundSnapshot.treeDigest)) {
|
|
522
|
+
invalid("$receipt", "Receipt does not bind the supplied snapshot");
|
|
523
|
+
}
|
|
524
|
+
return receipt;
|
|
525
|
+
}
|
|
526
|
+
export function canonicalHolonEffectiveSnapshotIssuanceReceiptBytes(value, snapshot) {
|
|
527
|
+
const receipt = validateHolonEffectiveSnapshotIssuanceReceipt(value, snapshot);
|
|
528
|
+
return new TextEncoder().encode(canonicalJson(receipt));
|
|
529
|
+
}
|
|
530
|
+
export function parseHolonEffectiveSnapshotIssuanceReceiptBytes(bytes, snapshot) {
|
|
531
|
+
if (!(bytes instanceof Uint8Array))
|
|
532
|
+
invalid("$receiptBytes", "Expected UTF-8 bytes");
|
|
533
|
+
let value;
|
|
534
|
+
try {
|
|
535
|
+
value = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
|
|
536
|
+
}
|
|
537
|
+
catch {
|
|
538
|
+
return invalid("$receiptBytes", "Expected one canonical UTF-8 JSON document");
|
|
539
|
+
}
|
|
540
|
+
const receipt = validateHolonEffectiveSnapshotIssuanceReceipt(value, snapshot);
|
|
541
|
+
if (!sameBytes(bytes, canonicalHolonEffectiveSnapshotIssuanceReceiptBytes(receipt, snapshot)))
|
|
542
|
+
invalid("$receiptBytes", "Receipt bytes are not canonical");
|
|
543
|
+
return receipt;
|
|
544
|
+
}
|
|
545
|
+
export async function reconstructHolonEffectiveSnapshot(bytes) {
|
|
546
|
+
const snapshot = await parseHolonEffectiveSnapshotBytes(bytes);
|
|
547
|
+
const subjects = new Map(recordsOf(snapshot.records, "OrganizationalSubject").map((record) => [record.id, record]));
|
|
548
|
+
const holonsBySubject = new Map(recordsOf(snapshot.records, "Holon").map((record) => [record.subjectId, record]));
|
|
549
|
+
const membersBySubject = new Map(recordsOf(snapshot.records, "Member").map((record) => [record.subjectId, record]));
|
|
550
|
+
const membershipVersions = new Map(recordsOf(snapshot.records, "HolonMembershipVersion").map((record) => [record.membershipId, record]));
|
|
551
|
+
const nestedHolonMemberships = [];
|
|
552
|
+
const memberMemberships = [];
|
|
553
|
+
for (const membership of membershipVersions.values()) {
|
|
554
|
+
const subject = subjects.get(membership.subjectId);
|
|
555
|
+
if (subject.subjectType === "holon") {
|
|
556
|
+
nestedHolonMemberships.push({ membershipRef: membership.membershipId, parentHolonRef: membership.parentHolonId, childHolonRef: holonsBySubject.get(subject.id).id, mode: membership.mode });
|
|
557
|
+
}
|
|
558
|
+
else {
|
|
559
|
+
memberMemberships.push({ membershipRef: membership.membershipId, parentHolonRef: membership.parentHolonId, memberRef: membersBySubject.get(subject.id).id, mode: membership.mode });
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
const memberMembershipById = new Map(memberMemberships.map((membership) => [membership.membershipRef, membership]));
|
|
563
|
+
const roleEligibility = recordsOf(snapshot.records, "RoleAssignmentVersion").map((assignment) => ({
|
|
564
|
+
assignmentRef: assignment.roleAssignmentId,
|
|
565
|
+
membershipRef: assignment.membershipId,
|
|
566
|
+
roleRef: assignment.roleId,
|
|
567
|
+
memberRef: memberMembershipById.get(assignment.membershipId).memberRef,
|
|
568
|
+
}));
|
|
569
|
+
const sortByMembership = (left, right) => compareUtf16CodeUnits(left.membershipRef, right.membershipRef);
|
|
570
|
+
return Object.freeze({
|
|
571
|
+
snapshot,
|
|
572
|
+
nestedHolonMemberships: Object.freeze(nestedHolonMemberships.sort(sortByMembership)),
|
|
573
|
+
memberMemberships: Object.freeze(memberMemberships.sort(sortByMembership)),
|
|
574
|
+
roleEligibility: Object.freeze(roleEligibility.sort((left, right) => compareUtf16CodeUnits(left.assignmentRef, right.assignmentRef))),
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
//# sourceMappingURL=effective-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-snapshot.js","sourceRoot":"","sources":["../src/effective-snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const HOLARCHY_CORE_ID: "holarchy-core";
|
|
2
|
+
export * from "./domain";
|
|
3
|
+
export * from "./effective-snapshot";
|
|
4
|
+
export * from "./authority-store";
|
|
5
|
+
export type { ExecuteOperationRequest, ExecuteOperationResponse, JsonObject, JsonValue, OperationDiagnostic, OperationPresetDto, } from "depa-domain-protocol";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,EAAG,eAAwB,CAAC;AAEzD,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAwB,CAAC;AAEzD,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "holarchy-core-contract",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"files": ["dist"],
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"scripts": {
|
|
16
|
+
"typecheck": "bun x tsc -p tsconfig.json --noEmit",
|
|
17
|
+
"build": "bun x tsc -p tsconfig.json"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"depa-domain-protocol": "0.1.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"typescript": "^5.9.3"
|
|
24
|
+
}
|
|
25
|
+
}
|