@odla-ai/chapter 0.42.1 → 0.42.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -106,7 +106,7 @@ type TextFields$1<Key extends string> = {
106
106
  [Field in Key]: string;
107
107
  };
108
108
  /** User-visible language for sharing, delivery state, and leader rollups. */
109
- type AdminNetworkCopy = TextFields$1<"title" | "allowlistDescription" | "sharing" | "shareWith" | "shared" | "shareFailed" | "deliveryFailed" | "loadingRollup" | "loadRollupFailed" | "overview" | "configuredFollowers" | "reachableFollowers" | "recordsAcrossFollowers" | "noFollowers" | "followers" | "available" | "unavailable" | "recordTotals" | "noRecordTotals">;
109
+ type AdminNetworkCopy = TextFields$1<"title" | "allowlistDescription" | "sharing" | "shareWith" | "shared" | "shareFailed" | "deliveryFailed" | "loadingRollup" | "loadRollupFailed" | "overview" | "configuredFollowers" | "reachableFollowers" | "recordsAcrossFollowers" | "noFollowers" | "followers" | "available" | "unavailable" | "transportReachable" | "transportUnavailable" | "transportNotChecked" | "bindingTransport" | "urlTransport" | "activeConfiguration" | "noActiveConfiguration" | "publicSiteAvailable" | "publicSiteUnavailable" | "publicSiteNotChecked" | "recordTotals" | "noRecordTotals">;
110
110
 
111
111
  /** Complete default language resolved beneath partial Chapter copy overrides. */
112
112
  declare const DEFAULT_CHAPTER_COPY: ChapterCopy;
@@ -282,6 +282,9 @@ interface ChapterNetworkTarget {
282
282
  /** Record types on which this leader permits remote lifecycle transitions.
283
283
  * The follower must independently opt in and remains pipeline authority. */
284
284
  stageTransitions?: readonly string[];
285
+ /** Allow package-owned desired admission decisions for existing leader CRM
286
+ * people to be delivered to this target. Omitted means default deny. */
287
+ admissionGrants?: boolean;
285
288
  }
286
289
  /** One signed peer allowed to browse a privacy-bounded projection of this
287
290
  * site's CRM. The follower owns this allowlist; a leader target declaration
@@ -291,7 +294,7 @@ interface ChapterNetworkReader {
291
294
  id: string;
292
295
  /** Per-record-type field allowlist. Omitted types and fields never leave
293
296
  * this site. Record id, name, stage, and timestamps are bounded metadata. */
294
- fields: Record<string, readonly string[]>;
297
+ fields?: Record<string, readonly string[]>;
295
298
  /** Record types on which this reader may append an explicitly shared note.
296
299
  * Omitted by default: browse permission never silently grants write access.
297
300
  * Shared notes land in the follower CRM activity feed. */
@@ -303,6 +306,9 @@ interface ChapterNetworkReader {
303
306
  /** Local CRM record types on which this reader may request a lifecycle
304
307
  * transition. Chapter still enforces the local pipeline and gates. */
305
308
  stageTransitions?: readonly string[];
309
+ /** Accept signed desired admission decisions from this reader. Independent
310
+ * of record browsing; an admission-only reader may omit `fields`. */
311
+ admissionGrants?: boolean;
306
312
  }
307
313
  /** Leader/follower network configuration. A follower needs no code config to
308
314
  * receive pushed records. It must explicitly declare `readers` before any peer
@@ -347,6 +353,7 @@ interface ResolvedNetworkTarget {
347
353
  sharedNotes: readonly string[];
348
354
  editableFields: Record<string, readonly string[]>;
349
355
  stageTransitions: readonly string[];
356
+ admissionGrants?: boolean;
350
357
  }
351
358
  /** A validated follower-owned record projection for one signed reader. */
352
359
  interface ResolvedNetworkReader {
@@ -355,6 +362,7 @@ interface ResolvedNetworkReader {
355
362
  sharedNotes: readonly string[];
356
363
  editableFields: Record<string, readonly string[]>;
357
364
  stageTransitions: readonly string[];
365
+ admissionGrants?: boolean;
358
366
  }
359
367
  /** Fully-resolved leader network configuration. */
360
368
  interface ResolvedNetwork {
@@ -956,7 +964,7 @@ declare function createChapterIntegration(chapter: Chapter, options?: ChapterInt
956
964
  * read-only super-admin tier (default on for the `"claim"` ladder). A `"claim"`
957
965
  * chapter therefore emits the reference namespace set — `applications`,
958
966
  * `groups`, `meetings`, `emailLog`, `superAdmins` — with no `admins` table. */
959
- declare function chapterDb(mode: ChapterMode, auth: ResolvedAuth, includeNetworkNotes?: boolean, application?: ResolvedApplication, includeSignupControl?: boolean, includeMemberContent?: boolean, includeBuilderLibrary?: boolean): {
967
+ declare function chapterDb(mode: ChapterMode, auth: ResolvedAuth, includeNetworkNotes?: boolean, application?: ResolvedApplication, includeSignupControl?: boolean, includeMemberContent?: boolean, includeBuilderLibrary?: boolean, includeLeaderAdmissions?: boolean): {
960
968
  schema: DbSchema;
961
969
  rules: DbRules;
962
970
  };
@@ -1916,14 +1924,43 @@ interface NetworkSnapshot {
1916
1924
  mode: string;
1917
1925
  };
1918
1926
  generatedAt: number;
1927
+ /** Active follower-owned receipt for the managed signup configuration.
1928
+ * Optional on the wire so a newer leader can still inspect an older follower. */
1929
+ configuration?: {
1930
+ activeRevision: number | null;
1931
+ digest?: string;
1932
+ };
1919
1933
  types: TypeSummary[];
1920
1934
  }
1935
+ /** Server-side route used for the signed follower snapshot. `reachable: null`
1936
+ * means the request could not be attempted (for example, a missing edge secret). */
1937
+ interface NetworkTargetTransportStatus {
1938
+ kind: "binding" | "url";
1939
+ binding?: string;
1940
+ reachable: boolean | null;
1941
+ error?: {
1942
+ code: "binding_unavailable" | "binding_request_failed" | "url_request_failed" | "edge_secret_missing";
1943
+ message: string;
1944
+ };
1945
+ }
1921
1946
  /** One configured target's latest live result in a leader rollup. */
1922
1947
  interface NetworkRollupTarget {
1923
1948
  id: string;
1924
1949
  name: string;
1925
1950
  url: string;
1926
1951
  available: boolean;
1952
+ /** Signed snapshot transport; independent of public-origin availability. */
1953
+ transport: NetworkTargetTransportStatus;
1954
+ /** Last active managed configuration reported by the authenticated follower. */
1955
+ configuration: {
1956
+ activeRevision: number | null;
1957
+ digest?: string;
1958
+ };
1959
+ /** `null` when a service binding was authoritative and the public origin was
1960
+ * deliberately not probed. */
1961
+ publicSite: {
1962
+ available: boolean | null;
1963
+ };
1927
1964
  generatedAt?: number;
1928
1965
  types?: TypeSummary[];
1929
1966
  error?: string;
@@ -2889,4 +2926,4 @@ interface ChapterPromotionInput {
2889
2926
  /** Export the provider-independent pieces of one exact active signup revision. */
2890
2927
  declare function exportChapterPromotion(input: ChapterPromotionInput): Promise<PromotionAdapterResult>;
2891
2928
 
2892
- export { ADMISSION_GRANTS_PATH, ADMISSION_GRANTS_SCHEMA_VERSION, type AccountModel, type AdminNotificationTrigger, type AdmissionDecision, type AdmissionGrantDocument, type AdmissionGrantEnvelope, type AdmissionGrantInput, type AdmissionGrantReceipt, type AdmissionGrantRejection, type AdmissionGrantRevisionRow, type AdmissionGrantRow, type AdmissionGrantValidation, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, BUILDER_LIBRARY_ADMIN_PATH, BUILDER_LIBRARY_CONTROL_PATH, BUILDER_LIBRARY_MANIFEST_PATH, BUILDER_LIBRARY_PROMOTE_PATH, BUILDER_LIBRARY_SCHEMA_VERSION, type BuilderLibraryBrandAssetRef, type BuilderLibraryDocument, type BuilderLibraryEnvelope, type BuilderLibraryManifest, type BuilderLibraryPromotionProvenance, type BuilderLibraryReceipt, type BuilderLibraryResource, type BuilderLibraryResourceKind, type BuilderLibraryResourceProvenance, type BuilderLibraryResourceStatus, type BuilderLibraryScope, type BuilderLibrarySource, type BuilderLibrarySourceType, type BuilderLibraryTarget, type BuilderLibraryValidationOptions, type BuilderLibraryValidationResult, type BuilderLibraryViewer, type BuyerGiftClaim, CHAPTER_FLOW_FIELDS_SCHEMA_VERSION, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterBuilderLibrary, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmailIdentity, type ChapterEmails, type ChapterFieldFlow, type ChapterFlowField, type ChapterFlowFieldContract, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, type ChapterMemberContent, type ChapterMode, type ChapterNetwork, type ChapterNetworkReader, type ChapterNetworkTarget, type ChapterOperations, type ChapterPipeline, type ChapterPolicy, type ChapterPrices, type ChapterPromotionInput, type ChapterRunbookHints, type ChapterScheduling, type ChapterSends, type ChapterSignupControl, type ChapterTier, type ChapterTierConfig, type ClerkInviteInput, type ClerkMetadataInput, type ClerkResult, type ClerkUserInput, type ClerkUserRecord, type CompiledChapterBrandTokens, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, type EffectiveMemberContent, type EffectiveMemberContentPage, type EmailGroup, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, GIFT_OFFER_CATALOG_VERSION, type GiftOffer, type GiftOfferCatalog, type GiftOfferTarget, type GiftOfferValidation, type GuardResult, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type JoinConfigGroup, type JoinConfigTier, type JoinContinuation, type LeaderCrmOptions, type LeaderFormationConfig, type LiveEvent, MAX_GIFT_OFFERS, MEMBERSHIP_PAGE_RENDERER, MEMBER_CONTENT_CONTROL_PATH, MEMBER_CONTENT_PATH, MEMBER_CONTENT_SCHEMA_VERSION, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberContentDocument, type MemberContentEnvelope, type MemberContentPage, type MemberContentPageProjection, type MemberContentProjection, type MemberContentReceipt, type MemberContentRejection, type MemberContentSource, type MemberContentSourceType, type MemberContentTarget, type MemberContentTierAuthority, type MemberContentValidationOptions, type MemberContentValidationResult, type MemberContentViewer, type MemberPageAudience, type MemberPageNavigation, type MemberPageUpsell, type MemberPageUpsellOffer, type MemberPageUpsellOverride, type MemberSession, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NetworkEditableField, type NetworkRecord, type NetworkRecordEdit, type NetworkRecordMutation, type NetworkRecordMutationResult, type NetworkRecordNote, type NetworkRecordPage, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NetworkStageTransition, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type ProjectionDeps, type PublicGiftOffer, type ReconcileDecision, type ResolvedApplication, type ResolvedAuth, type ResolvedBuilderLibrary, type ResolvedLeaderFormation, type ResolvedMemberContent, type ResolvedMemberPageUpsell, type ResolvedNetwork, type ResolvedNetworkReader, type ResolvedNetworkTarget, type ResolvedOperations, type ResolvedPipeline, type ResolvedScheduling, type ResolvedSends, type ResolvedSignupControl, type RoleChangeContext, type Rule, SCHEDULING_DEFAULTS, SIGNUP_CONTROL_PATH, SIGNUP_CONTROL_SCHEMA_VERSION, SIGNUP_CONTROL_THEME_MARKER, SIGNUP_CONTROL_THEME_STYLE_ID, type SchedulingErrors, type SecretMode, type SecretStore, type SessionUser, type SharedBusiness, type SharedPerson, type SharedRecord, type SharedRecordV1, type SharedRecordV2, type SignupControlApplication, type SignupControlDocument, type SignupControlEnvelope, type SignupControlPolicy, type SignupControlReceipt, type SignupControlRejection, type SignupControlTheme, type SignupControlThemeHead, type SignupControlThemeMetadata, type SignupControlThemeOptions, type SignupControlThemeRevision, type SignupControlThemeStyleTarget, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, applicantProfile, applicationBookingUpdate, applicationFlowFields, applicationSummary, applyMembershipTierMarkdown, backfillCrm, bookingDecision, brandTokens, bucketSeries, buildBuilderLibraryManifest, buildGroupSeed, buildTierSeeds, builderLibraryDigest, canApprove, canBook, canChangeRole, canTransition, canViewBuilderLibraryResource, canceledPatch, canonicalBuilderLibrary, canonicalMemberContent, canonicalSignupControl, chapterBrandFromTokens, chapterDb, chapterFlowFieldContract, clampArray, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkSetRole, clerkUserRequest, composeMemberContent, createAdmissionGrantEnvelope, createBuilderLibraryEnvelope, createChapterIntegration, createClerkInvitation, createClerkUser, createMemberContentEnvelope, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, emailGroupFrom, endForSlot, exportChapterPromotion, findAdmissionGrant, findApplicationRef, findGiftOffer, findTier, firstPaymentPatch, formatChapterCopy, formationFields, formationFlowFields, getVaultSecret, giftOfferActive, hasDisclaimerAck, hydrateSignupControlTheme, injectSignupControlThemeHead, introIdempotencyKey, isAdminRole, isAlreadySent, isReconcilable, isSlotAvailable, isValidEmail, joinConfig, joinConfigTiers, leaderCrmConfig, loadLatestAdmissionRevision, loadOfferableTiers, loadTiers, materializeAdmissionGrants, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberContentDigest, memberContentDocument, memberSession, membershipPageDocument, membershipTierPresentationFromMarkdown, networkSourceTag, normalizeAdmissionEmail, normalizeChapterEmail, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, paymentsReady, personInputFromApp, planDelivery, projectApplicant, projectBuilderLibraryDelivery, projectMemberContent, projectSharedRecord, promoteBuilderLibraryResource, publicGiftOffers, reconcileMeetings, refundedPatch, render, renderSignupControlThemeHead, renderSummary, renderTemplateBody, renewalPatch, resolveApplication, resolveAuth, resolveBuilderLibrary, resolveChapterCopy, resolveJoinContinuation, resolveLeaderFormation, resolveMemberContent, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateAdmissionGrantDocument, validateBuilderLibraryDocument, validateGiftOfferCatalog, validateMemberContentDocument, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, webhookMutationId };
2929
+ export { ADMISSION_GRANTS_PATH, ADMISSION_GRANTS_SCHEMA_VERSION, type AccountModel, type AdminNotificationTrigger, type AdmissionDecision, type AdmissionGrantDocument, type AdmissionGrantEnvelope, type AdmissionGrantInput, type AdmissionGrantReceipt, type AdmissionGrantRejection, type AdmissionGrantRevisionRow, type AdmissionGrantRow, type AdmissionGrantValidation, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, BUILDER_LIBRARY_ADMIN_PATH, BUILDER_LIBRARY_CONTROL_PATH, BUILDER_LIBRARY_MANIFEST_PATH, BUILDER_LIBRARY_PROMOTE_PATH, BUILDER_LIBRARY_SCHEMA_VERSION, type BuilderLibraryBrandAssetRef, type BuilderLibraryDocument, type BuilderLibraryEnvelope, type BuilderLibraryManifest, type BuilderLibraryPromotionProvenance, type BuilderLibraryReceipt, type BuilderLibraryResource, type BuilderLibraryResourceKind, type BuilderLibraryResourceProvenance, type BuilderLibraryResourceStatus, type BuilderLibraryScope, type BuilderLibrarySource, type BuilderLibrarySourceType, type BuilderLibraryTarget, type BuilderLibraryValidationOptions, type BuilderLibraryValidationResult, type BuilderLibraryViewer, type BuyerGiftClaim, CHAPTER_FLOW_FIELDS_SCHEMA_VERSION, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterBuilderLibrary, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmailIdentity, type ChapterEmails, type ChapterFieldFlow, type ChapterFlowField, type ChapterFlowFieldContract, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, type ChapterMemberContent, type ChapterMode, type ChapterNetwork, type ChapterNetworkReader, type ChapterNetworkTarget, type ChapterOperations, type ChapterPipeline, type ChapterPolicy, type ChapterPrices, type ChapterPromotionInput, type ChapterRunbookHints, type ChapterScheduling, type ChapterSends, type ChapterSignupControl, type ChapterTier, type ChapterTierConfig, type ClerkInviteInput, type ClerkMetadataInput, type ClerkResult, type ClerkUserInput, type ClerkUserRecord, type CompiledChapterBrandTokens, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, type EffectiveMemberContent, type EffectiveMemberContentPage, type EmailGroup, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, GIFT_OFFER_CATALOG_VERSION, type GiftOffer, type GiftOfferCatalog, type GiftOfferTarget, type GiftOfferValidation, type GuardResult, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type JoinConfigGroup, type JoinConfigTier, type JoinContinuation, type LeaderCrmOptions, type LeaderFormationConfig, type LiveEvent, MAX_GIFT_OFFERS, MEMBERSHIP_PAGE_RENDERER, MEMBER_CONTENT_CONTROL_PATH, MEMBER_CONTENT_PATH, MEMBER_CONTENT_SCHEMA_VERSION, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberContentDocument, type MemberContentEnvelope, type MemberContentPage, type MemberContentPageProjection, type MemberContentProjection, type MemberContentReceipt, type MemberContentRejection, type MemberContentSource, type MemberContentSourceType, type MemberContentTarget, type MemberContentTierAuthority, type MemberContentValidationOptions, type MemberContentValidationResult, type MemberContentViewer, type MemberPageAudience, type MemberPageNavigation, type MemberPageUpsell, type MemberPageUpsellOffer, type MemberPageUpsellOverride, type MemberSession, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NetworkEditableField, type NetworkRecord, type NetworkRecordEdit, type NetworkRecordMutation, type NetworkRecordMutationResult, type NetworkRecordNote, type NetworkRecordPage, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NetworkStageTransition, type NetworkTargetTransportStatus, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type ProjectionDeps, type PublicGiftOffer, type ReconcileDecision, type ResolvedApplication, type ResolvedAuth, type ResolvedBuilderLibrary, type ResolvedLeaderFormation, type ResolvedMemberContent, type ResolvedMemberPageUpsell, type ResolvedNetwork, type ResolvedNetworkReader, type ResolvedNetworkTarget, type ResolvedOperations, type ResolvedPipeline, type ResolvedScheduling, type ResolvedSends, type ResolvedSignupControl, type RoleChangeContext, type Rule, SCHEDULING_DEFAULTS, SIGNUP_CONTROL_PATH, SIGNUP_CONTROL_SCHEMA_VERSION, SIGNUP_CONTROL_THEME_MARKER, SIGNUP_CONTROL_THEME_STYLE_ID, type SchedulingErrors, type SecretMode, type SecretStore, type SessionUser, type SharedBusiness, type SharedPerson, type SharedRecord, type SharedRecordV1, type SharedRecordV2, type SignupControlApplication, type SignupControlDocument, type SignupControlEnvelope, type SignupControlPolicy, type SignupControlReceipt, type SignupControlRejection, type SignupControlTheme, type SignupControlThemeHead, type SignupControlThemeMetadata, type SignupControlThemeOptions, type SignupControlThemeRevision, type SignupControlThemeStyleTarget, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, applicantProfile, applicationBookingUpdate, applicationFlowFields, applicationSummary, applyMembershipTierMarkdown, backfillCrm, bookingDecision, brandTokens, bucketSeries, buildBuilderLibraryManifest, buildGroupSeed, buildTierSeeds, builderLibraryDigest, canApprove, canBook, canChangeRole, canTransition, canViewBuilderLibraryResource, canceledPatch, canonicalBuilderLibrary, canonicalMemberContent, canonicalSignupControl, chapterBrandFromTokens, chapterDb, chapterFlowFieldContract, clampArray, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkSetRole, clerkUserRequest, composeMemberContent, createAdmissionGrantEnvelope, createBuilderLibraryEnvelope, createChapterIntegration, createClerkInvitation, createClerkUser, createMemberContentEnvelope, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, emailGroupFrom, endForSlot, exportChapterPromotion, findAdmissionGrant, findApplicationRef, findGiftOffer, findTier, firstPaymentPatch, formatChapterCopy, formationFields, formationFlowFields, getVaultSecret, giftOfferActive, hasDisclaimerAck, hydrateSignupControlTheme, injectSignupControlThemeHead, introIdempotencyKey, isAdminRole, isAlreadySent, isReconcilable, isSlotAvailable, isValidEmail, joinConfig, joinConfigTiers, leaderCrmConfig, loadLatestAdmissionRevision, loadOfferableTiers, loadTiers, materializeAdmissionGrants, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberContentDigest, memberContentDocument, memberSession, membershipPageDocument, membershipTierPresentationFromMarkdown, networkSourceTag, normalizeAdmissionEmail, normalizeChapterEmail, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, paymentsReady, personInputFromApp, planDelivery, projectApplicant, projectBuilderLibraryDelivery, projectMemberContent, projectSharedRecord, promoteBuilderLibraryResource, publicGiftOffers, reconcileMeetings, refundedPatch, render, renderSignupControlThemeHead, renderSummary, renderTemplateBody, renewalPatch, resolveApplication, resolveAuth, resolveBuilderLibrary, resolveChapterCopy, resolveJoinContinuation, resolveLeaderFormation, resolveMemberContent, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateAdmissionGrantDocument, validateBuilderLibraryDocument, validateGiftOfferCatalog, validateMemberContentDocument, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, webhookMutationId };
package/dist/index.d.ts CHANGED
@@ -106,7 +106,7 @@ type TextFields$1<Key extends string> = {
106
106
  [Field in Key]: string;
107
107
  };
108
108
  /** User-visible language for sharing, delivery state, and leader rollups. */
109
- type AdminNetworkCopy = TextFields$1<"title" | "allowlistDescription" | "sharing" | "shareWith" | "shared" | "shareFailed" | "deliveryFailed" | "loadingRollup" | "loadRollupFailed" | "overview" | "configuredFollowers" | "reachableFollowers" | "recordsAcrossFollowers" | "noFollowers" | "followers" | "available" | "unavailable" | "recordTotals" | "noRecordTotals">;
109
+ type AdminNetworkCopy = TextFields$1<"title" | "allowlistDescription" | "sharing" | "shareWith" | "shared" | "shareFailed" | "deliveryFailed" | "loadingRollup" | "loadRollupFailed" | "overview" | "configuredFollowers" | "reachableFollowers" | "recordsAcrossFollowers" | "noFollowers" | "followers" | "available" | "unavailable" | "transportReachable" | "transportUnavailable" | "transportNotChecked" | "bindingTransport" | "urlTransport" | "activeConfiguration" | "noActiveConfiguration" | "publicSiteAvailable" | "publicSiteUnavailable" | "publicSiteNotChecked" | "recordTotals" | "noRecordTotals">;
110
110
 
111
111
  /** Complete default language resolved beneath partial Chapter copy overrides. */
112
112
  declare const DEFAULT_CHAPTER_COPY: ChapterCopy;
@@ -282,6 +282,9 @@ interface ChapterNetworkTarget {
282
282
  /** Record types on which this leader permits remote lifecycle transitions.
283
283
  * The follower must independently opt in and remains pipeline authority. */
284
284
  stageTransitions?: readonly string[];
285
+ /** Allow package-owned desired admission decisions for existing leader CRM
286
+ * people to be delivered to this target. Omitted means default deny. */
287
+ admissionGrants?: boolean;
285
288
  }
286
289
  /** One signed peer allowed to browse a privacy-bounded projection of this
287
290
  * site's CRM. The follower owns this allowlist; a leader target declaration
@@ -291,7 +294,7 @@ interface ChapterNetworkReader {
291
294
  id: string;
292
295
  /** Per-record-type field allowlist. Omitted types and fields never leave
293
296
  * this site. Record id, name, stage, and timestamps are bounded metadata. */
294
- fields: Record<string, readonly string[]>;
297
+ fields?: Record<string, readonly string[]>;
295
298
  /** Record types on which this reader may append an explicitly shared note.
296
299
  * Omitted by default: browse permission never silently grants write access.
297
300
  * Shared notes land in the follower CRM activity feed. */
@@ -303,6 +306,9 @@ interface ChapterNetworkReader {
303
306
  /** Local CRM record types on which this reader may request a lifecycle
304
307
  * transition. Chapter still enforces the local pipeline and gates. */
305
308
  stageTransitions?: readonly string[];
309
+ /** Accept signed desired admission decisions from this reader. Independent
310
+ * of record browsing; an admission-only reader may omit `fields`. */
311
+ admissionGrants?: boolean;
306
312
  }
307
313
  /** Leader/follower network configuration. A follower needs no code config to
308
314
  * receive pushed records. It must explicitly declare `readers` before any peer
@@ -347,6 +353,7 @@ interface ResolvedNetworkTarget {
347
353
  sharedNotes: readonly string[];
348
354
  editableFields: Record<string, readonly string[]>;
349
355
  stageTransitions: readonly string[];
356
+ admissionGrants?: boolean;
350
357
  }
351
358
  /** A validated follower-owned record projection for one signed reader. */
352
359
  interface ResolvedNetworkReader {
@@ -355,6 +362,7 @@ interface ResolvedNetworkReader {
355
362
  sharedNotes: readonly string[];
356
363
  editableFields: Record<string, readonly string[]>;
357
364
  stageTransitions: readonly string[];
365
+ admissionGrants?: boolean;
358
366
  }
359
367
  /** Fully-resolved leader network configuration. */
360
368
  interface ResolvedNetwork {
@@ -956,7 +964,7 @@ declare function createChapterIntegration(chapter: Chapter, options?: ChapterInt
956
964
  * read-only super-admin tier (default on for the `"claim"` ladder). A `"claim"`
957
965
  * chapter therefore emits the reference namespace set — `applications`,
958
966
  * `groups`, `meetings`, `emailLog`, `superAdmins` — with no `admins` table. */
959
- declare function chapterDb(mode: ChapterMode, auth: ResolvedAuth, includeNetworkNotes?: boolean, application?: ResolvedApplication, includeSignupControl?: boolean, includeMemberContent?: boolean, includeBuilderLibrary?: boolean): {
967
+ declare function chapterDb(mode: ChapterMode, auth: ResolvedAuth, includeNetworkNotes?: boolean, application?: ResolvedApplication, includeSignupControl?: boolean, includeMemberContent?: boolean, includeBuilderLibrary?: boolean, includeLeaderAdmissions?: boolean): {
960
968
  schema: DbSchema;
961
969
  rules: DbRules;
962
970
  };
@@ -1916,14 +1924,43 @@ interface NetworkSnapshot {
1916
1924
  mode: string;
1917
1925
  };
1918
1926
  generatedAt: number;
1927
+ /** Active follower-owned receipt for the managed signup configuration.
1928
+ * Optional on the wire so a newer leader can still inspect an older follower. */
1929
+ configuration?: {
1930
+ activeRevision: number | null;
1931
+ digest?: string;
1932
+ };
1919
1933
  types: TypeSummary[];
1920
1934
  }
1935
+ /** Server-side route used for the signed follower snapshot. `reachable: null`
1936
+ * means the request could not be attempted (for example, a missing edge secret). */
1937
+ interface NetworkTargetTransportStatus {
1938
+ kind: "binding" | "url";
1939
+ binding?: string;
1940
+ reachable: boolean | null;
1941
+ error?: {
1942
+ code: "binding_unavailable" | "binding_request_failed" | "url_request_failed" | "edge_secret_missing";
1943
+ message: string;
1944
+ };
1945
+ }
1921
1946
  /** One configured target's latest live result in a leader rollup. */
1922
1947
  interface NetworkRollupTarget {
1923
1948
  id: string;
1924
1949
  name: string;
1925
1950
  url: string;
1926
1951
  available: boolean;
1952
+ /** Signed snapshot transport; independent of public-origin availability. */
1953
+ transport: NetworkTargetTransportStatus;
1954
+ /** Last active managed configuration reported by the authenticated follower. */
1955
+ configuration: {
1956
+ activeRevision: number | null;
1957
+ digest?: string;
1958
+ };
1959
+ /** `null` when a service binding was authoritative and the public origin was
1960
+ * deliberately not probed. */
1961
+ publicSite: {
1962
+ available: boolean | null;
1963
+ };
1927
1964
  generatedAt?: number;
1928
1965
  types?: TypeSummary[];
1929
1966
  error?: string;
@@ -2889,4 +2926,4 @@ interface ChapterPromotionInput {
2889
2926
  /** Export the provider-independent pieces of one exact active signup revision. */
2890
2927
  declare function exportChapterPromotion(input: ChapterPromotionInput): Promise<PromotionAdapterResult>;
2891
2928
 
2892
- export { ADMISSION_GRANTS_PATH, ADMISSION_GRANTS_SCHEMA_VERSION, type AccountModel, type AdminNotificationTrigger, type AdmissionDecision, type AdmissionGrantDocument, type AdmissionGrantEnvelope, type AdmissionGrantInput, type AdmissionGrantReceipt, type AdmissionGrantRejection, type AdmissionGrantRevisionRow, type AdmissionGrantRow, type AdmissionGrantValidation, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, BUILDER_LIBRARY_ADMIN_PATH, BUILDER_LIBRARY_CONTROL_PATH, BUILDER_LIBRARY_MANIFEST_PATH, BUILDER_LIBRARY_PROMOTE_PATH, BUILDER_LIBRARY_SCHEMA_VERSION, type BuilderLibraryBrandAssetRef, type BuilderLibraryDocument, type BuilderLibraryEnvelope, type BuilderLibraryManifest, type BuilderLibraryPromotionProvenance, type BuilderLibraryReceipt, type BuilderLibraryResource, type BuilderLibraryResourceKind, type BuilderLibraryResourceProvenance, type BuilderLibraryResourceStatus, type BuilderLibraryScope, type BuilderLibrarySource, type BuilderLibrarySourceType, type BuilderLibraryTarget, type BuilderLibraryValidationOptions, type BuilderLibraryValidationResult, type BuilderLibraryViewer, type BuyerGiftClaim, CHAPTER_FLOW_FIELDS_SCHEMA_VERSION, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterBuilderLibrary, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmailIdentity, type ChapterEmails, type ChapterFieldFlow, type ChapterFlowField, type ChapterFlowFieldContract, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, type ChapterMemberContent, type ChapterMode, type ChapterNetwork, type ChapterNetworkReader, type ChapterNetworkTarget, type ChapterOperations, type ChapterPipeline, type ChapterPolicy, type ChapterPrices, type ChapterPromotionInput, type ChapterRunbookHints, type ChapterScheduling, type ChapterSends, type ChapterSignupControl, type ChapterTier, type ChapterTierConfig, type ClerkInviteInput, type ClerkMetadataInput, type ClerkResult, type ClerkUserInput, type ClerkUserRecord, type CompiledChapterBrandTokens, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, type EffectiveMemberContent, type EffectiveMemberContentPage, type EmailGroup, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, GIFT_OFFER_CATALOG_VERSION, type GiftOffer, type GiftOfferCatalog, type GiftOfferTarget, type GiftOfferValidation, type GuardResult, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type JoinConfigGroup, type JoinConfigTier, type JoinContinuation, type LeaderCrmOptions, type LeaderFormationConfig, type LiveEvent, MAX_GIFT_OFFERS, MEMBERSHIP_PAGE_RENDERER, MEMBER_CONTENT_CONTROL_PATH, MEMBER_CONTENT_PATH, MEMBER_CONTENT_SCHEMA_VERSION, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberContentDocument, type MemberContentEnvelope, type MemberContentPage, type MemberContentPageProjection, type MemberContentProjection, type MemberContentReceipt, type MemberContentRejection, type MemberContentSource, type MemberContentSourceType, type MemberContentTarget, type MemberContentTierAuthority, type MemberContentValidationOptions, type MemberContentValidationResult, type MemberContentViewer, type MemberPageAudience, type MemberPageNavigation, type MemberPageUpsell, type MemberPageUpsellOffer, type MemberPageUpsellOverride, type MemberSession, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NetworkEditableField, type NetworkRecord, type NetworkRecordEdit, type NetworkRecordMutation, type NetworkRecordMutationResult, type NetworkRecordNote, type NetworkRecordPage, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NetworkStageTransition, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type ProjectionDeps, type PublicGiftOffer, type ReconcileDecision, type ResolvedApplication, type ResolvedAuth, type ResolvedBuilderLibrary, type ResolvedLeaderFormation, type ResolvedMemberContent, type ResolvedMemberPageUpsell, type ResolvedNetwork, type ResolvedNetworkReader, type ResolvedNetworkTarget, type ResolvedOperations, type ResolvedPipeline, type ResolvedScheduling, type ResolvedSends, type ResolvedSignupControl, type RoleChangeContext, type Rule, SCHEDULING_DEFAULTS, SIGNUP_CONTROL_PATH, SIGNUP_CONTROL_SCHEMA_VERSION, SIGNUP_CONTROL_THEME_MARKER, SIGNUP_CONTROL_THEME_STYLE_ID, type SchedulingErrors, type SecretMode, type SecretStore, type SessionUser, type SharedBusiness, type SharedPerson, type SharedRecord, type SharedRecordV1, type SharedRecordV2, type SignupControlApplication, type SignupControlDocument, type SignupControlEnvelope, type SignupControlPolicy, type SignupControlReceipt, type SignupControlRejection, type SignupControlTheme, type SignupControlThemeHead, type SignupControlThemeMetadata, type SignupControlThemeOptions, type SignupControlThemeRevision, type SignupControlThemeStyleTarget, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, applicantProfile, applicationBookingUpdate, applicationFlowFields, applicationSummary, applyMembershipTierMarkdown, backfillCrm, bookingDecision, brandTokens, bucketSeries, buildBuilderLibraryManifest, buildGroupSeed, buildTierSeeds, builderLibraryDigest, canApprove, canBook, canChangeRole, canTransition, canViewBuilderLibraryResource, canceledPatch, canonicalBuilderLibrary, canonicalMemberContent, canonicalSignupControl, chapterBrandFromTokens, chapterDb, chapterFlowFieldContract, clampArray, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkSetRole, clerkUserRequest, composeMemberContent, createAdmissionGrantEnvelope, createBuilderLibraryEnvelope, createChapterIntegration, createClerkInvitation, createClerkUser, createMemberContentEnvelope, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, emailGroupFrom, endForSlot, exportChapterPromotion, findAdmissionGrant, findApplicationRef, findGiftOffer, findTier, firstPaymentPatch, formatChapterCopy, formationFields, formationFlowFields, getVaultSecret, giftOfferActive, hasDisclaimerAck, hydrateSignupControlTheme, injectSignupControlThemeHead, introIdempotencyKey, isAdminRole, isAlreadySent, isReconcilable, isSlotAvailable, isValidEmail, joinConfig, joinConfigTiers, leaderCrmConfig, loadLatestAdmissionRevision, loadOfferableTiers, loadTiers, materializeAdmissionGrants, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberContentDigest, memberContentDocument, memberSession, membershipPageDocument, membershipTierPresentationFromMarkdown, networkSourceTag, normalizeAdmissionEmail, normalizeChapterEmail, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, paymentsReady, personInputFromApp, planDelivery, projectApplicant, projectBuilderLibraryDelivery, projectMemberContent, projectSharedRecord, promoteBuilderLibraryResource, publicGiftOffers, reconcileMeetings, refundedPatch, render, renderSignupControlThemeHead, renderSummary, renderTemplateBody, renewalPatch, resolveApplication, resolveAuth, resolveBuilderLibrary, resolveChapterCopy, resolveJoinContinuation, resolveLeaderFormation, resolveMemberContent, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateAdmissionGrantDocument, validateBuilderLibraryDocument, validateGiftOfferCatalog, validateMemberContentDocument, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, webhookMutationId };
2929
+ export { ADMISSION_GRANTS_PATH, ADMISSION_GRANTS_SCHEMA_VERSION, type AccountModel, type AdminNotificationTrigger, type AdmissionDecision, type AdmissionGrantDocument, type AdmissionGrantEnvelope, type AdmissionGrantInput, type AdmissionGrantReceipt, type AdmissionGrantRejection, type AdmissionGrantRevisionRow, type AdmissionGrantRow, type AdmissionGrantValidation, type Applicant, type ApplicationBookingPatch, type ApplicationRecord, type ApplicationSummary, type Attr, type AttrType, BUILDER_LIBRARY_ADMIN_PATH, BUILDER_LIBRARY_CONTROL_PATH, BUILDER_LIBRARY_MANIFEST_PATH, BUILDER_LIBRARY_PROMOTE_PATH, BUILDER_LIBRARY_SCHEMA_VERSION, type BuilderLibraryBrandAssetRef, type BuilderLibraryDocument, type BuilderLibraryEnvelope, type BuilderLibraryManifest, type BuilderLibraryPromotionProvenance, type BuilderLibraryReceipt, type BuilderLibraryResource, type BuilderLibraryResourceKind, type BuilderLibraryResourceProvenance, type BuilderLibraryResourceStatus, type BuilderLibraryScope, type BuilderLibrarySource, type BuilderLibrarySourceType, type BuilderLibraryTarget, type BuilderLibraryValidationOptions, type BuilderLibraryValidationResult, type BuilderLibraryViewer, type BuyerGiftClaim, CHAPTER_FLOW_FIELDS_SCHEMA_VERSION, CHAPTER_PROMOTION_ADAPTER, type Chapter, type ChapterApplication, type ChapterAuth, type ChapterBrand, type ChapterBuilderLibrary, type ChapterConfig, type ChapterCopy, type ChapterCopyInput, type ChapterDb, type ChapterEmailIdentity, type ChapterEmails, type ChapterFieldFlow, type ChapterFlowField, type ChapterFlowFieldContract, type ChapterIntegrationDescriptor, type ChapterIntegrationOptions, type ChapterMemberContent, type ChapterMode, type ChapterNetwork, type ChapterNetworkReader, type ChapterNetworkTarget, type ChapterOperations, type ChapterPipeline, type ChapterPolicy, type ChapterPrices, type ChapterPromotionInput, type ChapterRunbookHints, type ChapterScheduling, type ChapterSends, type ChapterSignupControl, type ChapterTier, type ChapterTierConfig, type ClerkInviteInput, type ClerkMetadataInput, type ClerkResult, type ClerkUserInput, type ClerkUserRecord, type CompiledChapterBrandTokens, DEFAULT_CHAPTER_COPY, DEFAULT_SHARE_FIELDS, type DashboardMetricData, type DashboardMetricSeries, type DbOp, type DbRules, type DbSchema, type DeliveryDecision, type EffectiveMemberContent, type EffectiveMemberContentPage, type EmailGroup, type EmailTemplate, type EmailTemplateRow, type Entity, type ExistingMeeting, GIFT_OFFER_CATALOG_VERSION, type GiftOffer, type GiftOfferCatalog, type GiftOfferTarget, type GiftOfferValidation, type GuardResult, type IntegrationDescriptor, type IntegrationProvision, type IntegrationSecret, type IntegrationSetting, type IntegrationSync, type JoinConfigGroup, type JoinConfigTier, type JoinContinuation, type LeaderCrmOptions, type LeaderFormationConfig, type LiveEvent, MAX_GIFT_OFFERS, MEMBERSHIP_PAGE_RENDERER, MEMBER_CONTENT_CONTROL_PATH, MEMBER_CONTENT_PATH, MEMBER_CONTENT_SCHEMA_VERSION, type MailSender, type MeetingForReconcile, type MeetingRecord, type MeetingReschedulePatch, type MemberApplication, type MemberContentDocument, type MemberContentEnvelope, type MemberContentPage, type MemberContentPageProjection, type MemberContentProjection, type MemberContentReceipt, type MemberContentRejection, type MemberContentSource, type MemberContentSourceType, type MemberContentTarget, type MemberContentTierAuthority, type MemberContentValidationOptions, type MemberContentValidationResult, type MemberContentViewer, type MemberPageAudience, type MemberPageNavigation, type MemberPageUpsell, type MemberPageUpsellOffer, type MemberPageUpsellOverride, type MemberSession, type MembershipPageDocument, type MembershipPageValidationOptions, type MembershipPageValidationResult, type MembershipTierAuthority, type MembershipTierCallout, type MembershipTierCapacity, type MembershipTierMarkdownResult, type MembershipTierPresentation, type MembershipTierVariant, type NetworkEditableField, type NetworkRecord, type NetworkRecordEdit, type NetworkRecordMutation, type NetworkRecordMutationResult, type NetworkRecordNote, type NetworkRecordPage, type NetworkRollup, type NetworkRollupTarget, type NetworkSharedNote, type NetworkSnapshot, type NetworkStageTransition, type NetworkTargetTransportStatus, type NewMeetingRow, type NotifyDeps, type NotifyInput, type NotifyResult, type PaymentsGroup, type ProjectionDeps, type PublicGiftOffer, type ReconcileDecision, type ResolvedApplication, type ResolvedAuth, type ResolvedBuilderLibrary, type ResolvedLeaderFormation, type ResolvedMemberContent, type ResolvedMemberPageUpsell, type ResolvedNetwork, type ResolvedNetworkReader, type ResolvedNetworkTarget, type ResolvedOperations, type ResolvedPipeline, type ResolvedScheduling, type ResolvedSends, type ResolvedSignupControl, type RoleChangeContext, type Rule, SCHEDULING_DEFAULTS, SIGNUP_CONTROL_PATH, SIGNUP_CONTROL_SCHEMA_VERSION, SIGNUP_CONTROL_THEME_MARKER, SIGNUP_CONTROL_THEME_STYLE_ID, type SchedulingErrors, type SecretMode, type SecretStore, type SessionUser, type SharedBusiness, type SharedPerson, type SharedRecord, type SharedRecordV1, type SharedRecordV2, type SignupControlApplication, type SignupControlDocument, type SignupControlEnvelope, type SignupControlPolicy, type SignupControlReceipt, type SignupControlRejection, type SignupControlTheme, type SignupControlThemeHead, type SignupControlThemeMetadata, type SignupControlThemeOptions, type SignupControlThemeRevision, type SignupControlThemeStyleTarget, type SignupControlTier, type SignupControlValidation, type StripeEvent, type StripeResult, type SubmitResult, type TierGroup, type TierGroupRow, type WebhookEvent, applicantProfile, applicationBookingUpdate, applicationFlowFields, applicationSummary, applyMembershipTierMarkdown, backfillCrm, bookingDecision, brandTokens, bucketSeries, buildBuilderLibraryManifest, buildGroupSeed, buildTierSeeds, builderLibraryDigest, canApprove, canBook, canChangeRole, canTransition, canViewBuilderLibraryResource, canceledPatch, canonicalBuilderLibrary, canonicalMemberContent, canonicalSignupControl, chapterBrandFromTokens, chapterDb, chapterFlowFieldContract, clampArray, clerkGetUser, clerkGetUserByEmail, clerkIntegration, clerkInviteRequest, clerkListUsers, clerkSetRole, clerkUserRequest, composeMemberContent, createAdmissionGrantEnvelope, createBuilderLibraryEnvelope, createChapterIntegration, createClerkInvitation, createClerkUser, createMemberContentEnvelope, createSignupControlEnvelope, dashboardMetricData, defaultCrm, defineChapter, emailGroupFrom, endForSlot, exportChapterPromotion, findAdmissionGrant, findApplicationRef, findGiftOffer, findTier, firstPaymentPatch, formatChapterCopy, formationFields, formationFlowFields, getVaultSecret, giftOfferActive, hasDisclaimerAck, hydrateSignupControlTheme, injectSignupControlThemeHead, introIdempotencyKey, isAdminRole, isAlreadySent, isReconcilable, isSlotAvailable, isValidEmail, joinConfig, joinConfigTiers, leaderCrmConfig, loadLatestAdmissionRevision, loadOfferableTiers, loadTiers, materializeAdmissionGrants, meetingCreateRow, meetingRescheduleUpdate, memberApplication, memberContentDigest, memberContentDocument, memberSession, membershipPageDocument, membershipTierPresentationFromMarkdown, networkSourceTag, normalizeAdmissionEmail, normalizeChapterEmail, normalizeSharedRecord, normalizeWebhookEvent, offerableTiers, paymentsReady, personInputFromApp, planDelivery, projectApplicant, projectBuilderLibraryDelivery, projectMemberContent, projectSharedRecord, promoteBuilderLibraryResource, publicGiftOffers, reconcileMeetings, refundedPatch, render, renderSignupControlThemeHead, renderSummary, renderTemplateBody, renewalPatch, resolveApplication, resolveAuth, resolveBuilderLibrary, resolveChapterCopy, resolveJoinContinuation, resolveLeaderFormation, resolveMemberContent, resolvePipeline, resolveScheduling, resolveSignupControl, resolveTiers, roleFromClaim, sendTemplated, sharedPersonInput, sharedRecordFromCrm, signupControlDigest, slotWindow, stageIndex, stripeCall, subAnnualCents, submitApplication, subscriptionIdempotencyKey, syncApplicationToCrm, tierIsFree, tierPayable, updateClerkUserMetadata, updateClerkUserMetadataByEmail, validateAdmissionGrantDocument, validateBuilderLibraryDocument, validateGiftOfferCatalog, validateMemberContentDocument, validateMembershipPageDocument, validateScheduling, validateSignupControlDocument, webhookMutationId };
package/dist/index.js CHANGED
@@ -299,6 +299,50 @@ var admissionGrantRevisionsEntity = {
299
299
  receivedAt: attr2("number", { indexed: true })
300
300
  }
301
301
  };
302
+ var leaderAdmissionAssignmentsEntity = {
303
+ attrs: {
304
+ id: id(),
305
+ targetId: attr2("string", { indexed: true }),
306
+ personId: attr2("string", { indexed: true }),
307
+ grantId: attr2("string", { indexed: true }),
308
+ decision: attr2("string", { indexed: true }),
309
+ note: attr2("string", { optional: true }),
310
+ expiresAt: attr2("number", { optional: true, indexed: true }),
311
+ active: attr2("boolean", { indexed: true }),
312
+ lastMutationId: attr2("string", { indexed: true }),
313
+ lastRequestDigest: attr2("string"),
314
+ createdAt: attr2("number", { indexed: true }),
315
+ createdBy: attr2("string", { indexed: true }),
316
+ updatedAt: attr2("number", { indexed: true }),
317
+ updatedBy: attr2("string", { indexed: true })
318
+ }
319
+ };
320
+ var leaderAdmissionDeliveriesEntity = {
321
+ attrs: {
322
+ id: id(),
323
+ targetId: attr2("string", { indexed: true }),
324
+ environment: attr2("string", { indexed: true }),
325
+ revision: attr2("number", { indexed: true }),
326
+ digest: attr2("string", { indexed: true }),
327
+ envelope: attr2("json"),
328
+ status: attr2("string", { indexed: true }),
329
+ attempts: attr2("number", { indexed: true }),
330
+ lastAttemptAt: attr2("number", { optional: true, indexed: true }),
331
+ lastError: attr2("string", { optional: true }),
332
+ acknowledgedAt: attr2("number", { optional: true, indexed: true }),
333
+ updatedAt: attr2("number", { indexed: true })
334
+ }
335
+ };
336
+ var leaderAdmissionMutationsEntity = {
337
+ attrs: {
338
+ id: id(),
339
+ targetId: attr2("string", { indexed: true }),
340
+ personId: attr2("string", { indexed: true }),
341
+ requestDigest: attr2("string", { indexed: true }),
342
+ revision: attr2("number", { indexed: true }),
343
+ createdAt: attr2("number", { indexed: true })
344
+ }
345
+ };
302
346
 
303
347
  // src/schema-gifts.ts
304
348
  var attr3 = (type, flags = {}) => ({
@@ -570,7 +614,7 @@ var emailLog = {
570
614
  sentAt: attr4("number", { indexed: true })
571
615
  }
572
616
  };
573
- function chapterDb(mode, auth, includeNetworkNotes = false, application = resolveApplication(void 0), includeSignupControl = false, includeMemberContent = false, includeBuilderLibrary = false) {
617
+ function chapterDb(mode, auth, includeNetworkNotes = false, application = resolveApplication(void 0), includeSignupControl = false, includeMemberContent = false, includeBuilderLibrary = false, includeLeaderAdmissions = false) {
574
618
  const entities = {};
575
619
  if (mode === "chapter") {
576
620
  entities.applications = applicationsFor(application);
@@ -598,6 +642,11 @@ function chapterDb(mode, auth, includeNetworkNotes = false, application = resolv
598
642
  entities.builderLibraryControls = builderLibraryControls;
599
643
  entities.builderLibraryLocal = builderLibraryLocal;
600
644
  }
645
+ if (includeLeaderAdmissions) {
646
+ entities.leaderAdmissionAssignments = leaderAdmissionAssignmentsEntity;
647
+ entities.leaderAdmissionDeliveries = leaderAdmissionDeliveriesEntity;
648
+ entities.leaderAdmissionMutations = leaderAdmissionMutationsEntity;
649
+ }
601
650
  const schema = { entities, links: {} };
602
651
  const rules = {};
603
652
  for (const ns of Object.keys(entities)) {
@@ -1027,6 +1076,16 @@ var DEFAULT_ADMIN_COPY = {
1027
1076
  followers: "Followers",
1028
1077
  available: "available",
1029
1078
  unavailable: "unavailable",
1079
+ transportReachable: "transport reachable",
1080
+ transportUnavailable: "transport unavailable",
1081
+ transportNotChecked: "transport not checked",
1082
+ bindingTransport: "service binding {binding}",
1083
+ urlTransport: "public URL transport",
1084
+ activeConfiguration: "active configuration r{revision}",
1085
+ noActiveConfiguration: "no active managed configuration",
1086
+ publicSiteAvailable: "public site reachable",
1087
+ publicSiteUnavailable: "public site unavailable",
1088
+ publicSiteNotChecked: "public site not probed",
1030
1089
  recordTotals: "Portfolio records",
1031
1090
  noRecordTotals: "No aggregate records are available yet."
1032
1091
  },
@@ -1404,6 +1463,13 @@ function validateStageTransitions(opts) {
1404
1463
  throw new Error(`${opts.path}: must contain unique, readable CRM types with pipelines`);
1405
1464
  }
1406
1465
  }
1466
+ function validateAdmissionCapability(path, enabled, crm) {
1467
+ if (!enabled) return;
1468
+ const person = crm.config.types.person;
1469
+ if (!person?.emailField || person.fields[person.emailField]?.type !== "email") {
1470
+ throw new Error(`${path}: requires a CRM person type with an emailField`);
1471
+ }
1472
+ }
1407
1473
  function resolveNetwork(config, crm) {
1408
1474
  const seen = /* @__PURE__ */ new Set();
1409
1475
  const targets = [];
@@ -1477,6 +1543,11 @@ function resolveNetwork(config, crm) {
1477
1543
  crm,
1478
1544
  readable: readableFields
1479
1545
  });
1546
+ validateAdmissionCapability(
1547
+ `defineChapter.network.targets.${target.id}.admissionGrants`,
1548
+ target.admissionGrants,
1549
+ crm
1550
+ );
1480
1551
  targets.push({
1481
1552
  id: target.id,
1482
1553
  name: target.name?.trim() || target.id,
@@ -1486,7 +1557,8 @@ function resolveNetwork(config, crm) {
1486
1557
  ...fields ? { fields } : {},
1487
1558
  sharedNotes,
1488
1559
  editableFields,
1489
- stageTransitions
1560
+ stageTransitions,
1561
+ ...target.admissionGrants === true ? { admissionGrants: true } : {}
1490
1562
  });
1491
1563
  }
1492
1564
  const readerIds = /* @__PURE__ */ new Set();
@@ -1499,9 +1571,12 @@ function resolveNetwork(config, crm) {
1499
1571
  throw new Error(`defineChapter.network.readers: duplicate reader "${reader.id}"`);
1500
1572
  }
1501
1573
  readerIds.add(reader.id);
1502
- const entries = Object.entries(reader.fields ?? {});
1503
- if (entries.length === 0) {
1504
- throw new Error(`defineChapter.network.readers.${reader.id}.fields: at least one CRM type is required`);
1574
+ const readerFields = reader.fields ?? {};
1575
+ const entries = Object.entries(readerFields);
1576
+ if (entries.length === 0 && !reader.admissionGrants) {
1577
+ throw new Error(
1578
+ `defineChapter.network.readers.${reader.id}.fields: at least one CRM type is required unless this is an admission-only reader`
1579
+ );
1505
1580
  }
1506
1581
  for (const [type, names] of entries) {
1507
1582
  if (!FIELD.test(type) || names.length === 0 || names.some((name) => !FIELD.test(name))) {
@@ -1531,23 +1606,35 @@ function resolveNetwork(config, crm) {
1531
1606
  path: `defineChapter.network.readers.${reader.id}.sharedNotes`,
1532
1607
  values: sharedNotes,
1533
1608
  crm,
1534
- fields: reader.fields
1609
+ fields: readerFields
1535
1610
  });
1536
1611
  const editableFields = reader.editableFields ?? {};
1537
1612
  validateEditableFields({
1538
1613
  path: `defineChapter.network.readers.${reader.id}.editableFields`,
1539
1614
  values: editableFields,
1540
1615
  crm,
1541
- readable: reader.fields
1616
+ readable: readerFields
1542
1617
  });
1543
1618
  const stageTransitions = reader.stageTransitions ?? [];
1544
1619
  validateStageTransitions({
1545
1620
  path: `defineChapter.network.readers.${reader.id}.stageTransitions`,
1546
1621
  values: stageTransitions,
1547
1622
  crm,
1548
- readable: reader.fields
1623
+ readable: readerFields
1624
+ });
1625
+ validateAdmissionCapability(
1626
+ `defineChapter.network.readers.${reader.id}.admissionGrants`,
1627
+ reader.admissionGrants,
1628
+ crm
1629
+ );
1630
+ readers.push({
1631
+ id: reader.id,
1632
+ fields: readerFields,
1633
+ sharedNotes,
1634
+ editableFields,
1635
+ stageTransitions,
1636
+ ...reader.admissionGrants === true ? { admissionGrants: true } : {}
1549
1637
  });
1550
- readers.push({ id: reader.id, fields: reader.fields, sharedNotes, editableFields, stageTransitions });
1551
1638
  }
1552
1639
  return { targets, readers };
1553
1640
  }
@@ -1678,7 +1765,8 @@ function defineChapter(config) {
1678
1765
  application,
1679
1766
  Boolean(signupControl),
1680
1767
  Boolean(memberContent),
1681
- Boolean(builderLibrary)
1768
+ Boolean(builderLibrary),
1769
+ network.targets.some((target) => target.admissionGrants)
1682
1770
  );
1683
1771
  const services = config.services ?? ["db", "calendar", "o11y"];
1684
1772
  const account = config.account ?? "none";