@loams/client 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +78 -2
  2. package/dist/app.d.ts +149 -0
  3. package/dist/app.js +317 -0
  4. package/dist/builders/filter.d.ts +96 -0
  5. package/dist/builders/filter.js +190 -0
  6. package/dist/builders/schema.d.ts +50 -0
  7. package/dist/builders/schema.js +92 -0
  8. package/dist/builders/search.d.ts +159 -0
  9. package/dist/builders/search.js +307 -0
  10. package/dist/gen/facade.d.ts +267 -2
  11. package/dist/gen/facade.js +194 -0
  12. package/dist/handle.d.ts +67 -0
  13. package/dist/handle.js +107 -0
  14. package/dist/index.d.ts +12 -5
  15. package/dist/index.js +12 -3
  16. package/dist/loams.d.ts +77 -2
  17. package/dist/loams.js +84 -6
  18. package/dist/runtime/batch.d.ts +29 -0
  19. package/dist/runtime/batch.js +95 -0
  20. package/dist/runtime/call.d.ts +63 -9
  21. package/dist/runtime/call.js +243 -41
  22. package/dist/runtime/consistency.d.ts +65 -11
  23. package/dist/runtime/consistency.js +212 -46
  24. package/dist/runtime/errors.d.ts +29 -2
  25. package/dist/runtime/errors.js +26 -0
  26. package/dist/runtime/pagination.js +8 -2
  27. package/dist/runtime/subscribe.d.ts +37 -0
  28. package/dist/runtime/subscribe.js +128 -0
  29. package/dist/vendor/proto/collection-v1.d.ts +3 -0
  30. package/dist/vendor/proto/collection-v1.js +7 -0
  31. package/dist/vendor/proto/gen/loams/collection/v1/collection_pb.d.ts +1610 -0
  32. package/dist/vendor/proto/gen/loams/collection/v1/collection_pb.js +399 -0
  33. package/dist/vendor/proto/gen/loams/collection/v1/document_pb.d.ts +1054 -0
  34. package/dist/vendor/proto/gen/loams/collection/v1/document_pb.js +327 -0
  35. package/dist/vendor/proto/gen/loams/collection/v1/query_pb.d.ts +2101 -0
  36. package/dist/vendor/proto/gen/loams/collection/v1/query_pb.js +608 -0
  37. package/dist/vendor/proto/gen/loams/graph/v1/graph_pb.d.ts +2299 -0
  38. package/dist/vendor/proto/gen/loams/graph/v1/graph_pb.js +596 -0
  39. package/dist/vendor/proto/gen/loams/operations/v1/operations_pb.d.ts +399 -0
  40. package/dist/vendor/proto/gen/loams/operations/v1/operations_pb.js +118 -0
  41. package/dist/vendor/proto/gen/loams/sql/v1/sql_pb.d.ts +182 -0
  42. package/dist/vendor/proto/gen/loams/sql/v1/sql_pb.js +72 -0
  43. package/dist/vendor/proto/gen/loams/stream/v1/stream_pb.d.ts +688 -0
  44. package/dist/vendor/proto/gen/loams/stream/v1/stream_pb.js +180 -0
  45. package/package.json +2 -2
@@ -0,0 +1,608 @@
1
+ // Queries: the search IR as typed messages, and its answer (design §44 §5.1,
2
+ // D602; API1 Task 4).
3
+ //
4
+ // This is the third file of `loams.collection.v1`. It replaces the M1.2
5
+ // native REST route `POST /v1/namespaces/{ns}/query` — the `SearchRequest` of
6
+ // `crates/loams-query/src/ir.rs`, which is the IR the REST route parses
7
+ // verbatim — with `QueryService/Search` on the one port (design §44 §4).
8
+ //
9
+ // - **Names are fields, not path segments.** `namespace` and `collection`
10
+ // travel in the request message and one path serves every collection (plan
11
+ // ruling 4), exactly as `collection.proto` and `document.proto` do.
12
+ // - **proto3 JSON is the wire form**: field names are `lowerCamelCase`, an
13
+ // enum answers its proto name in `UPPER_SNAKE`, a 64-bit integer answers a
14
+ // decimal string, and a field at its default is *absent* rather than `0`,
15
+ // `false`, `""` or `[]`.
16
+ //
17
+ // ## The one divergence that is unavoidable: `snake_case` → `lowerCamelCase`
18
+ //
19
+ // The REST IR is serde `snake_case` and proto3 JSON is `lowerCamelCase`, so
20
+ // `score_threshold` is `scoreThreshold`, `minimum_should_match` is
21
+ // `minimumShouldMatch`, `track_total_hits` is `trackTotalHits` and
22
+ // `must_not` is `mustNot`. Nothing here *renames* anything else: the IR's field
23
+ // names are the proto field names, so the two surfaces are one vocabulary with
24
+ // two spellings and no translation table to keep.
25
+ //
26
+ // Three rules follow from proto3 JSON rather than from the IR, and
27
+ // `crates/loams/tests/connect_query.rs` pins all three:
28
+ //
29
+ // - **A `null` is an absent field.** proto3 JSON has no `null` for a scalar or
30
+ // a message field, and a field at its default is *absent*. The REST fixture
31
+ // spells its defaults out (`"nprobes": null`, `"fusion": null`), and on this
32
+ // surface the same value is the field being absent. That is why every
33
+ // optional IR field is `optional` or a message rather than a sentinel: a
34
+ // caller that must distinguish "not asked" from "asked for zero" needs the
35
+ // presence, and proto3 gives it for `optional`.
36
+ // - **A oneof arm is `{"arm": {…}}`, and a unit arm is `{"arm": {}}`.** The IR
37
+ // spells `Query::MatchAll` as the bare string `"match_all"`, which a proto
38
+ // oneof has no spelling for, so `match_all` is an empty message. `WriteOp`
39
+ // set this precedent in this package, and `Query`, `Retriever`, `Fusion`,
40
+ // `SortKey` and `TrackTotalHits` follow it.
41
+ // - **A bare id is a `DocumentId`.** `Query::Ids` is a `repeated DocumentId`
42
+ // and `Hit.pk` is one, for Task 3's reason: `google.protobuf.Value` holds
43
+ // every number in a `double`, so a `u64::MAX` id would come back as
44
+ // `18446744073709552000` — a different document.
45
+ //
46
+ // ## The §05 §4 body is a spelling of this request, not another request
47
+ //
48
+ // Design §05 §4's example body is accepted by the same RPC, and this file
49
+ // declares the four keys that reach it verbatim rather than through the typed
50
+ // messages:
51
+ //
52
+ // | §05 §4 | here |
53
+ // |---|---|
54
+ // | `"from": "collections.kb"` | `SearchRequest.from`, an alias of `collection` |
55
+ // | `"retrieve": [...]` | `SearchRequest.retrieve`, an alias of `retrievers` |
56
+ // | `"fuse": {"method": "rrf", "k": 60}` | `SearchRequest.fuse`, a `Struct`, verbatim |
57
+ // | `"select": ["id", "_score", "body"]` | `SearchRequest.select`, the projection `Struct` of Task 2/3 |
58
+ //
59
+ // `fuse` is a `Struct` rather than a `Fusion` on purpose. §05 §4 names its
60
+ // method with the string `"rrf"`, and ruling 2.1's shape for this package is
61
+ // the IR spelling rather than a new `FUSION_METHOD_*` enumeration, so the
62
+ // `Struct` keeps `method` as the string a reader already switches on
63
+ // verbatim — the same reason `Patch.mode` and `ScanColumn.role` are strings.
64
+ // A field-for-field verbatim decode of the whole §05 §4 body is impossible
65
+ // (a message field has no bare-string form), so these four keys are the
66
+ // minimal reading that keeps the plan's sentence true: `from` and `retrieve`
67
+ // are the field aliases, `fuse` and `select` are the two payloads the IR
68
+ // spells differently. Everything else of §05 §4 — `consistency`, the
69
+ // retrievers, `limit`, `offset` — is this message's own spelling.
70
+ //
71
+ // `from` and `retrieve` are *aliases*, not a second request: they are read
72
+ // into the same fields `collection` and `retrievers` hold, and a request that
73
+ // sets both is not two requests. `collection` wins over `from` and
74
+ // `retrievers` over `retrieve`, because the typed field is the one a generated
75
+ // SDK fills in and the alias exists for a caller migrating a §05 §4 body.
76
+ //
77
+ // ## `rerank` and `expand` are declared so they can be refused
78
+ //
79
+ // proto3 JSON says to skip a field the message does not declare. If `rerank`
80
+ // and `expand` were simply absent, a body carrying either would be accepted
81
+ // with the stage silently dropped — the one failure a caller cannot detect.
82
+ // They are therefore declared as `Struct`s that **every implementation
83
+ // refuses**: both stages need graph expansion (design §07) and arrive in M3,
84
+ // and a caller that sends one gets `invalid_argument` saying so, on both
85
+ // surfaces, from the same code that refuses it over REST. This is the only
86
+ // reason they are here, and the two `Struct`s exist to be rejected rather than
87
+ // to carry a payload.
88
+ //
89
+ // ## `track_total_hits` is a `Value`, and the reason is the REST spelling
90
+ //
91
+ // Every other field of this message is typed, and this one is not: the IR's
92
+ // `TrackTotalHits` has two spellings a caller may send — the serde
93
+ // externally-tagged bare string `"exact"` and the proto3 JSON message form
94
+ // `{"exact": {}}` — and a proto3 message field has only the second of them.
95
+ // Carrying the union as a `google.protobuf.Value` is what lets a body written
96
+ // against the REST IR and one written against this proto both mean "count
97
+ // exactly", instead of forcing every such caller to learn a second spelling.
98
+ // The handler maps the `Value` to the IR by its own rules
99
+ // (`crates/loams/src/api/connect_query_ir.rs`) and refuses anything else.
100
+ //
101
+ // ## `filter` here is the typed IR; on the document RPCs it is still a `Value`
102
+ //
103
+ // `ScrollDocumentsRequest.filter` and its three siblings stay
104
+ // `google.protobuf.Value`, and `document.proto` says why: Task 3 shipped them
105
+ // that way and eighteen green tests send the bare string `"match_all"`, which a
106
+ // typed oneof cannot spell. `SearchRequest.filter` is the typed [`Query`], so
107
+ // this is the one filter on the package a caller cannot degrade by sending a
108
+ // string the handler did not read.
109
+ //
110
+ // ## What stays a `Struct` or a `Value` here, and why
111
+ //
112
+ // The IR's open parts stay open, for `document.proto`'s reasons:
113
+ // `SearchRequest.select` (a projection's `source` has a JSON object form),
114
+ // `SearchRequest.fuse` (above), `SparseQuery.query` (a sparse vector is
115
+ // `{"indices": […], "values": […]}`) and `SearchRequest.aggregations` (an
116
+ // ES aggregation request, which Tantivy's own `Aggregations` owns). A field
117
+ // value, a sort value and a hit's `highlight`/`fields` entry are `Value`s
118
+ // because the IR's own JSON for one is a scalar or `{"date": "…"}` /
119
+ // `{"uuid": "…"}` (Ruling 9), and all three spellings fit a `Value`.
120
+ //
121
+ // ## Why `ScrollDocuments` stays unary
122
+ //
123
+ // Plan ruling 2 offers `page_token` as an *addition* to the shipped unary
124
+ // `DocumentService/ScrollDocuments`, and Q614 (server-streaming versus unary
125
+ // pagination) is unanswered. This file therefore does not change that RPC's
126
+ // streaming-ness — eighteen shipped tests would break for an open question —
127
+ // and `document.proto` gains `ScrollDocumentsRequest.page_token`, the
128
+ // AIP-158 spelling of the **same** `DocumentId` cursor `after` already is.
129
+ // True server-streaming, if Q614 says so, is a separate additive RPC.
130
+ //
131
+ // ## The handlers are thin
132
+ //
133
+ // `Search` calls the same `CollectionService::search` the REST route calls and
134
+ // nothing else: the request message is turned back into the native REST JSON
135
+ // and `loams_query::json::hybrid::parse_query_body` — the REST route's own
136
+ // parser — reads it, so a filter, a retriever, a fusion or a sort key cannot
137
+ // behave differently on the two surfaces. That is what
138
+ // `crates/loams/tests/connect_query.rs::routing_and_ranking_match_rest_for_every_fixture`
139
+ // checks, fifteen fixtures compared against each other rather than against a
140
+ // golden number.
141
+ //
142
+ // ## The SDK module, and why no method is in the SDK facade yet
143
+ //
144
+ // The service carries `loams.options.v1.ModuleOptions` (`loams.search`), which
145
+ // is what §44 §7.3 asks of every public package; §7.2 puts `loams.search` and
146
+ // `loams.vector` on this one RPC.
147
+ //
148
+ // No method carries `FacadeOptions`, which is plan ruling 2.5's shape again: a
149
+ // `facade` option makes `protoc-gen-loams-facade` emit a call, and the call
150
+ // imports the package's message types from the generated stubs, which means
151
+ // every SDK mirror has to generate `loams.collection.v1` first. That is SDK1's
152
+ // stub task, and Task 2 measured what going ahead of it costs.
153
+ import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
154
+ import { file_google_protobuf_empty, file_google_protobuf_struct } from "@bufbuild/protobuf/wkt";
155
+ import { file_loams_collection_v1_document } from "./document_pb.js";
156
+ import { file_loams_options_v1_options } from "../../options/v1/options_pb.js";
157
+ /**
158
+ * Describes the file loams/collection/v1/query.proto.
159
+ */
160
+ export const file_loams_collection_v1_query = /*@__PURE__*/ fileDesc("Ch9sb2Ftcy9jb2xsZWN0aW9uL3YxL3F1ZXJ5LnByb3RvEhNsb2Ftcy5jb2xsZWN0aW9uLnYxIs0HCg1TZWFyY2hSZXF1ZXN0EhEKCW5hbWVzcGFjZRgBIAEoCRISCgpjb2xsZWN0aW9uGAIgASgJEjUKC2NvbnNpc3RlbmN5GAMgASgLMiAubG9hbXMuY29sbGVjdGlvbi52MS5Db25zaXN0ZW5jeRIyCgpyZXRyaWV2ZXJzGAQgAygLMh4ubG9hbXMuY29sbGVjdGlvbi52MS5SZXRyaWV2ZXISKwoGZnVzaW9uGAUgASgLMhsubG9hbXMuY29sbGVjdGlvbi52MS5GdXNpb24SKgoGZmlsdGVyGAYgASgLMhoubG9hbXMuY29sbGVjdGlvbi52MS5RdWVyeRIqCgRzb3J0GAcgAygLMhwubG9hbXMuY29sbGVjdGlvbi52MS5Tb3J0S2V5Eg4KBm9mZnNldBgIIAEoDRISCgVsaW1pdBgJIAEoDUgAiAEBEiwKDHNlYXJjaF9hZnRlchgKIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIcCg9zY29yZV90aHJlc2hvbGQYCyABKAJIAYgBARInCgZzZWxlY3QYDCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EiwKDGFnZ3JlZ2F0aW9ucxgNIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIxCgloaWdobGlnaHQYDiABKAsyHi5sb2Ftcy5jb2xsZWN0aW9uLnYxLkhpZ2hsaWdodBIuCghncm91cF9ieRgPIAEoCzIcLmxvYW1zLmNvbGxlY3Rpb24udjEuR3JvdXBCeRIwChB0cmFja190b3RhbF9oaXRzGBAgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEisKBnJlcmFuaxgRIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCAhgBEisKBmV4cGFuZBgSIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RCAhgBEgwKBGZyb20YEyABKAkSMAoIcmV0cmlldmUYFCADKAsyHi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlJldHJpZXZlchIlCgRmdXNlGBUgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBI0CgtleHBhbmRfc3BlYxgWIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuRXhwYW5kU3BlYxI0CgtyZXJhbmtfc3BlYxgXIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuUmVyYW5rU3BlY0IICgZfbGltaXRCEgoQX3Njb3JlX3RocmVzaG9sZCKYAgoJUmV0cmlldmVyEjIKBnZlY3RvchgBIAEoCzIgLmxvYW1zLmNvbGxlY3Rpb24udjEuVmVjdG9yUXVlcnlIABIuCgR0ZXh0GAIgASgLMh4ubG9hbXMuY29sbGVjdGlvbi52MS5UZXh0UXVlcnlIABIwCgVmdXNlZBgDIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuRnVzZWRRdWVyeUgAEjQKB3Jlc2NvcmUYBCABKAsyIS5sb2Ftcy5jb2xsZWN0aW9uLnYxLlJlc2NvcmVRdWVyeUgAEjIKBnNwYXJzZRgFIAEoCzIgLmxvYW1zLmNvbGxlY3Rpb24udjEuU3BhcnNlUXVlcnlIAEILCglyZXRyaWV2ZXIikgEKC1ZlY3RvclF1ZXJ5Eg0KBWZpZWxkGAEgASgJEg0KBXF1ZXJ5GAIgAygCEgkKAWsYAyABKA0SLgoGcGFyYW1zGAQgASgLMh4ubG9hbXMuY29sbGVjdGlvbi52MS5Bbm5QYXJhbXMSKgoGZmlsdGVyGAUgASgLMhoubG9hbXMuY29sbGVjdGlvbi52MS5RdWVyeSJBCglUZXh0UXVlcnkSKQoFcXVlcnkYASABKAsyGi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlF1ZXJ5EgkKAWsYAiABKA0idAoKRnVzZWRRdWVyeRIuCgZpbnB1dHMYASADKAsyHi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlJldHJpZXZlchIrCgZmdXNpb24YAiABKAsyGy5sb2Ftcy5jb2xsZWN0aW9uLnYxLkZ1c2lvbhIJCgFrGAMgASgNImYKDFJlc2NvcmVRdWVyeRItCgVpbnB1dBgBIAEoCzIeLmxvYW1zLmNvbGxlY3Rpb24udjEuUmV0cmlldmVyEg0KBWZpZWxkGAIgASgJEg0KBXF1ZXJ5GAMgAygCEgkKAWsYBCABKA0irgEKC1NwYXJzZVF1ZXJ5Eg0KBWZpZWxkGAEgASgJEiYKBXF1ZXJ5GAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIJCgFrGAMgASgNEioKBmZpbHRlchgEIAEoCzIaLmxvYW1zLmNvbGxlY3Rpb24udjEuUXVlcnkSMQoGcGFyYW1zGAUgASgLMiEubG9hbXMuY29sbGVjdGlvbi52MS5TcGFyc2VQYXJhbXMiwAEKCUFublBhcmFtcxINCgVleGFjdBgBIAEoCBIUCgducHJvYmVzGAIgASgNSACIAQESGgoNcmVmaW5lX2ZhY3RvchgDIAEoDUgBiAEBEg8KAmVmGAQgASgNSAKIAQESGQoMb3ZlcnNhbXBsaW5nGAUgASgCSAOIAQESEAoIZGlzdGFuY2UYBiABKAlCCgoIX25wcm9iZXNCEAoOX3JlZmluZV9mYWN0b3JCBQoDX2VmQg8KDV9vdmVyc2FtcGxpbmciPgoMU3BhcnNlUGFyYW1zEi4KCmlkZl9jb3JwdXMYASABKAsyGi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlF1ZXJ5Ip0BCgZGdXNpb24SJwoDcnJmGAEgASgLMhgubG9hbXMuY29sbGVjdGlvbi52MS5ScmZIABImCgRkYnNmGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASOAoMd2VpZ2h0ZWRfc3VtGAMgASgLMiAubG9hbXMuY29sbGVjdGlvbi52MS5XZWlnaHRlZFN1bUgAQggKBmZ1c2lvbiIbCgNScmYSDgoBaxgBIAEoDUgAiAEBQgQKAl9rIh4KC1dlaWdodGVkU3VtEg8KB3dlaWdodHMYASADKAIirwgKBVF1ZXJ5EisKCW1hdGNoX2FsbBgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEiwKCm1hdGNoX25vbmUYAiABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABIwCgVtYXRjaBgDIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuTWF0Y2hRdWVyeUgAEj0KDG1hdGNoX3BocmFzZRgEIAEoCzIlLmxvYW1zLmNvbGxlY3Rpb24udjEuTWF0Y2hQaHJhc2VRdWVyeUgAEjsKC211bHRpX21hdGNoGAUgASgLMiQubG9hbXMuY29sbGVjdGlvbi52MS5NdWx0aU1hdGNoUXVlcnlIABIuCgR0ZXJtGAYgASgLMh4ubG9hbXMuY29sbGVjdGlvbi52MS5UZXJtUXVlcnlIABIwCgV0ZXJtcxgHIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuVGVybXNRdWVyeUgAEjAKBXJhbmdlGAggASgLMh8ubG9hbXMuY29sbGVjdGlvbi52MS5SYW5nZVF1ZXJ5SAASMQoGZXhpc3RzGAkgASgLMh8ubG9hbXMuY29sbGVjdGlvbi52MS5GaWVsZFF1ZXJ5SAASMgoHaXNfbnVsbBgKIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuRmllbGRRdWVyeUgAEjMKCGlzX2VtcHR5GAsgASgLMh8ubG9hbXMuY29sbGVjdGlvbi52MS5GaWVsZFF1ZXJ5SAASPQoMdmFsdWVzX2NvdW50GAwgASgLMiUubG9hbXMuY29sbGVjdGlvbi52MS5WYWx1ZXNDb3VudFF1ZXJ5SAASMgoGcHJlZml4GA0gASgLMiAubG9hbXMuY29sbGVjdGlvbi52MS5QcmVmaXhRdWVyeUgAEjYKCHdpbGRjYXJkGA4gASgLMiIubG9hbXMuY29sbGVjdGlvbi52MS5XaWxkY2FyZFF1ZXJ5SAASMAoFZnV6enkYDyABKAsyHy5sb2Ftcy5jb2xsZWN0aW9uLnYxLkZ1enp5UXVlcnlIABI9CgxxdWVyeV9zdHJpbmcYESABKAsyJS5sb2Ftcy5jb2xsZWN0aW9uLnYxLlF1ZXJ5U3RyaW5nUXVlcnlIABIuCgRib29sGBIgASgLMh4ubG9hbXMuY29sbGVjdGlvbi52MS5Cb29sUXVlcnlIABIwCgVib29zdBgTIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuQm9vc3RRdWVyeUgAEkEKDmNvbnN0YW50X3Njb3JlGBQgASgLMicubG9hbXMuY29sbGVjdGlvbi52MS5Db25zdGFudFNjb3JlUXVlcnlIABIjCgNpZHMYECADKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWVCBwoFcXVlcnkivAEKCk1hdGNoUXVlcnkSDQoFZmllbGQYASABKAkSDAoEdGV4dBgCIAEoCRIQCghvcGVyYXRvchgDIAEoCRIhChRtaW5pbXVtX3Nob3VsZF9tYXRjaBgEIAEoCUgAiAEBEjEKCWZ1enppbmVzcxgFIAEoCzIeLmxvYW1zLmNvbGxlY3Rpb24udjEuRnV6emluZXNzEhAKCGFuYWx5emVyGAYgASgJQhcKFV9taW5pbXVtX3Nob3VsZF9tYXRjaCI9ChBNYXRjaFBocmFzZVF1ZXJ5Eg0KBWZpZWxkGAEgASgJEgwKBHRleHQYAiABKAkSDAoEc2xvcBgDIAEoDSLnAQoPTXVsdGlNYXRjaFF1ZXJ5EjQKBmZpZWxkcxgBIAMoCzIkLmxvYW1zLmNvbGxlY3Rpb24udjEuTXVsdGlNYXRjaEZpZWxkEgwKBHRleHQYAiABKAkSMQoEa2luZBgDIAEoDjIjLmxvYW1zLmNvbGxlY3Rpb24udjEuTXVsdGlNYXRjaEtpbmQSMwoIb3BlcmF0b3IYBCABKA4yIS5sb2Ftcy5jb2xsZWN0aW9uLnYxLkJvb2xPcGVyYXRvchIYCgt0aWVfYnJlYWtlchgFIAEoAkgAiAEBQg4KDF90aWVfYnJlYWtlciIvCg9NdWx0aU1hdGNoRmllbGQSDQoFZmllbGQYASABKAkSDQoFYm9vc3QYAiABKAIiQQoJVGVybVF1ZXJ5Eg0KBWZpZWxkGAEgASgJEiUKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIkMKClRlcm1zUXVlcnkSDQoFZmllbGQYASABKAkSJgoGdmFsdWVzGAIgAygLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlIq0BCgpSYW5nZVF1ZXJ5Eg0KBWZpZWxkGAEgASgJEiIKAmd0GAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEiMKA2d0ZRgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIiCgJsdBgEIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRIjCgNsdGUYBSABKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUiGwoKRmllbGRRdWVyeRINCgVmaWVsZBgBIAEoCSKFAQoQVmFsdWVzQ291bnRRdWVyeRINCgVmaWVsZBgBIAEoCRIPCgJndBgCIAEoBEgAiAEBEhAKA2d0ZRgDIAEoBEgBiAEBEg8KAmx0GAQgASgESAKIAQESEAoDbHRlGAUgASgESAOIAQFCBQoDX2d0QgYKBF9ndGVCBQoDX2x0QgYKBF9sdGUiKwoLUHJlZml4UXVlcnkSDQoFZmllbGQYASABKAkSDQoFdmFsdWUYAiABKAkiLwoNV2lsZGNhcmRRdWVyeRINCgVmaWVsZBgBIAEoCRIPCgdwYXR0ZXJuGAIgASgJIl0KCkZ1enp5UXVlcnkSDQoFZmllbGQYASABKAkSDQoFdmFsdWUYAiABKAkSMQoJZnV6emluZXNzGAMgASgLMh4ubG9hbXMuY29sbGVjdGlvbi52MS5GdXp6aW5lc3MidgoQUXVlcnlTdHJpbmdRdWVyeRINCgVxdWVyeRgBIAEoCRIWCg5kZWZhdWx0X2ZpZWxkcxgCIAMoCRI7ChBkZWZhdWx0X29wZXJhdG9yGAMgASgOMiEubG9hbXMuY29sbGVjdGlvbi52MS5Cb29sT3BlcmF0b3Ii9wEKCUJvb2xRdWVyeRIoCgRtdXN0GAEgAygLMhoubG9hbXMuY29sbGVjdGlvbi52MS5RdWVyeRIqCgZzaG91bGQYAiADKAsyGi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlF1ZXJ5EiwKCG11c3Rfbm90GAMgAygLMhoubG9hbXMuY29sbGVjdGlvbi52MS5RdWVyeRIqCgZmaWx0ZXIYBCADKAsyGi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlF1ZXJ5EiEKFG1pbmltdW1fc2hvdWxkX21hdGNoGAUgASgJSACIAQFCFwoVX21pbmltdW1fc2hvdWxkX21hdGNoIkYKCkJvb3N0UXVlcnkSKQoFcXVlcnkYASABKAsyGi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlF1ZXJ5Eg0KBWJvb3N0GAIgASgCIk4KEkNvbnN0YW50U2NvcmVRdWVyeRIpCgVxdWVyeRgBIAEoCzIaLmxvYW1zLmNvbGxlY3Rpb24udjEuUXVlcnkSDQoFc2NvcmUYAiABKAIiUQoJRnV6emluZXNzEiYKBGF1dG8YASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABIPCgVlZGl0cxgCIAEoDUgAQgsKCWZ1enppbmVzcyKlAQoHU29ydEtleRIvCgVzY29yZRgBIAEoCzIeLmxvYW1zLmNvbGxlY3Rpb24udjEuU2NvcmVTb3J0SAASMQoCcGsYAiABKAsyIy5sb2Ftcy5jb2xsZWN0aW9uLnYxLlByaW1hcnlLZXlTb3J0SAASLwoFZmllbGQYAyABKAsyHi5sb2Ftcy5jb2xsZWN0aW9uLnYxLkZpZWxkU29ydEgAQgUKA2tleSI6CglTY29yZVNvcnQSLQoFb3JkZXIYASABKA4yHi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlNvcnRPcmRlciI/Cg5QcmltYXJ5S2V5U29ydBItCgVvcmRlchgBIAEoDjIeLmxvYW1zLmNvbGxlY3Rpb24udjEuU29ydE9yZGVyIn0KCUZpZWxkU29ydBINCgVmaWVsZBgBIAEoCRItCgVvcmRlchgCIAEoDjIeLmxvYW1zLmNvbGxlY3Rpb24udjEuU29ydE9yZGVyEjIKB21pc3NpbmcYAyABKA4yIS5sb2Ftcy5jb2xsZWN0aW9uLnYxLk1pc3NpbmdPcmRlciJACglIaWdobGlnaHQSMwoGZmllbGRzGAEgAygLMiMubG9hbXMuY29sbGVjdGlvbi52MS5IaWdobGlnaHRGaWVsZCLNAQoOSGlnaGxpZ2h0RmllbGQSDQoFZmllbGQYASABKAkSFAoHcHJlX3RhZxgCIAEoCUgAiAEBEhUKCHBvc3RfdGFnGAMgASgJSAGIAQESGgoNZnJhZ21lbnRfc2l6ZRgEIAEoDUgCiAEBEiAKE251bWJlcl9vZl9mcmFnbWVudHMYBSABKA1IA4gBAUIKCghfcHJlX3RhZ0ILCglfcG9zdF90YWdCEAoOX2ZyYWdtZW50X3NpemVCFgoUX251bWJlcl9vZl9mcmFnbWVudHMiXgoHR3JvdXBCeRINCgVmaWVsZBgBIAEoCRIXCgpncm91cF9zaXplGAIgASgNSACIAQESEgoFbGltaXQYAyABKA1IAYgBAUINCgtfZ3JvdXBfc2l6ZUIICgZfbGltaXQiygIKDlNlYXJjaFJlc3BvbnNlEiYKBGhpdHMYASADKAsyGC5sb2Ftcy5jb2xsZWN0aW9uLnYxLkhpdBItCgV0b3RhbBgCIAEoCzIeLmxvYW1zLmNvbGxlY3Rpb24udjEuVG90YWxIaXRzEiwKDGFnZ3JlZ2F0aW9ucxgDIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRItCgZncm91cHMYBCADKAsyHS5sb2Ftcy5jb2xsZWN0aW9uLnYxLkhpdEdyb3VwEhIKCnJlYWRfdG9rZW4YBSABKAkSEAoIaG90X3VzZWQYBiADKAkSLAoLcGVyZm9ybWFuY2UYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjAKBmV4cGFuZBgIIAEoCzIgLmxvYW1zLmNvbGxlY3Rpb24udjEuRXhwYW5kU3RhdHMijgYKA0hpdBIrCgJwaxgBIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuRG9jdW1lbnRJZBINCgVzY29yZRgCIAEoAhIrCgtzb3J0X3ZhbHVlcxgDIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZRInCgZzb3VyY2UYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjYKB3ZlY3RvcnMYBSADKAsyJS5sb2Ftcy5jb2xsZWN0aW9uLnYxLkhpdC5WZWN0b3JzRW50cnkSQwoOc3BhcnNlX3ZlY3RvcnMYBiADKAsyKy5sb2Ftcy5jb2xsZWN0aW9uLnYxLkhpdC5TcGFyc2VWZWN0b3JzRW50cnkSOgoJaGlnaGxpZ2h0GAcgAygLMicubG9hbXMuY29sbGVjdGlvbi52MS5IaXQuSGlnaGxpZ2h0RW50cnkSNAoGZmllbGRzGAggAygLMiQubG9hbXMuY29sbGVjdGlvbi52MS5IaXQuRmllbGRzRW50cnkSMAoJbmVpZ2hib3JzGAkgAygLMh0ubG9hbXMuY29sbGVjdGlvbi52MS5OZWlnaGJvchIsCgVncmFwaBgKIAEoCzIdLmxvYW1zLmNvbGxlY3Rpb24udjEuR3JhcGhIaXQaRgoMVmVjdG9yc0VudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEaTQoSU3BhcnNlVmVjdG9yc0VudHJ5EgsKA2tleRgBIAEoCRImCgV2YWx1ZRgCIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3Q6AjgBGkgKDkhpZ2hsaWdodEVudHJ5EgsKA2tleRgBIAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToCOAEaRQoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEiUKBXZhbHVlGAIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlOgI4ASKvAwoKRXhwYW5kU3BlYxINCgVncmFwaBgBIAEoCRISCgpmcm9tX2ZpZWxkGAIgASgJEhIKCnNlZWRfbGFiZWwYAyABKAkSDQoFc2VlZHMYBCABKA0SDAoEaG9wcxgFIAEoDRI3CglkaXJlY3Rpb24YBiABKA4yJC5sb2Ftcy5jb2xsZWN0aW9uLnYxLkV4cGFuZERpcmVjdGlvbhISCgplZGdlX3R5cGVzGAcgAygJEi8KC2VkZ2VfZmlsdGVyGAggASgLMhoubG9hbXMuY29sbGVjdGlvbi52MS5RdWVyeRIxCg12ZXJ0ZXhfZmlsdGVyGAkgASgLMhoubG9hbXMuY29sbGVjdGlvbi52MS5RdWVyeRIWCg5saW1pdF9wZXJfc2VlZBgKIAEoDRINCgVsaW1pdBgLIAEoDRInCgZzZWxlY3QYDCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjEKBm91dHB1dBgNIAEoDjIhLmxvYW1zLmNvbGxlY3Rpb24udjEuRXhwYW5kT3V0cHV0EhkKEWNvbnNpc3RlbmN5X3Rva2VuGA4gASgJIrUBCgpSZXJhbmtTcGVjEjUKB2luaGVyaXQYASABKAsyIi5sb2Ftcy5jb2xsZWN0aW9uLnYxLkluaGVyaXRSZXJhbmtIABIzCgZ2ZWN0b3IYAiABKAsyIS5sb2Ftcy5jb2xsZWN0aW9uLnYxLlZlY3RvclJlcmFua0gAEjEKBW1vZGVsGAMgASgLMiAubG9hbXMuY29sbGVjdGlvbi52MS5Nb2RlbFJlcmFua0gAQggKBm1ldGhvZCItCg1Jbmhlcml0UmVyYW5rEhIKBWRlY2F5GAEgASgCSACIAQFCCAoGX2RlY2F5IiwKDFZlY3RvclJlcmFuaxINCgVmaWVsZBgBIAEoCRINCgVxdWVyeRgCIAMoAiJRCgtNb2RlbFJlcmFuaxIQCghlbmRwb2ludBgBIAEoCRISCgp0ZXh0X2ZpZWxkGAIgASgJEg0KBXF1ZXJ5GAMgASgJEg0KBXRvcF9uGAQgASgNIpACCghOZWlnaGJvchINCgVsYWJlbBgBIAEoCRIsCgNrZXkYAiABKAsyHy5sb2Ftcy5jb2xsZWN0aW9uLnYxLkRvY3VtZW50SWQSCwoDaG9wGAMgASgNEiwKA3ZpYRgEIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuRG9jdW1lbnRJZBIRCgllZGdlX3R5cGUYBSABKAkSLQoEZWRnZRgGIAEoCzIfLmxvYW1zLmNvbGxlY3Rpb24udjEuRG9jdW1lbnRJZBINCgVzY29yZRgHIAEoAhISCgpjb2xsZWN0aW9uGAggASgJEicKBnNvdXJjZRgJIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiagoIR3JhcGhIaXQSDQoFbGFiZWwYASABKAkSCwoDaG9wGAIgASgNEi4KBXNlZWRzGAMgAygLMh8ubG9hbXMuY29sbGVjdGlvbi52MS5Eb2N1bWVudElkEhIKCmNvbGxlY3Rpb24YBCABKAkiWwoLRXhwYW5kU3RhdHMSDQoFc2VlZHMYASABKAQSFQoNc2VlZHNfc2tpcHBlZBgCIAEoBBIRCgluZWlnaGJvcnMYAyABKAQSEwoLZ3JhcGhfdG9rZW4YBCABKAkiVwoISGl0R3JvdXASIwoDa2V5GAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEiYKBGhpdHMYAiADKAsyGC5sb2Ftcy5jb2xsZWN0aW9uLnYxLkhpdCJfCglUb3RhbEhpdHMSEgoFdmFsdWUYASABKARIAIgBARI0CghyZWxhdGlvbhgCIAEoDjIiLmxvYW1zLmNvbGxlY3Rpb24udjEuVG90YWxSZWxhdGlvbkIICgZfdmFsdWUqWgoMQm9vbE9wZXJhdG9yEh0KGUJPT0xfT1BFUkFUT1JfVU5TUEVDSUZJRUQQABIUChBCT09MX09QRVJBVE9SX09SEAESFQoRQk9PTF9PUEVSQVRPUl9BTkQQAiraAQoOTXVsdGlNYXRjaEtpbmQSIAocTVVMVElfTUFUQ0hfS0lORF9VTlNQRUNJRklFRBAAEiAKHE1VTFRJX01BVENIX0tJTkRfQkVTVF9GSUVMRFMQARIgChxNVUxUSV9NQVRDSF9LSU5EX01PU1RfRklFTERTEAISIQodTVVMVElfTUFUQ0hfS0lORF9DUk9TU19GSUVMRFMQAxIbChdNVUxUSV9NQVRDSF9LSU5EX1BIUkFTRRAEEiIKHk1VTFRJX01BVENIX0tJTkRfUEhSQVNFX1BSRUZJWBAFKlAKCVNvcnRPcmRlchIaChZTT1JUX09SREVSX1VOU1BFQ0lGSUVEEAASEgoOU09SVF9PUkRFUl9BU0MQARITCg9TT1JUX09SREVSX0RFU0MQAipeCgxNaXNzaW5nT3JkZXISHQoZTUlTU0lOR19PUkRFUl9VTlNQRUNJRklFRBAAEhcKE01JU1NJTkdfT1JERVJfRklSU1QQARIWChJNSVNTSU5HX09SREVSX0xBU1QQAiqBAQoPRXhwYW5kRGlyZWN0aW9uEiAKHEVYUEFORF9ESVJFQ1RJT05fVU5TUEVDSUZJRUQQABIYChRFWFBBTkRfRElSRUNUSU9OX09VVBABEhcKE0VYUEFORF9ESVJFQ1RJT05fSU4QAhIZChVFWFBBTkRfRElSRUNUSU9OX0JPVEgQAypfCgxFeHBhbmRPdXRwdXQSHQoZRVhQQU5EX09VVFBVVF9VTlNQRUNJRklFRBAAEhgKFEVYUEFORF9PVVRQVVRfTkVTVEVEEAESFgoSRVhQQU5EX09VVFBVVF9GTEFUEAIqXgoNVG90YWxSZWxhdGlvbhIeChpUT1RBTF9SRUxBVElPTl9VTlNQRUNJRklFRBAAEhUKEVRPVEFMX1JFTEFUSU9OX0VREAESFgoSVE9UQUxfUkVMQVRJT05fR1RFEAIy3AEKDFF1ZXJ5U2VydmljZRJ1CgZTZWFyY2gSIi5sb2Ftcy5jb2xsZWN0aW9uLnYxLlNlYXJjaFJlcXVlc3QaIy5sb2Ftcy5jb2xsZWN0aW9uLnYxLlNlYXJjaFJlc3BvbnNlIiKQAgGStRgHEgVxdWVyeZK1GBAKBnZlY3RvchIGc2VhcmNoGlWKtRhRCgZzZWFyY2gSR1F1ZXJpZXM6IG9uZSBzZWFyY2ggb3ZlciBvbmUgY29sbGVjdGlvbiwgZGVuc2UsIHNwYXJzZSwgdGV4dCBvciBoeWJyaWQuYgZwcm90bzM", [file_google_protobuf_empty, file_google_protobuf_struct, file_loams_collection_v1_document, file_loams_options_v1_options]);
161
+ /**
162
+ * Describes the message loams.collection.v1.SearchRequest.
163
+ * Use `create(SearchRequestSchema)` to create a new message.
164
+ */
165
+ export const SearchRequestSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 0);
166
+ /**
167
+ * Describes the message loams.collection.v1.Retriever.
168
+ * Use `create(RetrieverSchema)` to create a new message.
169
+ */
170
+ export const RetrieverSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 1);
171
+ /**
172
+ * Describes the message loams.collection.v1.VectorQuery.
173
+ * Use `create(VectorQuerySchema)` to create a new message.
174
+ */
175
+ export const VectorQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 2);
176
+ /**
177
+ * Describes the message loams.collection.v1.TextQuery.
178
+ * Use `create(TextQuerySchema)` to create a new message.
179
+ */
180
+ export const TextQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 3);
181
+ /**
182
+ * Describes the message loams.collection.v1.FusedQuery.
183
+ * Use `create(FusedQuerySchema)` to create a new message.
184
+ */
185
+ export const FusedQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 4);
186
+ /**
187
+ * Describes the message loams.collection.v1.RescoreQuery.
188
+ * Use `create(RescoreQuerySchema)` to create a new message.
189
+ */
190
+ export const RescoreQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 5);
191
+ /**
192
+ * Describes the message loams.collection.v1.SparseQuery.
193
+ * Use `create(SparseQuerySchema)` to create a new message.
194
+ */
195
+ export const SparseQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 6);
196
+ /**
197
+ * Describes the message loams.collection.v1.AnnParams.
198
+ * Use `create(AnnParamsSchema)` to create a new message.
199
+ */
200
+ export const AnnParamsSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 7);
201
+ /**
202
+ * Describes the message loams.collection.v1.SparseParams.
203
+ * Use `create(SparseParamsSchema)` to create a new message.
204
+ */
205
+ export const SparseParamsSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 8);
206
+ /**
207
+ * Describes the message loams.collection.v1.Fusion.
208
+ * Use `create(FusionSchema)` to create a new message.
209
+ */
210
+ export const FusionSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 9);
211
+ /**
212
+ * Describes the message loams.collection.v1.Rrf.
213
+ * Use `create(RrfSchema)` to create a new message.
214
+ */
215
+ export const RrfSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 10);
216
+ /**
217
+ * Describes the message loams.collection.v1.WeightedSum.
218
+ * Use `create(WeightedSumSchema)` to create a new message.
219
+ */
220
+ export const WeightedSumSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 11);
221
+ /**
222
+ * Describes the message loams.collection.v1.Query.
223
+ * Use `create(QuerySchema)` to create a new message.
224
+ */
225
+ export const QuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 12);
226
+ /**
227
+ * Describes the message loams.collection.v1.MatchQuery.
228
+ * Use `create(MatchQuerySchema)` to create a new message.
229
+ */
230
+ export const MatchQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 13);
231
+ /**
232
+ * Describes the message loams.collection.v1.MatchPhraseQuery.
233
+ * Use `create(MatchPhraseQuerySchema)` to create a new message.
234
+ */
235
+ export const MatchPhraseQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 14);
236
+ /**
237
+ * Describes the message loams.collection.v1.MultiMatchQuery.
238
+ * Use `create(MultiMatchQuerySchema)` to create a new message.
239
+ */
240
+ export const MultiMatchQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 15);
241
+ /**
242
+ * Describes the message loams.collection.v1.MultiMatchField.
243
+ * Use `create(MultiMatchFieldSchema)` to create a new message.
244
+ */
245
+ export const MultiMatchFieldSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 16);
246
+ /**
247
+ * Describes the message loams.collection.v1.TermQuery.
248
+ * Use `create(TermQuerySchema)` to create a new message.
249
+ */
250
+ export const TermQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 17);
251
+ /**
252
+ * Describes the message loams.collection.v1.TermsQuery.
253
+ * Use `create(TermsQuerySchema)` to create a new message.
254
+ */
255
+ export const TermsQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 18);
256
+ /**
257
+ * Describes the message loams.collection.v1.RangeQuery.
258
+ * Use `create(RangeQuerySchema)` to create a new message.
259
+ */
260
+ export const RangeQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 19);
261
+ /**
262
+ * Describes the message loams.collection.v1.FieldQuery.
263
+ * Use `create(FieldQuerySchema)` to create a new message.
264
+ */
265
+ export const FieldQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 20);
266
+ /**
267
+ * Describes the message loams.collection.v1.ValuesCountQuery.
268
+ * Use `create(ValuesCountQuerySchema)` to create a new message.
269
+ */
270
+ export const ValuesCountQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 21);
271
+ /**
272
+ * Describes the message loams.collection.v1.PrefixQuery.
273
+ * Use `create(PrefixQuerySchema)` to create a new message.
274
+ */
275
+ export const PrefixQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 22);
276
+ /**
277
+ * Describes the message loams.collection.v1.WildcardQuery.
278
+ * Use `create(WildcardQuerySchema)` to create a new message.
279
+ */
280
+ export const WildcardQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 23);
281
+ /**
282
+ * Describes the message loams.collection.v1.FuzzyQuery.
283
+ * Use `create(FuzzyQuerySchema)` to create a new message.
284
+ */
285
+ export const FuzzyQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 24);
286
+ /**
287
+ * Describes the message loams.collection.v1.QueryStringQuery.
288
+ * Use `create(QueryStringQuerySchema)` to create a new message.
289
+ */
290
+ export const QueryStringQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 25);
291
+ /**
292
+ * Describes the message loams.collection.v1.BoolQuery.
293
+ * Use `create(BoolQuerySchema)` to create a new message.
294
+ */
295
+ export const BoolQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 26);
296
+ /**
297
+ * Describes the message loams.collection.v1.BoostQuery.
298
+ * Use `create(BoostQuerySchema)` to create a new message.
299
+ */
300
+ export const BoostQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 27);
301
+ /**
302
+ * Describes the message loams.collection.v1.ConstantScoreQuery.
303
+ * Use `create(ConstantScoreQuerySchema)` to create a new message.
304
+ */
305
+ export const ConstantScoreQuerySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 28);
306
+ /**
307
+ * Describes the message loams.collection.v1.Fuzziness.
308
+ * Use `create(FuzzinessSchema)` to create a new message.
309
+ */
310
+ export const FuzzinessSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 29);
311
+ /**
312
+ * Describes the message loams.collection.v1.SortKey.
313
+ * Use `create(SortKeySchema)` to create a new message.
314
+ */
315
+ export const SortKeySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 30);
316
+ /**
317
+ * Describes the message loams.collection.v1.ScoreSort.
318
+ * Use `create(ScoreSortSchema)` to create a new message.
319
+ */
320
+ export const ScoreSortSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 31);
321
+ /**
322
+ * Describes the message loams.collection.v1.PrimaryKeySort.
323
+ * Use `create(PrimaryKeySortSchema)` to create a new message.
324
+ */
325
+ export const PrimaryKeySortSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 32);
326
+ /**
327
+ * Describes the message loams.collection.v1.FieldSort.
328
+ * Use `create(FieldSortSchema)` to create a new message.
329
+ */
330
+ export const FieldSortSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 33);
331
+ /**
332
+ * Describes the message loams.collection.v1.Highlight.
333
+ * Use `create(HighlightSchema)` to create a new message.
334
+ */
335
+ export const HighlightSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 34);
336
+ /**
337
+ * Describes the message loams.collection.v1.HighlightField.
338
+ * Use `create(HighlightFieldSchema)` to create a new message.
339
+ */
340
+ export const HighlightFieldSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 35);
341
+ /**
342
+ * Describes the message loams.collection.v1.GroupBy.
343
+ * Use `create(GroupBySchema)` to create a new message.
344
+ */
345
+ export const GroupBySchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 36);
346
+ /**
347
+ * Describes the message loams.collection.v1.SearchResponse.
348
+ * Use `create(SearchResponseSchema)` to create a new message.
349
+ */
350
+ export const SearchResponseSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 37);
351
+ /**
352
+ * Describes the message loams.collection.v1.Hit.
353
+ * Use `create(HitSchema)` to create a new message.
354
+ */
355
+ export const HitSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 38);
356
+ /**
357
+ * Describes the message loams.collection.v1.ExpandSpec.
358
+ * Use `create(ExpandSpecSchema)` to create a new message.
359
+ */
360
+ export const ExpandSpecSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 39);
361
+ /**
362
+ * Describes the message loams.collection.v1.RerankSpec.
363
+ * Use `create(RerankSpecSchema)` to create a new message.
364
+ */
365
+ export const RerankSpecSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 40);
366
+ /**
367
+ * Describes the message loams.collection.v1.InheritRerank.
368
+ * Use `create(InheritRerankSchema)` to create a new message.
369
+ */
370
+ export const InheritRerankSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 41);
371
+ /**
372
+ * Describes the message loams.collection.v1.VectorRerank.
373
+ * Use `create(VectorRerankSchema)` to create a new message.
374
+ */
375
+ export const VectorRerankSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 42);
376
+ /**
377
+ * Describes the message loams.collection.v1.ModelRerank.
378
+ * Use `create(ModelRerankSchema)` to create a new message.
379
+ */
380
+ export const ModelRerankSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 43);
381
+ /**
382
+ * Describes the message loams.collection.v1.Neighbor.
383
+ * Use `create(NeighborSchema)` to create a new message.
384
+ */
385
+ export const NeighborSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 44);
386
+ /**
387
+ * Describes the message loams.collection.v1.GraphHit.
388
+ * Use `create(GraphHitSchema)` to create a new message.
389
+ */
390
+ export const GraphHitSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 45);
391
+ /**
392
+ * Describes the message loams.collection.v1.ExpandStats.
393
+ * Use `create(ExpandStatsSchema)` to create a new message.
394
+ */
395
+ export const ExpandStatsSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 46);
396
+ /**
397
+ * Describes the message loams.collection.v1.HitGroup.
398
+ * Use `create(HitGroupSchema)` to create a new message.
399
+ */
400
+ export const HitGroupSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 47);
401
+ /**
402
+ * Describes the message loams.collection.v1.TotalHits.
403
+ * Use `create(TotalHitsSchema)` to create a new message.
404
+ */
405
+ export const TotalHitsSchema = /*@__PURE__*/ messageDesc(file_loams_collection_v1_query, 48);
406
+ /**
407
+ * `or` / `and`, as the IR spells them.
408
+ *
409
+ * Declared for the two fields whose operator the IR spells differently from the
410
+ * fields above: `MultiMatchQuery.operator` and
411
+ * `QueryStringQuery.default_operator`, which keep this enum and therefore
412
+ * answer (and are sent) `BOOL_OPERATOR_OR` / `BOOL_OPERATOR_AND`.
413
+ *
414
+ * @generated from enum loams.collection.v1.BoolOperator
415
+ */
416
+ export var BoolOperator;
417
+ (function (BoolOperator) {
418
+ /**
419
+ * `or`, which is the IR's default for every operator that defaults.
420
+ *
421
+ * @generated from enum value: BOOL_OPERATOR_UNSPECIFIED = 0;
422
+ */
423
+ BoolOperator[BoolOperator["UNSPECIFIED"] = 0] = "UNSPECIFIED";
424
+ /**
425
+ * @generated from enum value: BOOL_OPERATOR_OR = 1;
426
+ */
427
+ BoolOperator[BoolOperator["OR"] = 1] = "OR";
428
+ /**
429
+ * @generated from enum value: BOOL_OPERATOR_AND = 2;
430
+ */
431
+ BoolOperator[BoolOperator["AND"] = 2] = "AND";
432
+ })(BoolOperator || (BoolOperator = {}));
433
+ /**
434
+ * Describes the enum loams.collection.v1.BoolOperator.
435
+ */
436
+ export const BoolOperatorSchema = /*@__PURE__*/ enumDesc(file_loams_collection_v1_query, 0);
437
+ /**
438
+ * @generated from enum loams.collection.v1.MultiMatchKind
439
+ */
440
+ export var MultiMatchKind;
441
+ (function (MultiMatchKind) {
442
+ /**
443
+ * `best_fields`, the IR's default.
444
+ *
445
+ * @generated from enum value: MULTI_MATCH_KIND_UNSPECIFIED = 0;
446
+ */
447
+ MultiMatchKind[MultiMatchKind["UNSPECIFIED"] = 0] = "UNSPECIFIED";
448
+ /**
449
+ * @generated from enum value: MULTI_MATCH_KIND_BEST_FIELDS = 1;
450
+ */
451
+ MultiMatchKind[MultiMatchKind["BEST_FIELDS"] = 1] = "BEST_FIELDS";
452
+ /**
453
+ * @generated from enum value: MULTI_MATCH_KIND_MOST_FIELDS = 2;
454
+ */
455
+ MultiMatchKind[MultiMatchKind["MOST_FIELDS"] = 2] = "MOST_FIELDS";
456
+ /**
457
+ * @generated from enum value: MULTI_MATCH_KIND_CROSS_FIELDS = 3;
458
+ */
459
+ MultiMatchKind[MultiMatchKind["CROSS_FIELDS"] = 3] = "CROSS_FIELDS";
460
+ /**
461
+ * @generated from enum value: MULTI_MATCH_KIND_PHRASE = 4;
462
+ */
463
+ MultiMatchKind[MultiMatchKind["PHRASE"] = 4] = "PHRASE";
464
+ /**
465
+ * @generated from enum value: MULTI_MATCH_KIND_PHRASE_PREFIX = 5;
466
+ */
467
+ MultiMatchKind[MultiMatchKind["PHRASE_PREFIX"] = 5] = "PHRASE_PREFIX";
468
+ })(MultiMatchKind || (MultiMatchKind = {}));
469
+ /**
470
+ * Describes the enum loams.collection.v1.MultiMatchKind.
471
+ */
472
+ export const MultiMatchKindSchema = /*@__PURE__*/ enumDesc(file_loams_collection_v1_query, 1);
473
+ /**
474
+ * @generated from enum loams.collection.v1.SortOrder
475
+ */
476
+ export var SortOrder;
477
+ (function (SortOrder) {
478
+ /**
479
+ * Ascending for a key and a field, descending for a score; each is the IR's
480
+ * default for that key.
481
+ *
482
+ * @generated from enum value: SORT_ORDER_UNSPECIFIED = 0;
483
+ */
484
+ SortOrder[SortOrder["UNSPECIFIED"] = 0] = "UNSPECIFIED";
485
+ /**
486
+ * @generated from enum value: SORT_ORDER_ASC = 1;
487
+ */
488
+ SortOrder[SortOrder["ASC"] = 1] = "ASC";
489
+ /**
490
+ * @generated from enum value: SORT_ORDER_DESC = 2;
491
+ */
492
+ SortOrder[SortOrder["DESC"] = 2] = "DESC";
493
+ })(SortOrder || (SortOrder = {}));
494
+ /**
495
+ * Describes the enum loams.collection.v1.SortOrder.
496
+ */
497
+ export const SortOrderSchema = /*@__PURE__*/ enumDesc(file_loams_collection_v1_query, 2);
498
+ /**
499
+ * @generated from enum loams.collection.v1.MissingOrder
500
+ */
501
+ export var MissingOrder;
502
+ (function (MissingOrder) {
503
+ /**
504
+ * Last, which is the IR's default.
505
+ *
506
+ * @generated from enum value: MISSING_ORDER_UNSPECIFIED = 0;
507
+ */
508
+ MissingOrder[MissingOrder["UNSPECIFIED"] = 0] = "UNSPECIFIED";
509
+ /**
510
+ * @generated from enum value: MISSING_ORDER_FIRST = 1;
511
+ */
512
+ MissingOrder[MissingOrder["FIRST"] = 1] = "FIRST";
513
+ /**
514
+ * @generated from enum value: MISSING_ORDER_LAST = 2;
515
+ */
516
+ MissingOrder[MissingOrder["LAST"] = 2] = "LAST";
517
+ })(MissingOrder || (MissingOrder = {}));
518
+ /**
519
+ * Describes the enum loams.collection.v1.MissingOrder.
520
+ */
521
+ export const MissingOrderSchema = /*@__PURE__*/ enumDesc(file_loams_collection_v1_query, 3);
522
+ /**
523
+ * Which way an expansion walks the edges.
524
+ *
525
+ * @generated from enum loams.collection.v1.ExpandDirection
526
+ */
527
+ export var ExpandDirection;
528
+ (function (ExpandDirection) {
529
+ /**
530
+ * @generated from enum value: EXPAND_DIRECTION_UNSPECIFIED = 0;
531
+ */
532
+ ExpandDirection[ExpandDirection["UNSPECIFIED"] = 0] = "UNSPECIFIED";
533
+ /**
534
+ * @generated from enum value: EXPAND_DIRECTION_OUT = 1;
535
+ */
536
+ ExpandDirection[ExpandDirection["OUT"] = 1] = "OUT";
537
+ /**
538
+ * @generated from enum value: EXPAND_DIRECTION_IN = 2;
539
+ */
540
+ ExpandDirection[ExpandDirection["IN"] = 2] = "IN";
541
+ /**
542
+ * @generated from enum value: EXPAND_DIRECTION_BOTH = 3;
543
+ */
544
+ ExpandDirection[ExpandDirection["BOTH"] = 3] = "BOTH";
545
+ })(ExpandDirection || (ExpandDirection = {}));
546
+ /**
547
+ * Describes the enum loams.collection.v1.ExpandDirection.
548
+ */
549
+ export const ExpandDirectionSchema = /*@__PURE__*/ enumDesc(file_loams_collection_v1_query, 4);
550
+ /**
551
+ * How the neighbors come back.
552
+ *
553
+ * @generated from enum loams.collection.v1.ExpandOutput
554
+ */
555
+ export var ExpandOutput;
556
+ (function (ExpandOutput) {
557
+ /**
558
+ * @generated from enum value: EXPAND_OUTPUT_UNSPECIFIED = 0;
559
+ */
560
+ ExpandOutput[ExpandOutput["UNSPECIFIED"] = 0] = "UNSPECIFIED";
561
+ /**
562
+ * Under each seed hit, in `Hit.neighbors`.
563
+ *
564
+ * @generated from enum value: EXPAND_OUTPUT_NESTED = 1;
565
+ */
566
+ ExpandOutput[ExpandOutput["NESTED"] = 1] = "NESTED";
567
+ /**
568
+ * Seeds and neighbors in one ranked list, each neighbor a hit with
569
+ * `Hit.graph`.
570
+ *
571
+ * @generated from enum value: EXPAND_OUTPUT_FLAT = 2;
572
+ */
573
+ ExpandOutput[ExpandOutput["FLAT"] = 2] = "FLAT";
574
+ })(ExpandOutput || (ExpandOutput = {}));
575
+ /**
576
+ * Describes the enum loams.collection.v1.ExpandOutput.
577
+ */
578
+ export const ExpandOutputSchema = /*@__PURE__*/ enumDesc(file_loams_collection_v1_query, 5);
579
+ /**
580
+ * @generated from enum loams.collection.v1.TotalRelation
581
+ */
582
+ export var TotalRelation;
583
+ (function (TotalRelation) {
584
+ /**
585
+ * @generated from enum value: TOTAL_RELATION_UNSPECIFIED = 0;
586
+ */
587
+ TotalRelation[TotalRelation["UNSPECIFIED"] = 0] = "UNSPECIFIED";
588
+ /**
589
+ * `eq`: the count is exact.
590
+ *
591
+ * @generated from enum value: TOTAL_RELATION_EQ = 1;
592
+ */
593
+ TotalRelation[TotalRelation["EQ"] = 1] = "EQ";
594
+ /**
595
+ * `gte`: at least this many matched.
596
+ *
597
+ * @generated from enum value: TOTAL_RELATION_GTE = 2;
598
+ */
599
+ TotalRelation[TotalRelation["GTE"] = 2] = "GTE";
600
+ })(TotalRelation || (TotalRelation = {}));
601
+ /**
602
+ * Describes the enum loams.collection.v1.TotalRelation.
603
+ */
604
+ export const TotalRelationSchema = /*@__PURE__*/ enumDesc(file_loams_collection_v1_query, 6);
605
+ /**
606
+ * @generated from service loams.collection.v1.QueryService
607
+ */
608
+ export const QueryService = /*@__PURE__*/ serviceDesc(file_loams_collection_v1_query, 0);