@littlebigbrain/client 0.9.0 → 0.10.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 CHANGED
@@ -90,7 +90,8 @@ console.log(completed.state, completed.committed_commit_seq);
90
90
 
91
91
  `records()` may be an iterable or async iterable. Success means every grouped
92
92
  commit is durable and final publication was enqueued; it does not mean indexes
93
- have already reached `committed_commit_seq`.
93
+ have already reached `committed_commit_seq`. An empty iterable is rejected
94
+ locally before an import POST is sent.
94
95
 
95
96
  **Time-travel read.** Pin any search to a past instant — results reflect the graph as it was then:
96
97
 
package/dist/client.d.ts CHANGED
@@ -400,19 +400,22 @@ export declare class LbbClient {
400
400
  fullTextSearch(body: Schemas["FullTextSearchRequest"], opts?: ReadConsistencyOptions): Promise<Schemas["FullTextSearchResponse"]>;
401
401
  /** ANN/vector search. */
402
402
  embeddingSearch(body: Schemas["EmbeddingSearchRequest"], opts?: ReadConsistencyOptions): Promise<Schemas["EmbeddingSearchResponse"]>;
403
- /** Bounded k-hop graph traversal. */
404
- traverse(body: Schemas["TraverseRequest"]): Promise<Schemas["TraverseResponse"]>;
405
- /** Resolve a query to seed entities, then return bounded paths. */
406
- semanticTraverse(body: Schemas["SemanticTraverseRequest"]): Promise<Schemas["SemanticTraverseResponse"]>;
407
- /** Ranked incoming/outgoing neighborhood for a graph entity. */
403
+ /**
404
+ * Ranked incoming/outgoing neighborhood for a graph entity.
405
+ *
406
+ * `edges` caps the edges returned per direction (default 1000, maximum
407
+ * 10000). When a cap cuts a direction the response carries a `truncation`
408
+ * block; an uncut response omits it entirely.
409
+ */
408
410
  entityNeighborhood(opts: {
409
411
  id?: string;
410
412
  type?: string;
411
413
  name?: string;
412
414
  relations?: string[];
413
415
  asOf?: string;
416
+ edges?: number;
414
417
  }): Promise<Schemas["EntityNeighborhoodResponse"]>;
415
- /** Exact type cardinality plus a bounded deterministic sample from ranged adjacency. */
418
+ /** Exact type cardinality plus a bounded deterministic sample from Base. */
416
419
  entityTypeSample(opts: {
417
420
  type: string;
418
421
  limit?: number;
package/dist/client.js CHANGED
@@ -29,14 +29,27 @@ function durableImportIterator(source) {
29
29
  },
30
30
  };
31
31
  }
32
- function durableImportBody(source) {
32
+ async function durableImportBody(source) {
33
33
  const iterator = durableImportIterator(source);
34
+ const first = await iterator.next();
35
+ if (first.done) {
36
+ await iterator.return?.();
37
+ throw new TypeError("submitImport requires at least one NDJSON record or byte chunk");
38
+ }
39
+ let firstPending = true;
40
+ const next = async () => {
41
+ if (firstPending) {
42
+ firstPending = false;
43
+ return { done: false, value: first.value };
44
+ }
45
+ return iterator.next();
46
+ };
34
47
  const Stream = globalThis.ReadableStream;
35
48
  if (Stream) {
36
49
  return new Stream({
37
50
  async pull(controller) {
38
51
  try {
39
- const item = await iterator.next();
52
+ const item = await next();
40
53
  if (item.done) {
41
54
  controller.close();
42
55
  }
@@ -57,7 +70,7 @@ function durableImportBody(source) {
57
70
  async *[Symbol.asyncIterator]() {
58
71
  try {
59
72
  for (;;) {
60
- const item = await iterator.next();
73
+ const item = await next();
61
74
  if (item.done)
62
75
  return;
63
76
  yield durableImportBytes(item.value);
@@ -467,8 +480,9 @@ export class LbbClient {
467
480
  throw new TypeError("submitImport requires a non-empty idempotencyKey");
468
481
  }
469
482
  await this.requireCapability("durable_import_jobs_v1");
483
+ const rawBody = await durableImportBody(lines);
470
484
  return this.request("POST", "/v1/graph/import-jobs", {
471
- rawBody: durableImportBody(lines),
485
+ rawBody,
472
486
  contentType: "application/x-ndjson",
473
487
  duplex: "half",
474
488
  query: {
@@ -546,6 +560,7 @@ export class LbbClient {
546
560
  blank_node_scope: opts.blankNodeScope,
547
561
  resource_type: opts.resourceType,
548
562
  edge_idempotency: opts.edgeIdempotency,
563
+ build: opts.build,
549
564
  },
550
565
  idempotencyKey: opts.idempotencyKey ?? this.idempotencyKey("import-rdf"),
551
566
  });
@@ -939,16 +954,13 @@ export class LbbClient {
939
954
  body: this.mergeReadConsistency(body, opts),
940
955
  });
941
956
  }
942
- // --- traversal ---
943
- /** Bounded k-hop graph traversal. */
944
- traverse(body) {
945
- return this.request("POST", "/v1/graph/traverse", { body });
946
- }
947
- /** Resolve a query to seed entities, then return bounded paths. */
948
- semanticTraverse(body) {
949
- return this.request("POST", "/v1/graph/semantic-traverse", { body });
950
- }
951
- /** Ranked incoming/outgoing neighborhood for a graph entity. */
957
+ /**
958
+ * Ranked incoming/outgoing neighborhood for a graph entity.
959
+ *
960
+ * `edges` caps the edges returned per direction (default 1000, maximum
961
+ * 10000). When a cap cuts a direction the response carries a `truncation`
962
+ * block; an uncut response omits it entirely.
963
+ */
952
964
  entityNeighborhood(opts) {
953
965
  return this.request("GET", "/v1/graph/entity/neighborhood", {
954
966
  query: {
@@ -957,10 +969,11 @@ export class LbbClient {
957
969
  name: opts.name,
958
970
  relations: opts.relations?.join(","),
959
971
  as_of: opts.asOf,
972
+ edges: opts.edges,
960
973
  },
961
974
  });
962
975
  }
963
- /** Exact type cardinality plus a bounded deterministic sample from ranged adjacency. */
976
+ /** Exact type cardinality plus a bounded deterministic sample from Base. */
964
977
  entityTypeSample(opts) {
965
978
  const { type, limit, ...request } = opts;
966
979
  return this.request("GET", "/v1/graph/entities/sample", {
@@ -1153,9 +1166,7 @@ export class LbbClient {
1153
1166
  lineage.bm25_indexed_commit_seq != null &&
1154
1167
  lineage.bm25_indexed_commit_seq >= targetSeq &&
1155
1168
  lineage.ann_indexed_commit_seq != null &&
1156
- lineage.ann_indexed_commit_seq >= targetSeq &&
1157
- lineage.adjacency_indexed_commit_seq != null &&
1158
- lineage.adjacency_indexed_commit_seq >= targetSeq) {
1169
+ lineage.ann_indexed_commit_seq >= targetSeq) {
1159
1170
  return {
1160
1171
  metadata: last.data,
1161
1172
  lineage,
@@ -99,8 +99,7 @@ export declare class EntityNamespace {
99
99
  constructor(client: LbbClient);
100
100
  /**
101
101
  * Return the exact type cardinality and a bounded deterministic sample from
102
- * the ranged adjacency family pinned by the published generation. A missing
103
- * family fails closed rather than falling back to an exhaustive scan.
102
+ * the Base family pinned by the published generation.
104
103
  */
105
104
  sample(opts: {
106
105
  type: string;
@@ -162,7 +162,7 @@ export class FactsNamespace {
162
162
  * predicates and literal term details are preserved as edge metadata.
163
163
  */
164
164
  importRdf(rdf, opts = {}) {
165
- const { format = "ntriples", baseIri, graphUri, blankNodeScope, batch, strict, observedAt, resourceType, edgeIdempotency, ...request } = opts;
165
+ const { format = "ntriples", baseIri, graphUri, blankNodeScope, batch, strict, observedAt, resourceType, edgeIdempotency, build, ...request } = opts;
166
166
  return this.client.request("POST", "/v1/graph/import/rdf", {
167
167
  ...request,
168
168
  idempotencyKey: request.idempotencyKey ?? this.client.idempotencyKey("import-rdf"),
@@ -183,6 +183,7 @@ export class FactsNamespace {
183
183
  blank_node_scope: blankNodeScope,
184
184
  resource_type: resourceType,
185
185
  edge_idempotency: edgeIdempotency,
186
+ build,
186
187
  },
187
188
  });
188
189
  }
@@ -261,8 +262,7 @@ export class EntityNamespace {
261
262
  }
262
263
  /**
263
264
  * Return the exact type cardinality and a bounded deterministic sample from
264
- * the ranged adjacency family pinned by the published generation. A missing
265
- * family fails closed rather than falling back to an exhaustive scan.
265
+ * the Base family pinned by the published generation.
266
266
  */
267
267
  sample(opts) {
268
268
  return this.client.entityTypeSample(opts);
package/dist/schema.d.ts CHANGED
@@ -337,7 +337,7 @@ export interface paths {
337
337
  path?: never;
338
338
  cookie?: never;
339
339
  };
340
- /** Bounded class sample from the ranged adjacency index */
340
+ /** Bounded class sample from the published Base family */
341
341
  get: operations["get_v1_graph_entities_sample"];
342
342
  put?: never;
343
343
  post?: never;
@@ -605,23 +605,6 @@ export interface paths {
605
605
  patch?: never;
606
606
  trace?: never;
607
607
  };
608
- "/v1/graph/semantic-traverse": {
609
- parameters: {
610
- query?: never;
611
- header?: never;
612
- path?: never;
613
- cookie?: never;
614
- };
615
- get?: never;
616
- put?: never;
617
- /** Resolve a query to seeds, then return bounded paths */
618
- post: operations["post_v1_graph_semantic_traverse"];
619
- delete?: never;
620
- options?: never;
621
- head?: never;
622
- patch?: never;
623
- trace?: never;
624
- };
625
608
  "/v1/graph/summary": {
626
609
  parameters: {
627
610
  query?: never;
@@ -639,24 +622,6 @@ export interface paths {
639
622
  patch?: never;
640
623
  trace?: never;
641
624
  };
642
- "/v1/graph/traverse": {
643
- parameters: {
644
- query?: never;
645
- header?: never;
646
- path?: never;
647
- cookie?: never;
648
- };
649
- /** Bounded graph traversal (query-string convenience) */
650
- get: operations["get_v1_graph_traverse"];
651
- put?: never;
652
- /** Bounded graph traversal */
653
- post: operations["post_v1_graph_traverse"];
654
- delete?: never;
655
- options?: never;
656
- head?: never;
657
- patch?: never;
658
- trace?: never;
659
- };
660
625
  "/v1/graphs": {
661
626
  parameters: {
662
627
  query?: never;
@@ -1179,7 +1144,7 @@ export interface paths {
1179
1144
  };
1180
1145
  get?: never;
1181
1146
  put?: never;
1182
- /** Basic-graph-pattern (BGP) analytic query over the permutation view */
1147
+ /** Basic-graph-pattern (BGP) analytic query over the published RDF dataset */
1183
1148
  post: operations["post_v1_query_analytics"];
1184
1149
  delete?: never;
1185
1150
  options?: never;
@@ -1807,7 +1772,7 @@ export interface components {
1807
1772
  /**
1808
1773
  * @description A basic-graph-pattern query: a conjunction of triple patterns evaluated over
1809
1774
  * the graph's current edges (joined on shared variables), served from the
1810
- * object-storage permutation view.
1775
+ * conformant published RDF dataset.
1811
1776
  */
1812
1777
  AnalyticQueryRequest: {
1813
1778
  /**
@@ -2430,6 +2395,22 @@ export interface components {
2430
2395
  observations: components["schemas"]["ObservationRow"][];
2431
2396
  outgoing: components["schemas"]["GraphEdgeRow"][];
2432
2397
  snapshot: components["schemas"]["SnapshotView"];
2398
+ truncation?: null | components["schemas"]["EntityDetailTruncation"];
2399
+ };
2400
+ /**
2401
+ * @description Which of an entity read's degree-proportional collections were cut, and by
2402
+ * how much. Only the cut collections appear.
2403
+ */
2404
+ EntityDetailTruncation: {
2405
+ edges?: null | components["schemas"]["TruncatedCollection"];
2406
+ history?: null | components["schemas"]["TruncatedCollection"];
2407
+ observations?: null | components["schemas"]["TruncatedCollection"];
2408
+ /**
2409
+ * @description True when the request's object-read budget stopped the read before its
2410
+ * row caps did, so the counts below are floors for a different reason:
2411
+ * the read gave up rather than the collection being full.
2412
+ */
2413
+ truncated_by_read_budget?: boolean;
2433
2414
  };
2434
2415
  EntityEmbeddingInput: {
2435
2416
  /**
@@ -2512,7 +2493,6 @@ export interface components {
2512
2493
  };
2513
2494
  EntityId: string;
2514
2495
  EntityMetadataResponse: {
2515
- adjacency_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
2516
2496
  ann_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
2517
2497
  bm25_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
2518
2498
  entity: components["schemas"]["EntityView"];
@@ -2535,25 +2515,43 @@ export interface components {
2535
2515
  as_of_commit_seq?: number | null;
2536
2516
  as_of_valid_time?: string | null;
2537
2517
  entity: components["schemas"]["EntitySelector"];
2518
+ /**
2519
+ * @description Maximum edges returned **per direction**, clamped by the engine to
2520
+ * [`MAX_NEIGHBORHOOD_EDGES_PER_DIRECTION`] and defaulting to
2521
+ * [`DEFAULT_NEIGHBORHOOD_EDGES_PER_DIRECTION`]. Both read paths are scoped
2522
+ * to the entity's degree, but a supernode's degree is itself unbounded, so
2523
+ * this is the backstop that keeps one hub read from costing a serving node
2524
+ * its whole request budget.
2525
+ *
2526
+ * The budget is per-direction rather than shared: a shared one is spent
2527
+ * entirely on whichever direction is walked first, so a hub's out-edges
2528
+ * consume it and the read reports no incoming edges at all.
2529
+ */
2530
+ max_edges_per_direction?: number | null;
2538
2531
  relations?: string[] | null;
2539
2532
  };
2540
2533
  /**
2541
2534
  * @description Result of an entity point lookup: the entity plus its out/in neighborhood.
2542
- * Public reads use adjacency for the published watermark and the same
2543
- * generation's Base family for historical pins; both paths cost the entity's
2544
- * degree rather than the whole graph.
2535
+ * Public reads use the generation's Base family and cost the entity's degree
2536
+ * rather than the whole graph.
2545
2537
  */
2546
2538
  EntityNeighborhoodResponse: {
2547
2539
  entity: components["schemas"]["EntityView"];
2548
2540
  incoming: components["schemas"]["NeighborhoodEdge"][];
2549
2541
  outgoing: components["schemas"]["NeighborhoodEdge"][];
2550
- /**
2551
- * @description True when served directly from the persisted adjacency family. False
2552
- * when an exact historical pin was reduced from the same published
2553
- * generation's Base family.
2554
- */
2542
+ /** @description True when served through immutable ranged Base blocks. */
2555
2543
  served_from_ranged: boolean;
2556
2544
  snapshot: components["schemas"]["SnapshotView"];
2545
+ truncation?: null | components["schemas"]["EntityNeighborhoodTruncation"];
2546
+ };
2547
+ /**
2548
+ * @description Which directions of a neighborhood listing were cut, and by how much. Only
2549
+ * the cut directions appear. The two directions are reported separately
2550
+ * because they are budgeted separately.
2551
+ */
2552
+ EntityNeighborhoodTruncation: {
2553
+ incoming?: null | components["schemas"]["TruncatedCollection"];
2554
+ outgoing?: null | components["schemas"]["TruncatedCollection"];
2557
2555
  };
2558
2556
  /**
2559
2557
  * @description Literal property values to attach to one entity (matched by type + name).
@@ -2638,8 +2636,7 @@ export interface components {
2638
2636
  };
2639
2637
  /**
2640
2638
  * @description Exact class cardinality plus a bounded deterministic sample served from the
2641
- * ranged adjacency meta. `indexed_commit_seq` makes index lag explicit while
2642
- * `snapshot.commit_seq` reports the current graph head.
2639
+ * published Base family. `indexed_commit_seq` makes publication lag explicit.
2643
2640
  */
2644
2641
  EntityTypeSampleResponse: {
2645
2642
  entities: components["schemas"]["EntityTypeSampleRow"][];
@@ -2649,10 +2646,9 @@ export interface components {
2649
2646
  total_count: number;
2650
2647
  };
2651
2648
  /**
2652
- * @description One bounded, index-backed class member for interactive graph exploration.
2653
- * Unlike [`EntityExplorerRow`], this deliberately carries only fields the
2654
- * adjacency build already knows; exhaustive attributes and observation counts
2655
- * remain on the full entity/browse reads.
2649
+ * @description One bounded class member for interactive graph exploration. Unlike
2650
+ * [`EntityExplorerRow`], this deliberately carries only identity and degree;
2651
+ * exhaustive attributes and observation counts remain on full entity reads.
2656
2652
  */
2657
2653
  EntityTypeSampleRow: {
2658
2654
  entity: components["schemas"]["EntityView"];
@@ -2681,8 +2677,6 @@ export interface components {
2681
2677
  /** Format: float */
2682
2678
  weight: number;
2683
2679
  };
2684
- /** @enum {string} */
2685
- ExpansionDirection: "out" | "in" | "both";
2686
2680
  ExportObservationView: {
2687
2681
  created_at_commit: components["schemas"]["CommitSeq"];
2688
2682
  id: components["schemas"]["ObservationId"];
@@ -2935,8 +2929,8 @@ export interface components {
2935
2929
  * is the engine-native form of the query-conditional channel routing validated
2936
2930
  * in the Stage-G ablation (quality-ledger R17) — "documents about X AND in the
2937
2931
  * same group as Y" becomes one snapshot-consistent search rather than a blind
2938
- * list fusion. The neighborhood is computed by a bounded, snapshot-reduced
2939
- * traversal; final candidates are still re-verified against snapshot visibility.
2932
+ * list fusion. The neighborhood is computed from the snapshot-reduced Base
2933
+ * family; final candidates are still re-verified against snapshot visibility.
2940
2934
  */
2941
2935
  GraphAnchor: {
2942
2936
  /** @description The anchor entity to expand from. */
@@ -3243,12 +3237,30 @@ export interface components {
3243
3237
  * structured server logs.
3244
3238
  */
3245
3239
  GraphImportJobFailure: {
3240
+ /**
3241
+ * Format: int32
3242
+ * @description Delivery attempts consumed when the job became terminal.
3243
+ */
3244
+ attempts: number;
3246
3245
  code: string;
3246
+ /**
3247
+ * @description Stable opaque correlation id for server-side logs. It is intentionally
3248
+ * not an object key, worker id, or graph identity.
3249
+ */
3250
+ diagnostic_id: string;
3247
3251
  message: string;
3248
3252
  retryable: boolean;
3253
+ /** @description Last durable low-cardinality stage reached by the worker. */
3254
+ stage: components["schemas"]["GraphImportJobStage"];
3249
3255
  };
3250
3256
  /** @description Bounded progress persisted by an import worker after every grouped commit. */
3251
3257
  GraphImportJobProgress: {
3258
+ /** Format: int64 */
3259
+ active_group_bytes?: number;
3260
+ /** Format: int64 */
3261
+ active_group_index?: number | null;
3262
+ /** Format: int64 */
3263
+ active_group_records?: number;
3252
3264
  /** Format: int64 */
3253
3265
  bytes_processed: number;
3254
3266
  committed_commit_seq?: null | components["schemas"]["CommitSeq"];
@@ -3263,11 +3275,17 @@ export interface components {
3263
3275
  observations: number;
3264
3276
  /** Format: int64 */
3265
3277
  properties: number;
3278
+ stage?: components["schemas"]["GraphImportJobStage"];
3266
3279
  /** Format: int64 */
3267
3280
  triplets: number;
3268
3281
  /** Format: int64 */
3269
3282
  upload_bytes: number;
3270
3283
  };
3284
+ /**
3285
+ * @description Low-cardinality execution stage exposed while a durable import is active.
3286
+ * @enum {string}
3287
+ */
3288
+ GraphImportJobStage: "queued" | "reading_payload" | "committing_group" | "persisting_checkpoint" | "enqueueing_publication" | "completed";
3271
3289
  /**
3272
3290
  * @description Lifecycle of a durable NDJSON import submitted through
3273
3291
  * `POST /v1/graph/import-jobs`.
@@ -3375,7 +3393,6 @@ export interface components {
3375
3393
  targets: components["schemas"]["AnnTargetKind"][];
3376
3394
  };
3377
3395
  GraphMetadataResponse: {
3378
- adjacency_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
3379
3396
  ann_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
3380
3397
  bm25_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
3381
3398
  graph: components["schemas"]["GraphKey"];
@@ -3383,11 +3400,16 @@ export interface components {
3383
3400
  head_generation: number;
3384
3401
  /**
3385
3402
  * @description One-shot "has the published generation caught up to head?" signal, so a
3386
- * bulk-import caller does not hand-assemble the three-field predicate.
3387
- * `Some(true)` iff both the BM25 and ANN persisted runs are current to the
3388
- * head commit; `Some(false)` when publication is still
3389
- * pending or absent; `None` when indexes were not inspected
3390
- * (`include_indexes=false`).
3403
+ * bulk-import caller does not hand-assemble the predicate.
3404
+ * `Some(true)` iff the published generation is served at the head commit;
3405
+ * `Some(false)` when publication is still pending or absent; `None` when
3406
+ * indexes were not inspected (`include_indexes=false`).
3407
+ *
3408
+ * This is a **publication lag** signal, not a statement about index
3409
+ * content. A generation whose BM25/ANN families are published as empty
3410
+ * roots — the steady state when the deployment runs without the search
3411
+ * stack — is caught up while holding no documents. Read
3412
+ * `index_lineage.bm25_empty` / `ann_empty` to tell the two apart.
3391
3413
  */
3392
3414
  index_caught_up?: boolean | null;
3393
3415
  index_lineage?: null | components["schemas"]["IndexLineage"];
@@ -3719,13 +3741,31 @@ export interface components {
3719
3741
  };
3720
3742
  /** @description Typed convergence view over the persisted serving families. */
3721
3743
  IndexLineage: {
3722
- adjacency_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
3744
+ /**
3745
+ * @description True when the published ANN family is an empty root. Same meaning as
3746
+ * `bm25_empty`.
3747
+ */
3748
+ ann_empty?: boolean;
3723
3749
  ann_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
3750
+ /**
3751
+ * @description True when the published BM25 family is an empty root — the deployment
3752
+ * runs without the search stack
3753
+ * (`LBB_PUBLISH_EMPTY_INDEX_FAMILIES`), or the corpus genuinely has no
3754
+ * indexable documents at this watermark. Either way the family is current
3755
+ * *and* contains nothing, so a health check must not read `caught_up`
3756
+ * alone as "search is serving results".
3757
+ */
3758
+ bm25_empty?: boolean;
3724
3759
  bm25_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
3760
+ /**
3761
+ * @description Both families are published at the head commit. This is a *publication
3762
+ * lag* signal — it says the derived families have caught up with graph
3763
+ * truth, not that they hold data. An empty family is caught up.
3764
+ */
3725
3765
  caught_up: boolean;
3726
3766
  head_commit_seq: components["schemas"]["CommitSeq"];
3727
3767
  /**
3728
- * @description Content identity of the head generation plus the exact three manifest
3768
+ * @description Content identity of the head generation plus the exact manifest
3729
3769
  * views observed while constructing this response.
3730
3770
  */
3731
3771
  manifest_view_token: string;
@@ -3736,7 +3776,7 @@ export interface components {
3736
3776
  * @description One of the index families referenced by an atomic published read root.
3737
3777
  * @enum {string}
3738
3778
  */
3739
- IndexVisibilityFamily: "base" | "rdf" | "bm25" | "ann" | "adjacency";
3779
+ IndexVisibilityFamily: "base" | "rdf" | "bm25" | "ann";
3740
3780
  /**
3741
3781
  * @description A single inference rule (SHACL-AF `sh:TripleRule` shape): a BGP `body` (the
3742
3782
  * condition / `WHERE`) and a `head` triple template instantiated once per
@@ -4013,15 +4053,6 @@ export interface components {
4013
4053
  /** @enum {string} */
4014
4054
  kind: "temporal_state";
4015
4055
  relation: string;
4016
- } | {
4017
- from: components["schemas"]["EntitySelector"];
4018
- /** @enum {string} */
4019
- kind: "path";
4020
- /** Format: int32 */
4021
- max_hops: number;
4022
- relations?: string[] | null;
4023
- should_exist: boolean;
4024
- to: components["schemas"]["EntitySelector"];
4025
4056
  };
4026
4057
  ModelDataLineage: {
4027
4058
  /** Format: int64 */
@@ -4233,11 +4264,9 @@ export interface components {
4233
4264
  snapshot: components["schemas"]["SnapshotView"];
4234
4265
  };
4235
4266
  /**
4236
- * @description One current-edge projection touching the queried entity, materialized from
4237
- * the entity's own adjacency slice (peer stub + relation + valid time). Unlike
4267
+ * @description One current-edge projection touching the queried entity. Unlike
4238
4268
  * `StateEntry`/`TripletView` it carries no `previous`/`evidence`/single
4239
- * `edge_event_id`, because the ranged adjacency run does not store them — so
4240
- * the ranged and snapshot code paths produce identical edges.
4269
+ * `edge_event_id`, keeping the point-read representation compact.
4241
4270
  */
4242
4271
  NeighborhoodEdge: {
4243
4272
  /** Format: float */
@@ -4794,12 +4823,6 @@ export interface components {
4794
4823
  /** @description Count of surface terms (labels/synonyms) in the semantic layer. */
4795
4824
  term_count?: number;
4796
4825
  };
4797
- PathResult: {
4798
- edges: components["schemas"]["EdgeEventId"][];
4799
- nodes: components["schemas"]["EntityView"][];
4800
- /** Format: float */
4801
- score: number;
4802
- };
4803
4826
  /**
4804
4827
  * @description `GET /v1/models/planner-dataset` — the planner fine-tune's training feed:
4805
4828
  * accepted/corrected ask feedback joined to its traces (signals ≤ the split
@@ -4992,6 +5015,7 @@ export interface components {
4992
5015
  * @description That family's persisted root-codec version.
4993
5016
  */
4994
5017
  root_format_version: number;
5018
+ served_at_seq?: null | components["schemas"]["CommitSeq"];
4995
5019
  target_hash?: string | null;
4996
5020
  };
4997
5021
  /**
@@ -5008,6 +5032,7 @@ export interface components {
5008
5032
  /** Format: int64 */
5009
5033
  generation?: number | null;
5010
5034
  graph: components["schemas"]["GraphKey"];
5035
+ min_family_served_at_seq?: null | components["schemas"]["CommitSeq"];
5011
5036
  /** Format: int64 */
5012
5037
  predecessor_generation?: number | null;
5013
5038
  /** Format: int32 */
@@ -5082,43 +5107,6 @@ export interface components {
5082
5107
  */
5083
5108
  rerank_raw_bytes_fetched?: number;
5084
5109
  };
5085
- RangedTraverseStats: {
5086
- /** Format: int64 */
5087
- block_byte_budget: number;
5088
- /** Format: int64 */
5089
- block_bytes_fetched: number;
5090
- block_read_budget: number;
5091
- /** Format: int64 */
5092
- blocks_fetched: number;
5093
- /**
5094
- * Format: int64
5095
- * @description Backend ranged GETs saved by P27 coalescing: each value is one ranged
5096
- * read that pre-warmed several byte-contiguous slices at once.
5097
- */
5098
- coalesced_range_gets?: number;
5099
- /** Format: int64 */
5100
- decoded_block_bytes_retained: number;
5101
- /** Format: int64 */
5102
- directory_blocks_fetched?: number;
5103
- /**
5104
- * Format: int64
5105
- * @description Cumulative-fetched-bytes budget (P27); 0 = disabled. Distinct from
5106
- * `block_byte_budget`, which caps *resident* decoded bytes.
5107
- */
5108
- fetched_byte_budget?: number;
5109
- manifest_key: string;
5110
- /** Format: int64 */
5111
- meta_bytes_fetched: number;
5112
- /** Format: int64 */
5113
- payload_slices_fetched?: number;
5114
- /** Format: int64 */
5115
- shard_cache_hits: number;
5116
- /** Format: int64 */
5117
- topology_slices_fetched?: number;
5118
- truncated_by_block_budget: boolean;
5119
- truncated_by_block_byte_budget: boolean;
5120
- truncated_by_fetched_byte_budget?: boolean;
5121
- };
5122
5110
  /**
5123
5111
  * @description A page-region provenance anchor on a fact's evidence (region provenance
5124
5112
  * §4.1/§6.4(b) BYO import): where the evidence appears in the source
@@ -5884,7 +5872,6 @@ export interface components {
5884
5872
  };
5885
5873
  SearchFilterValue: null | boolean | number | string;
5886
5874
  SearchHitContributions: {
5887
- adjacency_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
5888
5875
  bm25: components["schemas"]["SearchChannelContribution"];
5889
5876
  bm25_indexed_commit_seq?: null | components["schemas"]["CommitSeq"];
5890
5877
  bm25_manifest_key?: string | null;
@@ -6217,64 +6204,6 @@ export interface components {
6217
6204
  };
6218
6205
  /** @enum {string} */
6219
6206
  SemanticSearchTarget: "concepts" | "entities" | "assertions" | "paths" | "observations" | "subgraph";
6220
- SemanticTraverseExplain: {
6221
- bm25_candidates: number;
6222
- /** Format: int32 */
6223
- graph_hops: number;
6224
- paths_returned: number;
6225
- search_mode: string;
6226
- seeds_considered: number;
6227
- seeds_selected: number;
6228
- vector_candidates: number;
6229
- };
6230
- SemanticTraverseRequest: {
6231
- direction: components["schemas"]["ExpansionDirection"];
6232
- explain: boolean;
6233
- /**
6234
- * @description Entity properties to project for every returned seed and path node.
6235
- * Projections are reduced from the same snapshot used for authorization
6236
- * and traversal. Requesting fields routes the operation through the exact
6237
- * snapshot path rather than ranged adjacency.
6238
- */
6239
- fields?: string[];
6240
- /**
6241
- * Format: int64
6242
- * @description Decoded adjacency-block working-set byte budget for persisted-vector
6243
- * ranged expansion. Defaults to the server/store budget. A request may
6244
- * lower the budget, but not raise it.
6245
- */
6246
- max_block_bytes?: number | null;
6247
- max_frontier_entities: number;
6248
- /** Format: int32 */
6249
- max_hops: number;
6250
- max_paths: number;
6251
- /** Format: float */
6252
- min_confidence?: number | null;
6253
- /** Format: float */
6254
- min_seed_score?: number | null;
6255
- ontology?: null | components["schemas"]["OntologySearchOptions"];
6256
- ontology_constraints?: null | components["schemas"]["OntologySearchConstraints"];
6257
- query: string;
6258
- relations?: string[] | null;
6259
- search?: null | components["schemas"]["SearchEngineOptions"];
6260
- seed_top_k: number;
6261
- };
6262
- SemanticTraverseResponse: {
6263
- explain?: null | components["schemas"]["SemanticTraverseExplain"];
6264
- paths: components["schemas"]["PathResult"][];
6265
- /**
6266
- * @description Requested properties keyed by entity id for every returned seed and
6267
- * path node. Empty when `fields` was omitted.
6268
- */
6269
- projected_nodes?: {
6270
- [key: string]: {
6271
- [key: string]: unknown;
6272
- };
6273
- };
6274
- ranged?: null | components["schemas"]["RangedTraverseStats"];
6275
- seeds: components["schemas"]["ScoredEntityView"][];
6276
- snapshot: components["schemas"]["SnapshotView"];
6277
- };
6278
6207
  /**
6279
6208
  * @description Set (or clear) the enforced allowed-value set on an **existing** property
6280
6209
  * field — the tightening path for a field already in use (e.g. constrain
@@ -6312,7 +6241,7 @@ export interface components {
6312
6241
  };
6313
6242
  /**
6314
6243
  * @description Set (or replace) a relation's inverse-relation display name, enabling
6315
- * one-hop reverse traversal (e.g. `PHASE_OF` for `HAS_PHASE`). Metadata
6244
+ * one-hop reverse lookup (e.g. `PHASE_OF` for `HAS_PHASE`). Metadata
6316
6245
  * only — never touches stored edges.
6317
6246
  */
6318
6247
  SetRelationInverseOp: {
@@ -6390,7 +6319,7 @@ export interface components {
6390
6319
  unique?: components["schemas"]["ShaclUnique"][];
6391
6320
  };
6392
6321
  /**
6393
- * @description A SHACL property path expression, evaluated as a bounded graph traversal from
6322
+ * @description A SHACL property path expression, evaluated by the bounded RDF path engine from
6394
6323
  * the focus node to a set of value-node entities. Mirrors SHACL's path grammar:
6395
6324
  * a single predicate, an inverse, a sequence, an alternative, and the
6396
6325
  * `*`/`+`/`?` closures.
@@ -6763,8 +6692,7 @@ export interface components {
6763
6692
  /**
6764
6693
  * @description The reason a read is `stale`. `"storage_degraded"` (F2),
6765
6694
  * `"eventual_consistency"` (served from the immutable published
6766
- * generation) or `"adjacency_coverage"` (served from that generation's
6767
- * bounded ranged-adjacency snapshot); omitted when not stale.
6695
+ * generation); omitted when not stale.
6768
6696
  */
6769
6697
  stale_reason?: string | null;
6770
6698
  };
@@ -6918,7 +6846,7 @@ export interface components {
6918
6846
  } | "null";
6919
6847
  /**
6920
6848
  * @description A SPARQL-subset SELECT/ASK query: a conjunctive basic graph pattern (the
6921
- * WHERE) evaluated over the object-storage permutation view, with variable
6849
+ * WHERE) evaluated over the conformant published RDF dataset, with variable
6922
6850
  * projection, DISTINCT, and LIMIT/OFFSET. Structured-request-first — the SPARQL
6923
6851
  * text syntax is a later addition behind a dialect field, and FILTER plus
6924
6852
  * aggregation arrive in later milestones.
@@ -7444,62 +7372,6 @@ export interface components {
7444
7372
  target: components["schemas"]["EntityView"];
7445
7373
  valid_time: components["schemas"]["ValidTime"];
7446
7374
  };
7447
- TraverseRequest: {
7448
- /**
7449
- * Format: int64
7450
- * @description Snapshot pin: reproduce the graph state as of this `commit_seq`, hiding
7451
- * any event committed later. Public serving reduces the bounded edge
7452
- * domains from the Base family in the one pinned published generation;
7453
- * it never discovers or assembles another snapshot. Historical entity
7454
- * filters/field projection fail explicitly because Base does not carry a
7455
- * point-indexed entity-mutation history. Omit for the latest snapshot.
7456
- */
7457
- as_of_commit_seq?: number | null;
7458
- as_of_valid_time?: string | null;
7459
- direction: components["schemas"]["ExpansionDirection"];
7460
- /**
7461
- * @description Entity fields projected for every seed/intermediate/terminal node in
7462
- * `TraverseResponse.projected_nodes`.
7463
- */
7464
- fields?: string[];
7465
- filter?: null | components["schemas"]["SearchFilterExpr"];
7466
- /**
7467
- * Format: int64
7468
- * @description Decoded adjacency-block working-set byte budget for the ranged path.
7469
- * Defaults to the server/store budget. A request may lower the budget,
7470
- * but not raise it. Ignored on the bounded Base-family reducer path.
7471
- */
7472
- max_block_bytes?: number | null;
7473
- /**
7474
- * @description Object-read budget for the ranged adjacency path; defaults to a value
7475
- * derived from `max_frontier_entities`. Ignored on the bounded Base-family
7476
- * reducer path.
7477
- */
7478
- max_block_reads?: number | null;
7479
- max_frontier_entities: number;
7480
- /** Format: int32 */
7481
- max_hops: number;
7482
- max_paths: number;
7483
- /** Format: float */
7484
- min_confidence?: number | null;
7485
- relations?: string[] | null;
7486
- start: components["schemas"]["EntitySelector"];
7487
- };
7488
- TraverseResponse: {
7489
- paths: components["schemas"]["PathResult"][];
7490
- /**
7491
- * @description Same-snapshot field evidence for every node appearing in `paths`, keyed
7492
- * by stable entity-id hex. Present as an empty map when no fields were
7493
- * requested.
7494
- */
7495
- projected_nodes?: {
7496
- [key: string]: {
7497
- [key: string]: unknown;
7498
- };
7499
- };
7500
- ranged?: null | components["schemas"]["RangedTraverseStats"];
7501
- snapshot: components["schemas"]["SnapshotView"];
7502
- };
7503
7375
  TripletCommitFile: {
7504
7376
  edge_idempotency?: null | components["schemas"]["EdgeIdempotencyMode"];
7505
7377
  /**
@@ -7556,6 +7428,17 @@ export interface components {
7556
7428
  target: components["schemas"]["EntityView"];
7557
7429
  valid_time: components["schemas"]["ValidTime"];
7558
7430
  };
7431
+ /** @description One capped collection: how many rows came back out of how many the read saw. */
7432
+ TruncatedCollection: {
7433
+ /** @description Rows present in this response. */
7434
+ returned: number;
7435
+ /**
7436
+ * @description Rows the bounded read observed. This is a **lower bound**: establishing
7437
+ * the true total means walking the entity's whole degree, which is the
7438
+ * cost the cap exists to avoid. Render it as "returned of at least total".
7439
+ */
7440
+ total_observed: number;
7441
+ };
7559
7442
  TypedAskFeedbackV1: {
7560
7443
  ask_id: string;
7561
7444
  note?: string | null;
@@ -10987,7 +10870,7 @@ export interface operations {
10987
10870
  type?: string;
10988
10871
  /** @description Max sampled rows (up to 128) */
10989
10872
  limit?: string;
10990
- /** @description Accepted as strong or eventual; adjacency serves the exact immutable base pinned by the published generation without inspecting the live WAL in either mode */
10873
+ /** @description Accepted as strong or eventual; Base serves the immutable generation without inspecting the live WAL */
10991
10874
  consistency?: string;
10992
10875
  };
10993
10876
  header?: {
@@ -11421,6 +11304,8 @@ export interface operations {
11421
11304
  relations?: string;
11422
11305
  /** @description RFC3339 as-of timestamp */
11423
11306
  as_of?: string;
11307
+ /** @description Maximum edges per direction (default 1000, maximum 10000) */
11308
+ edges?: string;
11424
11309
  };
11425
11310
  header?: {
11426
11311
  /** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
@@ -12123,8 +12008,6 @@ export interface operations {
12123
12008
  strict?: string;
12124
12009
  /** @description RFC3339 backfill instant stamped on every batch */
12125
12010
  observed_at?: string;
12126
- /** @description Durably enqueue one atomic published-generation build after the final batch */
12127
- publish?: string;
12128
12011
  };
12129
12012
  header?: {
12130
12013
  /** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
@@ -12703,7 +12586,7 @@ export interface operations {
12703
12586
  graph?: string;
12704
12587
  /** @description Branch name (default `main`) */
12705
12588
  branch?: string;
12706
- /** @description RDF statements per internal commit (default 1000, clamped 1-1000000) */
12589
+ /** @description RDF statements per internal commit (default 1000000, the cap: one commit per fully-buffered request; clamped 1-1000000) */
12707
12590
  batch?: string;
12708
12591
  /** @description Abort on the first malformed RDF parse error instead of reporting it */
12709
12592
  strict?: string;
@@ -12721,8 +12604,8 @@ export interface operations {
12721
12604
  blank_node_scope?: string;
12722
12605
  /** @description Entity type name for imported RDF resources (default Resource) */
12723
12606
  resource_type?: string;
12724
- /** @description Durably enqueue one atomic published-generation build after the final batch */
12725
- publish?: string;
12607
+ /** @description Set false to defer the published-generation enqueue; send build=false on every chunk except the last of a chunked bulk stream. Default true. */
12608
+ build?: string;
12726
12609
  };
12727
12610
  header?: {
12728
12611
  /** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
@@ -13698,7 +13581,7 @@ export interface operations {
13698
13581
  };
13699
13582
  };
13700
13583
  };
13701
- post_v1_graph_semantic_traverse: {
13584
+ get_v1_graph_summary: {
13702
13585
  parameters: {
13703
13586
  query?: {
13704
13587
  /** @description Graph name (default `main`) */
@@ -13709,153 +13592,11 @@ export interface operations {
13709
13592
  header?: {
13710
13593
  /** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
13711
13594
  "Lbb-Version"?: string;
13712
- /** @description Stable client-generated key for safely retrying mutations and supervision writes. */
13713
- "Idempotency-Key"?: string;
13714
13595
  };
13715
13596
  path?: never;
13716
13597
  cookie?: never;
13717
13598
  };
13718
- requestBody: {
13719
- content: {
13720
- "application/json": components["schemas"]["SemanticTraverseRequest"];
13721
- };
13722
- };
13723
- responses: {
13724
- /** @description OK */
13725
- 200: {
13726
- headers: {
13727
- /** @description API contract version used for the response */
13728
- "Lbb-Version"?: string;
13729
- /** @description Request correlation id */
13730
- "X-Request-Id"?: string;
13731
- [name: string]: unknown;
13732
- };
13733
- content: {
13734
- "application/json": components["schemas"]["SemanticTraverseResponse"];
13735
- };
13736
- };
13737
- /** @description Bad request */
13738
- 400: {
13739
- headers: {
13740
- /** @description API contract version used for the response */
13741
- "Lbb-Version"?: string;
13742
- /** @description Request correlation id */
13743
- "X-Request-Id"?: string;
13744
- [name: string]: unknown;
13745
- };
13746
- content: {
13747
- "application/json": components["schemas"]["LbbErrorEnvelope"];
13748
- };
13749
- };
13750
- /** @description Unauthorized */
13751
- 401: {
13752
- headers: {
13753
- /** @description API contract version used for the response */
13754
- "Lbb-Version"?: string;
13755
- /** @description Request correlation id */
13756
- "X-Request-Id"?: string;
13757
- [name: string]: unknown;
13758
- };
13759
- content: {
13760
- "application/json": components["schemas"]["LbbErrorEnvelope"];
13761
- };
13762
- };
13763
- /** @description Forbidden */
13764
- 403: {
13765
- headers: {
13766
- /** @description API contract version used for the response */
13767
- "Lbb-Version"?: string;
13768
- /** @description Request correlation id */
13769
- "X-Request-Id"?: string;
13770
- [name: string]: unknown;
13771
- };
13772
- content: {
13773
- "application/json": components["schemas"]["LbbErrorEnvelope"];
13774
- };
13775
- };
13776
- /** @description Not found */
13777
- 404: {
13778
- headers: {
13779
- /** @description API contract version used for the response */
13780
- "Lbb-Version"?: string;
13781
- /** @description Request correlation id */
13782
- "X-Request-Id"?: string;
13783
- [name: string]: unknown;
13784
- };
13785
- content: {
13786
- "application/json": components["schemas"]["LbbErrorEnvelope"];
13787
- };
13788
- };
13789
- /** @description Conflict */
13790
- 409: {
13791
- headers: {
13792
- /** @description API contract version used for the response */
13793
- "Lbb-Version"?: string;
13794
- /** @description Request correlation id */
13795
- "X-Request-Id"?: string;
13796
- [name: string]: unknown;
13797
- };
13798
- content: {
13799
- "application/json": components["schemas"]["LbbErrorEnvelope"];
13800
- };
13801
- };
13802
- /** @description Rate limit exceeded */
13803
- 429: {
13804
- headers: {
13805
- /** @description API contract version used for the response */
13806
- "Lbb-Version"?: string;
13807
- /** @description Request correlation id */
13808
- "X-Request-Id"?: string;
13809
- [name: string]: unknown;
13810
- };
13811
- content: {
13812
- "application/json": components["schemas"]["LbbErrorEnvelope"];
13813
- };
13814
- };
13815
- /** @description Internal server error */
13816
- 500: {
13817
- headers: {
13818
- /** @description API contract version used for the response */
13819
- "Lbb-Version"?: string;
13820
- /** @description Request correlation id */
13821
- "X-Request-Id"?: string;
13822
- [name: string]: unknown;
13823
- };
13824
- content: {
13825
- "application/json": components["schemas"]["LbbErrorEnvelope"];
13826
- };
13827
- };
13828
- /** @description Service unavailable */
13829
- 503: {
13830
- headers: {
13831
- /** @description API contract version used for the response */
13832
- "Lbb-Version"?: string;
13833
- /** @description Request correlation id */
13834
- "X-Request-Id"?: string;
13835
- [name: string]: unknown;
13836
- };
13837
- content: {
13838
- "application/json": components["schemas"]["LbbErrorEnvelope"];
13839
- };
13840
- };
13841
- };
13842
- };
13843
- get_v1_graph_summary: {
13844
- parameters: {
13845
- query?: {
13846
- /** @description Graph name (default `main`) */
13847
- graph?: string;
13848
- /** @description Branch name (default `main`) */
13849
- branch?: string;
13850
- };
13851
- header?: {
13852
- /** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
13853
- "Lbb-Version"?: string;
13854
- };
13855
- path?: never;
13856
- cookie?: never;
13857
- };
13858
- requestBody?: never;
13599
+ requestBody?: never;
13859
13600
  responses: {
13860
13601
  /** @description OK */
13861
13602
  200: {
@@ -13976,290 +13717,6 @@ export interface operations {
13976
13717
  };
13977
13718
  };
13978
13719
  };
13979
- get_v1_graph_traverse: {
13980
- parameters: {
13981
- query?: {
13982
- /** @description Graph name (default `main`) */
13983
- graph?: string;
13984
- /** @description Branch name (default `main`) */
13985
- branch?: string;
13986
- /** @description Start entity id */
13987
- id?: string;
13988
- /** @description out, in, or both */
13989
- direction?: string;
13990
- /** @description Hop budget */
13991
- max_hops?: string;
13992
- };
13993
- header?: {
13994
- /** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
13995
- "Lbb-Version"?: string;
13996
- };
13997
- path?: never;
13998
- cookie?: never;
13999
- };
14000
- requestBody?: never;
14001
- responses: {
14002
- /** @description OK */
14003
- 200: {
14004
- headers: {
14005
- /** @description API contract version used for the response */
14006
- "Lbb-Version"?: string;
14007
- /** @description Request correlation id */
14008
- "X-Request-Id"?: string;
14009
- [name: string]: unknown;
14010
- };
14011
- content: {
14012
- "application/json": components["schemas"]["TraverseResponse"];
14013
- };
14014
- };
14015
- /** @description Bad request */
14016
- 400: {
14017
- headers: {
14018
- /** @description API contract version used for the response */
14019
- "Lbb-Version"?: string;
14020
- /** @description Request correlation id */
14021
- "X-Request-Id"?: string;
14022
- [name: string]: unknown;
14023
- };
14024
- content: {
14025
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14026
- };
14027
- };
14028
- /** @description Unauthorized */
14029
- 401: {
14030
- headers: {
14031
- /** @description API contract version used for the response */
14032
- "Lbb-Version"?: string;
14033
- /** @description Request correlation id */
14034
- "X-Request-Id"?: string;
14035
- [name: string]: unknown;
14036
- };
14037
- content: {
14038
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14039
- };
14040
- };
14041
- /** @description Forbidden */
14042
- 403: {
14043
- headers: {
14044
- /** @description API contract version used for the response */
14045
- "Lbb-Version"?: string;
14046
- /** @description Request correlation id */
14047
- "X-Request-Id"?: string;
14048
- [name: string]: unknown;
14049
- };
14050
- content: {
14051
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14052
- };
14053
- };
14054
- /** @description Not found */
14055
- 404: {
14056
- headers: {
14057
- /** @description API contract version used for the response */
14058
- "Lbb-Version"?: string;
14059
- /** @description Request correlation id */
14060
- "X-Request-Id"?: string;
14061
- [name: string]: unknown;
14062
- };
14063
- content: {
14064
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14065
- };
14066
- };
14067
- /** @description Conflict */
14068
- 409: {
14069
- headers: {
14070
- /** @description API contract version used for the response */
14071
- "Lbb-Version"?: string;
14072
- /** @description Request correlation id */
14073
- "X-Request-Id"?: string;
14074
- [name: string]: unknown;
14075
- };
14076
- content: {
14077
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14078
- };
14079
- };
14080
- /** @description Rate limit exceeded */
14081
- 429: {
14082
- headers: {
14083
- /** @description API contract version used for the response */
14084
- "Lbb-Version"?: string;
14085
- /** @description Request correlation id */
14086
- "X-Request-Id"?: string;
14087
- [name: string]: unknown;
14088
- };
14089
- content: {
14090
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14091
- };
14092
- };
14093
- /** @description Internal server error */
14094
- 500: {
14095
- headers: {
14096
- /** @description API contract version used for the response */
14097
- "Lbb-Version"?: string;
14098
- /** @description Request correlation id */
14099
- "X-Request-Id"?: string;
14100
- [name: string]: unknown;
14101
- };
14102
- content: {
14103
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14104
- };
14105
- };
14106
- /** @description Service unavailable */
14107
- 503: {
14108
- headers: {
14109
- /** @description API contract version used for the response */
14110
- "Lbb-Version"?: string;
14111
- /** @description Request correlation id */
14112
- "X-Request-Id"?: string;
14113
- [name: string]: unknown;
14114
- };
14115
- content: {
14116
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14117
- };
14118
- };
14119
- };
14120
- };
14121
- post_v1_graph_traverse: {
14122
- parameters: {
14123
- query?: {
14124
- /** @description Graph name (default `main`) */
14125
- graph?: string;
14126
- /** @description Branch name (default `main`) */
14127
- branch?: string;
14128
- };
14129
- header?: {
14130
- /** @description API contract version to pin. Use `2026-07-23` for this beta-breaking shape. */
14131
- "Lbb-Version"?: string;
14132
- /** @description Stable client-generated key for safely retrying mutations and supervision writes. */
14133
- "Idempotency-Key"?: string;
14134
- };
14135
- path?: never;
14136
- cookie?: never;
14137
- };
14138
- requestBody: {
14139
- content: {
14140
- "application/json": components["schemas"]["TraverseRequest"];
14141
- };
14142
- };
14143
- responses: {
14144
- /** @description OK */
14145
- 200: {
14146
- headers: {
14147
- /** @description API contract version used for the response */
14148
- "Lbb-Version"?: string;
14149
- /** @description Request correlation id */
14150
- "X-Request-Id"?: string;
14151
- [name: string]: unknown;
14152
- };
14153
- content: {
14154
- "application/json": components["schemas"]["TraverseResponse"];
14155
- };
14156
- };
14157
- /** @description Bad request */
14158
- 400: {
14159
- headers: {
14160
- /** @description API contract version used for the response */
14161
- "Lbb-Version"?: string;
14162
- /** @description Request correlation id */
14163
- "X-Request-Id"?: string;
14164
- [name: string]: unknown;
14165
- };
14166
- content: {
14167
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14168
- };
14169
- };
14170
- /** @description Unauthorized */
14171
- 401: {
14172
- headers: {
14173
- /** @description API contract version used for the response */
14174
- "Lbb-Version"?: string;
14175
- /** @description Request correlation id */
14176
- "X-Request-Id"?: string;
14177
- [name: string]: unknown;
14178
- };
14179
- content: {
14180
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14181
- };
14182
- };
14183
- /** @description Forbidden */
14184
- 403: {
14185
- headers: {
14186
- /** @description API contract version used for the response */
14187
- "Lbb-Version"?: string;
14188
- /** @description Request correlation id */
14189
- "X-Request-Id"?: string;
14190
- [name: string]: unknown;
14191
- };
14192
- content: {
14193
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14194
- };
14195
- };
14196
- /** @description Not found */
14197
- 404: {
14198
- headers: {
14199
- /** @description API contract version used for the response */
14200
- "Lbb-Version"?: string;
14201
- /** @description Request correlation id */
14202
- "X-Request-Id"?: string;
14203
- [name: string]: unknown;
14204
- };
14205
- content: {
14206
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14207
- };
14208
- };
14209
- /** @description Conflict */
14210
- 409: {
14211
- headers: {
14212
- /** @description API contract version used for the response */
14213
- "Lbb-Version"?: string;
14214
- /** @description Request correlation id */
14215
- "X-Request-Id"?: string;
14216
- [name: string]: unknown;
14217
- };
14218
- content: {
14219
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14220
- };
14221
- };
14222
- /** @description Rate limit exceeded */
14223
- 429: {
14224
- headers: {
14225
- /** @description API contract version used for the response */
14226
- "Lbb-Version"?: string;
14227
- /** @description Request correlation id */
14228
- "X-Request-Id"?: string;
14229
- [name: string]: unknown;
14230
- };
14231
- content: {
14232
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14233
- };
14234
- };
14235
- /** @description Internal server error */
14236
- 500: {
14237
- headers: {
14238
- /** @description API contract version used for the response */
14239
- "Lbb-Version"?: string;
14240
- /** @description Request correlation id */
14241
- "X-Request-Id"?: string;
14242
- [name: string]: unknown;
14243
- };
14244
- content: {
14245
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14246
- };
14247
- };
14248
- /** @description Service unavailable */
14249
- 503: {
14250
- headers: {
14251
- /** @description API contract version used for the response */
14252
- "Lbb-Version"?: string;
14253
- /** @description Request correlation id */
14254
- "X-Request-Id"?: string;
14255
- [name: string]: unknown;
14256
- };
14257
- content: {
14258
- "application/json": components["schemas"]["LbbErrorEnvelope"];
14259
- };
14260
- };
14261
- };
14262
- };
14263
13720
  get_v1_graphs: {
14264
13721
  parameters: {
14265
13722
  query?: {
package/dist/types.d.ts CHANGED
@@ -55,6 +55,12 @@ export interface RdfImportOptions {
55
55
  observedAt?: string;
56
56
  resourceType?: string;
57
57
  edgeIdempotency?: "append" | "skip_unchanged";
58
+ /**
59
+ * Set `false` to defer the published-generation enqueue. Send `build: false`
60
+ * on every chunk except the last of a chunked bulk stream, so derived
61
+ * families build once at the final head. Defaults to `true`.
62
+ */
63
+ build?: boolean;
58
64
  idempotencyKey?: string;
59
65
  }
60
66
  export type AttributeFilterOp = "eq" | "ne" | "lt" | "le" | "gt" | "ge";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@littlebigbrain/client",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "TypeScript client for the little big brain graph + hybrid search HTTP API",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {