@odla-ai/chapter 0.38.1 → 0.39.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.
package/README.md CHANGED
@@ -510,6 +510,55 @@ producer process. The value is never accepted as an argument. `project` is the
510
510
  server-disclosure proof and omits locked bodies; `compose` is a local operator
511
511
  authoring view and contains the supplied content.
512
512
 
513
+ ### Private Builder Library
514
+
515
+ Builder source material is deliberately separate from member publishing. Enable
516
+ it on both the Built Not Found hub and each participating Chapter:
517
+
518
+ ```ts
519
+ // Built Not Found
520
+ builderLibrary: {
521
+ sources: [{ sourceId: "oakland" }, { sourceId: "denver" }],
522
+ },
523
+
524
+ // Oakland
525
+ builderLibrary: {
526
+ sources: [{ sourceId: "built-not-found" }],
527
+ },
528
+ ```
529
+
530
+ Every resource has exactly one scope: `{ kind: "chapter", chapterId }`,
531
+ `{ kind: "built_not_found" }`, or `{ kind: "global" }`. There are no groups or
532
+ audience arrays. A Chapter can author only its own scope. Its admins and agents
533
+ see its own published material plus global material, never a sibling Chapter or
534
+ Built Not Found-only material. Built Not Found admins see every configured
535
+ Chapter source and can promote a Chapter resource to a global copy; the server
536
+ records the source Chapter, source resource/document revisions, actor, and time.
537
+
538
+ Resources are bounded documents/notes, HTTPS links/inspiration, or canonical
539
+ Brand `{ bookId, assetId }` references. Asset URLs, bytes, storage credentials,
540
+ HTML, and executable content are not part of the contract. The standard admin
541
+ adds a visibly private **Builder Library** tab separate from **Member content**.
542
+ Saving a library item never creates or changes a member page.
543
+
544
+ An authenticated admin or site-building agent reads the bounded, published-only
545
+ manifest from `/api/admin/builder-library/manifest`. On Built Not Found, pass a
546
+ configured `chapterId` query parameter; on a Chapter, the server fixes the
547
+ viewer to that Chapter. Signed delivery uses the dedicated
548
+ `builder_library_control_secret` vault key and never reuses CRM, member-content,
549
+ or signup-control credentials.
550
+
551
+ ```bash
552
+ odla-ai chapter builder-library validate --file oakland-library.json --source-type chapter --source oakland --json
553
+ odla-ai chapter builder-library manifest --file oakland-library.json --chapter oakland --json
554
+ odla-ai chapter builder-library deliver --file oakland-library.json \
555
+ --url https://builtnotfoundcapital.com --from-env BUILDER_LIBRARY_SECRET --json
556
+ ```
557
+
558
+ The signing secret is accepted only from a named environment variable or stdin.
559
+ For a Built Not Found local document, add `--target oakland --environment dev`;
560
+ the CLI signs only its global resources for that Chapter, never BNF-only items.
561
+
513
562
  ### Hub-authoritative live signup control
514
563
 
515
564
  When a hub must control the live membership page as well as preview it, use the