githolon 0.103.19 → 0.104.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.
@@ -2640,8 +2640,8 @@ function resolveGatewayOperation(spec, opName, method) {
2640
2640
 
2641
2641
  // ../cloud/cloudflare-shell/src/kernel-registry.generated.ts
2642
2642
  var DEPLOYED_KERNELS = [
2643
- { prefix: "c71ea1a3", hash: "c71ea1a3bbe0c7b4be944106e44387f37bc9da43aeb0747631c7c4e89012c757", version: "kernel-c71ea1a3", note: "production (this candidate)", features: ["compoundKeys", "capturedReads", "invariantGate", "surfacedMerge", "fieldProvenance", "nullSemantics", "attestedReads", "conflictSnapshots", "ownedAudience", "temporalEnum"] },
2644
- { prefix: "11503b51", hash: "11503b51eaa2b7f2a059b0a94725faa1f7ab4c96c0648b955f2cf5010974d259", version: "kernel-11503b51", note: "test-mint (this candidate) \u2014 feature-equivalent to production", features: ["compoundKeys", "capturedReads", "invariantGate", "surfacedMerge", "fieldProvenance", "nullSemantics", "attestedReads", "conflictSnapshots", "ownedAudience", "temporalEnum"] }
2643
+ { prefix: "7d3fcc35", hash: "7d3fcc3501bef23849493026e10ce75b3ef3d1400f789181d03f4a3b0b5b1fdb", version: "kernel-7d3fcc35", note: "production (this candidate)", features: ["compoundKeys", "capturedReads", "invariantGate", "surfacedMerge", "fieldProvenance", "nullSemantics", "attestedReads", "conflictSnapshots", "ownedAudience", "temporalEnum"] },
2644
+ { prefix: "0ae2f9ba", hash: "0ae2f9ba0fa5ec2eccb798fdcb99f46a82d76c03d851a9fc62eed47ffc25c394", version: "kernel-0ae2f9ba", note: "test-mint (this candidate) \u2014 feature-equivalent to production", features: ["compoundKeys", "capturedReads", "invariantGate", "surfacedMerge", "fieldProvenance", "nullSemantics", "attestedReads", "conflictSnapshots", "ownedAudience", "temporalEnum"] }
2645
2645
  ];
2646
2646
 
2647
2647
  // ../cloud/cloudflare-shell/src/staged-intents.ts
Binary file
Binary file
package/dist/full-cli.mjs CHANGED
@@ -727,6 +727,18 @@ function aggregate(id, fields, opts) {
727
727
  );
728
728
  }
729
729
  const { stored, hasMany: hasMany2 } = partitionFields(fields);
730
+ if (opts?.fulfils !== void 0) {
731
+ const decl = opts.fulfils;
732
+ for (const reserved of [decl.name, decl.blockedField]) {
733
+ if (stored[reserved] !== void 0) {
734
+ throw new Error(
735
+ `aggregate '${id}': field '${reserved}' collides with the fulfilment '${decl.name}' (it owns '${decl.name}' + '${decl.blockedField}') \u2014 rename your field`
736
+ );
737
+ }
738
+ }
739
+ stored[decl.name] = t.enum(decl.tiers).merge(Lww).optional();
740
+ stored[decl.blockedField] = t.string().merge(Lww).optional();
741
+ }
730
742
  for (const [name, field] of Object.entries(stored)) {
731
743
  const fref = field.foreignRef;
732
744
  if (fref === void 0) continue;
@@ -824,6 +836,12 @@ function aggregate(id, fields, opts) {
824
836
  const metaFields = Object.entries(stored).filter(([, f]) => f.isMeta === true).map(([name]) => name).sort();
825
837
  const fromBirthFields = Object.entries(stored).filter(([, f]) => f.isFromBirth === true).map(([name]) => name).sort();
826
838
  const userInvariant = opts?.invariant;
839
+ const fulfils = opts?.fulfils;
840
+ const afterFulfilment = fulfils !== void 0 ? (snapshot2) => {
841
+ const verdict = fulfils.invariant(snapshot2);
842
+ if ("reject" in verdict) return { reject: `${id}: ${verdict.reject}` };
843
+ return userInvariant !== void 0 ? userInvariant(snapshot2) : { accept: true };
844
+ } : userInvariant;
827
845
  const composedInvariant = fromBirthFields.length > 0 ? (snapshot2) => {
828
846
  for (const name of fromBirthFields) {
829
847
  const v = snapshot2[name];
@@ -831,13 +849,14 @@ function aggregate(id, fields, opts) {
831
849
  return { reject: `${id}.${name} is fromBirth() \u2014 every ${id} must carry it from creation (the plan left it unset)` };
832
850
  }
833
851
  }
834
- return userInvariant !== void 0 ? userInvariant(snapshot2) : { accept: true };
835
- } : userInvariant;
852
+ return afterFulfilment !== void 0 ? afterFulfilment(snapshot2) : { accept: true };
853
+ } : afterFulfilment;
836
854
  const base = {
837
855
  id,
838
856
  fields: stored,
839
857
  hasMany: hasMany2,
840
858
  __isAggregateHandle: true,
859
+ ...opts?.fulfils !== void 0 ? { fulfilment: opts.fulfils } : {},
841
860
  ...composedInvariant !== void 0 ? { hasInvariant: true, invariant: composedInvariant } : {},
842
861
  ...fromBirthFields.length > 0 ? { fromBirthFields } : {},
843
862
  // VALUE-FREE INVARIANT (nomosFlowGate rule 4a): when the ONLY invariant is the synthesized
@@ -953,6 +972,7 @@ var init_aggregate = __esm({
953
972
  "use strict";
954
973
  init_fields();
955
974
  init_contract();
975
+ init_drivers();
956
976
  READ_CAP_NAME_RE = /^[A-Za-z0-9][A-Za-z0-9_.:-]{0,127}$/;
957
977
  OWNER_FIELD = "__nomos_owner_principal_7c1f5e";
958
978
  OWNED_READ_RELATION = "nomos_internal_owned_reader_7c1f5e";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "githolon",
3
- "version": "0.103.19",
3
+ "version": "0.104.1",
4
4
  "type": "module",
5
5
  "description": "githolon — the Nomos developer CLI: Rails-style generators for @githolon/dsl domains + the package compiler. Kernel-independent.",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -30,7 +30,7 @@
30
30
  "dependencies": {
31
31
  "@bjorn3/browser_wasi_shim": "0.4.2",
32
32
  "@bufbuild/protobuf": "^2.13.0",
33
- "@githolon/dsl": "^0.103.19",
33
+ "@githolon/dsl": "^0.104.1",
34
34
  "isomorphic-git": "^1.38.4",
35
35
  "tsx": "^4.19.2"
36
36
  },