@odla-ai/chapter 0.54.0 → 0.54.2

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.
@@ -21,6 +21,18 @@ interface ChapterTierConfig {
21
21
  active?: boolean;
22
22
  }
23
23
 
24
+ /** A code-declared mail event. Copy stays in settings; this describes who receives it and the values the event supplies. */
25
+ interface ChapterEmailEvent {
26
+ label: string;
27
+ trigger: string;
28
+ audience: string;
29
+ variables: readonly string[];
30
+ /** Values deliberately allowed to render empty, such as a free tier's amount suffix. */
31
+ optionalVariables?: readonly string[];
32
+ /** Require a resolved tier display name even when the copy does not mention it. */
33
+ requiresTier?: boolean;
34
+ }
35
+
24
36
  type TextFields$1<Key extends string> = {
25
37
  [Field in Key]: string;
26
38
  };
@@ -509,7 +521,7 @@ interface ChapterBrand {
509
521
  logos?: string;
510
522
  }
511
523
 
512
- /** One owner-editable transactional email template. */
524
+ /** One owner-editable transactional email template. Automatic sends require explicit `enabled: true`. */
513
525
  interface EmailTemplate {
514
526
  subject: string;
515
527
  text: string;
@@ -524,8 +536,11 @@ interface ChapterEmails {
524
536
  fromName?: string;
525
537
  debugEmail?: string;
526
538
  /** Operational lifecycle templates: adminNotification / submitConfirmation /
527
- * paymentConfirmation / prepEmail / onboardingInvite, each `{ subject, text, enabled? }`. */
539
+ * paymentConfirmation / prepEmail / onboardingInvite / namedSeatInvitation / seatAccepted,
540
+ * plus declared host events. Missing enabled flags block sending. */
528
541
  templates?: Record<string, EmailTemplate>;
542
+ /** Additional host-owned email events shown and validated in the email editor. Declaring an event never sends it. */
543
+ events?: Record<string, ChapterEmailEvent>;
529
544
  }
530
545
  /** Booking rules for the intro-call scheduler (stored as schedulingJson). */
531
546
  interface ChapterScheduling {
@@ -1524,6 +1539,14 @@ interface SeatRepriceReceipt {
1524
1539
  * each row is fenced by revision. */
1525
1540
  declare function lowerSeatPrice(db: ChapterDb, scope: SeatRepriceScope, now: number, limit?: number): Promise<SeatRepriceReceipt>;
1526
1541
 
1542
+ /** Remove the seat purchase window from memberships already frozen with one, so an existing member may buy a
1543
+ * seat for as long as the membership stays paid. Only widens: the frozen offering keeps every other term, and
1544
+ * a membership already without a window is untouched. Bounded and repeatable; each row is fenced by revision. */
1545
+ declare function liftSeatPurchaseWindow(db: ChapterDb, scope: MembershipEffectScope, now: number, limit?: number): Promise<{
1546
+ lifted: number;
1547
+ more: boolean;
1548
+ }>;
1549
+
1527
1550
  type Row = Record<string, unknown>;
1528
1551
  /** Host routes may reuse this gate after resolving a verified chapter/runtime account. */
1529
1552
  declare function chapterMembershipAccess(db: ChapterDb, env: ChapterEnv, ctx: WorkerContext, app: Row): Promise<boolean>;
@@ -2145,4 +2168,4 @@ declare function chapterWorker(options: ChapterWorkerOptions): {
2145
2168
  fetch(req: Request, env: ChapterEnv): Promise<Response>;
2146
2169
  };
2147
2170
 
2148
- export { type ActiveSignupControlHtml, type ActiveSignupControlThemeOptions, AdmissionGrantDeliveryError, type AdmissionGrantDeliveryOptions, type BuilderLibraryDeliveryOptions, type ChapterEnv, type ChapterErrorRecorder, type ChapterErrorReport, type ChapterWorkerOptions, type IncludedNamedSeatReceipt, type LeaderAdmissionAssignment, type LeaderAdmissionDelivery, type LeaderAdmissionDeliveryStatus, MEMBERSHIP_AUTHORITY_PATH, type MemberContentDeliveryOptions, type MembershipAuthorityHandlerOptions, type MembershipAuthorityPeer, type MembershipChapterEffect, type MembershipEffectScope, type MembershipRetermInput, type MembershipRetermReceipt, type MembershipRetermSkipReason, type MembershipWorkerAdapter, type MembershipWorkerAdapterOptions, type NamedSeatOffer, type NamedSeatOfferSeat, type NamedSeatOperatorRefundInput, type NamedSeatRecipientState, type NamedSeatRefundReason, type NetworkTargetTransport, NetworkTargetTransportError, type Route, type SeatRepriceReceipt, type SeatRepriceScope, type SignupControlDeliveryOptions, type WorkerContext, chapterMembershipAccess, chapterWorker, createMembershipAuthorityHandler, createMembershipAuthorityStorage, createMembershipChapterEffectRoute, createMembershipWorkerAdapter, createWorkerContext, deliverAdmissionGrants, deliverBuilderLibrary, deliverMemberContent, deliverMembershipChapterEffect, deliverSignupControl, drainMembershipEffects, grantIncludedNamedSeat, lowerSeatPrice, namedSeatIncluded, namedSeatRecipientState, readNamedSeatOffer, refundNamedSeatByOperator, renderActiveSignupControlHtml, resolveNetworkTargetTransport, retermMembershipDiscount, retryChapterApprovalEffects, retryLeaderAdmissionDeliveries, withActiveSignupControlTheme };
2171
+ export { type ActiveSignupControlHtml, type ActiveSignupControlThemeOptions, AdmissionGrantDeliveryError, type AdmissionGrantDeliveryOptions, type BuilderLibraryDeliveryOptions, type ChapterEnv, type ChapterErrorRecorder, type ChapterErrorReport, type ChapterWorkerOptions, type IncludedNamedSeatReceipt, type LeaderAdmissionAssignment, type LeaderAdmissionDelivery, type LeaderAdmissionDeliveryStatus, MEMBERSHIP_AUTHORITY_PATH, type MemberContentDeliveryOptions, type MembershipAuthorityHandlerOptions, type MembershipAuthorityPeer, type MembershipChapterEffect, type MembershipEffectScope, type MembershipRetermInput, type MembershipRetermReceipt, type MembershipRetermSkipReason, type MembershipWorkerAdapter, type MembershipWorkerAdapterOptions, type NamedSeatOffer, type NamedSeatOfferSeat, type NamedSeatOperatorRefundInput, type NamedSeatRecipientState, type NamedSeatRefundReason, type NetworkTargetTransport, NetworkTargetTransportError, type Route, type SeatRepriceReceipt, type SeatRepriceScope, type SignupControlDeliveryOptions, type WorkerContext, chapterMembershipAccess, chapterWorker, createMembershipAuthorityHandler, createMembershipAuthorityStorage, createMembershipChapterEffectRoute, createMembershipWorkerAdapter, createWorkerContext, deliverAdmissionGrants, deliverBuilderLibrary, deliverMemberContent, deliverMembershipChapterEffect, deliverSignupControl, drainMembershipEffects, grantIncludedNamedSeat, liftSeatPurchaseWindow, lowerSeatPrice, namedSeatIncluded, namedSeatRecipientState, readNamedSeatOffer, refundNamedSeatByOperator, renderActiveSignupControlHtml, resolveNetworkTargetTransport, retermMembershipDiscount, retryChapterApprovalEffects, retryLeaderAdmissionDeliveries, withActiveSignupControlTheme };
@@ -21,6 +21,18 @@ interface ChapterTierConfig {
21
21
  active?: boolean;
22
22
  }
23
23
 
24
+ /** A code-declared mail event. Copy stays in settings; this describes who receives it and the values the event supplies. */
25
+ interface ChapterEmailEvent {
26
+ label: string;
27
+ trigger: string;
28
+ audience: string;
29
+ variables: readonly string[];
30
+ /** Values deliberately allowed to render empty, such as a free tier's amount suffix. */
31
+ optionalVariables?: readonly string[];
32
+ /** Require a resolved tier display name even when the copy does not mention it. */
33
+ requiresTier?: boolean;
34
+ }
35
+
24
36
  type TextFields$1<Key extends string> = {
25
37
  [Field in Key]: string;
26
38
  };
@@ -509,7 +521,7 @@ interface ChapterBrand {
509
521
  logos?: string;
510
522
  }
511
523
 
512
- /** One owner-editable transactional email template. */
524
+ /** One owner-editable transactional email template. Automatic sends require explicit `enabled: true`. */
513
525
  interface EmailTemplate {
514
526
  subject: string;
515
527
  text: string;
@@ -524,8 +536,11 @@ interface ChapterEmails {
524
536
  fromName?: string;
525
537
  debugEmail?: string;
526
538
  /** Operational lifecycle templates: adminNotification / submitConfirmation /
527
- * paymentConfirmation / prepEmail / onboardingInvite, each `{ subject, text, enabled? }`. */
539
+ * paymentConfirmation / prepEmail / onboardingInvite / namedSeatInvitation / seatAccepted,
540
+ * plus declared host events. Missing enabled flags block sending. */
528
541
  templates?: Record<string, EmailTemplate>;
542
+ /** Additional host-owned email events shown and validated in the email editor. Declaring an event never sends it. */
543
+ events?: Record<string, ChapterEmailEvent>;
529
544
  }
530
545
  /** Booking rules for the intro-call scheduler (stored as schedulingJson). */
531
546
  interface ChapterScheduling {
@@ -1524,6 +1539,14 @@ interface SeatRepriceReceipt {
1524
1539
  * each row is fenced by revision. */
1525
1540
  declare function lowerSeatPrice(db: ChapterDb, scope: SeatRepriceScope, now: number, limit?: number): Promise<SeatRepriceReceipt>;
1526
1541
 
1542
+ /** Remove the seat purchase window from memberships already frozen with one, so an existing member may buy a
1543
+ * seat for as long as the membership stays paid. Only widens: the frozen offering keeps every other term, and
1544
+ * a membership already without a window is untouched. Bounded and repeatable; each row is fenced by revision. */
1545
+ declare function liftSeatPurchaseWindow(db: ChapterDb, scope: MembershipEffectScope, now: number, limit?: number): Promise<{
1546
+ lifted: number;
1547
+ more: boolean;
1548
+ }>;
1549
+
1527
1550
  type Row = Record<string, unknown>;
1528
1551
  /** Host routes may reuse this gate after resolving a verified chapter/runtime account. */
1529
1552
  declare function chapterMembershipAccess(db: ChapterDb, env: ChapterEnv, ctx: WorkerContext, app: Row): Promise<boolean>;
@@ -2145,4 +2168,4 @@ declare function chapterWorker(options: ChapterWorkerOptions): {
2145
2168
  fetch(req: Request, env: ChapterEnv): Promise<Response>;
2146
2169
  };
2147
2170
 
2148
- export { type ActiveSignupControlHtml, type ActiveSignupControlThemeOptions, AdmissionGrantDeliveryError, type AdmissionGrantDeliveryOptions, type BuilderLibraryDeliveryOptions, type ChapterEnv, type ChapterErrorRecorder, type ChapterErrorReport, type ChapterWorkerOptions, type IncludedNamedSeatReceipt, type LeaderAdmissionAssignment, type LeaderAdmissionDelivery, type LeaderAdmissionDeliveryStatus, MEMBERSHIP_AUTHORITY_PATH, type MemberContentDeliveryOptions, type MembershipAuthorityHandlerOptions, type MembershipAuthorityPeer, type MembershipChapterEffect, type MembershipEffectScope, type MembershipRetermInput, type MembershipRetermReceipt, type MembershipRetermSkipReason, type MembershipWorkerAdapter, type MembershipWorkerAdapterOptions, type NamedSeatOffer, type NamedSeatOfferSeat, type NamedSeatOperatorRefundInput, type NamedSeatRecipientState, type NamedSeatRefundReason, type NetworkTargetTransport, NetworkTargetTransportError, type Route, type SeatRepriceReceipt, type SeatRepriceScope, type SignupControlDeliveryOptions, type WorkerContext, chapterMembershipAccess, chapterWorker, createMembershipAuthorityHandler, createMembershipAuthorityStorage, createMembershipChapterEffectRoute, createMembershipWorkerAdapter, createWorkerContext, deliverAdmissionGrants, deliverBuilderLibrary, deliverMemberContent, deliverMembershipChapterEffect, deliverSignupControl, drainMembershipEffects, grantIncludedNamedSeat, lowerSeatPrice, namedSeatIncluded, namedSeatRecipientState, readNamedSeatOffer, refundNamedSeatByOperator, renderActiveSignupControlHtml, resolveNetworkTargetTransport, retermMembershipDiscount, retryChapterApprovalEffects, retryLeaderAdmissionDeliveries, withActiveSignupControlTheme };
2171
+ export { type ActiveSignupControlHtml, type ActiveSignupControlThemeOptions, AdmissionGrantDeliveryError, type AdmissionGrantDeliveryOptions, type BuilderLibraryDeliveryOptions, type ChapterEnv, type ChapterErrorRecorder, type ChapterErrorReport, type ChapterWorkerOptions, type IncludedNamedSeatReceipt, type LeaderAdmissionAssignment, type LeaderAdmissionDelivery, type LeaderAdmissionDeliveryStatus, MEMBERSHIP_AUTHORITY_PATH, type MemberContentDeliveryOptions, type MembershipAuthorityHandlerOptions, type MembershipAuthorityPeer, type MembershipChapterEffect, type MembershipEffectScope, type MembershipRetermInput, type MembershipRetermReceipt, type MembershipRetermSkipReason, type MembershipWorkerAdapter, type MembershipWorkerAdapterOptions, type NamedSeatOffer, type NamedSeatOfferSeat, type NamedSeatOperatorRefundInput, type NamedSeatRecipientState, type NamedSeatRefundReason, type NetworkTargetTransport, NetworkTargetTransportError, type Route, type SeatRepriceReceipt, type SeatRepriceScope, type SignupControlDeliveryOptions, type WorkerContext, chapterMembershipAccess, chapterWorker, createMembershipAuthorityHandler, createMembershipAuthorityStorage, createMembershipChapterEffectRoute, createMembershipWorkerAdapter, createWorkerContext, deliverAdmissionGrants, deliverBuilderLibrary, deliverMemberContent, deliverMembershipChapterEffect, deliverSignupControl, drainMembershipEffects, grantIncludedNamedSeat, liftSeatPurchaseWindow, lowerSeatPrice, namedSeatIncluded, namedSeatRecipientState, readNamedSeatOffer, refundNamedSeatByOperator, renderActiveSignupControlHtml, resolveNetworkTargetTransport, retermMembershipDiscount, retryChapterApprovalEffects, retryLeaderAdmissionDeliveries, withActiveSignupControlTheme };