@odla-ai/chapter 0.36.0 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -2
- package/dist/{chunk-I45VYBUV.js → chunk-BIYWPPH6.js} +233 -140
- package/dist/chunk-BIYWPPH6.js.map +1 -0
- package/dist/{chunk-LWM32REV.js → chunk-SI3JHSEX.js} +211 -64
- package/dist/chunk-SI3JHSEX.js.map +1 -0
- package/dist/{copy-context-0k0-yWHL.d.ts → copy-context-Pbs3keLx.d.ts} +174 -28
- package/dist/index.cjs +807 -345
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +295 -36
- package/dist/index.d.ts +295 -36
- package/dist/index.js +807 -345
- package/dist/index.js.map +1 -1
- package/dist/ui/admin/index.d.ts +27 -3
- package/dist/ui/admin/index.js +5 -1
- package/dist/ui/index.d.ts +3 -3
- package/dist/ui/index.js +8 -2
- package/dist/ui/member/index.d.ts +63 -4
- package/dist/ui/member/index.js +3 -1
- package/dist/worker/index.cjs +1032 -354
- package/dist/worker/index.cjs.map +1 -1
- package/dist/worker/index.d.cts +151 -28
- package/dist/worker/index.d.ts +151 -28
- package/dist/worker/index.js +1025 -347
- package/dist/worker/index.js.map +1 -1
- package/package.json +1 -1
- package/runbooks/greenfield.md +27 -0
- package/dist/chunk-I45VYBUV.js.map +0 -1
- package/dist/chunk-LWM32REV.js.map +0 -1
package/dist/worker/index.d.cts
CHANGED
|
@@ -92,6 +92,55 @@ interface ResolvedSignupControl {
|
|
|
92
92
|
stripeMode: "test" | "live";
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
/** Optional authenticated member-content surface for a chapter site. */
|
|
96
|
+
interface ChapterMemberContent {
|
|
97
|
+
/** Keep Chapter-admin authoring enabled. Defaults to true. */
|
|
98
|
+
localAuthoring?: boolean;
|
|
99
|
+
/** Optional Parent/Built Not Found authority for signed inherited revisions. */
|
|
100
|
+
parent?: {
|
|
101
|
+
sourceId: string;
|
|
102
|
+
/** Follower-vault key holding the dedicated content edge secret. */
|
|
103
|
+
secretName?: string;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/** Validated member-content settings carried on a resolved Chapter. */
|
|
107
|
+
interface ResolvedMemberContent {
|
|
108
|
+
enabled: true;
|
|
109
|
+
localAuthoring: boolean;
|
|
110
|
+
parent: {
|
|
111
|
+
sourceId: string;
|
|
112
|
+
secretName: string;
|
|
113
|
+
} | null;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** Scalar kinds accepted by the Chapter schema adapter. */
|
|
117
|
+
type AttrType = "string" | "number" | "boolean" | "json";
|
|
118
|
+
/** One odla-db attribute: its type and index/uniqueness/optionality flags. */
|
|
119
|
+
interface Attr {
|
|
120
|
+
type: AttrType;
|
|
121
|
+
unique: boolean;
|
|
122
|
+
indexed: boolean;
|
|
123
|
+
optional: boolean;
|
|
124
|
+
}
|
|
125
|
+
/** One odla-db namespace: its attribute map. */
|
|
126
|
+
interface Entity {
|
|
127
|
+
attrs: Record<string, Attr>;
|
|
128
|
+
}
|
|
129
|
+
/** A serialized odla-db schema fragment (namespaces + links). */
|
|
130
|
+
interface DbSchema {
|
|
131
|
+
entities: Record<string, Entity>;
|
|
132
|
+
links: Record<string, unknown>;
|
|
133
|
+
}
|
|
134
|
+
/** Per-namespace CEL rule strings (deny-all is `"false"` for each action). */
|
|
135
|
+
interface Rule {
|
|
136
|
+
view: string;
|
|
137
|
+
create: string;
|
|
138
|
+
update: string;
|
|
139
|
+
delete: string;
|
|
140
|
+
}
|
|
141
|
+
/** Namespace → rule set. */
|
|
142
|
+
type DbRules = Record<string, Rule>;
|
|
143
|
+
|
|
95
144
|
/** One follower site a leader can push CRM records to. The secret VALUE never
|
|
96
145
|
* lives in config: `secretName` names the leader tenant's vaulted copy of the
|
|
97
146
|
* follower's `network_share_secret`. */
|
|
@@ -270,33 +319,6 @@ interface ChapterDb {
|
|
|
270
319
|
get(name: string): Promise<string>;
|
|
271
320
|
};
|
|
272
321
|
}
|
|
273
|
-
/** Scalar kinds accepted by the Chapter schema adapter. */
|
|
274
|
-
type AttrType = "string" | "number" | "boolean" | "json";
|
|
275
|
-
/** One odla-db attribute: its type and index/uniqueness/optionality flags. */
|
|
276
|
-
interface Attr {
|
|
277
|
-
type: AttrType;
|
|
278
|
-
unique: boolean;
|
|
279
|
-
indexed: boolean;
|
|
280
|
-
optional: boolean;
|
|
281
|
-
}
|
|
282
|
-
/** One odla-db namespace: its attribute map. */
|
|
283
|
-
interface Entity {
|
|
284
|
-
attrs: Record<string, Attr>;
|
|
285
|
-
}
|
|
286
|
-
/** A serialized odla-db schema fragment (namespaces + links). */
|
|
287
|
-
interface DbSchema {
|
|
288
|
-
entities: Record<string, Entity>;
|
|
289
|
-
links: Record<string, unknown>;
|
|
290
|
-
}
|
|
291
|
-
/** Per-namespace CEL rule strings (deny-all is `"false"` for each action). */
|
|
292
|
-
interface Rule {
|
|
293
|
-
view: string;
|
|
294
|
-
create: string;
|
|
295
|
-
update: string;
|
|
296
|
-
delete: string;
|
|
297
|
-
}
|
|
298
|
-
/** Namespace → rule set. */
|
|
299
|
-
type DbRules = Record<string, Rule>;
|
|
300
322
|
/** Typed semantic roles shared by the public site and application surfaces. */
|
|
301
323
|
interface ChapterBrandTokens {
|
|
302
324
|
background?: string;
|
|
@@ -520,6 +542,8 @@ interface ChapterConfig {
|
|
|
520
542
|
network?: ChapterNetwork;
|
|
521
543
|
/** A separate signed edge that may control this chapter's complete signup. */
|
|
522
544
|
signupControl?: ChapterSignupControl;
|
|
545
|
+
/** Authenticated parent + chapter member pages with server-enforced tier access. */
|
|
546
|
+
memberContent?: ChapterMemberContent;
|
|
523
547
|
/** Enable a public, host-rendered formation application workflow. */
|
|
524
548
|
formation?: LeaderFormationConfig;
|
|
525
549
|
thesis?: unknown;
|
|
@@ -616,6 +640,8 @@ interface Chapter {
|
|
|
616
640
|
network: ResolvedNetwork;
|
|
617
641
|
/** Null unless this follower explicitly delegates signup authority. */
|
|
618
642
|
signupControl: ResolvedSignupControl | null;
|
|
643
|
+
/** Null unless the standard authenticated member-content surface is enabled. */
|
|
644
|
+
memberContent: ResolvedMemberContent | null;
|
|
619
645
|
/** Resolved public formation intake contract (disabled when omitted). */
|
|
620
646
|
formation: ResolvedLeaderFormation;
|
|
621
647
|
/** Resolved CRM engine (from `defineCrm`). */
|
|
@@ -883,6 +909,103 @@ interface SignupControlDeliveryOptions {
|
|
|
883
909
|
/** Build and send one signed desired-state delivery. Durable retry belongs to the hub outbox. */
|
|
884
910
|
declare function deliverSignupControl(options: SignupControlDeliveryOptions): Promise<SignupControlReceipt>;
|
|
885
911
|
|
|
912
|
+
/** Versioned contract for authenticated member content. */
|
|
913
|
+
declare const MEMBER_CONTENT_SCHEMA_VERSION: 1;
|
|
914
|
+
/** Authority that authored one independently stored member-content layer. */
|
|
915
|
+
type MemberContentSourceType = "parent" | "chapter";
|
|
916
|
+
/** Stable author identity attached to every member-content document and page. */
|
|
917
|
+
interface MemberContentSource {
|
|
918
|
+
type: MemberContentSourceType;
|
|
919
|
+
appId: string;
|
|
920
|
+
}
|
|
921
|
+
/** Chapter deployment that a parent member-content revision is intended for. */
|
|
922
|
+
interface MemberContentTarget {
|
|
923
|
+
chapterId: string;
|
|
924
|
+
environment: string;
|
|
925
|
+
}
|
|
926
|
+
/** Navigation is data, so agents do not have to coordinate route code. */
|
|
927
|
+
interface MemberPageNavigation {
|
|
928
|
+
section: string;
|
|
929
|
+
order: number;
|
|
930
|
+
parentId?: string;
|
|
931
|
+
}
|
|
932
|
+
/** Explicit sets avoid unsafe assumptions that commercial tiers form a ladder. */
|
|
933
|
+
type MemberPageAudience = {
|
|
934
|
+
kind: "all-members";
|
|
935
|
+
} | {
|
|
936
|
+
kind: "tiers";
|
|
937
|
+
tierIds: readonly string[];
|
|
938
|
+
};
|
|
939
|
+
/** Authored offer copy. Price and provider identity deliberately do not live here. */
|
|
940
|
+
interface MemberPageUpsellOffer {
|
|
941
|
+
tierId: string;
|
|
942
|
+
label?: string;
|
|
943
|
+
bodyMarkdown?: string;
|
|
944
|
+
ctaLabel?: string;
|
|
945
|
+
}
|
|
946
|
+
/** Parent offer authority is explicit; a Chapter can edit only a delegated offer. */
|
|
947
|
+
type MemberPageUpsell = {
|
|
948
|
+
owner: "parent";
|
|
949
|
+
offer: MemberPageUpsellOffer;
|
|
950
|
+
} | {
|
|
951
|
+
owner: "chapter";
|
|
952
|
+
offer?: MemberPageUpsellOffer;
|
|
953
|
+
};
|
|
954
|
+
/** Authored member page whose body is disclosed only after server-side projection. */
|
|
955
|
+
interface MemberContentPage {
|
|
956
|
+
id: string;
|
|
957
|
+
slug: string;
|
|
958
|
+
title: string;
|
|
959
|
+
summary?: string;
|
|
960
|
+
navigation: MemberPageNavigation;
|
|
961
|
+
audience: MemberPageAudience;
|
|
962
|
+
/** Safe Markdown shown while the body is withheld. */
|
|
963
|
+
teaserMarkdown?: string;
|
|
964
|
+
/** Never serialized to a viewer whose audience does not match. */
|
|
965
|
+
bodyMarkdown: string;
|
|
966
|
+
upsell?: MemberPageUpsell;
|
|
967
|
+
}
|
|
968
|
+
/** Chapter-owned offer attached to a Parent page that delegated offer authority. */
|
|
969
|
+
interface MemberPageUpsellOverride {
|
|
970
|
+
pageId: string;
|
|
971
|
+
offer: MemberPageUpsellOffer;
|
|
972
|
+
}
|
|
973
|
+
/** One complete source layer. Parent and Chapter layers are stored independently. */
|
|
974
|
+
interface MemberContentDocument {
|
|
975
|
+
schemaVersion: typeof MEMBER_CONTENT_SCHEMA_VERSION;
|
|
976
|
+
revision: number;
|
|
977
|
+
generatedAt: number;
|
|
978
|
+
source: MemberContentSource;
|
|
979
|
+
target?: MemberContentTarget;
|
|
980
|
+
pages: readonly MemberContentPage[];
|
|
981
|
+
upsellOverrides?: readonly MemberPageUpsellOverride[];
|
|
982
|
+
}
|
|
983
|
+
/** Canonical parent document and digest transmitted over the signed control edge. */
|
|
984
|
+
interface MemberContentEnvelope {
|
|
985
|
+
digest: string;
|
|
986
|
+
document: MemberContentDocument;
|
|
987
|
+
}
|
|
988
|
+
/** Durable Chapter acknowledgement for an accepted or idempotently replayed revision. */
|
|
989
|
+
interface MemberContentReceipt {
|
|
990
|
+
ok: true;
|
|
991
|
+
target: MemberContentTarget;
|
|
992
|
+
revision: number;
|
|
993
|
+
digest: string;
|
|
994
|
+
status: "accepted" | "replayed";
|
|
995
|
+
acknowledgedAt: number;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
/** Inputs for one signed Parent → Chapter member-content delivery. */
|
|
999
|
+
interface MemberContentDeliveryOptions {
|
|
1000
|
+
secret: string;
|
|
1001
|
+
sender: string;
|
|
1002
|
+
targetUrl: string | URL;
|
|
1003
|
+
envelope: MemberContentEnvelope;
|
|
1004
|
+
fetch?: typeof globalThis.fetch;
|
|
1005
|
+
}
|
|
1006
|
+
/** Deliver one exact revision. Durable retry and approval remain Parent concerns. */
|
|
1007
|
+
declare function deliverMemberContent(options: MemberContentDeliveryOptions): Promise<MemberContentReceipt>;
|
|
1008
|
+
|
|
886
1009
|
/** Current wire version for parent-authored admission decisions. */
|
|
887
1010
|
declare const ADMISSION_GRANTS_SCHEMA_VERSION: 1;
|
|
888
1011
|
/** Whether an exact email can skip or must retain the Chapter interview. */
|
|
@@ -1009,4 +1132,4 @@ declare function chapterWorker(options: ChapterWorkerOptions): {
|
|
|
1009
1132
|
fetch(req: Request, env: ChapterEnv): Promise<Response>;
|
|
1010
1133
|
};
|
|
1011
1134
|
|
|
1012
|
-
export { type ActiveSignupControlHtml, type ActiveSignupControlThemeOptions, type AdmissionGrantDeliveryOptions, type ChapterEnv, type ChapterWorkerOptions, type Route, type SignupControlDeliveryOptions, type WorkerContext, chapterWorker, createWorkerContext, deliverAdmissionGrants, deliverSignupControl, renderActiveSignupControlHtml, withActiveSignupControlTheme };
|
|
1135
|
+
export { type ActiveSignupControlHtml, type ActiveSignupControlThemeOptions, type AdmissionGrantDeliveryOptions, type ChapterEnv, type ChapterWorkerOptions, type MemberContentDeliveryOptions, type Route, type SignupControlDeliveryOptions, type WorkerContext, chapterWorker, createWorkerContext, deliverAdmissionGrants, deliverMemberContent, deliverSignupControl, renderActiveSignupControlHtml, withActiveSignupControlTheme };
|
package/dist/worker/index.d.ts
CHANGED
|
@@ -92,6 +92,55 @@ interface ResolvedSignupControl {
|
|
|
92
92
|
stripeMode: "test" | "live";
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
/** Optional authenticated member-content surface for a chapter site. */
|
|
96
|
+
interface ChapterMemberContent {
|
|
97
|
+
/** Keep Chapter-admin authoring enabled. Defaults to true. */
|
|
98
|
+
localAuthoring?: boolean;
|
|
99
|
+
/** Optional Parent/Built Not Found authority for signed inherited revisions. */
|
|
100
|
+
parent?: {
|
|
101
|
+
sourceId: string;
|
|
102
|
+
/** Follower-vault key holding the dedicated content edge secret. */
|
|
103
|
+
secretName?: string;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/** Validated member-content settings carried on a resolved Chapter. */
|
|
107
|
+
interface ResolvedMemberContent {
|
|
108
|
+
enabled: true;
|
|
109
|
+
localAuthoring: boolean;
|
|
110
|
+
parent: {
|
|
111
|
+
sourceId: string;
|
|
112
|
+
secretName: string;
|
|
113
|
+
} | null;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/** Scalar kinds accepted by the Chapter schema adapter. */
|
|
117
|
+
type AttrType = "string" | "number" | "boolean" | "json";
|
|
118
|
+
/** One odla-db attribute: its type and index/uniqueness/optionality flags. */
|
|
119
|
+
interface Attr {
|
|
120
|
+
type: AttrType;
|
|
121
|
+
unique: boolean;
|
|
122
|
+
indexed: boolean;
|
|
123
|
+
optional: boolean;
|
|
124
|
+
}
|
|
125
|
+
/** One odla-db namespace: its attribute map. */
|
|
126
|
+
interface Entity {
|
|
127
|
+
attrs: Record<string, Attr>;
|
|
128
|
+
}
|
|
129
|
+
/** A serialized odla-db schema fragment (namespaces + links). */
|
|
130
|
+
interface DbSchema {
|
|
131
|
+
entities: Record<string, Entity>;
|
|
132
|
+
links: Record<string, unknown>;
|
|
133
|
+
}
|
|
134
|
+
/** Per-namespace CEL rule strings (deny-all is `"false"` for each action). */
|
|
135
|
+
interface Rule {
|
|
136
|
+
view: string;
|
|
137
|
+
create: string;
|
|
138
|
+
update: string;
|
|
139
|
+
delete: string;
|
|
140
|
+
}
|
|
141
|
+
/** Namespace → rule set. */
|
|
142
|
+
type DbRules = Record<string, Rule>;
|
|
143
|
+
|
|
95
144
|
/** One follower site a leader can push CRM records to. The secret VALUE never
|
|
96
145
|
* lives in config: `secretName` names the leader tenant's vaulted copy of the
|
|
97
146
|
* follower's `network_share_secret`. */
|
|
@@ -270,33 +319,6 @@ interface ChapterDb {
|
|
|
270
319
|
get(name: string): Promise<string>;
|
|
271
320
|
};
|
|
272
321
|
}
|
|
273
|
-
/** Scalar kinds accepted by the Chapter schema adapter. */
|
|
274
|
-
type AttrType = "string" | "number" | "boolean" | "json";
|
|
275
|
-
/** One odla-db attribute: its type and index/uniqueness/optionality flags. */
|
|
276
|
-
interface Attr {
|
|
277
|
-
type: AttrType;
|
|
278
|
-
unique: boolean;
|
|
279
|
-
indexed: boolean;
|
|
280
|
-
optional: boolean;
|
|
281
|
-
}
|
|
282
|
-
/** One odla-db namespace: its attribute map. */
|
|
283
|
-
interface Entity {
|
|
284
|
-
attrs: Record<string, Attr>;
|
|
285
|
-
}
|
|
286
|
-
/** A serialized odla-db schema fragment (namespaces + links). */
|
|
287
|
-
interface DbSchema {
|
|
288
|
-
entities: Record<string, Entity>;
|
|
289
|
-
links: Record<string, unknown>;
|
|
290
|
-
}
|
|
291
|
-
/** Per-namespace CEL rule strings (deny-all is `"false"` for each action). */
|
|
292
|
-
interface Rule {
|
|
293
|
-
view: string;
|
|
294
|
-
create: string;
|
|
295
|
-
update: string;
|
|
296
|
-
delete: string;
|
|
297
|
-
}
|
|
298
|
-
/** Namespace → rule set. */
|
|
299
|
-
type DbRules = Record<string, Rule>;
|
|
300
322
|
/** Typed semantic roles shared by the public site and application surfaces. */
|
|
301
323
|
interface ChapterBrandTokens {
|
|
302
324
|
background?: string;
|
|
@@ -520,6 +542,8 @@ interface ChapterConfig {
|
|
|
520
542
|
network?: ChapterNetwork;
|
|
521
543
|
/** A separate signed edge that may control this chapter's complete signup. */
|
|
522
544
|
signupControl?: ChapterSignupControl;
|
|
545
|
+
/** Authenticated parent + chapter member pages with server-enforced tier access. */
|
|
546
|
+
memberContent?: ChapterMemberContent;
|
|
523
547
|
/** Enable a public, host-rendered formation application workflow. */
|
|
524
548
|
formation?: LeaderFormationConfig;
|
|
525
549
|
thesis?: unknown;
|
|
@@ -616,6 +640,8 @@ interface Chapter {
|
|
|
616
640
|
network: ResolvedNetwork;
|
|
617
641
|
/** Null unless this follower explicitly delegates signup authority. */
|
|
618
642
|
signupControl: ResolvedSignupControl | null;
|
|
643
|
+
/** Null unless the standard authenticated member-content surface is enabled. */
|
|
644
|
+
memberContent: ResolvedMemberContent | null;
|
|
619
645
|
/** Resolved public formation intake contract (disabled when omitted). */
|
|
620
646
|
formation: ResolvedLeaderFormation;
|
|
621
647
|
/** Resolved CRM engine (from `defineCrm`). */
|
|
@@ -883,6 +909,103 @@ interface SignupControlDeliveryOptions {
|
|
|
883
909
|
/** Build and send one signed desired-state delivery. Durable retry belongs to the hub outbox. */
|
|
884
910
|
declare function deliverSignupControl(options: SignupControlDeliveryOptions): Promise<SignupControlReceipt>;
|
|
885
911
|
|
|
912
|
+
/** Versioned contract for authenticated member content. */
|
|
913
|
+
declare const MEMBER_CONTENT_SCHEMA_VERSION: 1;
|
|
914
|
+
/** Authority that authored one independently stored member-content layer. */
|
|
915
|
+
type MemberContentSourceType = "parent" | "chapter";
|
|
916
|
+
/** Stable author identity attached to every member-content document and page. */
|
|
917
|
+
interface MemberContentSource {
|
|
918
|
+
type: MemberContentSourceType;
|
|
919
|
+
appId: string;
|
|
920
|
+
}
|
|
921
|
+
/** Chapter deployment that a parent member-content revision is intended for. */
|
|
922
|
+
interface MemberContentTarget {
|
|
923
|
+
chapterId: string;
|
|
924
|
+
environment: string;
|
|
925
|
+
}
|
|
926
|
+
/** Navigation is data, so agents do not have to coordinate route code. */
|
|
927
|
+
interface MemberPageNavigation {
|
|
928
|
+
section: string;
|
|
929
|
+
order: number;
|
|
930
|
+
parentId?: string;
|
|
931
|
+
}
|
|
932
|
+
/** Explicit sets avoid unsafe assumptions that commercial tiers form a ladder. */
|
|
933
|
+
type MemberPageAudience = {
|
|
934
|
+
kind: "all-members";
|
|
935
|
+
} | {
|
|
936
|
+
kind: "tiers";
|
|
937
|
+
tierIds: readonly string[];
|
|
938
|
+
};
|
|
939
|
+
/** Authored offer copy. Price and provider identity deliberately do not live here. */
|
|
940
|
+
interface MemberPageUpsellOffer {
|
|
941
|
+
tierId: string;
|
|
942
|
+
label?: string;
|
|
943
|
+
bodyMarkdown?: string;
|
|
944
|
+
ctaLabel?: string;
|
|
945
|
+
}
|
|
946
|
+
/** Parent offer authority is explicit; a Chapter can edit only a delegated offer. */
|
|
947
|
+
type MemberPageUpsell = {
|
|
948
|
+
owner: "parent";
|
|
949
|
+
offer: MemberPageUpsellOffer;
|
|
950
|
+
} | {
|
|
951
|
+
owner: "chapter";
|
|
952
|
+
offer?: MemberPageUpsellOffer;
|
|
953
|
+
};
|
|
954
|
+
/** Authored member page whose body is disclosed only after server-side projection. */
|
|
955
|
+
interface MemberContentPage {
|
|
956
|
+
id: string;
|
|
957
|
+
slug: string;
|
|
958
|
+
title: string;
|
|
959
|
+
summary?: string;
|
|
960
|
+
navigation: MemberPageNavigation;
|
|
961
|
+
audience: MemberPageAudience;
|
|
962
|
+
/** Safe Markdown shown while the body is withheld. */
|
|
963
|
+
teaserMarkdown?: string;
|
|
964
|
+
/** Never serialized to a viewer whose audience does not match. */
|
|
965
|
+
bodyMarkdown: string;
|
|
966
|
+
upsell?: MemberPageUpsell;
|
|
967
|
+
}
|
|
968
|
+
/** Chapter-owned offer attached to a Parent page that delegated offer authority. */
|
|
969
|
+
interface MemberPageUpsellOverride {
|
|
970
|
+
pageId: string;
|
|
971
|
+
offer: MemberPageUpsellOffer;
|
|
972
|
+
}
|
|
973
|
+
/** One complete source layer. Parent and Chapter layers are stored independently. */
|
|
974
|
+
interface MemberContentDocument {
|
|
975
|
+
schemaVersion: typeof MEMBER_CONTENT_SCHEMA_VERSION;
|
|
976
|
+
revision: number;
|
|
977
|
+
generatedAt: number;
|
|
978
|
+
source: MemberContentSource;
|
|
979
|
+
target?: MemberContentTarget;
|
|
980
|
+
pages: readonly MemberContentPage[];
|
|
981
|
+
upsellOverrides?: readonly MemberPageUpsellOverride[];
|
|
982
|
+
}
|
|
983
|
+
/** Canonical parent document and digest transmitted over the signed control edge. */
|
|
984
|
+
interface MemberContentEnvelope {
|
|
985
|
+
digest: string;
|
|
986
|
+
document: MemberContentDocument;
|
|
987
|
+
}
|
|
988
|
+
/** Durable Chapter acknowledgement for an accepted or idempotently replayed revision. */
|
|
989
|
+
interface MemberContentReceipt {
|
|
990
|
+
ok: true;
|
|
991
|
+
target: MemberContentTarget;
|
|
992
|
+
revision: number;
|
|
993
|
+
digest: string;
|
|
994
|
+
status: "accepted" | "replayed";
|
|
995
|
+
acknowledgedAt: number;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
/** Inputs for one signed Parent → Chapter member-content delivery. */
|
|
999
|
+
interface MemberContentDeliveryOptions {
|
|
1000
|
+
secret: string;
|
|
1001
|
+
sender: string;
|
|
1002
|
+
targetUrl: string | URL;
|
|
1003
|
+
envelope: MemberContentEnvelope;
|
|
1004
|
+
fetch?: typeof globalThis.fetch;
|
|
1005
|
+
}
|
|
1006
|
+
/** Deliver one exact revision. Durable retry and approval remain Parent concerns. */
|
|
1007
|
+
declare function deliverMemberContent(options: MemberContentDeliveryOptions): Promise<MemberContentReceipt>;
|
|
1008
|
+
|
|
886
1009
|
/** Current wire version for parent-authored admission decisions. */
|
|
887
1010
|
declare const ADMISSION_GRANTS_SCHEMA_VERSION: 1;
|
|
888
1011
|
/** Whether an exact email can skip or must retain the Chapter interview. */
|
|
@@ -1009,4 +1132,4 @@ declare function chapterWorker(options: ChapterWorkerOptions): {
|
|
|
1009
1132
|
fetch(req: Request, env: ChapterEnv): Promise<Response>;
|
|
1010
1133
|
};
|
|
1011
1134
|
|
|
1012
|
-
export { type ActiveSignupControlHtml, type ActiveSignupControlThemeOptions, type AdmissionGrantDeliveryOptions, type ChapterEnv, type ChapterWorkerOptions, type Route, type SignupControlDeliveryOptions, type WorkerContext, chapterWorker, createWorkerContext, deliverAdmissionGrants, deliverSignupControl, renderActiveSignupControlHtml, withActiveSignupControlTheme };
|
|
1135
|
+
export { type ActiveSignupControlHtml, type ActiveSignupControlThemeOptions, type AdmissionGrantDeliveryOptions, type ChapterEnv, type ChapterWorkerOptions, type MemberContentDeliveryOptions, type Route, type SignupControlDeliveryOptions, type WorkerContext, chapterWorker, createWorkerContext, deliverAdmissionGrants, deliverMemberContent, deliverSignupControl, renderActiveSignupControlHtml, withActiveSignupControlTheme };
|