@hyperscale0/udl 3.2.0 → 4.0.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # UDL 4.0.0
2
+
3
+ UDL 4 adds objects, attachment role bindings, action subject requirements, frozen adapter snapshots and typed object references. UDL 3 is rejected, the vehicles header is deleted from HSX, and public instrument create actions are gone. Object creation accepts optional metadata without entering an agreement; exposed attachment actions collect requirements when invoked. Recreate development estates; there is no migration reader.
4
+
1
5
  # UDL 3.2.0
2
6
 
3
7
  UDL adds a state-preserving transition target (`to: preserve`), an invoke comparison guard (`guard: { kind: compare, ... }`), an optional per-action `expansionLimit` of 8192 actions, reporting definitions, and a clock `localDay` clause (days, direction, hour, timezone).
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # UDL 3
1
+ # UDL 4
2
2
 
3
3
  Read the [language reference](docs/README.md).
4
4
 
@@ -1,4 +1,4 @@
1
- export type UdlIssueCode = "UDL1001" | "UDL1002" | "UDL1003" | "UDL1004" | "UDL2001" | "UDL2002" | "UDL2010" | "UDL3001" | "UDL4001" | "UDL5001" | "UDL7001" | "UDL7002";
1
+ export type UdlIssueCode = "subject_field_conflict" | "subject_field_unknown" | "subject_requirement_missing" | "subject_adapter_unbound" | "subject_party_unbound" | "party_name_reserved" | "party_kind_mismatch" | "staff_role_unknown" | "product_party_unbound" | "product_party_invalid" | "approval_initiator_missing" | "approval_same_initiator" | "UDL1001" | "UDL1002" | "UDL1003" | "UDL1004" | "UDL2001" | "UDL2002" | "UDL2010" | "UDL3001" | "UDL4001" | "UDL5001" | "UDL7001" | "UDL7002";
2
2
  export interface UdlIssue {
3
3
  code: UdlIssueCode;
4
4
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AACd,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAgBD,wBAAgB,KAAK,CACnB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,QAAQ,CAaV;AACD,eAAO,MAAM,cAAc;;;;;;GAMxB,CAAC;AACJ,eAAO,MAAM,aAAa,SAAU,MAAM;;;;;;aACG,CAAC"}
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GACpB,wBAAwB,GACxB,uBAAuB,GACvB,6BAA6B,GAC7B,yBAAyB,GACzB,uBAAuB,GACvB,qBAAqB,GACrB,qBAAqB,GACrB,oBAAoB,GACpB,uBAAuB,GACvB,uBAAuB,GACvB,4BAA4B,GAC5B,yBAAyB,GACzB,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,CAAC;AACd,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAoCD,wBAAgB,KAAK,CACnB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,QAAQ,CAaV;AACD,eAAO,MAAM,cAAc;;;;;;GAMxB,CAAC;AACJ,eAAO,MAAM,aAAa,SAAU,MAAM;;;;;;aACG,CAAC"}
@@ -1,7 +1,19 @@
1
1
  const fixes = {
2
+ subject_field_conflict: "Rename the field or use matching types and constraints.",
3
+ subject_field_unknown: "Name a declared subject requirement or object field.",
4
+ subject_requirement_missing: "Supply the required action field.",
5
+ subject_adapter_unbound: "Bind the required adapter declaration.",
6
+ subject_party_unbound: "Bind the parameter to a subject role or declared party.",
7
+ party_name_reserved: "Choose a party name other than owner, actor or operator.",
8
+ party_kind_mismatch: "Use a business or subject role for money and staff with a role for approval.",
9
+ staff_role_unknown: "Use a registered staff permission role.",
10
+ product_party_unbound: "Supply the consumed business in the Build party bindings.",
11
+ product_party_invalid: "Bind a business participant in the same tenant and environment.",
12
+ approval_initiator_missing: "Provide authenticated request attribution.",
13
+ approval_same_initiator: "Have a different human approve the protected request.",
2
14
  UDL1001: "Encode the source as UTF-8.",
3
15
  UDL1002: "Repair JSON syntax.",
4
- UDL1003: "Use the UDL 3 typed grammar.",
16
+ UDL1003: "Use the UDL 4 typed grammar.",
5
17
  UDL1004: "Reduce the declared structure or expansion.",
6
18
  UDL2001: "Give each declaration a distinct name.",
7
19
  UDL2002: "Repair the named type or declaration.",
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAoBA,MAAM,KAAK,GAAiC;IAC1C,OAAO,EAAE,6BAA6B;IACtC,OAAO,EAAE,qBAAqB;IAC9B,OAAO,EAAE,8BAA8B;IACvC,OAAO,EAAE,6CAA6C;IACtD,OAAO,EAAE,wCAAwC;IACjD,OAAO,EAAE,uCAAuC;IAChD,OAAO,EAAE,sDAAsD;IAC/D,OAAO,EAAE,yDAAyD;IAClE,OAAO,EACL,wEAAwE;IAC1E,OAAO,EAAE,gDAAgD;IACzD,OAAO,EAAE,4DAA4D;IACrE,OAAO,EAAE,gCAAgC;CAC1C,CAAC;AACF,MAAM,UAAU,KAAK,CACnB,IAAkB,EAClB,IAAY,EACZ,OAAe;IAEf,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;QAChB,QAAQ,EACN,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,IAAI,KAAK,SAAS;gBAClB,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,mBAAmB;KAC5B,CAAC;AACJ,CAAC;AACD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,IAAI;IACJ,GAAG;IACH,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE,UAAU;CACnB,CAAC,CAAC,CAAC;AACJ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAC5C,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAgCA,MAAM,KAAK,GAAiC;IAC1C,sBAAsB,EACpB,yDAAyD;IAC3D,qBAAqB,EAAE,sDAAsD;IAC7E,2BAA2B,EAAE,mCAAmC;IAChE,uBAAuB,EAAE,wCAAwC;IACjE,qBAAqB,EACnB,yDAAyD;IAC3D,mBAAmB,EACjB,0DAA0D;IAC5D,mBAAmB,EACjB,8EAA8E;IAChF,kBAAkB,EAAE,yCAAyC;IAC7D,qBAAqB,EACnB,2DAA2D;IAC7D,qBAAqB,EACnB,iEAAiE;IACnE,0BAA0B,EAAE,4CAA4C;IACxE,uBAAuB,EACrB,uDAAuD;IAEzD,OAAO,EAAE,6BAA6B;IACtC,OAAO,EAAE,qBAAqB;IAC9B,OAAO,EAAE,8BAA8B;IACvC,OAAO,EAAE,6CAA6C;IACtD,OAAO,EAAE,wCAAwC;IACjD,OAAO,EAAE,uCAAuC;IAChD,OAAO,EAAE,sDAAsD;IAC/D,OAAO,EAAE,yDAAyD;IAClE,OAAO,EACL,wEAAwE;IAC1E,OAAO,EAAE,gDAAgD;IACzD,OAAO,EAAE,4DAA4D;IACrE,OAAO,EAAE,gCAAgC;CAC1C,CAAC;AACF,MAAM,UAAU,KAAK,CACnB,IAAkB,EAClB,IAAY,EACZ,OAAe;IAEf,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;QAChB,QAAQ,EACN,IAAI,KAAK,SAAS;YAChB,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,IAAI,KAAK,SAAS;gBAClB,CAAC,CAAC,gBAAgB;gBAClB,CAAC,CAAC,mBAAmB;KAC5B,CAAC;AACJ,CAAC;AACD,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,IAAI;IACJ,GAAG;IACH,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,mBAAmB;IAC7B,MAAM,EAAE,UAAU;CACnB,CAAC,CAAC,CAAC;AACJ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAE,EAAE,CAC5C,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"evolution.d.ts","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAgBxD,wFAAwF;AACxF,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,WAAW,GAChB,QAAQ,EAAE,CA0BZ"}
1
+ {"version":3,"file":"evolution.d.ts","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAS,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAgBxD,wFAAwF;AACxF,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,WAAW,GAChB,QAAQ,EAAE,CAkCZ"}
package/dist/evolution.js CHANGED
@@ -20,6 +20,11 @@ export function diffValidatedUdlEvolution(live, next) {
20
20
  for (const [name, party] of Object.entries(live.parties))
21
21
  if (stable(party) !== stable(next.parties[name]))
22
22
  refuse(`$.parties.${name}`, "a live party cannot change or disappear");
23
+ for (const object of live.objects) {
24
+ const updated = next.objects.find((o) => o.id === object.id);
25
+ if (!updated || stable(object) !== stable(updated))
26
+ refuse(`$.objects.${object.id}`, "a live object kind cannot change or disappear; recreate development estates");
27
+ }
23
28
  for (const instrument of live.instruments) {
24
29
  const updated = next.instruments.find((i) => i.id === instrument.id);
25
30
  if (!updated || stable(instrument) !== stable(updated))
@@ -1 +1 @@
1
- {"version":3,"file":"evolution.js","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAiB,MAAM,kBAAkB,CAAC;AAExD,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACzE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QACpC,OAAO,CACL,GAAG;YACH,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;iBAClB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAChD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;iBAChE,IAAI,CAAC,GAAG,CAAC;YACZ,GAAG,CACJ,CAAC;IACJ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;AAC9C,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,yBAAyB,CACvC,IAAiB,EACjB,IAAiB;IAEjB,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CAC/C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAClE,MAAM,CAAC,GAAG,EAAE,6CAA6C,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QACtD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,CAAC,aAAa,IAAI,EAAE,EAAE,yCAAyC,CAAC,CAAC;IAC3E,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC;YACpD,MAAM,CACJ,iBAAiB,UAAU,CAAC,EAAE,EAAE,EAChC,4EAA4E,CAC7E,CAAC;IACN,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;QAC/D,MAAM,CAAC,IAAI,CACT,KAAK,CACH,SAAS,EACT,WAAW,EACX,2CAA2C,CAC5C,CACF,CAAC;IACJ,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"evolution.js","sourceRoot":"","sources":["../src/evolution.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from "./schema.js";
2
2
  export { parseUdl, canonicalizeUdl } from "./parser.js";
3
3
  export { serializeUdl, canonicalDigest } from "./canonical.js";
4
- export { validateUdl, assertValidUdl, resolveField, UdlError, type UdlValidationResult, } from "./validation.js";
4
+ export { validateUdl, RESERVED_OBJECT_NAMES, assertValidUdl, resolveField, resolveSubjectRequirement, UdlError, type UdlValidationResult, } from "./validation.js";
5
5
  export { issue, udlDiagnostic, udlDiagnostics, type UdlIssue, type UdlIssueCode, } from "./diagnostics.js";
6
6
  export { analyzeInstrumentFinance, type FinanceIssue } from "./finance.js";
7
7
  export { mapUdlInstrumentReferences, referencedUdlInstrumentIds, } from "./instrument-references.js";
@@ -9,4 +9,5 @@ export { diffValidatedUdlEvolution } from "./evolution.js";
9
9
  export { fixedIsoDurationMs } from "./duration.js";
10
10
  export * from "./reporting.js";
11
11
  export { validateReportDefinition, reportExpressionTypes, } from "./reporting-validation.js";
12
+ export * from "./object-contract.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,yBAAyB,EACzB,QAAQ,EACR,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,YAAY,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export * from "./schema.js";
2
2
  export { parseUdl, canonicalizeUdl } from "./parser.js";
3
3
  export { serializeUdl, canonicalDigest } from "./canonical.js";
4
- export { validateUdl, assertValidUdl, resolveField, UdlError, } from "./validation.js";
4
+ export { validateUdl, RESERVED_OBJECT_NAMES, assertValidUdl, resolveField, resolveSubjectRequirement, UdlError, } from "./validation.js";
5
5
  export { issue, udlDiagnostic, udlDiagnostics, } from "./diagnostics.js";
6
6
  export { analyzeInstrumentFinance } from "./finance.js";
7
7
  export { mapUdlInstrumentReferences, referencedUdlInstrumentIds, } from "./instrument-references.js";
@@ -9,4 +9,5 @@ export { diffValidatedUdlEvolution } from "./evolution.js";
9
9
  export { fixedIsoDurationMs } from "./duration.js";
10
10
  export * from "./reporting.js";
11
11
  export { validateReportDefinition, reportExpressionTypes, } from "./reporting-validation.js";
12
+ export * from "./object-contract.js";
12
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,cAAc,EACd,YAAY,EACZ,QAAQ,GAET,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,GAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAqB,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,yBAAyB,EACzB,QAAQ,GAET,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,GAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAqB,MAAM,cAAc,CAAC;AAC3E,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,cAAc,sBAAsB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"instrument-references.d.ts","sourceRoot":"","sources":["../src/instrument-references.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAOrB,iFAAiF;AACjF,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,WAAW,EACrB,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAC1B,WAAW,CA2Db;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,aAAa,GACxB,SAAS,MAAM,EAAE,CAmBnB"}
1
+ {"version":3,"file":"instrument-references.d.ts","sourceRoot":"","sources":["../src/instrument-references.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAOrB,iFAAiF;AACjF,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,WAAW,EACrB,GAAG,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAC1B,WAAW,CAkFb;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,aAAa,GACxB,SAAS,MAAM,EAAE,CAoBnB"}
@@ -33,6 +33,25 @@ export function mapUdlInstrumentReferences(document, map) {
33
33
  }
34
34
  else if (object(value)) {
35
35
  const properties = object(schema.properties) ? schema.properties : {};
36
+ const discriminator = object(properties.type)
37
+ ? properties.type.const
38
+ : undefined;
39
+ if ((discriminator === "ref" || discriminator === "list") &&
40
+ value.type === discriminator &&
41
+ value.targetKind === "instrument") {
42
+ if (typeof value.target === "string")
43
+ locations.set(JSON.stringify([...path, "target"]), {
44
+ parent: value,
45
+ key: "target",
46
+ kind: "instrument",
47
+ });
48
+ else if (Array.isArray(value.target))
49
+ value.target.forEach((_, index) => locations.set(JSON.stringify([...path, "target", index]), {
50
+ parent: value.target,
51
+ key: index,
52
+ kind: "instrument",
53
+ }));
54
+ }
36
55
  for (const [name, entry] of Object.entries(value))
37
56
  visit(properties[name] ?? schema.additionalProperties, entry, value, name, [...path, name]);
38
57
  }
@@ -53,12 +72,13 @@ export function mapUdlInstrumentReferences(document, map) {
53
72
  export function referencedUdlInstrumentIds(instrument) {
54
73
  const found = new Set();
55
74
  mapUdlInstrumentReferences({
56
- udl: 3,
75
+ udl: 4,
57
76
  version: 1,
58
77
  product: "references",
59
78
  title: "References",
60
79
  currency: "SAR",
61
80
  parties: {},
81
+ objects: [],
62
82
  instruments: [instrument],
63
83
  }, (id) => {
64
84
  found.add(id);
@@ -1 +1 @@
1
- {"version":3,"file":"instrument-references.js","sourceRoot":"","sources":["../src/instrument-references.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrument-references.js","sourceRoot":"","sources":["../src/instrument-references.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import * as z from "zod";
2
+ import { type UdlDocument, type UdlField, type UdlObjectField, type UdlObjectKind } from "./schema.js";
3
+ export declare const requestAttributionSchema: z.ZodUnion<readonly [z.ZodObject<{
4
+ kind: z.ZodLiteral<"human">;
5
+ principalId: z.ZodString;
6
+ humanId: z.ZodString;
7
+ source: z.ZodEnum<{
8
+ customer_session: "customer_session";
9
+ staff_session: "staff_session";
10
+ }>;
11
+ }, z.core.$strict>, z.ZodObject<{
12
+ kind: z.ZodLiteral<"machine">;
13
+ principalId: z.ZodString;
14
+ source: z.ZodEnum<{
15
+ api_key: "api_key";
16
+ system: "system";
17
+ }>;
18
+ }, z.core.$strict>, z.ZodObject<{
19
+ kind: z.ZodLiteral<"machine">;
20
+ principalId: z.ZodString;
21
+ humanId: z.ZodString;
22
+ source: z.ZodLiteral<"api_key_delegate">;
23
+ }, z.core.$strict>]>;
24
+ export type RequestAttribution = z.infer<typeof requestAttributionSchema>;
25
+ export declare const objectApprovalRequirementSchema: z.ZodObject<{
26
+ target: z.ZodString;
27
+ action: z.ZodString;
28
+ party: z.ZodString;
29
+ role: z.ZodString;
30
+ decision: z.ZodEnum<{
31
+ approved: "approved";
32
+ declined: "declined";
33
+ }>;
34
+ protectedRequest: z.ZodString;
35
+ differentFromInitiator: z.ZodBoolean;
36
+ }, z.core.$strict>;
37
+ export type JsonSchemaDocument = z.core.JSONSchema.BaseSchema;
38
+ export interface ObjectKindDiscovery {
39
+ creation: true;
40
+ kind: string;
41
+ title: string;
42
+ fields: readonly UdlObjectField[];
43
+ authoredFields: readonly string[];
44
+ columns: readonly string[];
45
+ createSchema: JsonSchemaDocument;
46
+ actions: readonly ObjectActionDiscovery[];
47
+ }
48
+ export type ObjectActionTarget = {
49
+ kind: "attachment";
50
+ attachment: string;
51
+ } | {
52
+ kind: "instance";
53
+ attachment: string;
54
+ instanceId: string;
55
+ };
56
+ export interface ObjectActionContext {
57
+ productBuildId: string;
58
+ digest: string;
59
+ target: ObjectActionTarget;
60
+ }
61
+ export interface ObjectActionDiscovery extends ObjectActionContext {
62
+ approvalRequirements: readonly z.infer<typeof objectApprovalRequirementSchema>[];
63
+ name: string;
64
+ title: string;
65
+ instrument: string;
66
+ action: string;
67
+ requirements: readonly UdlObjectField[];
68
+ creationRequirements?: readonly UdlObjectField[];
69
+ creationOnlyNames?: readonly string[];
70
+ inputSchema: JsonSchemaDocument;
71
+ fieldsSchema: JsonSchemaDocument;
72
+ availability: {
73
+ status: "available";
74
+ } | {
75
+ status: "unavailable";
76
+ code: string;
77
+ message: string;
78
+ };
79
+ }
80
+ export type EvidenceState = "missing" | "pending" | "satisfied" | "refused" | "stale";
81
+ export interface ObjectEvidenceSummary {
82
+ requirementId: string;
83
+ subjectId: string;
84
+ protectedInputDigest: string;
85
+ adapter: string;
86
+ declarationDigest: string;
87
+ productBuildId: string;
88
+ state: EvidenceState;
89
+ reference?: string;
90
+ observedAt?: string;
91
+ reasonCode?: string;
92
+ }
93
+ export interface ObjectActionState extends ObjectActionDiscovery {
94
+ requiredNow: readonly string[];
95
+ evidence?: readonly ObjectEvidenceSummary[];
96
+ }
97
+ /** GET /v1/products/{productId}/objects. Core supplies the frozen Build identity. */
98
+ export type RetainedObjectKind = Pick<ObjectKindDiscovery, "kind" | "title" | "fields" | "authoredFields" | "columns"> & {
99
+ productBuildId: string;
100
+ digest: string;
101
+ creation: false;
102
+ };
103
+ export interface ObjectDiscovery {
104
+ retainedKinds: readonly RetainedObjectKind[];
105
+ productBuildId: string;
106
+ digest: string;
107
+ kinds: readonly ObjectKindDiscovery[];
108
+ }
109
+ export interface ObjectActionsResponse {
110
+ objectId: string;
111
+ revision: number;
112
+ actions: readonly ObjectActionState[];
113
+ evidence: readonly ObjectEvidenceSummary[];
114
+ }
115
+ export interface ObjectInstance {
116
+ objectId: string;
117
+ kind: string;
118
+ revision: number;
119
+ externalId?: string;
120
+ fields: Record<string, unknown>;
121
+ productBuildId: string;
122
+ }
123
+ export interface ObjectListResponse {
124
+ items: ObjectInstance[];
125
+ nextCursor?: string;
126
+ }
127
+ export interface ObjectActionResponse {
128
+ object: ObjectInstance;
129
+ outcome: {
130
+ instrument: string;
131
+ instanceId: string;
132
+ state: string;
133
+ } | null;
134
+ evidence: readonly ObjectEvidenceSummary[];
135
+ }
136
+ /** Values, rather than declarations. The same validator feeds forms and admission. */
137
+ export declare function udlFieldValueSchema(field: UdlField): z.ZodType;
138
+ /** Creation accepts the full metadata union, with every value optional. */
139
+ export declare function objectCreateSchema(kind: UdlObjectKind): z.ZodObject;
140
+ /** Canonical UDL supplies meaning; core adds authority, lifecycle and readiness. */
141
+ export declare function projectObjectDiscovery(document: UdlDocument, build: Pick<ObjectDiscovery, "productBuildId" | "digest">): ObjectDiscovery;
142
+ /** Object-specific values determine missing fields; global discovery cannot. */
143
+ export declare function objectActionState(action: ObjectActionDiscovery, fields: Readonly<Record<string, unknown>>, options?: {
144
+ attached?: boolean;
145
+ } | boolean): ObjectActionState;
146
+ export interface SubjectRequirementIssue {
147
+ code: "subject_requirement_missing" | "subject_field_unknown" | "subject_adapter_unbound";
148
+ action: string;
149
+ field?: string;
150
+ origin: string;
151
+ message: string;
152
+ }
153
+ /** Check merged metadata before dispatch. Runtime guards add their active child requirements. */
154
+ export declare function validateObjectActionSubject(action: ObjectActionDiscovery, storedFields: Readonly<Record<string, unknown>>, submittedFields: Readonly<Record<string, unknown>>, options?: {
155
+ attached?: boolean;
156
+ } | boolean): readonly SubjectRequirementIssue[];
157
+ //# sourceMappingURL=object-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object-contract.d.ts","sourceRoot":"","sources":["../src/object-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;oBAkBnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,+BAA+B;;;;;;;;;;;kBAQ1C,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,IAAI,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,kBAAkB,CAAC;IACjC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC3C;AACD,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AACjE,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,kBAAkB,CAAC;CAC5B;AACD,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB;IAChE,oBAAoB,EAAE,SAAS,CAAC,CAAC,KAAK,CACpC,OAAO,+BAA+B,CACvC,EAAE,CAAC;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,oBAAoB,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACjD,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,WAAW,EAAE,kBAAkB,CAAC;IAChC,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,EACR;QAAE,MAAM,EAAE,WAAW,CAAA;KAAE,GACvB;QAAE,MAAM,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AACD,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,SAAS,GACT,WAAW,GACX,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC7C;AACD,qFAAqF;AACrF,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,mBAAmB,EACnB,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAC3D,GAAG;IACF,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;CACjB,CAAC;AACF,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC7C,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACvC;AACD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACtC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC5C;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AACD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1E,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC5C;AAKD,sFAAsF;AACtF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,CAAC,OAAO,CA+E9D;AACD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,CAAC,CAAC,SAAS,CAcnE;AAED,oFAAoF;AACpF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,GAAG,QAAQ,CAAC,GACxD,eAAe,CAqKjB;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACzC,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,GACzC,iBAAiB,CAkBnB;AACD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EACA,6BAA6B,GAC7B,uBAAuB,GACvB,yBAAyB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,iGAAiG;AACjG,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,qBAAqB,EAC7B,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC/C,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAClD,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,GACzC,SAAS,uBAAuB,EAAE,CA0CpC"}