@riverbankcms/sdk 0.60.9 → 0.60.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/_dts/api/src/accessAdmin.d.ts +102 -0
  2. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  3. package/dist/_dts/api/src/domains.d.ts +14 -13
  4. package/dist/_dts/api/src/endpoints.d.ts +32 -0
  5. package/dist/_dts/api/src/index.d.ts +4 -3
  6. package/dist/_dts/api/src/navigation/linkValue.d.ts +15 -2
  7. package/dist/_dts/api/src/navigation.d.ts +2 -0
  8. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -1
  9. package/dist/_dts/blocks/src/index.d.ts +1 -1
  10. package/dist/_dts/blocks/src/system/node/fragments/ctaButton.d.ts +2 -2
  11. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +2 -1
  12. package/dist/_dts/blocks/src/system/types/link.d.ts +7 -1
  13. package/dist/_dts/core/src/participant-identity.d.ts +72 -0
  14. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +96 -60
  15. package/dist/_dts/db/src/schemas/forms.d.ts +135 -24
  16. package/dist/_dts/sdk/src/contracts/content.d.ts +7 -1
  17. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -1
  18. package/dist/_dts/sdk/src/version.d.ts +1 -1
  19. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +21 -0
  20. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  21. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -0
  22. package/dist/cli/index.mjs +188 -9
  23. package/dist/client/bookings.mjs +808 -149
  24. package/dist/client/client.mjs +553 -130
  25. package/dist/client/hooks.mjs +119 -0
  26. package/dist/client/rendering/client.mjs +412 -113
  27. package/dist/client/rendering/islands.mjs +4605 -4361
  28. package/dist/client/rendering.mjs +580 -157
  29. package/dist/preview-next/before-render.mjs +57 -0
  30. package/dist/preview-next/client/runtime.mjs +580 -151
  31. package/dist/preview-next/middleware.mjs +57 -0
  32. package/dist/server/components.mjs +293 -45
  33. package/dist/server/config-validation.mjs +119 -0
  34. package/dist/server/config.mjs +119 -0
  35. package/dist/server/data.mjs +119 -0
  36. package/dist/server/index.mjs +120 -1
  37. package/dist/server/next.mjs +300 -52
  38. package/dist/server/page-converter.mjs +62 -0
  39. package/dist/server/prebuild.mjs +1 -1
  40. package/dist/server/rendering/server.mjs +293 -45
  41. package/dist/server/rendering.mjs +293 -45
  42. package/dist/server/routing.mjs +159 -29
  43. package/dist/server/server.mjs +120 -1
  44. package/package.json +1 -1
  45. package/dist/_dts/blocks/src/system/runtime/shared/themedButtonClass.d.ts +0 -11
@@ -2065,6 +2065,63 @@ var ENDPOINT_DEFINITIONS = {
2065
2065
  auth: "user",
2066
2066
  responseKind: "json"
2067
2067
  },
2068
+ updateRegisteredDomainContact: {
2069
+ path: "/domains/{domainId}/registrar/contact",
2070
+ method: "POST",
2071
+ errors: [
2072
+ "validation:invalid_input",
2073
+ "resource:not_found",
2074
+ "auth:forbidden",
2075
+ "external:service_error",
2076
+ "external:registrar_orphaned_contact_profile",
2077
+ "server:internal_error"
2078
+ ],
2079
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2080
+ auth: "user",
2081
+ responseKind: "json"
2082
+ },
2083
+ setRegisteredDomainPrivacy: {
2084
+ path: "/domains/{domainId}/registrar/privacy",
2085
+ method: "POST",
2086
+ errors: [
2087
+ "validation:invalid_input",
2088
+ "resource:not_found",
2089
+ "auth:forbidden",
2090
+ "external:service_error",
2091
+ "server:internal_error"
2092
+ ],
2093
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2094
+ auth: "user",
2095
+ responseKind: "json"
2096
+ },
2097
+ setRegisteredDomainAutoRenew: {
2098
+ path: "/domains/{domainId}/registrar/auto-renew",
2099
+ method: "POST",
2100
+ errors: [
2101
+ "validation:invalid_input",
2102
+ "resource:not_found",
2103
+ "auth:forbidden",
2104
+ "external:service_error",
2105
+ "server:internal_error"
2106
+ ],
2107
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2108
+ auth: "user",
2109
+ responseKind: "json"
2110
+ },
2111
+ getRegisteredDomainRenewalPosture: {
2112
+ path: "/domains/{domainId}/registrar/renewal",
2113
+ method: "GET",
2114
+ errors: [
2115
+ "validation:invalid_input",
2116
+ "resource:not_found",
2117
+ "auth:forbidden",
2118
+ "external:service_error",
2119
+ "server:internal_error"
2120
+ ],
2121
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2122
+ auth: "user",
2123
+ responseKind: "json"
2124
+ },
2068
2125
  retryDomainVercel: {
2069
2126
  path: "/domains/{domainId}/vercel",
2070
2127
  method: "POST",
@@ -5772,6 +5829,68 @@ function toLocationCoordinates(value) {
5772
5829
  };
5773
5830
  }
5774
5831
 
5832
+ // ../core/src/participant-identity.ts
5833
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
5834
+ participant_id: {
5835
+ field: "participant_id",
5836
+ role: "canonical_link",
5837
+ canonicalSource: "booking_participants.id",
5838
+ contractAction: "tighten_in_839",
5839
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
5840
+ },
5841
+ display_name: {
5842
+ field: "display_name",
5843
+ role: "contextual_snapshot",
5844
+ canonicalSource: "booking_participants.display_name for live identity",
5845
+ contractAction: "retain_as_snapshot",
5846
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
5847
+ },
5848
+ email: {
5849
+ field: "email",
5850
+ role: "contextual_snapshot",
5851
+ canonicalSource: "booking_participants.email_normalized for live email identity",
5852
+ contractAction: "retain_as_snapshot",
5853
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
5854
+ },
5855
+ email_normalized: {
5856
+ field: "email_normalized",
5857
+ role: "contextual_snapshot",
5858
+ canonicalSource: "booking_participants.email_normalized for live email identity",
5859
+ contractAction: "retain_as_snapshot",
5860
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
5861
+ },
5862
+ phone: {
5863
+ field: "phone",
5864
+ role: "contextual_snapshot",
5865
+ canonicalSource: "booking_participants.phone for live phone identity",
5866
+ contractAction: "retain_as_snapshot",
5867
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
5868
+ },
5869
+ identity_state: {
5870
+ field: "identity_state",
5871
+ role: "materialization_state",
5872
+ canonicalSource: "booking_participants.identity_state for subject state",
5873
+ contractAction: "review_for_later_contract_cleanup",
5874
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
5875
+ },
5876
+ event_attendee_guest_id: {
5877
+ field: "event_attendee_guest_id",
5878
+ role: "compatibility_projection",
5879
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
5880
+ contractAction: "retain_as_projection",
5881
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
5882
+ }
5883
+ };
5884
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
5885
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
5886
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
5887
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
5888
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
5889
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
5890
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
5891
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
5892
+ ];
5893
+
5775
5894
  // ../media-core/src/transformRect.ts
5776
5895
  function isValidTransformRectStructure(rect) {
5777
5896
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -2110,6 +2110,63 @@ var ENDPOINT_DEFINITIONS = {
2110
2110
  auth: "user",
2111
2111
  responseKind: "json"
2112
2112
  },
2113
+ updateRegisteredDomainContact: {
2114
+ path: "/domains/{domainId}/registrar/contact",
2115
+ method: "POST",
2116
+ errors: [
2117
+ "validation:invalid_input",
2118
+ "resource:not_found",
2119
+ "auth:forbidden",
2120
+ "external:service_error",
2121
+ "external:registrar_orphaned_contact_profile",
2122
+ "server:internal_error"
2123
+ ],
2124
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2125
+ auth: "user",
2126
+ responseKind: "json"
2127
+ },
2128
+ setRegisteredDomainPrivacy: {
2129
+ path: "/domains/{domainId}/registrar/privacy",
2130
+ method: "POST",
2131
+ errors: [
2132
+ "validation:invalid_input",
2133
+ "resource:not_found",
2134
+ "auth:forbidden",
2135
+ "external:service_error",
2136
+ "server:internal_error"
2137
+ ],
2138
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2139
+ auth: "user",
2140
+ responseKind: "json"
2141
+ },
2142
+ setRegisteredDomainAutoRenew: {
2143
+ path: "/domains/{domainId}/registrar/auto-renew",
2144
+ method: "POST",
2145
+ errors: [
2146
+ "validation:invalid_input",
2147
+ "resource:not_found",
2148
+ "auth:forbidden",
2149
+ "external:service_error",
2150
+ "server:internal_error"
2151
+ ],
2152
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2153
+ auth: "user",
2154
+ responseKind: "json"
2155
+ },
2156
+ getRegisteredDomainRenewalPosture: {
2157
+ path: "/domains/{domainId}/registrar/renewal",
2158
+ method: "GET",
2159
+ errors: [
2160
+ "validation:invalid_input",
2161
+ "resource:not_found",
2162
+ "auth:forbidden",
2163
+ "external:service_error",
2164
+ "server:internal_error"
2165
+ ],
2166
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2167
+ auth: "user",
2168
+ responseKind: "json"
2169
+ },
2113
2170
  retryDomainVercel: {
2114
2171
  path: "/domains/{domainId}/vercel",
2115
2172
  method: "POST",
@@ -5817,6 +5874,68 @@ function toLocationCoordinates(value) {
5817
5874
  };
5818
5875
  }
5819
5876
 
5877
+ // ../core/src/participant-identity.ts
5878
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
5879
+ participant_id: {
5880
+ field: "participant_id",
5881
+ role: "canonical_link",
5882
+ canonicalSource: "booking_participants.id",
5883
+ contractAction: "tighten_in_839",
5884
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
5885
+ },
5886
+ display_name: {
5887
+ field: "display_name",
5888
+ role: "contextual_snapshot",
5889
+ canonicalSource: "booking_participants.display_name for live identity",
5890
+ contractAction: "retain_as_snapshot",
5891
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
5892
+ },
5893
+ email: {
5894
+ field: "email",
5895
+ role: "contextual_snapshot",
5896
+ canonicalSource: "booking_participants.email_normalized for live email identity",
5897
+ contractAction: "retain_as_snapshot",
5898
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
5899
+ },
5900
+ email_normalized: {
5901
+ field: "email_normalized",
5902
+ role: "contextual_snapshot",
5903
+ canonicalSource: "booking_participants.email_normalized for live email identity",
5904
+ contractAction: "retain_as_snapshot",
5905
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
5906
+ },
5907
+ phone: {
5908
+ field: "phone",
5909
+ role: "contextual_snapshot",
5910
+ canonicalSource: "booking_participants.phone for live phone identity",
5911
+ contractAction: "retain_as_snapshot",
5912
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
5913
+ },
5914
+ identity_state: {
5915
+ field: "identity_state",
5916
+ role: "materialization_state",
5917
+ canonicalSource: "booking_participants.identity_state for subject state",
5918
+ contractAction: "review_for_later_contract_cleanup",
5919
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
5920
+ },
5921
+ event_attendee_guest_id: {
5922
+ field: "event_attendee_guest_id",
5923
+ role: "compatibility_projection",
5924
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
5925
+ contractAction: "retain_as_projection",
5926
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
5927
+ }
5928
+ };
5929
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
5930
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
5931
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
5932
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
5933
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
5934
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
5935
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
5936
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
5937
+ ];
5938
+
5820
5939
  // ../media-core/src/transformRect.ts
5821
5940
  function isValidTransformRectStructure(rect) {
5822
5941
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -2062,6 +2062,63 @@ var ENDPOINT_DEFINITIONS = {
2062
2062
  auth: "user",
2063
2063
  responseKind: "json"
2064
2064
  },
2065
+ updateRegisteredDomainContact: {
2066
+ path: "/domains/{domainId}/registrar/contact",
2067
+ method: "POST",
2068
+ errors: [
2069
+ "validation:invalid_input",
2070
+ "resource:not_found",
2071
+ "auth:forbidden",
2072
+ "external:service_error",
2073
+ "external:registrar_orphaned_contact_profile",
2074
+ "server:internal_error"
2075
+ ],
2076
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2077
+ auth: "user",
2078
+ responseKind: "json"
2079
+ },
2080
+ setRegisteredDomainPrivacy: {
2081
+ path: "/domains/{domainId}/registrar/privacy",
2082
+ method: "POST",
2083
+ errors: [
2084
+ "validation:invalid_input",
2085
+ "resource:not_found",
2086
+ "auth:forbidden",
2087
+ "external:service_error",
2088
+ "server:internal_error"
2089
+ ],
2090
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2091
+ auth: "user",
2092
+ responseKind: "json"
2093
+ },
2094
+ setRegisteredDomainAutoRenew: {
2095
+ path: "/domains/{domainId}/registrar/auto-renew",
2096
+ method: "POST",
2097
+ errors: [
2098
+ "validation:invalid_input",
2099
+ "resource:not_found",
2100
+ "auth:forbidden",
2101
+ "external:service_error",
2102
+ "server:internal_error"
2103
+ ],
2104
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2105
+ auth: "user",
2106
+ responseKind: "json"
2107
+ },
2108
+ getRegisteredDomainRenewalPosture: {
2109
+ path: "/domains/{domainId}/registrar/renewal",
2110
+ method: "GET",
2111
+ errors: [
2112
+ "validation:invalid_input",
2113
+ "resource:not_found",
2114
+ "auth:forbidden",
2115
+ "external:service_error",
2116
+ "server:internal_error"
2117
+ ],
2118
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2119
+ auth: "user",
2120
+ responseKind: "json"
2121
+ },
2065
2122
  retryDomainVercel: {
2066
2123
  path: "/domains/{domainId}/vercel",
2067
2124
  method: "POST",
@@ -5769,6 +5826,68 @@ function toLocationCoordinates(value) {
5769
5826
  };
5770
5827
  }
5771
5828
 
5829
+ // ../core/src/participant-identity.ts
5830
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
5831
+ participant_id: {
5832
+ field: "participant_id",
5833
+ role: "canonical_link",
5834
+ canonicalSource: "booking_participants.id",
5835
+ contractAction: "tighten_in_839",
5836
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
5837
+ },
5838
+ display_name: {
5839
+ field: "display_name",
5840
+ role: "contextual_snapshot",
5841
+ canonicalSource: "booking_participants.display_name for live identity",
5842
+ contractAction: "retain_as_snapshot",
5843
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
5844
+ },
5845
+ email: {
5846
+ field: "email",
5847
+ role: "contextual_snapshot",
5848
+ canonicalSource: "booking_participants.email_normalized for live email identity",
5849
+ contractAction: "retain_as_snapshot",
5850
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
5851
+ },
5852
+ email_normalized: {
5853
+ field: "email_normalized",
5854
+ role: "contextual_snapshot",
5855
+ canonicalSource: "booking_participants.email_normalized for live email identity",
5856
+ contractAction: "retain_as_snapshot",
5857
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
5858
+ },
5859
+ phone: {
5860
+ field: "phone",
5861
+ role: "contextual_snapshot",
5862
+ canonicalSource: "booking_participants.phone for live phone identity",
5863
+ contractAction: "retain_as_snapshot",
5864
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
5865
+ },
5866
+ identity_state: {
5867
+ field: "identity_state",
5868
+ role: "materialization_state",
5869
+ canonicalSource: "booking_participants.identity_state for subject state",
5870
+ contractAction: "review_for_later_contract_cleanup",
5871
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
5872
+ },
5873
+ event_attendee_guest_id: {
5874
+ field: "event_attendee_guest_id",
5875
+ role: "compatibility_projection",
5876
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
5877
+ contractAction: "retain_as_projection",
5878
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
5879
+ }
5880
+ };
5881
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
5882
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
5883
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
5884
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
5885
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
5886
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
5887
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
5888
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
5889
+ ];
5890
+
5772
5891
  // ../media-core/src/transformRect.ts
5773
5892
  function isValidTransformRectStructure(rect) {
5774
5893
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -2084,6 +2084,63 @@ var ENDPOINT_DEFINITIONS = {
2084
2084
  auth: "user",
2085
2085
  responseKind: "json"
2086
2086
  },
2087
+ updateRegisteredDomainContact: {
2088
+ path: "/domains/{domainId}/registrar/contact",
2089
+ method: "POST",
2090
+ errors: [
2091
+ "validation:invalid_input",
2092
+ "resource:not_found",
2093
+ "auth:forbidden",
2094
+ "external:service_error",
2095
+ "external:registrar_orphaned_contact_profile",
2096
+ "server:internal_error"
2097
+ ],
2098
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2099
+ auth: "user",
2100
+ responseKind: "json"
2101
+ },
2102
+ setRegisteredDomainPrivacy: {
2103
+ path: "/domains/{domainId}/registrar/privacy",
2104
+ method: "POST",
2105
+ errors: [
2106
+ "validation:invalid_input",
2107
+ "resource:not_found",
2108
+ "auth:forbidden",
2109
+ "external:service_error",
2110
+ "server:internal_error"
2111
+ ],
2112
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2113
+ auth: "user",
2114
+ responseKind: "json"
2115
+ },
2116
+ setRegisteredDomainAutoRenew: {
2117
+ path: "/domains/{domainId}/registrar/auto-renew",
2118
+ method: "POST",
2119
+ errors: [
2120
+ "validation:invalid_input",
2121
+ "resource:not_found",
2122
+ "auth:forbidden",
2123
+ "external:service_error",
2124
+ "server:internal_error"
2125
+ ],
2126
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2127
+ auth: "user",
2128
+ responseKind: "json"
2129
+ },
2130
+ getRegisteredDomainRenewalPosture: {
2131
+ path: "/domains/{domainId}/registrar/renewal",
2132
+ method: "GET",
2133
+ errors: [
2134
+ "validation:invalid_input",
2135
+ "resource:not_found",
2136
+ "auth:forbidden",
2137
+ "external:service_error",
2138
+ "server:internal_error"
2139
+ ],
2140
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2141
+ auth: "user",
2142
+ responseKind: "json"
2143
+ },
2087
2144
  retryDomainVercel: {
2088
2145
  path: "/domains/{domainId}/vercel",
2089
2146
  method: "POST",
@@ -6229,7 +6286,7 @@ var SimpleCache = class {
6229
6286
  };
6230
6287
 
6231
6288
  // src/version.ts
6232
- var SDK_VERSION = "0.60.9";
6289
+ var SDK_VERSION = "0.60.12";
6233
6290
 
6234
6291
  // src/client/error.ts
6235
6292
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -8088,6 +8145,68 @@ import { z as z4 } from "zod";
8088
8145
  // ../blocks/src/system/manifest/schema.ts
8089
8146
  import { z as z3 } from "zod";
8090
8147
 
8148
+ // ../core/src/participant-identity.ts
8149
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
8150
+ participant_id: {
8151
+ field: "participant_id",
8152
+ role: "canonical_link",
8153
+ canonicalSource: "booking_participants.id",
8154
+ contractAction: "tighten_in_839",
8155
+ notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
8156
+ },
8157
+ display_name: {
8158
+ field: "display_name",
8159
+ role: "contextual_snapshot",
8160
+ canonicalSource: "booking_participants.display_name for live identity",
8161
+ contractAction: "retain_as_snapshot",
8162
+ notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
8163
+ },
8164
+ email: {
8165
+ field: "email",
8166
+ role: "contextual_snapshot",
8167
+ canonicalSource: "booking_participants.email_normalized for live email identity",
8168
+ contractAction: "retain_as_snapshot",
8169
+ notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
8170
+ },
8171
+ email_normalized: {
8172
+ field: "email_normalized",
8173
+ role: "contextual_snapshot",
8174
+ canonicalSource: "booking_participants.email_normalized for live email identity",
8175
+ contractAction: "retain_as_snapshot",
8176
+ notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
8177
+ },
8178
+ phone: {
8179
+ field: "phone",
8180
+ role: "contextual_snapshot",
8181
+ canonicalSource: "booking_participants.phone for live phone identity",
8182
+ contractAction: "retain_as_snapshot",
8183
+ notes: "Participation-time phone context. Live identity belongs to the participant row."
8184
+ },
8185
+ identity_state: {
8186
+ field: "identity_state",
8187
+ role: "materialization_state",
8188
+ canonicalSource: "booking_participants.identity_state for subject state",
8189
+ contractAction: "review_for_later_contract_cleanup",
8190
+ notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
8191
+ },
8192
+ event_attendee_guest_id: {
8193
+ field: "event_attendee_guest_id",
8194
+ role: "compatibility_projection",
8195
+ canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
8196
+ contractAction: "retain_as_projection",
8197
+ notes: "Compatibility FK for event guest read models. It is not person identity authority."
8198
+ }
8199
+ };
8200
+ var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
8201
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
8202
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
8203
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
8204
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
8205
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
8206
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
8207
+ PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
8208
+ ];
8209
+
8091
8210
  // ../media-core/src/aspectTransforms.ts
8092
8211
  function parseAspectRatioValue(value) {
8093
8212
  if (typeof value === "number") {