@f-inverse/jammi-client 0.49.0 → 0.50.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.
Files changed (51) hide show
  1. package/README.md +6 -2
  2. package/dist/gen/jammi/v1/audit_pb.d.ts +1 -1
  3. package/dist/gen/jammi/v1/audit_pb.js +1 -1
  4. package/dist/gen/jammi/v1/catalog_pb.d.ts +306 -29
  5. package/dist/gen/jammi/v1/catalog_pb.d.ts.map +1 -1
  6. package/dist/gen/jammi/v1/catalog_pb.js +65 -37
  7. package/dist/gen/jammi/v1/catalog_pb.js.map +1 -1
  8. package/dist/gen/jammi/v1/embedding_pb.d.ts +401 -43
  9. package/dist/gen/jammi/v1/embedding_pb.d.ts.map +1 -1
  10. package/dist/gen/jammi/v1/embedding_pb.js +128 -9
  11. package/dist/gen/jammi/v1/embedding_pb.js.map +1 -1
  12. package/dist/gen/jammi/v1/error_pb.d.ts +994 -24
  13. package/dist/gen/jammi/v1/error_pb.d.ts.map +1 -1
  14. package/dist/gen/jammi/v1/error_pb.js +184 -24
  15. package/dist/gen/jammi/v1/error_pb.js.map +1 -1
  16. package/dist/gen/jammi/v1/eval_pb.d.ts +1 -1
  17. package/dist/gen/jammi/v1/eval_pb.js +1 -1
  18. package/dist/gen/jammi/v1/gang_pb.d.ts +730 -0
  19. package/dist/gen/jammi/v1/gang_pb.d.ts.map +1 -0
  20. package/dist/gen/jammi/v1/gang_pb.js +268 -0
  21. package/dist/gen/jammi/v1/gang_pb.js.map +1 -0
  22. package/dist/gen/jammi/v1/inference_pb.d.ts +69 -32
  23. package/dist/gen/jammi/v1/inference_pb.d.ts.map +1 -1
  24. package/dist/gen/jammi/v1/inference_pb.js +23 -43
  25. package/dist/gen/jammi/v1/inference_pb.js.map +1 -1
  26. package/dist/gen/jammi/v1/job_pb.d.ts +774 -0
  27. package/dist/gen/jammi/v1/job_pb.d.ts.map +1 -0
  28. package/dist/gen/jammi/v1/job_pb.js +154 -0
  29. package/dist/gen/jammi/v1/job_pb.js.map +1 -0
  30. package/dist/gen/jammi/v1/lifecycle_pb.d.ts +1 -1
  31. package/dist/gen/jammi/v1/lifecycle_pb.js +1 -1
  32. package/dist/gen/jammi/v1/peer_pb.d.ts +325 -0
  33. package/dist/gen/jammi/v1/peer_pb.d.ts.map +1 -0
  34. package/dist/gen/jammi/v1/peer_pb.js +138 -0
  35. package/dist/gen/jammi/v1/peer_pb.js.map +1 -0
  36. package/dist/gen/jammi/v1/pipeline_pb.d.ts +218 -10
  37. package/dist/gen/jammi/v1/pipeline_pb.d.ts.map +1 -1
  38. package/dist/gen/jammi/v1/pipeline_pb.js +57 -11
  39. package/dist/gen/jammi/v1/pipeline_pb.js.map +1 -1
  40. package/dist/gen/jammi/v1/training_pb.d.ts +91 -345
  41. package/dist/gen/jammi/v1/training_pb.d.ts.map +1 -1
  42. package/dist/gen/jammi/v1/training_pb.js +18 -76
  43. package/dist/gen/jammi/v1/training_pb.js.map +1 -1
  44. package/dist/gen/jammi/v1/trigger_pb.d.ts +3 -1
  45. package/dist/gen/jammi/v1/trigger_pb.d.ts.map +1 -1
  46. package/dist/gen/jammi/v1/trigger_pb.js.map +1 -1
  47. package/dist/index.d.ts +6 -2
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +3 -2
  50. package/dist/index.js.map +1 -1
  51. package/package.json +1 -1
@@ -55,9 +55,9 @@ export declare const RpcStatusSchema: GenMessage<RpcStatus>;
55
55
  *
56
56
  * The standard gRPC code set is insufficient to distinguish the engine's
57
57
  * failure modes — `invalid_argument` alone collapses Source / Model / Tenant /
58
- * Config / Schema / Eval into one code — so a typed detail payload is the
59
- * ADR-01 §5.3-sanctioned mechanism for "structured error information when the
60
- * standard gRPC code set is insufficient". A typed `oneof` (not a
58
+ * Config / Schema / Eval into one code — so a typed detail payload carries
59
+ * the structured error information the standard code set cannot. A typed
60
+ * `oneof` (not a
61
61
  * `google.rpc.Any`) keeps it type-driven: each engine variant reachable on the
62
62
  * embedding/search verb surface has its own message carrying exactly the
63
63
  * fields needed to reconstruct it.
@@ -181,10 +181,230 @@ export type JammiErrorDetail = Message<"jammi.v1.error.JammiErrorDetail"> & {
181
181
  case: "modelReferenced";
182
182
  } | {
183
183
  /**
184
- * @generated from field: jammi.v1.error.ModelNotFoundError model_not_found = 18;
184
+ * @generated from field: jammi.v1.error.RowGoneError row_gone = 19;
185
185
  */
186
- value: ModelNotFoundError;
187
- case: "modelNotFound";
186
+ value: RowGoneError;
187
+ case: "rowGone";
188
+ } | {
189
+ /**
190
+ * @generated from field: jammi.v1.error.TenantMismatchError tenant_mismatch = 20;
191
+ */
192
+ value: TenantMismatchError;
193
+ case: "tenantMismatch";
194
+ } | {
195
+ /**
196
+ * @generated from field: jammi.v1.error.LeaseLostError lease_lost = 21;
197
+ */
198
+ value: LeaseLostError;
199
+ case: "leaseLost";
200
+ } | {
201
+ /**
202
+ * @generated from field: jammi.v1.error.CasFailedError cas_failed = 22;
203
+ */
204
+ value: CasFailedError;
205
+ case: "casFailed";
206
+ } | {
207
+ /**
208
+ * @generated from field: jammi.v1.error.SourceBusyError source_busy = 23;
209
+ */
210
+ value: SourceBusyError;
211
+ case: "sourceBusy";
212
+ } | {
213
+ /**
214
+ * @generated from field: jammi.v1.error.JobAttemptSupersededError job_attempt_superseded = 24;
215
+ */
216
+ value: JobAttemptSupersededError;
217
+ case: "jobAttemptSuperseded";
218
+ } | {
219
+ /**
220
+ * @generated from field: jammi.v1.error.JobCancelledError job_cancelled = 25;
221
+ */
222
+ value: JobCancelledError;
223
+ case: "jobCancelled";
224
+ } | {
225
+ /**
226
+ * `JammiError::Lexical(String)` — a single human-readable message like
227
+ * `inference`/`catalog`/`config`, so it reuses `StringError` rather than
228
+ * a dedicated message.
229
+ *
230
+ * @generated from field: jammi.v1.error.StringError lexical = 26;
231
+ */
232
+ value: StringError;
233
+ case: "lexical";
234
+ } | {
235
+ /**
236
+ * @generated from field: jammi.v1.error.IncompatibleFormatError incompatible_format = 27;
237
+ */
238
+ value: IncompatibleFormatError;
239
+ case: "incompatibleFormat";
240
+ } | {
241
+ /**
242
+ * @generated from field: jammi.v1.error.DependencyCycleError dependency_cycle = 28;
243
+ */
244
+ value: DependencyCycleError;
245
+ case: "dependencyCycle";
246
+ } | {
247
+ /**
248
+ * @generated from field: jammi.v1.error.NotRecomputableError not_recomputable = 29;
249
+ */
250
+ value: NotRecomputableError;
251
+ case: "notRecomputable";
252
+ } | {
253
+ /**
254
+ * `JammiError::Unavailable { resource, reason }` — a placed segment whose
255
+ * owner, retry candidate and local load all failed. Maps to gRPC
256
+ * `UNAVAILABLE`.
257
+ *
258
+ * @generated from field: jammi.v1.error.UnavailableError unavailable = 30;
259
+ */
260
+ value: UnavailableError;
261
+ case: "unavailable";
262
+ } | {
263
+ /**
264
+ * @generated from field: jammi.v1.error.InvalidKeyError invalid_key = 32;
265
+ */
266
+ value: InvalidKeyError;
267
+ case: "invalidKey";
268
+ } | {
269
+ /**
270
+ * @generated from field: jammi.v1.error.VersionUnavailableError version_unavailable = 33;
271
+ */
272
+ value: VersionUnavailableError;
273
+ case: "versionUnavailable";
274
+ } | {
275
+ /**
276
+ * @generated from field: jammi.v1.error.NotRefreshableError not_refreshable = 34;
277
+ */
278
+ value: NotRefreshableError;
279
+ case: "notRefreshable";
280
+ } | {
281
+ /**
282
+ * @generated from field: jammi.v1.error.DefinitionDriftError definition_drift = 35;
283
+ */
284
+ value: DefinitionDriftError;
285
+ case: "definitionDrift";
286
+ } | {
287
+ /**
288
+ * @generated from field: jammi.v1.error.NonUniqueKeyError non_unique_key = 36;
289
+ */
290
+ value: NonUniqueKeyError;
291
+ case: "nonUniqueKey";
292
+ } | {
293
+ /**
294
+ * `JammiError::ParentMoved { table, expected, found }` — a parent-pinned
295
+ * version CAS (allocation or publish) lost a race against a concurrent
296
+ * refresh/compaction that published first. Maps to `Aborted`, the same
297
+ * retryable-conflict code as `CasFailed`/`LeaseLost`.
298
+ *
299
+ * Tags 37 and 38 are intentionally vacant and must not be reused: builds
300
+ * that never shipped assigned them.
301
+ *
302
+ * @generated from field: jammi.v1.error.ParentMovedError parent_moved = 39;
303
+ */
304
+ value: ParentMovedError;
305
+ case: "parentMoved";
306
+ } | {
307
+ /**
308
+ * `JammiError::EmptyTrainingSet { source_query }` — a training set whose
309
+ * source projection yielded zero rows. Maps to `InvalidArgument`, the
310
+ * caller-input convention `InvalidKey`/`NonUniqueKey` carry.
311
+ *
312
+ * @generated from field: jammi.v1.error.EmptyTrainingSetError empty_training_set = 40;
313
+ */
314
+ value: EmptyTrainingSetError;
315
+ case: "emptyTrainingSet";
316
+ } | {
317
+ /**
318
+ * `JammiError::ResourcesExhausted { limit_bytes, detail }` — a
319
+ * DataFusion plan operator or an engine-side memory reservation tried
320
+ * to grow past the session's `[engine] memory_limit`-bounded pool.
321
+ * Maps to `RESOURCE_EXHAUSTED`.
322
+ *
323
+ * @generated from field: jammi.v1.error.ResourcesExhaustedError resources_exhausted = 41;
324
+ */
325
+ value: ResourcesExhaustedError;
326
+ case: "resourcesExhausted";
327
+ } | {
328
+ /**
329
+ * `JammiError::DeviceKindUnheld { required, held }` — a plan requiring
330
+ * a device kind reached a holder (the compute plane before submission,
331
+ * one executor at stage creation) that lists none of it. Maps to
332
+ * `FAILED_PRECONDITION`: the plan is well-formed, the plane's device
333
+ * inventory is what must change.
334
+ *
335
+ * @generated from field: jammi.v1.error.DeviceKindUnheldError device_kind_unheld = 43;
336
+ */
337
+ value: DeviceKindUnheldError;
338
+ case: "deviceKindUnheld";
339
+ } | {
340
+ /**
341
+ * `JammiError::PlacedAttemptFanOut { job_id, partitions }` — a placed
342
+ * training attempt's stage planned at more than one partition, refused
343
+ * by the executor before it ran. An engine invariant; maps to `INTERNAL`.
344
+ *
345
+ * @generated from field: jammi.v1.error.PlacedAttemptFanOutError placed_attempt_fan_out = 44;
346
+ */
347
+ value: PlacedAttemptFanOutError;
348
+ case: "placedAttemptFanOut";
349
+ } | {
350
+ /**
351
+ * `JammiError::Unheld(Unheld)` — the compute plane cannot hold a plan
352
+ * right now. Maps to `FailedPrecondition`.
353
+ *
354
+ * @generated from field: jammi.v1.error.UnheldError unheld = 45;
355
+ */
356
+ value: UnheldError;
357
+ case: "unheld";
358
+ } | {
359
+ /**
360
+ * `JammiError::ExecutorLost { executor_id, job_id }` — the compute plane
361
+ * lost the executor holding a placed job's task. Maps to `UNAVAILABLE`:
362
+ * the attempt is spent and its successor runs on the executors that
363
+ * remain; nothing about the plan or its caller must change.
364
+ *
365
+ * @generated from field: jammi.v1.error.ExecutorLostError executor_lost = 46;
366
+ */
367
+ value: ExecutorLostError;
368
+ case: "executorLost";
369
+ } | {
370
+ /**
371
+ * `JammiError::MissingManifest { table }` — a read of a result table's
372
+ * recorded materialization found no sidecar. The absent-resource
373
+ * convention `VersionUnavailable` follows: maps to `NOT_FOUND`.
374
+ *
375
+ * @generated from field: jammi.v1.error.MissingManifestError missing_manifest = 47;
376
+ */
377
+ value: MissingManifestError;
378
+ case: "missingManifest";
379
+ } | {
380
+ /**
381
+ * `JammiError::NoQueryEncoder { table, producer }` — a query could not be
382
+ * encoded into a table whose vectors no engine encoder produced. The
383
+ * caller's request names an impossible encode: `INVALID_ARGUMENT`.
384
+ *
385
+ * @generated from field: jammi.v1.error.NoQueryEncoderError no_query_encoder = 48;
386
+ */
387
+ value: NoQueryEncoderError;
388
+ case: "noQueryEncoder";
389
+ } | {
390
+ /**
391
+ * `JammiError::NotFound(Missing)` — a catalog row the call names or
392
+ * needs does not exist for the caller's tenant. Maps to `NOT_FOUND`.
393
+ *
394
+ * @generated from field: jammi.v1.error.NotFoundError not_found = 49;
395
+ */
396
+ value: NotFoundError;
397
+ case: "notFound";
398
+ } | {
399
+ /**
400
+ * `JammiError::AmbiguousAsofMatch { instant }` — an as-of join found
401
+ * several facts at a matched instant and was given no tie-break column.
402
+ * Maps to `INVALID_ARGUMENT`.
403
+ *
404
+ * @generated from field: jammi.v1.error.AmbiguousAsofMatchError ambiguous_asof_match = 50;
405
+ */
406
+ value: AmbiguousAsofMatchError;
407
+ case: "ambiguousAsofMatch";
188
408
  } | {
189
409
  case: undefined;
190
410
  value?: undefined;
@@ -195,6 +415,497 @@ export type JammiErrorDetail = Message<"jammi.v1.error.JammiErrorDetail"> & {
195
415
  * Use `create(JammiErrorDetailSchema)` to create a new message.
196
416
  */
197
417
  export declare const JammiErrorDetailSchema: GenMessage<JammiErrorDetail>;
418
+ /**
419
+ * `JammiError::RowGone { table }`. A building-row compare-and-set matched no
420
+ * row because the row is gone; deletes nothing. Maps to `NotFound`.
421
+ *
422
+ * @generated from message jammi.v1.error.RowGoneError
423
+ */
424
+ export type RowGoneError = Message<"jammi.v1.error.RowGoneError"> & {
425
+ /**
426
+ * @generated from field: string table = 1;
427
+ */
428
+ table: string;
429
+ };
430
+ /**
431
+ * Describes the message jammi.v1.error.RowGoneError.
432
+ * Use `create(RowGoneErrorSchema)` to create a new message.
433
+ */
434
+ export declare const RowGoneErrorSchema: GenMessage<RowGoneError>;
435
+ /**
436
+ * `JammiError::TenantMismatch { table }`. A building-row compare-and-set
437
+ * matched no row because the row belongs to another tenant (only possible
438
+ * under a non-admin binding); never deletes. Maps to `PermissionDenied`.
439
+ *
440
+ * @generated from message jammi.v1.error.TenantMismatchError
441
+ */
442
+ export type TenantMismatchError = Message<"jammi.v1.error.TenantMismatchError"> & {
443
+ /**
444
+ * @generated from field: string table = 1;
445
+ */
446
+ table: string;
447
+ };
448
+ /**
449
+ * Describes the message jammi.v1.error.TenantMismatchError.
450
+ * Use `create(TenantMismatchErrorSchema)` to create a new message.
451
+ */
452
+ export declare const TenantMismatchErrorSchema: GenMessage<TenantMismatchError>;
453
+ /**
454
+ * `JammiError::LeaseLost { table }`. A building-row compare-and-set matched
455
+ * no row because the row's lease was claimed by another writer; the caller
456
+ * deletes nothing. Maps to `Aborted` (a retryable conflict, not a permanent
457
+ * precondition failure).
458
+ *
459
+ * @generated from message jammi.v1.error.LeaseLostError
460
+ */
461
+ export type LeaseLostError = Message<"jammi.v1.error.LeaseLostError"> & {
462
+ /**
463
+ * @generated from field: string table = 1;
464
+ */
465
+ table: string;
466
+ };
467
+ /**
468
+ * Describes the message jammi.v1.error.LeaseLostError.
469
+ * Use `create(LeaseLostErrorSchema)` to create a new message.
470
+ */
471
+ export declare const LeaseLostErrorSchema: GenMessage<LeaseLostError>;
472
+ /**
473
+ * `JammiError::CasFailed { table, status }`. A building-row compare-and-set
474
+ * matched no row because the row already left `building`; never re-promotes,
475
+ * never deletes. Maps to `Aborted` (the same retryable-conflict family as
476
+ * `LeaseLost` — the caller's view of the row was stale).
477
+ *
478
+ * @generated from message jammi.v1.error.CasFailedError
479
+ */
480
+ export type CasFailedError = Message<"jammi.v1.error.CasFailedError"> & {
481
+ /**
482
+ * @generated from field: string table = 1;
483
+ */
484
+ table: string;
485
+ /**
486
+ * @generated from field: string status = 2;
487
+ */
488
+ status: string;
489
+ };
490
+ /**
491
+ * Describes the message jammi.v1.error.CasFailedError.
492
+ * Use `create(CasFailedErrorSchema)` to create a new message.
493
+ */
494
+ export declare const CasFailedErrorSchema: GenMessage<CasFailedError>;
495
+ /**
496
+ * `JammiError::ParentMoved { table, expected, found }`. A parent-pinned
497
+ * version CAS (the allocation UPDATE or the publish table-row swap) matched
498
+ * no row because `current_version` no longer equals the parent the caller's
499
+ * delta was derived from — a concurrent refresh/compaction published first.
500
+ * The ONE classification for both the allocation miss and the publish
501
+ * table-row miss. Maps to `Aborted` (the same retryable-conflict family as
502
+ * `CasFailed`/`LeaseLost`). `expected`/`found` are absent only for the base
503
+ * publish's `current_version IS NULL` CAS.
504
+ *
505
+ * @generated from message jammi.v1.error.ParentMovedError
506
+ */
507
+ export type ParentMovedError = Message<"jammi.v1.error.ParentMovedError"> & {
508
+ /**
509
+ * @generated from field: string table = 1;
510
+ */
511
+ table: string;
512
+ /**
513
+ * @generated from field: optional int64 expected = 2;
514
+ */
515
+ expected?: bigint | undefined;
516
+ /**
517
+ * @generated from field: optional int64 found = 3;
518
+ */
519
+ found?: bigint | undefined;
520
+ };
521
+ /**
522
+ * Describes the message jammi.v1.error.ParentMovedError.
523
+ * Use `create(ParentMovedErrorSchema)` to create a new message.
524
+ */
525
+ export declare const ParentMovedErrorSchema: GenMessage<ParentMovedError>;
526
+ /**
527
+ * `JammiError::SourceBusy { source_id, table }`. A source delete was refused
528
+ * because a live-lease `building` row still references it. Maps to
529
+ * `FailedPrecondition` — a retry once the writer finishes or its lease
530
+ * expires.
531
+ *
532
+ * @generated from message jammi.v1.error.SourceBusyError
533
+ */
534
+ export type SourceBusyError = Message<"jammi.v1.error.SourceBusyError"> & {
535
+ /**
536
+ * @generated from field: string source_id = 1;
537
+ */
538
+ sourceId: string;
539
+ /**
540
+ * @generated from field: string table = 2;
541
+ */
542
+ table: string;
543
+ };
544
+ /**
545
+ * Describes the message jammi.v1.error.SourceBusyError.
546
+ * Use `create(SourceBusyErrorSchema)` to create a new message.
547
+ */
548
+ export declare const SourceBusyErrorSchema: GenMessage<SourceBusyError>;
549
+ /**
550
+ * `JammiError::JobAttemptSuperseded { job_id }`. A `create_result_table`
551
+ * call's `jobs.partial_result` compare-and-set matched zero rows: the job is
552
+ * either not `running` (a peer reclaimed it) or another attempt already
553
+ * recorded a `partial_result` for it first. Maps to `Aborted` (the same
554
+ * retryable-conflict family as `LeaseLost`/`CasFailed` — the caller's view of
555
+ * the job's attempt was stale).
556
+ *
557
+ * @generated from message jammi.v1.error.JobAttemptSupersededError
558
+ */
559
+ export type JobAttemptSupersededError = Message<"jammi.v1.error.JobAttemptSupersededError"> & {
560
+ /**
561
+ * @generated from field: string job_id = 1;
562
+ */
563
+ jobId: string;
564
+ };
565
+ /**
566
+ * Describes the message jammi.v1.error.JobAttemptSupersededError.
567
+ * Use `create(JobAttemptSupersededErrorSchema)` to create a new message.
568
+ */
569
+ export declare const JobAttemptSupersededErrorSchema: GenMessage<JobAttemptSupersededError>;
570
+ /**
571
+ * `JammiError::JobCancelled { job_id }`. A job's executor observed
572
+ * `jobs.cancel_requested` at a checkpoint boundary and stopped; the job is
573
+ * recorded `failed` with this message. Maps to `Cancelled` — the caller
574
+ * asked for exactly this outcome, so it is not a fault, but it is also not
575
+ * the terminal state the caller's own request expected without checking
576
+ * status.
577
+ *
578
+ * @generated from message jammi.v1.error.JobCancelledError
579
+ */
580
+ export type JobCancelledError = Message<"jammi.v1.error.JobCancelledError"> & {
581
+ /**
582
+ * @generated from field: string job_id = 1;
583
+ */
584
+ jobId: string;
585
+ };
586
+ /**
587
+ * Describes the message jammi.v1.error.JobCancelledError.
588
+ * Use `create(JobCancelledErrorSchema)` to create a new message.
589
+ */
590
+ export declare const JobCancelledErrorSchema: GenMessage<JobCancelledError>;
591
+ /**
592
+ * `JammiError::IncompatibleFormat { artifact, found, supported }`. A
593
+ * persisted artifact carries a format stamp this build cannot read (the
594
+ * `.rowmap`, the ANN `.manifest.json` version, or the USearch graph's
595
+ * `backend_version`).
596
+ *
597
+ * @generated from message jammi.v1.error.IncompatibleFormatError
598
+ */
599
+ export type IncompatibleFormatError = Message<"jammi.v1.error.IncompatibleFormatError"> & {
600
+ /**
601
+ * @generated from field: string artifact = 1;
602
+ */
603
+ artifact: string;
604
+ /**
605
+ * @generated from field: string found = 2;
606
+ */
607
+ found: string;
608
+ /**
609
+ * @generated from field: string supported = 3;
610
+ */
611
+ supported: string;
612
+ };
613
+ /**
614
+ * Describes the message jammi.v1.error.IncompatibleFormatError.
615
+ * Use `create(IncompatibleFormatErrorSchema)` to create a new message.
616
+ */
617
+ export declare const IncompatibleFormatErrorSchema: GenMessage<IncompatibleFormatError>;
618
+ /**
619
+ * `JammiError::DependencyCycle { table }`. A `derives-from` lineage walk
620
+ * revisited a table it was already descending through — a corruption of the
621
+ * recorded `input_anchors_json`, not a caller condition.
622
+ *
623
+ * @generated from message jammi.v1.error.DependencyCycleError
624
+ */
625
+ export type DependencyCycleError = Message<"jammi.v1.error.DependencyCycleError"> & {
626
+ /**
627
+ * @generated from field: string table = 1;
628
+ */
629
+ table: string;
630
+ };
631
+ /**
632
+ * Describes the message jammi.v1.error.DependencyCycleError.
633
+ * Use `create(DependencyCycleErrorSchema)` to create a new message.
634
+ */
635
+ export declare const DependencyCycleErrorSchema: GenMessage<DependencyCycleError>;
636
+ /**
637
+ * `JammiError::NotRecomputable { table }`. A `recompute` was asked to
638
+ * re-produce a table the engine has no faithful replay for (a table with no
639
+ * recorded descriptor, or an `External`-producer table).
640
+ *
641
+ * @generated from message jammi.v1.error.NotRecomputableError
642
+ */
643
+ export type NotRecomputableError = Message<"jammi.v1.error.NotRecomputableError"> & {
644
+ /**
645
+ * @generated from field: string table = 1;
646
+ */
647
+ table: string;
648
+ };
649
+ /**
650
+ * Describes the message jammi.v1.error.NotRecomputableError.
651
+ * Use `create(NotRecomputableErrorSchema)` to create a new message.
652
+ */
653
+ export declare const NotRecomputableErrorSchema: GenMessage<NotRecomputableError>;
654
+ /**
655
+ * `JammiError::MissingManifest { table }`. The table carries no
656
+ * `.materialization.json` sidecar, so it has no recorded definition to
657
+ * describe.
658
+ *
659
+ * @generated from message jammi.v1.error.MissingManifestError
660
+ */
661
+ export type MissingManifestError = Message<"jammi.v1.error.MissingManifestError"> & {
662
+ /**
663
+ * @generated from field: string table = 1;
664
+ */
665
+ table: string;
666
+ };
667
+ /**
668
+ * Describes the message jammi.v1.error.MissingManifestError.
669
+ * Use `create(MissingManifestErrorSchema)` to create a new message.
670
+ */
671
+ export declare const MissingManifestErrorSchema: GenMessage<MissingManifestError>;
672
+ /**
673
+ * `JammiError::NoQueryEncoder { table, producer }`.
674
+ *
675
+ * @generated from message jammi.v1.error.NoQueryEncoderError
676
+ */
677
+ export type NoQueryEncoderError = Message<"jammi.v1.error.NoQueryEncoderError"> & {
678
+ /**
679
+ * @generated from field: string table = 1;
680
+ */
681
+ table: string;
682
+ /**
683
+ * @generated from field: string producer = 2;
684
+ */
685
+ producer: string;
686
+ };
687
+ /**
688
+ * Describes the message jammi.v1.error.NoQueryEncoderError.
689
+ * Use `create(NoQueryEncoderErrorSchema)` to create a new message.
690
+ */
691
+ export declare const NoQueryEncoderErrorSchema: GenMessage<NoQueryEncoderError>;
692
+ /**
693
+ * `JammiError::Unavailable`: the resource that could not be served (`segment
694
+ * {table}/{id}`) and why the last rung of the failure ladder failed.
695
+ *
696
+ * @generated from message jammi.v1.error.UnavailableError
697
+ */
698
+ export type UnavailableError = Message<"jammi.v1.error.UnavailableError"> & {
699
+ /**
700
+ * @generated from field: string resource = 1;
701
+ */
702
+ resource: string;
703
+ /**
704
+ * @generated from field: string reason = 2;
705
+ */
706
+ reason: string;
707
+ };
708
+ /**
709
+ * Describes the message jammi.v1.error.UnavailableError.
710
+ * Use `create(UnavailableErrorSchema)` to create a new message.
711
+ */
712
+ export declare const UnavailableErrorSchema: GenMessage<UnavailableError>;
713
+ /**
714
+ * `JammiError::InvalidKey { column, null_count }`. A `NULL` in the key column
715
+ * of a source scanned for embedding / inference / refresh — refused typed at
716
+ * the input edge before any model call, with the exact null count. A
717
+ * data-shape fault, so it maps to `InvalidArgument`.
718
+ *
719
+ * @generated from message jammi.v1.error.InvalidKeyError
720
+ */
721
+ export type InvalidKeyError = Message<"jammi.v1.error.InvalidKeyError"> & {
722
+ /**
723
+ * @generated from field: string column = 1;
724
+ */
725
+ column: string;
726
+ /**
727
+ * @generated from field: uint64 null_count = 2;
728
+ */
729
+ nullCount: bigint;
730
+ };
731
+ /**
732
+ * Describes the message jammi.v1.error.InvalidKeyError.
733
+ * Use `create(InvalidKeyErrorSchema)` to create a new message.
734
+ */
735
+ export declare const InvalidKeyErrorSchema: GenMessage<InvalidKeyError>;
736
+ /**
737
+ * `JammiError::VersionUnavailable { table, version }`. A versioned result
738
+ * table whose CURRENT version cannot be served (its version row is `failed`
739
+ * or its manifest is definitively absent). The absent-resource convention:
740
+ * maps to `NotFound`.
741
+ *
742
+ * @generated from message jammi.v1.error.VersionUnavailableError
743
+ */
744
+ export type VersionUnavailableError = Message<"jammi.v1.error.VersionUnavailableError"> & {
745
+ /**
746
+ * @generated from field: string table = 1;
747
+ */
748
+ table: string;
749
+ /**
750
+ * @generated from field: int64 version = 2;
751
+ */
752
+ version: bigint;
753
+ };
754
+ /**
755
+ * Describes the message jammi.v1.error.VersionUnavailableError.
756
+ * Use `create(VersionUnavailableErrorSchema)` to create a new message.
757
+ */
758
+ export declare const VersionUnavailableErrorSchema: GenMessage<VersionUnavailableError>;
759
+ /**
760
+ * `JammiError::NotRefreshable { table, reason }`. A refresh/compaction of a
761
+ * table it cannot serve incrementally; `reason` is the engine's stable token
762
+ * (`missing_content_hash` / `current_version_unavailable` / `not_ready` /
763
+ * `not_embedding_table`). "Fix state, then retry" → `FailedPrecondition`.
764
+ *
765
+ * @generated from message jammi.v1.error.NotRefreshableError
766
+ */
767
+ export type NotRefreshableError = Message<"jammi.v1.error.NotRefreshableError"> & {
768
+ /**
769
+ * @generated from field: string table = 1;
770
+ */
771
+ table: string;
772
+ /**
773
+ * @generated from field: string reason = 2;
774
+ */
775
+ reason: string;
776
+ };
777
+ /**
778
+ * Describes the message jammi.v1.error.NotRefreshableError.
779
+ * Use `create(NotRefreshableErrorSchema)` to create a new message.
780
+ */
781
+ export declare const NotRefreshableErrorSchema: GenMessage<NotRefreshableError>;
782
+ /**
783
+ * `JammiError::DefinitionDrift { table, recorded, current }`. The definition
784
+ * a refresh would run under no longer hashes to the table's recorded
785
+ * `definition_hash` (a model or environment change). The environment, not the
786
+ * argument, must change before a retry → `FailedPrecondition`.
787
+ *
788
+ * @generated from message jammi.v1.error.DefinitionDriftError
789
+ */
790
+ export type DefinitionDriftError = Message<"jammi.v1.error.DefinitionDriftError"> & {
791
+ /**
792
+ * @generated from field: string table = 1;
793
+ */
794
+ table: string;
795
+ /**
796
+ * @generated from field: string recorded = 2;
797
+ */
798
+ recorded: string;
799
+ /**
800
+ * @generated from field: string current = 3;
801
+ */
802
+ current: string;
803
+ };
804
+ /**
805
+ * Describes the message jammi.v1.error.DefinitionDriftError.
806
+ * Use `create(DefinitionDriftErrorSchema)` to create a new message.
807
+ */
808
+ export declare const DefinitionDriftErrorSchema: GenMessage<DefinitionDriftError>;
809
+ /**
810
+ * One duplicated key and its exact count.
811
+ *
812
+ * @generated from message jammi.v1.error.KeyCount
813
+ */
814
+ export type KeyCount = Message<"jammi.v1.error.KeyCount"> & {
815
+ /**
816
+ * @generated from field: string key = 1;
817
+ */
818
+ key: string;
819
+ /**
820
+ * @generated from field: uint64 count = 2;
821
+ */
822
+ count: bigint;
823
+ };
824
+ /**
825
+ * Describes the message jammi.v1.error.KeyCount.
826
+ * Use `create(KeyCountSchema)` to create a new message.
827
+ */
828
+ export declare const KeyCountSchema: GenMessage<KeyCount>;
829
+ /**
830
+ * `JammiError::NonUniqueKey { table, scan, keys, total }`. A refresh found
831
+ * the same key more than once on a complete scan (`scan` is `source` or
832
+ * `parent`); `keys` carries at most ten. A data-shape fault →
833
+ * `InvalidArgument`.
834
+ *
835
+ * @generated from message jammi.v1.error.NonUniqueKeyError
836
+ */
837
+ export type NonUniqueKeyError = Message<"jammi.v1.error.NonUniqueKeyError"> & {
838
+ /**
839
+ * @generated from field: string table = 1;
840
+ */
841
+ table: string;
842
+ /**
843
+ * @generated from field: string scan = 2;
844
+ */
845
+ scan: string;
846
+ /**
847
+ * @generated from field: repeated jammi.v1.error.KeyCount keys = 3;
848
+ */
849
+ keys: KeyCount[];
850
+ /**
851
+ * @generated from field: uint64 total = 4;
852
+ */
853
+ total: bigint;
854
+ };
855
+ /**
856
+ * Describes the message jammi.v1.error.NonUniqueKeyError.
857
+ * Use `create(NonUniqueKeyErrorSchema)` to create a new message.
858
+ */
859
+ export declare const NonUniqueKeyErrorSchema: GenMessage<NonUniqueKeyError>;
860
+ /**
861
+ * `JammiError::EmptyTrainingSet { source_query }`. A training set's source
862
+ * projection yielded zero rows, so the producer refuses before any catalog row
863
+ * or byte exists. A degenerate input the caller must change →
864
+ * `InvalidArgument`, the same convention `InvalidKey`/`NonUniqueKey` follow.
865
+ *
866
+ * @generated from message jammi.v1.error.EmptyTrainingSetError
867
+ */
868
+ export type EmptyTrainingSetError = Message<"jammi.v1.error.EmptyTrainingSetError"> & {
869
+ /**
870
+ * The producer's query text that yielded no rows. `source_query`, not
871
+ * `source`: the engine variant's field carries that name so `thiserror` does
872
+ * not read it as the error's `std::error::Error::source()`.
873
+ *
874
+ * @generated from field: string source_query = 1;
875
+ */
876
+ sourceQuery: string;
877
+ };
878
+ /**
879
+ * Describes the message jammi.v1.error.EmptyTrainingSetError.
880
+ * Use `create(EmptyTrainingSetErrorSchema)` to create a new message.
881
+ */
882
+ export declare const EmptyTrainingSetErrorSchema: GenMessage<EmptyTrainingSetError>;
883
+ /**
884
+ * `JammiError::ResourcesExhausted { limit_bytes, detail }`. A DataFusion plan
885
+ * operator (a `SortPreservingMergeExec`'s per-partition reservation, an
886
+ * external sorter's spill buffer) or an engine-side consumer registered
887
+ * directly against the session's memory pool tried to grow past `[engine]
888
+ * memory_limit`'s bound. `limit_bytes` is best-effort (0 when the raising
889
+ * message carried no recoverable pool size); `detail` is the raising
890
+ * operator's/consumer's own message, verbatim. Maps to `RESOURCE_EXHAUSTED`.
891
+ *
892
+ * @generated from message jammi.v1.error.ResourcesExhaustedError
893
+ */
894
+ export type ResourcesExhaustedError = Message<"jammi.v1.error.ResourcesExhaustedError"> & {
895
+ /**
896
+ * @generated from field: uint64 limit_bytes = 1;
897
+ */
898
+ limitBytes: bigint;
899
+ /**
900
+ * @generated from field: string detail = 2;
901
+ */
902
+ detail: string;
903
+ };
904
+ /**
905
+ * Describes the message jammi.v1.error.ResourcesExhaustedError.
906
+ * Use `create(ResourcesExhaustedErrorSchema)` to create a new message.
907
+ */
908
+ export declare const ResourcesExhaustedErrorSchema: GenMessage<ResourcesExhaustedError>;
198
909
  /**
199
910
  * `JammiError::ChannelCatalog(ChannelCatalogError)`. The inner taxonomy is
200
911
  * engine-owned and every variant's fields reconstruct, so it crosses the wire
@@ -336,25 +1047,236 @@ export type ModelReferencedError = Message<"jammi.v1.error.ModelReferencedError"
336
1047
  */
337
1048
  export declare const ModelReferencedErrorSchema: GenMessage<ModelReferencedError>;
338
1049
  /**
339
- * `JammiError::ModelNotFound { model_id }`. A `delete_model` call resolved no
340
- * model row for the caller's tenant. Distinct from
341
- * `ModelError` (a bad-argument model fault → `InvalidArgument`): an absent row
342
- * is a NotFound → `NotFound`, so it carries its own variant rather than folding
343
- * onto the generic model error.
1050
+ * `JammiError::NotFound(Missing)`: which catalog row is absent. A row the
1051
+ * caller named carries its id; a source's ready index carries the source and
1052
+ * the index kind (`embedding` / `lexical`), which names the verb that builds
1053
+ * one.
344
1054
  *
345
- * @generated from message jammi.v1.error.ModelNotFoundError
1055
+ * @generated from message jammi.v1.error.NotFoundError
346
1056
  */
347
- export type ModelNotFoundError = Message<"jammi.v1.error.ModelNotFoundError"> & {
1057
+ export type NotFoundError = Message<"jammi.v1.error.NotFoundError"> & {
348
1058
  /**
349
- * @generated from field: string model_id = 1;
1059
+ * @generated from oneof jammi.v1.error.NotFoundError.missing
350
1060
  */
351
- modelId: string;
1061
+ missing: {
1062
+ /**
1063
+ * @generated from field: string source_id = 1;
1064
+ */
1065
+ value: string;
1066
+ case: "sourceId";
1067
+ } | {
1068
+ /**
1069
+ * @generated from field: string model_id = 2;
1070
+ */
1071
+ value: string;
1072
+ case: "modelId";
1073
+ } | {
1074
+ /**
1075
+ * @generated from field: string job_id = 3;
1076
+ */
1077
+ value: string;
1078
+ case: "jobId";
1079
+ } | {
1080
+ /**
1081
+ * @generated from field: string result_table = 4;
1082
+ */
1083
+ value: string;
1084
+ case: "resultTable";
1085
+ } | {
1086
+ /**
1087
+ * @generated from field: jammi.v1.error.ReadyIndexMissing ready_index = 5;
1088
+ */
1089
+ value: ReadyIndexMissing;
1090
+ case: "readyIndex";
1091
+ } | {
1092
+ case: undefined;
1093
+ value?: undefined;
1094
+ };
352
1095
  };
353
1096
  /**
354
- * Describes the message jammi.v1.error.ModelNotFoundError.
355
- * Use `create(ModelNotFoundErrorSchema)` to create a new message.
1097
+ * Describes the message jammi.v1.error.NotFoundError.
1098
+ * Use `create(NotFoundErrorSchema)` to create a new message.
356
1099
  */
357
- export declare const ModelNotFoundErrorSchema: GenMessage<ModelNotFoundError>;
1100
+ export declare const NotFoundErrorSchema: GenMessage<NotFoundError>;
1101
+ /**
1102
+ * `JammiError::AmbiguousAsofMatch { instant }`.
1103
+ *
1104
+ * @generated from message jammi.v1.error.AmbiguousAsofMatchError
1105
+ */
1106
+ export type AmbiguousAsofMatchError = Message<"jammi.v1.error.AmbiguousAsofMatchError"> & {
1107
+ /**
1108
+ * @generated from field: string instant = 1;
1109
+ */
1110
+ instant: string;
1111
+ };
1112
+ /**
1113
+ * Describes the message jammi.v1.error.AmbiguousAsofMatchError.
1114
+ * Use `create(AmbiguousAsofMatchErrorSchema)` to create a new message.
1115
+ */
1116
+ export declare const AmbiguousAsofMatchErrorSchema: GenMessage<AmbiguousAsofMatchError>;
1117
+ /**
1118
+ * `Missing::ReadyIndex { source_id, index }`.
1119
+ *
1120
+ * @generated from message jammi.v1.error.ReadyIndexMissing
1121
+ */
1122
+ export type ReadyIndexMissing = Message<"jammi.v1.error.ReadyIndexMissing"> & {
1123
+ /**
1124
+ * @generated from field: string source_id = 1;
1125
+ */
1126
+ sourceId: string;
1127
+ /**
1128
+ * @generated from field: string index = 2;
1129
+ */
1130
+ index: string;
1131
+ };
1132
+ /**
1133
+ * Describes the message jammi.v1.error.ReadyIndexMissing.
1134
+ * Use `create(ReadyIndexMissingSchema)` to create a new message.
1135
+ */
1136
+ export declare const ReadyIndexMissingSchema: GenMessage<ReadyIndexMissing>;
1137
+ /**
1138
+ * `JammiError::DeviceKindUnheld { required, held }`. `required` is the kind
1139
+ * the plan's own `InferenceExec`/`TrainingExec` stamps and `held` every
1140
+ * kind the holder lists, each as its `ComputeDeviceKind::wire_str` token (`cpu`,
1141
+ * `cuda`, `metal`). Maps to `FailedPrecondition`.
1142
+ *
1143
+ * @generated from message jammi.v1.error.DeviceKindUnheldError
1144
+ */
1145
+ export type DeviceKindUnheldError = Message<"jammi.v1.error.DeviceKindUnheldError"> & {
1146
+ /**
1147
+ * @generated from field: string required = 1;
1148
+ */
1149
+ required: string;
1150
+ /**
1151
+ * @generated from field: repeated string held = 2;
1152
+ */
1153
+ held: string[];
1154
+ };
1155
+ /**
1156
+ * Describes the message jammi.v1.error.DeviceKindUnheldError.
1157
+ * Use `create(DeviceKindUnheldErrorSchema)` to create a new message.
1158
+ */
1159
+ export declare const DeviceKindUnheldErrorSchema: GenMessage<DeviceKindUnheldError>;
1160
+ /**
1161
+ * `JammiError::PlacedAttemptFanOut { job_id, partitions }`. The placed
1162
+ * attempt's own training job id and the partition count the stage was
1163
+ * planned at. Maps to `Internal`.
1164
+ *
1165
+ * @generated from message jammi.v1.error.PlacedAttemptFanOutError
1166
+ */
1167
+ export type PlacedAttemptFanOutError = Message<"jammi.v1.error.PlacedAttemptFanOutError"> & {
1168
+ /**
1169
+ * @generated from field: string job_id = 1;
1170
+ */
1171
+ jobId: string;
1172
+ /**
1173
+ * @generated from field: uint64 partitions = 2;
1174
+ */
1175
+ partitions: bigint;
1176
+ };
1177
+ /**
1178
+ * Describes the message jammi.v1.error.PlacedAttemptFanOutError.
1179
+ * Use `create(PlacedAttemptFanOutErrorSchema)` to create a new message.
1180
+ */
1181
+ export declare const PlacedAttemptFanOutErrorSchema: GenMessage<PlacedAttemptFanOutError>;
1182
+ /**
1183
+ * `JammiError::Unheld(Unheld)`: why the compute plane cannot hold a plan
1184
+ * right now — one of `Unheld`'s reasons. Maps to `FailedPrecondition`.
1185
+ *
1186
+ * @generated from message jammi.v1.error.UnheldError
1187
+ */
1188
+ export type UnheldError = Message<"jammi.v1.error.UnheldError"> & {
1189
+ /**
1190
+ * @generated from oneof jammi.v1.error.UnheldError.reason
1191
+ */
1192
+ reason: {
1193
+ /**
1194
+ * @generated from field: jammi.v1.error.NoLiveExecutorReason no_live_executor = 1;
1195
+ */
1196
+ value: NoLiveExecutorReason;
1197
+ case: "noLiveExecutor";
1198
+ } | {
1199
+ /**
1200
+ * `Unheld::NoExecutorOfKind { required, held }`: `DeviceKindUnheldError`'s
1201
+ * own fields.
1202
+ *
1203
+ * @generated from field: jammi.v1.error.DeviceKindUnheldError no_executor_of_kind = 2;
1204
+ */
1205
+ value: DeviceKindUnheldError;
1206
+ case: "noExecutorOfKind";
1207
+ } | {
1208
+ /**
1209
+ * @generated from field: jammi.v1.error.OnlyTheSubmitterReason only_the_submitter = 3;
1210
+ */
1211
+ value: OnlyTheSubmitterReason;
1212
+ case: "onlyTheSubmitter";
1213
+ } | {
1214
+ /**
1215
+ * `Unheld::NotEncodable { detail }`.
1216
+ *
1217
+ * @generated from field: jammi.v1.error.StringError not_encodable = 4;
1218
+ */
1219
+ value: StringError;
1220
+ case: "notEncodable";
1221
+ } | {
1222
+ case: undefined;
1223
+ value?: undefined;
1224
+ };
1225
+ };
1226
+ /**
1227
+ * Describes the message jammi.v1.error.UnheldError.
1228
+ * Use `create(UnheldErrorSchema)` to create a new message.
1229
+ */
1230
+ export declare const UnheldErrorSchema: GenMessage<UnheldError>;
1231
+ /**
1232
+ * `Unheld::NoLiveExecutor`: no field.
1233
+ *
1234
+ * @generated from message jammi.v1.error.NoLiveExecutorReason
1235
+ */
1236
+ export type NoLiveExecutorReason = Message<"jammi.v1.error.NoLiveExecutorReason"> & {};
1237
+ /**
1238
+ * Describes the message jammi.v1.error.NoLiveExecutorReason.
1239
+ * Use `create(NoLiveExecutorReasonSchema)` to create a new message.
1240
+ */
1241
+ export declare const NoLiveExecutorReasonSchema: GenMessage<NoLiveExecutorReason>;
1242
+ /**
1243
+ * `JammiError::ExecutorLost { executor_id, job_id }`: the executor the plane
1244
+ * expired and the plane's own id for the placed plan whose task it held.
1245
+ * Maps to `Unavailable`.
1246
+ *
1247
+ * @generated from message jammi.v1.error.ExecutorLostError
1248
+ */
1249
+ export type ExecutorLostError = Message<"jammi.v1.error.ExecutorLostError"> & {
1250
+ /**
1251
+ * @generated from field: string executor_id = 1;
1252
+ */
1253
+ executorId: string;
1254
+ /**
1255
+ * @generated from field: string job_id = 2;
1256
+ */
1257
+ jobId: string;
1258
+ };
1259
+ /**
1260
+ * Describes the message jammi.v1.error.ExecutorLostError.
1261
+ * Use `create(ExecutorLostErrorSchema)` to create a new message.
1262
+ */
1263
+ export declare const ExecutorLostErrorSchema: GenMessage<ExecutorLostError>;
1264
+ /**
1265
+ * `Unheld::OnlyTheSubmitter { submitter }`.
1266
+ *
1267
+ * @generated from message jammi.v1.error.OnlyTheSubmitterReason
1268
+ */
1269
+ export type OnlyTheSubmitterReason = Message<"jammi.v1.error.OnlyTheSubmitterReason"> & {
1270
+ /**
1271
+ * @generated from field: string submitter = 1;
1272
+ */
1273
+ submitter: string;
1274
+ };
1275
+ /**
1276
+ * Describes the message jammi.v1.error.OnlyTheSubmitterReason.
1277
+ * Use `create(OnlyTheSubmitterReasonSchema)` to create a new message.
1278
+ */
1279
+ export declare const OnlyTheSubmitterReasonSchema: GenMessage<OnlyTheSubmitterReason>;
358
1280
  /**
359
1281
  * `JammiError::MutableTable(MutableTableError)`. The inner taxonomy is
360
1282
  * engine-owned and every variant's fields reconstruct, so it crosses the wire
@@ -419,6 +1341,18 @@ export type MutableTableErrorDetail = Message<"jammi.v1.error.MutableTableErrorD
419
1341
  */
420
1342
  value: BackendErrorDetail;
421
1343
  case: "backend";
1344
+ } | {
1345
+ /**
1346
+ * @generated from field: jammi.v1.error.MutableWriteConflict write_conflict = 9;
1347
+ */
1348
+ value: MutableWriteConflict;
1349
+ case: "writeConflict";
1350
+ } | {
1351
+ /**
1352
+ * @generated from field: jammi.v1.error.MutableAmbiguousUpdate ambiguous_update = 10;
1353
+ */
1354
+ value: MutableAmbiguousUpdate;
1355
+ case: "ambiguousUpdate";
422
1356
  } | {
423
1357
  case: undefined;
424
1358
  value?: undefined;
@@ -429,6 +1363,48 @@ export type MutableTableErrorDetail = Message<"jammi.v1.error.MutableTableErrorD
429
1363
  * Use `create(MutableTableErrorDetailSchema)` to create a new message.
430
1364
  */
431
1365
  export declare const MutableTableErrorDetailSchema: GenMessage<MutableTableErrorDetail>;
1366
+ /**
1367
+ * `MutableTableError::WriteConflict { table, rows }`: rows an UPDATE / DELETE
1368
+ * selected changed before its write; nothing was written.
1369
+ *
1370
+ * @generated from message jammi.v1.error.MutableWriteConflict
1371
+ */
1372
+ export type MutableWriteConflict = Message<"jammi.v1.error.MutableWriteConflict"> & {
1373
+ /**
1374
+ * @generated from field: string table = 1;
1375
+ */
1376
+ table: string;
1377
+ /**
1378
+ * @generated from field: uint64 rows = 2;
1379
+ */
1380
+ rows: bigint;
1381
+ };
1382
+ /**
1383
+ * Describes the message jammi.v1.error.MutableWriteConflict.
1384
+ * Use `create(MutableWriteConflictSchema)` to create a new message.
1385
+ */
1386
+ export declare const MutableWriteConflictSchema: GenMessage<MutableWriteConflict>;
1387
+ /**
1388
+ * `MutableTableError::AmbiguousUpdate { table, key }`: an UPDATE gave one row
1389
+ * more than one new value.
1390
+ *
1391
+ * @generated from message jammi.v1.error.MutableAmbiguousUpdate
1392
+ */
1393
+ export type MutableAmbiguousUpdate = Message<"jammi.v1.error.MutableAmbiguousUpdate"> & {
1394
+ /**
1395
+ * @generated from field: string table = 1;
1396
+ */
1397
+ table: string;
1398
+ /**
1399
+ * @generated from field: string key = 2;
1400
+ */
1401
+ key: string;
1402
+ };
1403
+ /**
1404
+ * Describes the message jammi.v1.error.MutableAmbiguousUpdate.
1405
+ * Use `create(MutableAmbiguousUpdateSchema)` to create a new message.
1406
+ */
1407
+ export declare const MutableAmbiguousUpdateSchema: GenMessage<MutableAmbiguousUpdate>;
432
1408
  /**
433
1409
  * `MutableTableError::Backend(BackendError)`. The backend taxonomy is
434
1410
  * engine-owned; every variant but `Sqlx` reconstructs field-for-field. A raw
@@ -721,12 +1697,6 @@ export type TriggerErrorDetail = Message<"jammi.v1.error.TriggerErrorDetail"> &
721
1697
  */
722
1698
  value: string;
723
1699
  case: "predicateUnsupported";
724
- } | {
725
- /**
726
- * @generated from field: uint64 offset_evicted = 9;
727
- */
728
- value: bigint;
729
- case: "offsetEvicted";
730
1700
  } | {
731
1701
  /**
732
1702
  * `TriggerError::BackingTable(MutableTableError)` — engine-owned, nested