@odla-ai/chapter 0.41.1 → 0.42.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -44,7 +44,7 @@ interface ChapterCopy {
44
44
  payment: TextFields<"setupFailed" | "preparing" | "pending" | "processing" | "payAndContinue" | "incomplete" | "consent">;
45
45
  done: TextFields<"label" | "calendarInvite" | "memberArea">;
46
46
  accepted: TextFields<"label" | "body">;
47
- gift: TextFields<"chooseSelf" | "optionsLabel" | "label" | "body" | "save" | "rotate" | "rotateFailed">;
47
+ gift: TextFields<"chooseSelf" | "optionsLabel" | "label" | "body" | "save" | "rotate" | "rotateFailed" | "claimTitle" | "claimBody" | "code" | "redeem" | "redeemed" | "redeemFailed">;
48
48
  };
49
49
  members: {
50
50
  loadFailed: string;
@@ -185,6 +185,13 @@ interface ChapterNetworkTarget {
185
185
  * this follower. Omitted by default: a target never gains write permission
186
186
  * merely because its records are browsable. */
187
187
  sharedNotes?: readonly string[];
188
+ /** Per-record-type upper bound on profile fields this leader permits its
189
+ * admins to edit remotely. The follower must independently delegate the
190
+ * same field; readable fields never become writable implicitly. */
191
+ editableFields?: Record<string, readonly string[]>;
192
+ /** Record types on which this leader permits remote lifecycle transitions.
193
+ * The follower must independently opt in and remains pipeline authority. */
194
+ stageTransitions?: readonly string[];
188
195
  }
189
196
  /** One signed peer allowed to browse a privacy-bounded projection of this
190
197
  * site's CRM. The follower owns this allowlist; a leader target declaration
@@ -199,6 +206,13 @@ interface ChapterNetworkReader {
199
206
  * Omitted by default: browse permission never silently grants write access.
200
207
  * Shared notes land in the follower CRM activity feed. */
201
208
  sharedNotes?: readonly string[];
209
+ /** Exact local CRM fields this reader may edit remotely, by record type.
210
+ * Every field must also be readable so the peer can perform an optimistic
211
+ * edit against the value and revision it actually reviewed. */
212
+ editableFields?: Record<string, readonly string[]>;
213
+ /** Local CRM record types on which this reader may request a lifecycle
214
+ * transition. Chapter still enforces the local pipeline and gates. */
215
+ stageTransitions?: readonly string[];
202
216
  }
203
217
  /** Leader/follower network configuration. A follower needs no code config to
204
218
  * receive pushed records. It must explicitly declare `readers` before any peer
@@ -241,12 +255,16 @@ interface ResolvedNetworkTarget {
241
255
  secretName: string;
242
256
  fields?: Record<string, readonly string[]>;
243
257
  sharedNotes: readonly string[];
258
+ editableFields: Record<string, readonly string[]>;
259
+ stageTransitions: readonly string[];
244
260
  }
245
261
  /** A validated follower-owned record projection for one signed reader. */
246
262
  interface ResolvedNetworkReader {
247
263
  id: string;
248
264
  fields: Record<string, readonly string[]>;
249
265
  sharedNotes: readonly string[];
266
+ editableFields: Record<string, readonly string[]>;
267
+ stageTransitions: readonly string[];
250
268
  }
251
269
  /** Fully-resolved leader network configuration. */
252
270
  interface ResolvedNetwork {
@@ -44,7 +44,7 @@ interface ChapterCopy {
44
44
  payment: TextFields<"setupFailed" | "preparing" | "pending" | "processing" | "payAndContinue" | "incomplete" | "consent">;
45
45
  done: TextFields<"label" | "calendarInvite" | "memberArea">;
46
46
  accepted: TextFields<"label" | "body">;
47
- gift: TextFields<"chooseSelf" | "optionsLabel" | "label" | "body" | "save" | "rotate" | "rotateFailed">;
47
+ gift: TextFields<"chooseSelf" | "optionsLabel" | "label" | "body" | "save" | "rotate" | "rotateFailed" | "claimTitle" | "claimBody" | "code" | "redeem" | "redeemed" | "redeemFailed">;
48
48
  };
49
49
  members: {
50
50
  loadFailed: string;
@@ -185,6 +185,13 @@ interface ChapterNetworkTarget {
185
185
  * this follower. Omitted by default: a target never gains write permission
186
186
  * merely because its records are browsable. */
187
187
  sharedNotes?: readonly string[];
188
+ /** Per-record-type upper bound on profile fields this leader permits its
189
+ * admins to edit remotely. The follower must independently delegate the
190
+ * same field; readable fields never become writable implicitly. */
191
+ editableFields?: Record<string, readonly string[]>;
192
+ /** Record types on which this leader permits remote lifecycle transitions.
193
+ * The follower must independently opt in and remains pipeline authority. */
194
+ stageTransitions?: readonly string[];
188
195
  }
189
196
  /** One signed peer allowed to browse a privacy-bounded projection of this
190
197
  * site's CRM. The follower owns this allowlist; a leader target declaration
@@ -199,6 +206,13 @@ interface ChapterNetworkReader {
199
206
  * Omitted by default: browse permission never silently grants write access.
200
207
  * Shared notes land in the follower CRM activity feed. */
201
208
  sharedNotes?: readonly string[];
209
+ /** Exact local CRM fields this reader may edit remotely, by record type.
210
+ * Every field must also be readable so the peer can perform an optimistic
211
+ * edit against the value and revision it actually reviewed. */
212
+ editableFields?: Record<string, readonly string[]>;
213
+ /** Local CRM record types on which this reader may request a lifecycle
214
+ * transition. Chapter still enforces the local pipeline and gates. */
215
+ stageTransitions?: readonly string[];
202
216
  }
203
217
  /** Leader/follower network configuration. A follower needs no code config to
204
218
  * receive pushed records. It must explicitly declare `readers` before any peer
@@ -241,12 +255,16 @@ interface ResolvedNetworkTarget {
241
255
  secretName: string;
242
256
  fields?: Record<string, readonly string[]>;
243
257
  sharedNotes: readonly string[];
258
+ editableFields: Record<string, readonly string[]>;
259
+ stageTransitions: readonly string[];
244
260
  }
245
261
  /** A validated follower-owned record projection for one signed reader. */
246
262
  interface ResolvedNetworkReader {
247
263
  id: string;
248
264
  fields: Record<string, readonly string[]>;
249
265
  sharedNotes: readonly string[];
266
+ editableFields: Record<string, readonly string[]>;
267
+ stageTransitions: readonly string[];
250
268
  }
251
269
  /** Fully-resolved leader network configuration. */
252
270
  interface ResolvedNetwork {