@sentropic/h2a 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Drumbeat D5 (reflexive watchdog) — pure parsing of a decider's verdict. The
3
+ * decider (a CLI-runtime adapter, often a headless host CLI) returns free-ish
4
+ * text containing a JSON object; this turns it into a typed decision. Total —
5
+ * never throws: anything unrecognised maps to the safe default `relance`
6
+ * (mirrors `parseOrgManifest`). No I/O, no dependency.
7
+ */
8
+ export declare const H2A_REFLEXIVE_ACTIONS: readonly ["relance", "finish", "escalate", "reroute"];
9
+ export type H2AReflexiveAction = (typeof H2A_REFLEXIVE_ACTIONS)[number];
10
+ export interface H2AReflexiveDecision {
11
+ readonly action: H2AReflexiveAction;
12
+ readonly reason?: string;
13
+ }
14
+ /**
15
+ * Parse a decider's output into a typed decision. Unknown/missing action,
16
+ * malformed JSON, or no JSON at all → `{ action: "relance" }` (never throws).
17
+ */
18
+ export declare function parseReflexiveDecision(text: string): H2AReflexiveDecision;
19
+ //# sourceMappingURL=drumbeat-decision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drumbeat-decision.d.ts","sourceRoot":"","sources":["../src/drumbeat-decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,qBAAqB,uDAAwD,CAAC;AAC3F,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAwBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAgBzE"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Drumbeat D5 (reflexive watchdog) — pure parsing of a decider's verdict. The
3
+ * decider (a CLI-runtime adapter, often a headless host CLI) returns free-ish
4
+ * text containing a JSON object; this turns it into a typed decision. Total —
5
+ * never throws: anything unrecognised maps to the safe default `relance`
6
+ * (mirrors `parseOrgManifest`). No I/O, no dependency.
7
+ */
8
+ export const H2A_REFLEXIVE_ACTIONS = ["relance", "finish", "escalate", "reroute"];
9
+ const RELANCE = { action: "relance" };
10
+ /** Extract the first balanced top-level `{...}` JSON object from `text`, or undefined. */
11
+ function firstJsonObject(text) {
12
+ const start = text.indexOf("{");
13
+ if (start < 0)
14
+ return undefined;
15
+ let depth = 0;
16
+ let inStr = false;
17
+ let esc = false;
18
+ for (let i = start; i < text.length; i++) {
19
+ const c = text[i];
20
+ if (inStr) {
21
+ if (esc)
22
+ esc = false;
23
+ else if (c === "\\")
24
+ esc = true;
25
+ else if (c === '"')
26
+ inStr = false;
27
+ }
28
+ else if (c === '"')
29
+ inStr = true;
30
+ else if (c === "{")
31
+ depth++;
32
+ else if (c === "}" && --depth === 0)
33
+ return text.slice(start, i + 1);
34
+ }
35
+ return undefined;
36
+ }
37
+ /**
38
+ * Parse a decider's output into a typed decision. Unknown/missing action,
39
+ * malformed JSON, or no JSON at all → `{ action: "relance" }` (never throws).
40
+ */
41
+ export function parseReflexiveDecision(text) {
42
+ const json = firstJsonObject(text);
43
+ if (!json)
44
+ return RELANCE;
45
+ let parsed;
46
+ try {
47
+ parsed = JSON.parse(json);
48
+ }
49
+ catch {
50
+ return RELANCE;
51
+ }
52
+ if (typeof parsed !== "object" || parsed === null)
53
+ return RELANCE;
54
+ const obj = parsed;
55
+ if (!H2A_REFLEXIVE_ACTIONS.includes(obj.action))
56
+ return RELANCE;
57
+ return {
58
+ action: obj.action,
59
+ ...(typeof obj.reason === "string" ? { reason: obj.reason } : {})
60
+ };
61
+ }
62
+ //# sourceMappingURL=drumbeat-decision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drumbeat-decision.js","sourceRoot":"","sources":["../src/drumbeat-decision.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAU,CAAC;AAQ3F,MAAM,OAAO,GAAyB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAE5D,0FAA0F;AAC1F,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,GAAG;gBAAE,GAAG,GAAG,KAAK,CAAC;iBAChB,IAAI,CAAC,KAAK,IAAI;gBAAE,GAAG,GAAG,IAAI,CAAC;iBAC3B,IAAI,CAAC,KAAK,GAAG;gBAAE,KAAK,GAAG,KAAK,CAAC;QACpC,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,GAAG,IAAI,CAAC;aAC9B,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACvB,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC;IAC1B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,OAAO,CAAC;IAClE,MAAM,GAAG,GAAG,MAAgD,CAAC;IAC7D,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAA4B,CAAC;QAAE,OAAO,OAAO,CAAC;IACtF,OAAO;QACL,MAAM,EAAE,GAAG,CAAC,MAA4B;QACxC,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -27,8 +27,12 @@ export { H2A_NHI_EXPORT_KEY_USE, H2A_NHI_SPIFFE_PATH_ENCODINGS, nhiSpiffeId, nhi
27
27
  export type { H2ANhiTrustBundle, H2ANhiTrustBundleInput, H2ANhiTrustBundleKey } from "./nhi-export.js";
28
28
  export { H2A_BLOCKAGE_BODY_KIND, H2A_BLOCKAGE_CLEARED_BODY_KIND, blockageEnvelope, isActiveBlockage } from "./blockage.js";
29
29
  export type { H2ABlockage, H2ABlockageBody } from "./blockage.js";
30
- export { H2A_ORG_PROPOSAL_BODY_KIND, H2A_ORG_RATIFIED_BODY_KIND, orgAssignmentEnvelope, validateOrgManifest } from "./org.js";
31
- export type { H2AOrgAssignmentActor, H2AOrgAssignmentBody, H2AOrgAssignmentKind, H2AOrgCommEdge, H2AOrgInstance, H2AOrgManifest, H2AOrgValidationError, H2AOrgValidationResult } from "./org.js";
30
+ export { H2A_ORG_PROPOSAL_BODY_KIND, H2A_ORG_RATIFIED_BODY_KIND, diffOrgManifest, effectiveOrgInstances, orgAssignmentEnvelope, validateOrgManifest } from "./org.js";
31
+ export type { H2AOrgAssignmentActor, H2AOrgAssignmentBody, H2AOrgAssignmentKind, H2AOrgCommEdge, H2AOrgDiff, H2AOrgDiffEntry, H2AOrgInstance, H2AOrgManifest, H2AOrgMembershipGrant, H2AOrgRegisteredInstance, H2AOrgValidationError, H2AOrgValidationResult } from "./org.js";
32
+ export { H2A_ORG_MANIFEST_FILENAME, parseOrgManifest } from "./org-parse.js";
33
+ export type { H2AOrgParseResult, YamlValue } from "./org-parse.js";
34
+ export { H2A_REFLEXIVE_ACTIONS, parseReflexiveDecision } from "./drumbeat-decision.js";
35
+ export type { H2AReflexiveAction, H2AReflexiveDecision } from "./drumbeat-decision.js";
32
36
  export { H2A_SYSML_REF_KIND, isH2ASysmlRef, sysmlRefEquals, validateSysmlRef } from "./sysml.js";
33
37
  export type { H2ASysmlRef, H2ASysmlRefValidation, H2ASysmlRefValidationError } from "./sysml.js";
34
38
  export { assertValidNegotiationState } from "./negotiation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,0BAA0B,EAC1B,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,aAAa,EACb,4BAA4B,EAC5B,cAAc,EACd,WAAW,EACZ,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,iCAAiC,EACjC,gCAAgC,EACjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,EAC9B,gCAAgC,EAChC,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,mCAAmC,EACnC,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,2CAA2C,EAC3C,8BAA8B,EAC9B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,8BAA8B,EAC9B,sCAAsC,EACtC,oCAAoC,EACpC,uBAAuB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,oCAAoC,EACpC,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,wBAAwB,EACxB,gCAAgC,EAChC,iBAAiB,EACjB,8BAA8B,EAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kCAAkC,EAClC,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,EAC5B,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,uBAAuB,EACvB,8CAA8C,EAC9C,iCAAiC,EACjC,+BAA+B,EAC/B,6BAA6B,EAC9B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,oBAAoB,EACpB,iCAAiC,EACjC,yCAAyC,EACzC,uCAAuC,EACxC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,sCAAsC,EACtC,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,0BAA0B,EAC1B,kCAAkC,EAClC,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,cAAc,EACd,aAAa,EACb,YAAY,EACZ,uBAAuB,EACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,yCAAyC,EACzC,+BAA+B,EAC/B,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,uBAAuB,EACvB,mBAAmB,EACnB,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,wBAAwB,EACxB,+BAA+B,EAC/B,mBAAmB,EACnB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,8BAA8B,EAC9B,sBAAsB,EACtB,iCAAiC,EAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,6BAA6B,EAC7B,mCAAmC,EACnC,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,sBAAsB,EACtB,qBAAqB,EACrB,aAAa,EACb,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,WAAW,EACX,cAAc,EACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,sBAAsB,EACtB,8BAA8B,EAC9B,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAChE,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,6BAA6B,EAC7B,kBAAkB,EACnB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iCAAiC,EACjC,mCAAmC,EACnC,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,sBAAsB,EACtB,iCAAiC,EACjC,0BAA0B,EAC1B,6BAA6B,EAC7B,uCAAuC,EACxC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,8BAA8B,EAC9B,uBAAuB,EACvB,8BAA8B,EAC9B,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,6BAA6B,EAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,YAAY,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,kBAAkB,EAClB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,YAAY,EACZ,SAAS,EACT,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,WAAW,EACX,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,qBAAqB,EACrB,OAAO,EACP,YAAY,EACb,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -13,7 +13,9 @@ export { H2A_HOST_BRIDGE_CLAUSES, H2A_HOST_BRIDGE_PROFILES, auditHostBridge, get
13
13
  export { H2A_NHI_ATTESTATION_BODY_KIND, H2A_NHI_DEFAULT_LONG_LIVED_KEY_DAYS, H2A_NHI_RISK_IDS, auditNhiPosture, nhiAttestationEnvelope, nhiInventory, nhiKeyFingerprint } from "./nhi.js";
14
14
  export { H2A_NHI_EXPORT_KEY_USE, H2A_NHI_SPIFFE_PATH_ENCODINGS, nhiSpiffeId, nhiTrustBundle } from "./nhi-export.js";
15
15
  export { H2A_BLOCKAGE_BODY_KIND, H2A_BLOCKAGE_CLEARED_BODY_KIND, blockageEnvelope, isActiveBlockage } from "./blockage.js";
16
- export { H2A_ORG_PROPOSAL_BODY_KIND, H2A_ORG_RATIFIED_BODY_KIND, orgAssignmentEnvelope, validateOrgManifest } from "./org.js";
16
+ export { H2A_ORG_PROPOSAL_BODY_KIND, H2A_ORG_RATIFIED_BODY_KIND, diffOrgManifest, effectiveOrgInstances, orgAssignmentEnvelope, validateOrgManifest } from "./org.js";
17
+ export { H2A_ORG_MANIFEST_FILENAME, parseOrgManifest } from "./org-parse.js";
18
+ export { H2A_REFLEXIVE_ACTIONS, parseReflexiveDecision } from "./drumbeat-decision.js";
17
19
  export { H2A_SYSML_REF_KIND, isH2ASysmlRef, sysmlRefEquals, validateSysmlRef } from "./sysml.js";
18
20
  export { assertValidNegotiationState } from "./negotiation.js";
19
21
  export { canonicalize, computeHash } from "./canonical.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * EVO-7 slice 2 — pure, zero-dependency reader for the committed org manifest
3
+ * (`org.h2a.yaml`). h2a carries no runtime dependencies, so rather than pull in
4
+ * a YAML library we parse the small block-YAML subset the manifest needs:
5
+ * block mappings, block sequences (`- `), flow sequences (`[a, b]`), scalars
6
+ * (optionally single/double quoted), `#` comments and blank lines. A document
7
+ * that begins with `{` or `[` is parsed as JSON instead (a manifest may be
8
+ * committed as `org.h2a.json`). Anything outside the subset is rejected with a
9
+ * line-anchored error rather than silently mis-parsed.
10
+ *
11
+ * Parsing is pure (no filesystem): the CLI reads the file and hands the text
12
+ * in. Shape-coercion here only checks the manifest *types*; the h2a invariants
13
+ * (a PRINCIPAL exists, unique instances, canonical roles, …) stay in
14
+ * {@link validateOrgManifest}. Live provisioning is a later CLI slice.
15
+ */
16
+ import type { H2AOrgManifest } from "./org.js";
17
+ /** Canonical filename of the committed org manifest. */
18
+ export declare const H2A_ORG_MANIFEST_FILENAME = "org.h2a.yaml";
19
+ /** A value produced by the block-YAML subset reader. */
20
+ export type YamlValue = string | YamlValue[] | {
21
+ [key: string]: YamlValue;
22
+ };
23
+ /** Outcome of {@link parseOrgManifest}: a typed manifest, or shape errors. */
24
+ export interface H2AOrgParseResult {
25
+ /** Present only when the document parsed AND matched the manifest shape. */
26
+ readonly manifest?: H2AOrgManifest;
27
+ /** Human-readable parse / shape errors (line- or path-anchored). Empty on success. */
28
+ readonly errors: string[];
29
+ }
30
+ /**
31
+ * Parse a committed org manifest (`org.h2a.yaml` block-YAML subset, or JSON)
32
+ * into a typed {@link H2AOrgManifest}. Total — never throws: a malformed
33
+ * document or a shape mismatch yields `{ errors }` with no `manifest`. Run the
34
+ * returned manifest through {@link validateOrgManifest} for the h2a invariants.
35
+ */
36
+ export declare function parseOrgManifest(source: string): H2AOrgParseResult;
37
+ //# sourceMappingURL=org-parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-parse.d.ts","sourceRoot":"","sources":["../src/org-parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAkC,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/E,wDAAwD;AACxD,eAAO,MAAM,yBAAyB,iBAAiB,CAAC;AAExD,wDAAwD;AACxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAE5E,8EAA8E;AAC9E,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC;IACnC,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;CAC3B;AAwRD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAQlE"}
@@ -0,0 +1,303 @@
1
+ /**
2
+ * EVO-7 slice 2 — pure, zero-dependency reader for the committed org manifest
3
+ * (`org.h2a.yaml`). h2a carries no runtime dependencies, so rather than pull in
4
+ * a YAML library we parse the small block-YAML subset the manifest needs:
5
+ * block mappings, block sequences (`- `), flow sequences (`[a, b]`), scalars
6
+ * (optionally single/double quoted), `#` comments and blank lines. A document
7
+ * that begins with `{` or `[` is parsed as JSON instead (a manifest may be
8
+ * committed as `org.h2a.json`). Anything outside the subset is rejected with a
9
+ * line-anchored error rather than silently mis-parsed.
10
+ *
11
+ * Parsing is pure (no filesystem): the CLI reads the file and hands the text
12
+ * in. Shape-coercion here only checks the manifest *types*; the h2a invariants
13
+ * (a PRINCIPAL exists, unique instances, canonical roles, …) stay in
14
+ * {@link validateOrgManifest}. Live provisioning is a later CLI slice.
15
+ */
16
+ /** Canonical filename of the committed org manifest. */
17
+ export const H2A_ORG_MANIFEST_FILENAME = "org.h2a.yaml";
18
+ /** Internal: a parse failure carrying a line-anchored message. Never escapes the module. */
19
+ class OrgParseError extends Error {
20
+ }
21
+ /** `key:` or `key: value` — the only mapping-entry form the subset accepts. */
22
+ const ENTRY_RE = /^([A-Za-z0-9_.-]+):(?:\s+(.*))?$/;
23
+ function isEntry(text) {
24
+ return ENTRY_RE.test(text);
25
+ }
26
+ /** Drop a trailing `#` comment that is not inside quotes (and not mid-token). */
27
+ function stripComment(line) {
28
+ let inSingle = false;
29
+ let inDouble = false;
30
+ for (let i = 0; i < line.length; i++) {
31
+ const c = line[i];
32
+ if (c === "'" && !inDouble)
33
+ inSingle = !inSingle;
34
+ else if (c === '"' && !inSingle)
35
+ inDouble = !inDouble;
36
+ else if (c === "#" && !inSingle && !inDouble && (i === 0 || /\s/.test(line[i - 1]))) {
37
+ return line.slice(0, i);
38
+ }
39
+ }
40
+ return line;
41
+ }
42
+ /** Split a source string into non-blank, comment-free logical lines with indent. */
43
+ function tokenize(source) {
44
+ const out = [];
45
+ const raw = source.split(/\r?\n/);
46
+ for (let i = 0; i < raw.length; i++) {
47
+ const lead = raw[i].slice(0, raw[i].length - raw[i].trimStart().length);
48
+ if (lead.includes("\t")) {
49
+ throw new OrgParseError(`line ${i + 1}: tab indentation is not supported`);
50
+ }
51
+ const stripped = stripComment(raw[i]);
52
+ if (stripped.trim() === "")
53
+ continue;
54
+ const indent = stripped.length - stripped.trimStart().length;
55
+ out.push({ indent, text: stripped.trim(), n: i + 1 });
56
+ }
57
+ return out;
58
+ }
59
+ function parseScalar(text) {
60
+ const t = text.trim();
61
+ if (t.length >= 2 && t.startsWith('"') && t.endsWith('"')) {
62
+ try {
63
+ return JSON.parse(t);
64
+ }
65
+ catch {
66
+ return t.slice(1, -1);
67
+ }
68
+ }
69
+ if (t.length >= 2 && t.startsWith("'") && t.endsWith("'")) {
70
+ return t.slice(1, -1).replace(/''/g, "'");
71
+ }
72
+ return t;
73
+ }
74
+ /** Split a flow-sequence body on top-level commas (ignoring quoted commas). */
75
+ function splitFlow(inner) {
76
+ const parts = [];
77
+ let cur = "";
78
+ let inSingle = false;
79
+ let inDouble = false;
80
+ for (const c of inner) {
81
+ if (c === "'" && !inDouble) {
82
+ inSingle = !inSingle;
83
+ cur += c;
84
+ }
85
+ else if (c === '"' && !inSingle) {
86
+ inDouble = !inDouble;
87
+ cur += c;
88
+ }
89
+ else if (c === "," && !inSingle && !inDouble) {
90
+ parts.push(cur);
91
+ cur = "";
92
+ }
93
+ else {
94
+ cur += c;
95
+ }
96
+ }
97
+ parts.push(cur);
98
+ return parts;
99
+ }
100
+ function parseScalarOrFlow(text) {
101
+ const t = text.trim();
102
+ if (t.startsWith("[") && t.endsWith("]")) {
103
+ const inner = t.slice(1, -1).trim();
104
+ if (inner === "")
105
+ return [];
106
+ return splitFlow(inner).map((s) => parseScalar(s));
107
+ }
108
+ return parseScalar(t);
109
+ }
110
+ /** Parse the block-YAML subset (or JSON) into a generic value. Throws OrgParseError. */
111
+ function parseDocument(source) {
112
+ const trimmed = source.trim();
113
+ if (trimmed === "")
114
+ return {};
115
+ if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
116
+ try {
117
+ return JSON.parse(trimmed);
118
+ }
119
+ catch (error) {
120
+ throw new OrgParseError(`invalid JSON: ${error.message}`);
121
+ }
122
+ }
123
+ const lines = tokenize(source);
124
+ if (lines.length === 0)
125
+ return {};
126
+ let idx = 0;
127
+ function applyEntry(map, key, valueText, ownerIndent) {
128
+ if (valueText !== undefined && valueText !== "") {
129
+ map[key] = parseScalarOrFlow(valueText);
130
+ }
131
+ else if (idx < lines.length && lines[idx].indent > ownerIndent) {
132
+ map[key] = parseNode(lines[idx].indent);
133
+ }
134
+ else {
135
+ map[key] = "";
136
+ }
137
+ }
138
+ function parseMap(indent, seed) {
139
+ const map = {};
140
+ if (seed)
141
+ applyEntry(map, seed.key, seed.valueText, indent);
142
+ while (idx < lines.length && lines[idx].indent === indent && isEntry(lines[idx].text)) {
143
+ const m = ENTRY_RE.exec(lines[idx].text);
144
+ idx++;
145
+ if (m)
146
+ applyEntry(map, m[1], m[2], indent);
147
+ }
148
+ return map;
149
+ }
150
+ function parseSeq(indent) {
151
+ const arr = [];
152
+ while (idx < lines.length &&
153
+ lines[idx].indent === indent &&
154
+ (lines[idx].text === "-" || lines[idx].text.startsWith("- "))) {
155
+ const line = lines[idx];
156
+ const after = line.text === "-" ? "" : line.text.slice(2).trim();
157
+ idx++;
158
+ if (after === "") {
159
+ if (idx < lines.length && lines[idx].indent > indent)
160
+ arr.push(parseNode(lines[idx].indent));
161
+ else
162
+ arr.push("");
163
+ }
164
+ else if (isEntry(after)) {
165
+ const m = ENTRY_RE.exec(after);
166
+ arr.push(m ? parseMap(indent + 2, { key: m[1], valueText: m[2] }) : after);
167
+ }
168
+ else {
169
+ arr.push(parseScalarOrFlow(after));
170
+ }
171
+ }
172
+ return arr;
173
+ }
174
+ function parseNode(indent) {
175
+ const first = lines[idx];
176
+ if (first.text === "-" || first.text.startsWith("- "))
177
+ return parseSeq(indent);
178
+ if (isEntry(first.text))
179
+ return parseMap(indent, undefined);
180
+ throw new OrgParseError(`line ${first.n}: expected a mapping or a sequence`);
181
+ }
182
+ const value = parseNode(lines[0].indent);
183
+ if (idx < lines.length) {
184
+ throw new OrgParseError(`line ${lines[idx].n}: unexpected indentation`);
185
+ }
186
+ return value;
187
+ }
188
+ function isRecord(v) {
189
+ return typeof v === "object" && v !== null && !Array.isArray(v);
190
+ }
191
+ /** Coerce a `scopes`/`mandateRights`-style field into a string list (a bare scalar → one-element). */
192
+ function coerceStringList(v, path, errors) {
193
+ if (v === undefined)
194
+ return undefined;
195
+ if (typeof v === "string")
196
+ return v === "" ? [] : [v];
197
+ if (Array.isArray(v)) {
198
+ const out = [];
199
+ v.forEach((el, i) => {
200
+ if (typeof el === "string")
201
+ out.push(el);
202
+ else
203
+ errors.push(`${path}[${i}]: expected a string`);
204
+ });
205
+ return out;
206
+ }
207
+ errors.push(`${path}: expected a sequence of strings`);
208
+ return undefined;
209
+ }
210
+ function coerceManifest(value) {
211
+ const errors = [];
212
+ if (!isRecord(value)) {
213
+ return { errors: ["document: expected a mapping at the top level"] };
214
+ }
215
+ const scope = value.scope;
216
+ if (typeof scope !== "string" || scope === "") {
217
+ errors.push("scope: a non-empty string is required");
218
+ }
219
+ let version;
220
+ if (value.version !== undefined) {
221
+ if (typeof value.version === "string")
222
+ version = value.version;
223
+ else
224
+ errors.push("version: expected a string");
225
+ }
226
+ const instances = [];
227
+ if (!Array.isArray(value.instances)) {
228
+ errors.push("instances: expected a sequence");
229
+ }
230
+ else {
231
+ value.instances.forEach((raw, i) => {
232
+ if (!isRecord(raw)) {
233
+ errors.push(`instances[${i}]: expected a mapping`);
234
+ return;
235
+ }
236
+ const id = raw.instance;
237
+ const role = raw.role;
238
+ if (typeof id !== "string")
239
+ errors.push(`instances[${i}].instance: expected a string`);
240
+ if (typeof role !== "string")
241
+ errors.push(`instances[${i}].role: expected a string`);
242
+ const scopes = coerceStringList(raw.scopes, `instances[${i}].scopes`, errors) ?? [];
243
+ const rights = coerceStringList(raw.mandateRights, `instances[${i}].mandateRights`, errors);
244
+ if (typeof id === "string" && typeof role === "string") {
245
+ instances.push({
246
+ instance: id,
247
+ role: role,
248
+ scopes,
249
+ ...(rights ? { mandateRights: rights } : {})
250
+ });
251
+ }
252
+ });
253
+ }
254
+ let commEdges;
255
+ if (value.commEdges !== undefined) {
256
+ if (!Array.isArray(value.commEdges)) {
257
+ errors.push("commEdges: expected a sequence");
258
+ }
259
+ else {
260
+ commEdges = [];
261
+ value.commEdges.forEach((raw, i) => {
262
+ if (!isRecord(raw)) {
263
+ errors.push(`commEdges[${i}]: expected a mapping`);
264
+ return;
265
+ }
266
+ const from = raw.from;
267
+ const to = raw.to;
268
+ if (typeof from !== "string")
269
+ errors.push(`commEdges[${i}].from: expected a string`);
270
+ if (typeof to !== "string")
271
+ errors.push(`commEdges[${i}].to: expected a string`);
272
+ if (typeof from === "string" && typeof to === "string")
273
+ commEdges.push({ from, to });
274
+ });
275
+ }
276
+ }
277
+ if (errors.length > 0)
278
+ return { errors };
279
+ const manifest = {
280
+ scope: scope,
281
+ ...(version !== undefined ? { version } : {}),
282
+ instances,
283
+ ...(commEdges !== undefined ? { commEdges } : {})
284
+ };
285
+ return { manifest, errors: [] };
286
+ }
287
+ /**
288
+ * Parse a committed org manifest (`org.h2a.yaml` block-YAML subset, or JSON)
289
+ * into a typed {@link H2AOrgManifest}. Total — never throws: a malformed
290
+ * document or a shape mismatch yields `{ errors }` with no `manifest`. Run the
291
+ * returned manifest through {@link validateOrgManifest} for the h2a invariants.
292
+ */
293
+ export function parseOrgManifest(source) {
294
+ let value;
295
+ try {
296
+ value = parseDocument(source);
297
+ }
298
+ catch (error) {
299
+ return { errors: [error.message] };
300
+ }
301
+ return coerceManifest(value);
302
+ }
303
+ //# sourceMappingURL=org-parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-parse.js","sourceRoot":"","sources":["../src/org-parse.ts"],"names":[],"mappings":"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"}
package/dist/org.d.ts CHANGED
@@ -101,4 +101,71 @@ export declare function orgAssignmentEnvelope(input: {
101
101
  readonly kind?: H2AOrgAssignmentKind;
102
102
  readonly createdAt?: string;
103
103
  }): H2AEnvelope<H2AOrgAssignmentBody>;
104
+ /** A live registry entry, reduced to the fields the org diff reconciles against. */
105
+ export interface H2AOrgRegisteredInstance {
106
+ readonly instance: string;
107
+ readonly roles: readonly string[];
108
+ readonly scopes: readonly string[];
109
+ }
110
+ /** One reconciliation finding between the declared manifest and the live registry. */
111
+ export interface H2AOrgDiffEntry {
112
+ readonly instance: string;
113
+ readonly declaredRole?: string;
114
+ readonly registeredRoles?: readonly string[];
115
+ readonly declaredScopes?: readonly string[];
116
+ readonly registeredScopes?: readonly string[];
117
+ /** Declared scopes the registered instance is not (yet) a member of. */
118
+ readonly missingScopes?: readonly string[];
119
+ }
120
+ /**
121
+ * Drift between a declared org manifest and the live registry. `inSync` is true
122
+ * iff all four finding buckets are empty (the live estate matches the declared
123
+ * org exactly). Read-only — describing drift, never reconciling it.
124
+ */
125
+ export interface H2AOrgDiff {
126
+ readonly scope: string;
127
+ /** Declared instances present and fully consistent (role + scopes). */
128
+ readonly matched: string[];
129
+ /** Declared but not registered. */
130
+ readonly missing: H2AOrgDiffEntry[];
131
+ /** Registered but not declared. */
132
+ readonly undeclared: H2AOrgDiffEntry[];
133
+ /** Registered, but its declared role is not among its registered roles. */
134
+ readonly roleMismatch: H2AOrgDiffEntry[];
135
+ /** Registered, but missing one or more declared scopes. */
136
+ readonly scopeGaps: H2AOrgDiffEntry[];
137
+ readonly inSync: boolean;
138
+ }
139
+ /**
140
+ * Reconcile a declared org manifest against the live registry instances. Pure +
141
+ * total: the CLI gathers `listInstances()` and hands the reduced rows in. This
142
+ * is the read-only precursor to provisioning — it reports what provisioning
143
+ * *would* change, without changing anything.
144
+ */
145
+ export declare function diffOrgManifest(manifest: H2AOrgManifest, registered: readonly H2AOrgRegisteredInstance[]): H2AOrgDiff;
146
+ /**
147
+ * An append-only org-membership grant (provisioning, DEC-109). Mirrors the
148
+ * DEC-078 keyring: role/scope membership is layered over a registration via a
149
+ * separate event log (`registry/org-membership.jsonl`) — never a registration
150
+ * rewrite — so provisioning a ratified org is additive and idempotent. A grant
151
+ * only ever *augments* an already-registered (keyed) instance; it never conjures
152
+ * an identity (reconcile keyed-only — the resolved provisioning fork).
153
+ */
154
+ export interface H2AOrgMembershipGrant {
155
+ readonly instance: string;
156
+ readonly role: string;
157
+ readonly scope: string;
158
+ /** The actor that granted it (e.g. the ratifying PRINCIPAL). */
159
+ readonly by?: string;
160
+ readonly at: string;
161
+ }
162
+ /**
163
+ * The *effective* registry view: each registered instance's roles + scopes,
164
+ * unioned across all its registration rows AND any membership grants. Grants to
165
+ * an unregistered instance are ignored (keyed-only). Pure — the CLI gathers
166
+ * `listInstances()` + `listOrgMembership()` and hands them in; `diffOrgManifest`
167
+ * then reconciles the manifest against this view, so a provisioned org reads
168
+ * back in-sync without ever rewriting a registration.
169
+ */
170
+ export declare function effectiveOrgInstances(registrations: readonly H2AOrgRegisteredInstance[], grants: readonly H2AOrgMembershipGrant[]): H2AOrgRegisteredInstance[];
104
171
  //# sourceMappingURL=org.d.ts.map
package/dist/org.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../src/org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,EAAa,KAAK,WAAW,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEvE,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,+EAA+E;IAC/E,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,sFAAsF;AACtF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAClD,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACpD;AAED,yEAAyE;AACzE,MAAM,MAAM,qBAAqB,GAC7B,cAAc,GACd,oBAAoB,GACpB,gBAAgB,GAChB,mBAAmB,GACnB,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC;CAC1C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,sBAAsB,CA0CpF;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAC5B,OAAO,0BAA0B,GACjC,OAAO,0BAA0B,CAAC;AAEtC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,oBAAoB,CAAC;IACrC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,WAAW,CAAC,oBAAoB,CAAC,CAkBpC"}
1
+ {"version":3,"file":"org.d.ts","sourceRoot":"","sources":["../src/org.ts"],"names":[],"mappings":"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"}
package/dist/org.js CHANGED
@@ -111,4 +111,95 @@ export function orgAssignmentEnvelope(input) {
111
111
  createdAt
112
112
  });
113
113
  }
114
+ /**
115
+ * Reconcile a declared org manifest against the live registry instances. Pure +
116
+ * total: the CLI gathers `listInstances()` and hands the reduced rows in. This
117
+ * is the read-only precursor to provisioning — it reports what provisioning
118
+ * *would* change, without changing anything.
119
+ */
120
+ export function diffOrgManifest(manifest, registered) {
121
+ const byInstance = new Map();
122
+ for (const r of registered)
123
+ byInstance.set(r.instance, r);
124
+ const matched = [];
125
+ const missing = [];
126
+ const roleMismatch = [];
127
+ const scopeGaps = [];
128
+ const declared = new Set();
129
+ for (const inst of manifest.instances) {
130
+ declared.add(inst.instance);
131
+ const reg = byInstance.get(inst.instance);
132
+ if (!reg) {
133
+ missing.push({
134
+ instance: inst.instance,
135
+ declaredRole: inst.role,
136
+ declaredScopes: inst.scopes
137
+ });
138
+ continue;
139
+ }
140
+ let consistent = true;
141
+ if (!reg.roles.includes(inst.role)) {
142
+ consistent = false;
143
+ roleMismatch.push({
144
+ instance: inst.instance,
145
+ declaredRole: inst.role,
146
+ registeredRoles: reg.roles
147
+ });
148
+ }
149
+ const missingScopes = inst.scopes.filter((s) => !reg.scopes.includes(s));
150
+ if (missingScopes.length > 0) {
151
+ consistent = false;
152
+ scopeGaps.push({
153
+ instance: inst.instance,
154
+ declaredScopes: inst.scopes,
155
+ registeredScopes: reg.scopes,
156
+ missingScopes
157
+ });
158
+ }
159
+ if (consistent)
160
+ matched.push(inst.instance);
161
+ }
162
+ const undeclared = [];
163
+ for (const reg of registered) {
164
+ if (!declared.has(reg.instance)) {
165
+ undeclared.push({ instance: reg.instance, registeredRoles: reg.roles, registeredScopes: reg.scopes });
166
+ }
167
+ }
168
+ const inSync = missing.length === 0 &&
169
+ roleMismatch.length === 0 &&
170
+ scopeGaps.length === 0 &&
171
+ undeclared.length === 0;
172
+ return { scope: manifest.scope, matched, missing, undeclared, roleMismatch, scopeGaps, inSync };
173
+ }
174
+ /**
175
+ * The *effective* registry view: each registered instance's roles + scopes,
176
+ * unioned across all its registration rows AND any membership grants. Grants to
177
+ * an unregistered instance are ignored (keyed-only). Pure — the CLI gathers
178
+ * `listInstances()` + `listOrgMembership()` and hands them in; `diffOrgManifest`
179
+ * then reconciles the manifest against this view, so a provisioned org reads
180
+ * back in-sync without ever rewriting a registration.
181
+ */
182
+ export function effectiveOrgInstances(registrations, grants) {
183
+ const acc = new Map();
184
+ for (const r of registrations) {
185
+ const entry = acc.get(r.instance) ?? { roles: new Set(), scopes: new Set() };
186
+ for (const role of r.roles)
187
+ entry.roles.add(role);
188
+ for (const scope of r.scopes)
189
+ entry.scopes.add(scope);
190
+ acc.set(r.instance, entry);
191
+ }
192
+ for (const g of grants) {
193
+ const entry = acc.get(g.instance);
194
+ if (!entry)
195
+ continue; // keyed-only: never materialize an unregistered instance
196
+ entry.roles.add(g.role);
197
+ entry.scopes.add(g.scope);
198
+ }
199
+ return [...acc.entries()].map(([instance, { roles, scopes }]) => ({
200
+ instance,
201
+ roles: [...roles],
202
+ scopes: [...scopes]
203
+ }));
204
+ }
114
205
  //# sourceMappingURL=org.js.map
package/dist/org.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"org.js","sourceRoot":"","sources":["../src/org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAkC,MAAM,YAAY,CAAC;AA6CvE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAwB;IAC1D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,SAAS,CAAC,CAAC;IAE9C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACzB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACjB,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACrC,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AACzD,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AAiBzD;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAKrC;IACC,MAAM,IAAI,GAAyB;QACjC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,0BAA0B;QAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9D,MAAM,EAAE,GAAG,OAAO,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;IAC5F,OAAO,cAAc,CAAuB;QAC1C,EAAE;QACF,IAAI,EAAE,OAAO;QACb,KAAK,EAAE;YACL,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;YAC9B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;SACzB;QACD,IAAI;QACJ,SAAS;KACV,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"org.js","sourceRoot":"","sources":["../src/org.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentropic/h2a",
3
- "version": "0.17.0",
3
+ "version": "0.19.0",
4
4
  "description": "Core contracts and runtime primitives for human-to-agent coordination.",
5
5
  "license": "MIT",
6
6
  "type": "module",