diff --git a/.idea/caches/deviceStreaming.xml b/.idea/caches/deviceStreaming.xml
deleted file mode 100644
index 33049c4..0000000
--- a/.idea/caches/deviceStreaming.xml
+++ /dev/null
@@ -1,1313 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml
deleted file mode 100644
index 91f9558..0000000
--- a/.idea/deviceManager.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 6e86672..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
deleted file mode 100644
index f8ab653..0000000
--- a/.idea/workspace.xml
+++ /dev/null
@@ -1,118 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {
- "associatedIndex": 0
-}
-
-
-
-
-
- {
- "keyToString": {
- "ASKED_SHARE_PROJECT_CONFIGURATION_FILES": "true",
- "ModuleVcsDetector.initialDetectionPerformed": "true",
- "RunOnceActivity.ShowReadmeOnStart": "true",
- "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
- "RunOnceActivity.cidr.known.project.marker": "true",
- "RunOnceActivity.git.unshallow": "true",
- "RunOnceActivity.readMode.enableVisualFormatting": "true",
- "cf.first.check.clang-format": "false",
- "cidr.known.project.marker": "true",
- "dart.analysis.tool.window.visible": "false",
- "git-widget-placeholder": "start-flutter-2",
- "kotlin-language-version-configured": "true",
- "last_opened_file_path": "/Users/emmanuel/Code/pp/acho/mobile_app/lib",
- "project.structure.last.edited": "Project",
- "project.structure.proportion": "0.0",
- "project.structure.side.proportion": "0.2",
- "settings.editor.selected.configurable": "project.propDebugger",
- "show.migrate.to.gradle.popup": "false"
- },
- "keyToStringList": {
- "com.intellij.ide.scratch.ScratchImplUtil$2/New Scratch File": [
- "Dart"
- ]
- }
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1768432606666
-
-
- 1768432606666
-
-
-
- 1768652888194
-
-
-
- 1768652888194
-
-
-
-
-
-
-
-
-
-
-
-
- file://$PROJECT_DIR$/mobile_app/lib/utils.dart
-
-
-
-
-
-
\ No newline at end of file
diff --git a/backend/Cargo.lock b/backend/Cargo.lock
index 120a19e..a388b32 100644
--- a/backend/Cargo.lock
+++ b/backend/Cargo.lock
@@ -3,5 +3,2631 @@
version = 4
[[package]]
-name = "backend"
+name = "adler2"
+version = "2.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+
+[[package]]
+name = "ahash"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
+dependencies = [
+ "cfg-if",
+ "getrandom 0.3.4",
+ "once_cell",
+ "serde",
+ "version_check",
+ "zerocopy",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "1.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
+dependencies = [
+ "memchr",
+]
+
+[[package]]
+name = "allocator-api2"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
+
+[[package]]
+name = "anyhow"
+version = "1.0.100"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
+
+[[package]]
+name = "arc-swap"
+version = "1.8.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51d03449bb8ca2cc2ef70869af31463d1ae5ccc8fa3e334b307203fbf815207e"
+dependencies = [
+ "rustversion",
+]
+
+[[package]]
+name = "async-trait"
+version = "0.1.89"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "autocfg"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
+[[package]]
+name = "base64"
+version = "0.22.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+
+[[package]]
+name = "base64ct"
+version = "1.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
+
+[[package]]
+name = "bitflags"
+version = "2.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
+
+[[package]]
+name = "bitpacking"
+version = "0.9.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96a7139abd3d9cebf8cd6f920a389cf3dc9576172e32f4563f188cae3c3eb019"
+dependencies = [
+ "crunchy",
+]
+
+[[package]]
+name = "bon"
+version = "3.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "234655ec178edd82b891e262ea7cf71f6584bcd09eff94db786be23f1821825c"
+dependencies = [
+ "bon-macros",
+ "rustversion",
+]
+
+[[package]]
+name = "bon-macros"
+version = "3.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89ec27229c38ed0eb3c0feee3d2c1d6a4379ae44f418a29a658890e062d8f365"
+dependencies = [
+ "darling",
+ "ident_case",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "rustversion",
+ "syn",
+]
+
+[[package]]
+name = "bumpalo"
+version = "3.19.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
+
+[[package]]
+name = "byteorder"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+
+[[package]]
+name = "bytes"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
+
+[[package]]
+name = "castaway"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
+dependencies = [
+ "rustversion",
+]
+
+[[package]]
+name = "cc"
+version = "1.2.54"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583"
+dependencies = [
+ "find-msvc-tools",
+ "jobserver",
+ "libc",
+ "shlex",
+]
+
+[[package]]
+name = "census"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f4c707c6a209cbe82d10abd08e1ea8995e9ea937d2550646e02798948992be0"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+
+[[package]]
+name = "compact_str"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
+dependencies = [
+ "castaway",
+ "cfg-if",
+ "itoa",
+ "rustversion",
+ "ryu",
+ "serde",
+ "static_assertions",
+]
+
+[[package]]
+name = "console"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
+dependencies = [
+ "encode_unicode",
+ "libc",
+ "once_cell",
+ "unicode-width",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "console"
+version = "0.16.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4"
+dependencies = [
+ "encode_unicode",
+ "libc",
+ "once_cell",
+ "unicode-width",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
+[[package]]
+name = "crc32fast"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
+dependencies = [
+ "cfg-if",
+]
+
+[[package]]
+name = "crossbeam-channel"
+version = "0.5.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-deque"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
+dependencies = [
+ "crossbeam-epoch",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-epoch"
+version = "0.9.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
+dependencies = [
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "crossbeam-utils"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+
+[[package]]
+name = "crunchy"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
+
+[[package]]
+name = "darling"
+version = "0.20.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
+dependencies = [
+ "darling_core",
+ "darling_macro",
+]
+
+[[package]]
+name = "darling_core"
+version = "0.20.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
+dependencies = [
+ "fnv",
+ "ident_case",
+ "proc-macro2",
+ "quote",
+ "strsim",
+ "syn",
+]
+
+[[package]]
+name = "darling_macro"
+version = "0.20.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
+dependencies = [
+ "darling_core",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "dary_heap"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "der"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
+dependencies = [
+ "pem-rfc7468",
+ "zeroize",
+]
+
+[[package]]
+name = "deranged"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587"
+dependencies = [
+ "powerfmt",
+ "serde_core",
+]
+
+[[package]]
+name = "derive_builder"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
+dependencies = [
+ "derive_builder_core",
+ "syn",
+]
+
+[[package]]
+name = "dirs"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "downcast-rs"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "117240f60069e65410b3ae1bb213295bd828f707b5bec6596a1afc8793ce0cbc"
+
+[[package]]
+name = "either"
+version = "1.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+
+[[package]]
+name = "encode_unicode"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
+
+[[package]]
+name = "equivalent"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
+
+[[package]]
+name = "errno"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+dependencies = [
+ "libc",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "esaxx-rs"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6"
+dependencies = [
+ "cc",
+]
+
+[[package]]
+name = "fastdivide"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9afc2bd4d5a73106dd53d10d73d3401c2f32730ba2c0b93ddb888a8983680471"
+
+[[package]]
+name = "fastrand"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+
+[[package]]
+name = "find-msvc-tools"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
+
+[[package]]
+name = "flate2"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+
+[[package]]
+name = "foldhash"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
+
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
+dependencies = [
+ "percent-encoding",
+]
+
+[[package]]
+name = "fs4"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8640e34b88f7652208ce9e88b1a37a2ae95227d84abec377ccd3c5cfeb141ed4"
+dependencies = [
+ "rustix",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "futures-core"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
+
+[[package]]
+name = "futures-macro"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "futures-task"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
+
+[[package]]
+name = "futures-util"
+version = "0.3.31"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
+dependencies = [
+ "futures-core",
+ "futures-macro",
+ "futures-task",
+ "pin-project-lite",
+ "pin-utils",
+ "slab",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.2.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasip2",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.15.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
+dependencies = [
+ "allocator-api2",
+ "equivalent",
+ "foldhash",
+]
+
+[[package]]
+name = "hashbrown"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+
+[[package]]
+name = "hf-hub"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "629d8f3bbeda9d148036d6b0de0a3ab947abd08ce90626327fc3547a49d59d97"
+dependencies = [
+ "dirs",
+ "http",
+ "indicatif 0.17.11",
+ "libc",
+ "log",
+ "rand 0.9.2",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "ureq 2.12.1",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "hmac-sha256"
+version = "1.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0f0ae375a85536cac3a243e3a9cda80a47910348abdea7e2c22f8ec556d586d"
+
+[[package]]
+name = "htmlescape"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163"
+
+[[package]]
+name = "http"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
+dependencies = [
+ "bytes",
+ "itoa",
+]
+
+[[package]]
+name = "httparse"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
+
+[[package]]
+name = "hyperloglogplus"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "621debdf94dcac33e50475fdd76d34d5ea9c0362a834b9db08c3024696c1fbe3"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "icu_collections"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
+dependencies = [
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
+
+[[package]]
+name = "icu_properties"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
+dependencies = [
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
+
+[[package]]
+name = "icu_provider"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "ident_case"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+
+[[package]]
+name = "idna"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.16.1",
+]
+
+[[package]]
+name = "indicatif"
+version = "0.17.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235"
+dependencies = [
+ "console 0.15.11",
+ "number_prefix",
+ "portable-atomic",
+ "unicode-width",
+ "web-time",
+]
+
+[[package]]
+name = "indicatif"
+version = "0.18.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88"
+dependencies = [
+ "console 0.16.2",
+ "portable-atomic",
+ "unicode-width",
+ "unit-prefix",
+ "web-time",
+]
+
+[[package]]
+name = "inference"
version = "0.1.0"
+dependencies = [
+ "anyhow",
+ "ndarray",
+ "ndarray-stats",
+ "once_cell",
+ "ort",
+ "tantivy",
+ "tokenizers",
+]
+
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itertools"
+version = "0.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
+dependencies = [
+ "either",
+]
+
+[[package]]
+name = "itoa"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
+
+[[package]]
+name = "jobserver"
+version = "0.1.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
+dependencies = [
+ "getrandom 0.3.4",
+ "libc",
+]
+
+[[package]]
+name = "js-sys"
+version = "0.3.85"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
+dependencies = [
+ "once_cell",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "levenshtein_automata"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25"
+
+[[package]]
+name = "libc"
+version = "0.2.180"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
+
+[[package]]
+name = "libm"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
+
+[[package]]
+name = "libredox"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616"
+dependencies = [
+ "bitflags",
+ "libc",
+]
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+
+[[package]]
+name = "litemap"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
+
+[[package]]
+name = "log"
+version = "0.4.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
+
+[[package]]
+name = "lru"
+version = "0.12.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38"
+dependencies = [
+ "hashbrown 0.15.5",
+]
+
+[[package]]
+name = "lz4_flex"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a"
+
+[[package]]
+name = "lzma-rust2"
+version = "0.15.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1670343e58806300d87950e3401e820b519b9384281bbabfb15e3636689ffd69"
+
+[[package]]
+name = "macro_rules_attribute"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65049d7923698040cd0b1ddcced9b0eb14dd22c5f86ae59c3740eab64a676520"
+dependencies = [
+ "macro_rules_attribute-proc_macro",
+ "paste",
+]
+
+[[package]]
+name = "macro_rules_attribute-proc_macro"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "670fdfda89751bc4a84ac13eaa63e205cf0fd22b4c9a5fbfa085b63c1f1d3a30"
+
+[[package]]
+name = "matrixmultiply"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
+dependencies = [
+ "autocfg",
+ "rawpointer",
+]
+
+[[package]]
+name = "measure_time"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "51c55d61e72fc3ab704396c5fa16f4c184db37978ae4e94ca8959693a235fc0e"
+dependencies = [
+ "log",
+]
+
+[[package]]
+name = "memchr"
+version = "2.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
+
+[[package]]
+name = "memmap2"
+version = "0.9.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "744133e4a0e0a658e1374cf3bf8e415c4052a15a111acd372764c55b4177d490"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "minimal-lexical"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+
+[[package]]
+name = "miniz_oxide"
+version = "0.8.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
+dependencies = [
+ "adler2",
+ "simd-adler32",
+]
+
+[[package]]
+name = "monostate"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3341a273f6c9d5bef1908f17b7267bbab0e95c9bf69a0d4dcf8e9e1b2c76ef67"
+dependencies = [
+ "monostate-impl",
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "monostate-impl"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "murmurhash32"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2195bf6aa996a481483b29d62a7663eed3fe39600c460e323f8ff41e90bdd89b"
+
+[[package]]
+name = "native-tls"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
+dependencies = [
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "ndarray"
+version = "0.17.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
+dependencies = [
+ "matrixmultiply",
+ "num-complex",
+ "num-integer",
+ "num-traits",
+ "portable-atomic",
+ "portable-atomic-util",
+ "rawpointer",
+]
+
+[[package]]
+name = "ndarray-stats"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b6e54a8b65764f71827a90ca1d56965ec0c67f069f996477bd493402a901d1f"
+dependencies = [
+ "indexmap",
+ "itertools 0.13.0",
+ "ndarray",
+ "noisy_float",
+ "num-integer",
+ "num-traits",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "noisy_float"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c16843be85dd410c6a12251c4eca0dd1d3ee8c5725f746c4d5e0fdcec0a864b2"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "nom"
+version = "7.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+dependencies = [
+ "memchr",
+ "minimal-lexical",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-conv"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
+
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+ "libm",
+]
+
+[[package]]
+name = "number_prefix"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "oneshot"
+version = "0.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "269bca4c2591a28585d6bf10d9ed0332b7d76900a1b02bec41bdc3a2cdcda107"
+
+[[package]]
+name = "onig"
+version = "6.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0"
+dependencies = [
+ "bitflags",
+ "libc",
+ "once_cell",
+ "onig_sys",
+]
+
+[[package]]
+name = "onig_sys"
+version = "69.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
+
+[[package]]
+name = "openssl"
+version = "0.10.75"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.111"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "ort"
+version = "2.0.0-rc.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5df903c0d2c07b56950f1058104ab0c8557159f2741782223704de9be73c3c"
+dependencies = [
+ "ndarray",
+ "ort-sys",
+ "smallvec",
+ "tracing",
+ "ureq 3.1.4",
+]
+
+[[package]]
+name = "ort-sys"
+version = "2.0.0-rc.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06503bb33f294c5f1ba484011e053bfa6ae227074bdb841e9863492dc5960d4b"
+dependencies = [
+ "hmac-sha256",
+ "lzma-rust2",
+ "ureq 3.1.4",
+]
+
+[[package]]
+name = "ownedbytes"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fbd56f7631767e61784dc43f8580f403f4475bd4aaa4da003e6295e1bab4a7e"
+dependencies = [
+ "stable_deref_trait",
+]
+
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "pem-rfc7468"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
+dependencies = [
+ "base64ct",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
+[[package]]
+name = "pin-project-lite"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
+
+[[package]]
+name = "pin-utils"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+
+[[package]]
+name = "portable-atomic"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950"
+
+[[package]]
+name = "portable-atomic-util"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
+dependencies = [
+ "portable-atomic",
+]
+
+[[package]]
+name = "potential_utf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+dependencies = [
+ "zerovec",
+]
+
+[[package]]
+name = "powerfmt"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
+dependencies = [
+ "proc-macro2",
+ "syn",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+
+[[package]]
+name = "rand"
+version = "0.8.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+dependencies = [
+ "libc",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
+dependencies = [
+ "rand_chacha 0.9.0",
+ "rand_core 0.9.5",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.9.5",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+dependencies = [
+ "getrandom 0.2.17",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
+dependencies = [
+ "getrandom 0.3.4",
+]
+
+[[package]]
+name = "rand_distr"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
+dependencies = [
+ "num-traits",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "rawpointer"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+
+[[package]]
+name = "rayon"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
+dependencies = [
+ "either",
+ "rayon-core",
+]
+
+[[package]]
+name = "rayon-cond"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2964d0cf57a3e7a06e8183d14a8b527195c706b7983549cd5462d5aa3747438f"
+dependencies = [
+ "either",
+ "itertools 0.14.0",
+ "rayon",
+]
+
+[[package]]
+name = "rayon-core"
+version = "1.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
+dependencies = [
+ "crossbeam-deque",
+ "crossbeam-utils",
+]
+
+[[package]]
+name = "redox_users"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
+dependencies = [
+ "getrandom 0.2.17",
+ "libredox",
+ "thiserror",
+]
+
+[[package]]
+name = "regex"
+version = "1.12.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-automata",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-automata"
+version = "0.4.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
+dependencies = [
+ "aho-corasick",
+ "memchr",
+ "regex-syntax",
+]
+
+[[package]]
+name = "regex-syntax"
+version = "0.8.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
+
+[[package]]
+name = "ring"
+version = "0.17.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom 0.2.17",
+ "libc",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
+[[package]]
+name = "rust-stemmers"
+version = "1.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e46a2036019fdb888131db7a4c847a1063a7493f971ed94ea82c67eada63ca54"
+dependencies = [
+ "serde",
+ "serde_derive",
+]
+
+[[package]]
+name = "rustc-hash"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
+
+[[package]]
+name = "rustix"
+version = "1.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
+dependencies = [
+ "bitflags",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "rustls"
+version = "0.23.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b"
+dependencies = [
+ "log",
+ "once_cell",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
+dependencies = [
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.103.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
+[[package]]
+name = "rustversion"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+
+[[package]]
+name = "ryu"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
+
+[[package]]
+name = "schannel"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
+dependencies = [
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "security-framework"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
+dependencies = [
+ "serde_core",
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_core"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
+dependencies = [
+ "serde_derive",
+]
+
+[[package]]
+name = "serde_derive"
+version = "1.0.228"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.149"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
+dependencies = [
+ "itoa",
+ "memchr",
+ "serde",
+ "serde_core",
+ "zmij",
+]
+
+[[package]]
+name = "shlex"
+version = "1.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+
+[[package]]
+name = "simd-adler32"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
+
+[[package]]
+name = "sketches-ddsketch"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c1e9a774a6c28142ac54bb25d25562e6bcf957493a184f15ad4eebccb23e410a"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "slab"
+version = "0.4.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589"
+
+[[package]]
+name = "smallvec"
+version = "1.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+
+[[package]]
+name = "socks"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b"
+dependencies = [
+ "byteorder",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "spm_precompiled"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326"
+dependencies = [
+ "base64 0.13.1",
+ "nom",
+ "serde",
+ "unicode-segmentation",
+]
+
+[[package]]
+name = "stable_deref_trait"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "strsim"
+version = "0.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
+[[package]]
+name = "syn"
+version = "2.0.114"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "tantivy"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "502915c7381c5cb2d2781503962610cb880ad8f1a0ca95df1bae645d5ebf2545"
+dependencies = [
+ "aho-corasick",
+ "arc-swap",
+ "base64 0.22.1",
+ "bitpacking",
+ "bon",
+ "byteorder",
+ "census",
+ "crc32fast",
+ "crossbeam-channel",
+ "downcast-rs",
+ "fastdivide",
+ "fnv",
+ "fs4",
+ "htmlescape",
+ "hyperloglogplus",
+ "itertools 0.14.0",
+ "levenshtein_automata",
+ "log",
+ "lru",
+ "lz4_flex",
+ "measure_time",
+ "memmap2",
+ "once_cell",
+ "oneshot",
+ "rayon",
+ "regex",
+ "rust-stemmers",
+ "rustc-hash",
+ "serde",
+ "serde_json",
+ "sketches-ddsketch",
+ "smallvec",
+ "tantivy-bitpacker",
+ "tantivy-columnar",
+ "tantivy-common",
+ "tantivy-fst",
+ "tantivy-query-grammar",
+ "tantivy-stacker",
+ "tantivy-tokenizer-api",
+ "tempfile",
+ "thiserror",
+ "time",
+ "uuid",
+ "winapi",
+]
+
+[[package]]
+name = "tantivy-bitpacker"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3b04eed5108d8283607da6710fe17a7663523440eaf7ea5a1a440d19a1448b6"
+dependencies = [
+ "bitpacking",
+]
+
+[[package]]
+name = "tantivy-columnar"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8b628488ae936c83e92b5c4056833054ca56f76c0e616aee8339e24ac89119cd"
+dependencies = [
+ "downcast-rs",
+ "fastdivide",
+ "itertools 0.14.0",
+ "serde",
+ "tantivy-bitpacker",
+ "tantivy-common",
+ "tantivy-sstable",
+ "tantivy-stacker",
+]
+
+[[package]]
+name = "tantivy-common"
+version = "0.10.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f880aa7cab0c063a47b62596d10991cdd0b6e0e0575d9c5eeb298b307a25de55"
+dependencies = [
+ "async-trait",
+ "byteorder",
+ "ownedbytes",
+ "serde",
+ "time",
+]
+
+[[package]]
+name = "tantivy-fst"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d60769b80ad7953d8a7b2c70cdfe722bbcdcac6bccc8ac934c40c034d866fc18"
+dependencies = [
+ "byteorder",
+ "regex-syntax",
+ "utf8-ranges",
+]
+
+[[package]]
+name = "tantivy-query-grammar"
+version = "0.25.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "768fccdc84d60d86235d42d7e4c33acf43c418258ff5952abf07bd7837fcd26b"
+dependencies = [
+ "nom",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "tantivy-sstable"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8292095d1a8a2c2b36380ec455f910ab52dde516af36321af332c93f20ab7d5"
+dependencies = [
+ "futures-util",
+ "itertools 0.14.0",
+ "tantivy-bitpacker",
+ "tantivy-common",
+ "tantivy-fst",
+ "zstd",
+]
+
+[[package]]
+name = "tantivy-stacker"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23d38a379411169f0b3002c9cba61cdfe315f757e9d4f239c00c282497a0749d"
+dependencies = [
+ "murmurhash32",
+ "rand_distr",
+ "tantivy-common",
+]
+
+[[package]]
+name = "tantivy-tokenizer-api"
+version = "0.6.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23024f6aeb25ceb1a0e27740c84bdb0fae52626737b7e9a9de6ad5aa25c7b038"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c"
+dependencies = [
+ "fastrand",
+ "getrandom 0.3.4",
+ "once_cell",
+ "rustix",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "thiserror"
+version = "2.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "2.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "time"
+version = "0.3.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9da98b7d9b7dad93488a84b8248efc35352b0b2657397d4167e7ad67e5d535e5"
+dependencies = [
+ "deranged",
+ "itoa",
+ "num-conv",
+ "powerfmt",
+ "serde_core",
+ "time-core",
+ "time-macros",
+]
+
+[[package]]
+name = "time-core"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca"
+
+[[package]]
+name = "time-macros"
+version = "0.2.26"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "78cc610bac2dcee56805c99642447d4c5dbde4d01f752ffea0199aee1f601dc4"
+dependencies = [
+ "num-conv",
+ "time-core",
+]
+
+[[package]]
+name = "tinystr"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tokenizers"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b238e22d44a15349529690fb07bd645cf58149a1b1e44d6cb5bd1641ff1a6223"
+dependencies = [
+ "ahash",
+ "aho-corasick",
+ "compact_str",
+ "dary_heap",
+ "derive_builder",
+ "esaxx-rs",
+ "getrandom 0.3.4",
+ "hf-hub",
+ "indicatif 0.18.3",
+ "itertools 0.14.0",
+ "log",
+ "macro_rules_attribute",
+ "monostate",
+ "onig",
+ "paste",
+ "rand 0.9.2",
+ "rayon",
+ "rayon-cond",
+ "regex",
+ "regex-syntax",
+ "serde",
+ "serde_json",
+ "spm_precompiled",
+ "thiserror",
+ "unicode-normalization-alignments",
+ "unicode-segmentation",
+ "unicode_categories",
+]
+
+[[package]]
+name = "tracing"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
+dependencies = [
+ "pin-project-lite",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
+dependencies = [
+ "once_cell",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
+
+[[package]]
+name = "unicode-normalization-alignments"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43f613e4fa046e69818dd287fdc4bc78175ff20331479dab6e1b0f98d57062de"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
+
+[[package]]
+name = "unicode-width"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
+
+[[package]]
+name = "unicode_categories"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
+
+[[package]]
+name = "unit-prefix"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "ureq"
+version = "2.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d"
+dependencies = [
+ "base64 0.22.1",
+ "flate2",
+ "log",
+ "once_cell",
+ "rustls",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "socks",
+ "url",
+ "webpki-roots 0.26.11",
+]
+
+[[package]]
+name = "ureq"
+version = "3.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d39cb1dbab692d82a977c0392ffac19e188bd9186a9f32806f0aaa859d75585a"
+dependencies = [
+ "base64 0.22.1",
+ "der",
+ "log",
+ "native-tls",
+ "percent-encoding",
+ "rustls-pki-types",
+ "socks",
+ "ureq-proto",
+ "utf-8",
+ "webpki-root-certs",
+]
+
+[[package]]
+name = "ureq-proto"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f"
+dependencies = [
+ "base64 0.22.1",
+ "http",
+ "httparse",
+ "log",
+]
+
+[[package]]
+name = "url"
+version = "2.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
+[[package]]
+name = "utf8-ranges"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba"
+
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
+[[package]]
+name = "uuid"
+version = "1.20.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f"
+dependencies = [
+ "getrandom 0.3.4",
+ "js-sys",
+ "serde_core",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
+[[package]]
+name = "version_check"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "wasip2"
+version = "1.0.2+wasi-0.2.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "wasm-bindgen"
+version = "0.2.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
+dependencies = [
+ "cfg-if",
+ "once_cell",
+ "rustversion",
+ "wasm-bindgen-macro",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-macro"
+version = "0.2.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
+dependencies = [
+ "quote",
+ "wasm-bindgen-macro-support",
+]
+
+[[package]]
+name = "wasm-bindgen-macro-support"
+version = "0.2.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
+dependencies = [
+ "bumpalo",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wasm-bindgen-shared",
+]
+
+[[package]]
+name = "wasm-bindgen-shared"
+version = "0.2.108"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "web-time"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webpki-root-certs"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc"
+dependencies = [
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.26.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
+dependencies = [
+ "webpki-roots 1.0.5",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c"
+dependencies = [
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "winapi"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+dependencies = [
+ "winapi-i686-pc-windows-gnu",
+ "winapi-x86_64-pc-windows-gnu",
+]
+
+[[package]]
+name = "winapi-i686-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+
+[[package]]
+name = "winapi-x86_64-pc-windows-gnu"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-link"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.59.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.5",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.61.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
+dependencies = [
+ "windows-link",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
+dependencies = [
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm 0.52.6",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+dependencies = [
+ "windows-link",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
+]
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.52.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
+
+[[package]]
+name = "wit-bindgen"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
+
+[[package]]
+name = "writeable"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
+
+[[package]]
+name = "yoke"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zerocopy"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
+
+[[package]]
+name = "zerotrie"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zmij"
+version = "1.0.17"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439"
+
+[[package]]
+name = "zstd"
+version = "0.13.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a"
+dependencies = [
+ "zstd-safe",
+]
+
+[[package]]
+name = "zstd-safe"
+version = "7.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d"
+dependencies = [
+ "zstd-sys",
+]
+
+[[package]]
+name = "zstd-sys"
+version = "2.0.16+zstd.1.5.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
diff --git a/backend/Cargo.toml b/backend/Cargo.toml
index dcef953..147f474 100644
--- a/backend/Cargo.toml
+++ b/backend/Cargo.toml
@@ -1,15 +1,16 @@
[package]
-name = "backend"
+name = "inference"
version = "0.1.0"
edition = "2024"
[dependencies]
+ndarray = "0.17.2"
+tokenizers = { version = "0.22.2", default-features = false, features = ["esaxx_fast", "indicatif", "onig", "progressbar", "hf-hub", "http"] }
+ort = { version = "2.0.0-rc.11" }
+anyhow = "1.0.100"
+ndarray-stats = "0.7.0"
+once_cell = "1.21.3"
+tantivy = "0.25.0"
-
-[lints.clippy]
-indexing_slicing = "deny"
-fallible_impl_from = "deny"
-wildcard_enum_match_arm = "deny"
-unneeded_field_pattern = "deny"
-fn_params_excessive_bools = "deny"
-must_use_candidate = "deny"
+[target.'cfg(target_os = "android")'.dependencies]
+ort = { version = "2.0.0-rc.11", default-features = false, features = ["ndarray", "copy-dylibs", "std", "tls-native"] }
diff --git a/backend/src/keyword_search.rs b/backend/src/keyword_search.rs
new file mode 100644
index 0000000..ba04856
--- /dev/null
+++ b/backend/src/keyword_search.rs
@@ -0,0 +1,266 @@
+use anyhow::{anyhow, Result};
+use once_cell::sync::Lazy;
+use std::path::PathBuf;
+use std::sync::{Arc, Mutex};
+use tantivy::collector::TopDocs;
+use tantivy::query::QueryParser;
+use tantivy::schema::*;
+use tantivy::{ Index, IndexReader, IndexWriter, ReloadPolicy, TantivyDocument, Term};
+
+
+#[derive(Debug, Clone)]
+pub struct Document {
+ pub id: String,
+ pub text: String,
+}
+
+
+#[derive(Debug, Clone)]
+pub struct SearchResult {
+ pub score: f32,
+ pub doc: Document,
+}
+
+
+struct TantivyApi {
+ index: Index,
+ writer: Mutex,
+ reader: IndexReader,
+ schema: Schema,
+ id_field: Field,
+ text_field: Field,
+}
+
+static STATE: Lazy>>> = Lazy::new(|| Arc::new(Mutex::new(None)));
+
+
+pub fn init_tantivy(dir_path: String) -> Result<()> {
+ let mut state_lock = STATE.lock().unwrap();
+ if state_lock.is_some() {
+
+ return Ok(());
+ }
+
+ let index_dir = PathBuf::from(dir_path);
+ std::fs::create_dir_all(&index_dir)?;
+
+ let (index, schema) = if index_dir.join("meta.json").exists() {
+
+ let index = Index::open_in_dir(&index_dir)?;
+ let schema = index.schema();
+ (index, schema)
+ } else {
+
+ let mut schema_builder = Schema::builder();
+
+ schema_builder.add_text_field("id", STRING | STORED);
+
+ schema_builder.add_text_field("text", TEXT | STORED);
+ let schema = schema_builder.build();
+ let index = Index::create_in_dir(&index_dir, schema.clone())?;
+ (index, schema)
+ };
+
+ let id_field = schema.get_field("id").map_err(|_| anyhow!("'id' field not found"))?;
+ let text_field = schema.get_field("text").map_err(|_| anyhow!("'text' field not found"))?;
+
+ let writer = index.writer(50_000_000)?;
+
+
+ let reader = index
+ .reader_builder()
+ .reload_policy(ReloadPolicy::Manual)
+ .try_into()?;
+
+ let api = TantivyApi {
+ index,
+ writer: Mutex::new(writer),
+ reader,
+ schema,
+ id_field,
+ text_field,
+ };
+
+ *state_lock = Some(api);
+
+ Ok(())
+}
+
+
+
+
+pub fn add_document(doc: Document) -> Result<()> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+ let mut writer = api.writer.lock().unwrap();
+
+
+ let id_term = Term::from_field_text(api.id_field, &doc.id);
+ writer.delete_term(id_term.clone());
+
+ let mut tantivy_doc = TantivyDocument::new();
+ tantivy_doc.add_text(api.id_field, &doc.id);
+ tantivy_doc.add_text(api.text_field, &doc.text);
+
+ writer.add_document(tantivy_doc)?;
+ writer.commit()?;
+
+ Ok(())
+}
+
+
+pub fn search_documents(query: String, top_k: usize) -> Result> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+
+ api.reader.reload()?;
+
+
+ let searcher = api.reader.searcher();
+
+ let query_parser = QueryParser::for_index(&api.index, vec![api.text_field]);
+ let query = query_parser.parse_query(&query)?;
+
+ let top_docs = searcher.search(&query, &TopDocs::with_limit(top_k))?;
+
+ let mut results = Vec::new();
+ for (score, doc_address) in top_docs {
+ let retrieved_doc = searcher.doc::(doc_address)?;
+ let id = retrieved_doc.get_first(api.id_field)
+ .and_then(|v| v.as_str())
+ .unwrap_or_default()
+ .to_string();
+ let text = retrieved_doc.get_first(api.text_field)
+ .and_then(|v| v.as_str())
+ .unwrap_or_default()
+ .to_string();
+
+ results.push(SearchResult {
+ score,
+ doc: Document { id, text },
+ });
+ }
+
+ Ok(results)
+}
+
+
+pub fn get_document_by_id(id: String) -> Result> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+
+ let searcher = api.reader.searcher();
+
+ let id_term = Term::from_field_text(api.id_field, &id);
+ let query = tantivy::query::TermQuery::new(id_term, IndexRecordOption::Basic);
+
+ let top_docs = searcher.search(&query, &TopDocs::with_limit(1))?;
+
+ if let Some((_, doc_address)) = top_docs.first() {
+ let retrieved_doc = searcher.doc::(*doc_address)?;
+ let text = retrieved_doc.get_first(api.text_field)
+ .and_then(|v| v.as_str())
+ .unwrap_or_default()
+ .to_string();
+
+ return Ok(Some(Document { id, text }));
+ }
+
+ Ok(None)
+}
+
+pub fn update_document(doc: Document) -> Result<()> {
+ add_document(doc)
+}
+
+pub fn delete_document(id: String) -> Result<()> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+ let mut writer = api.writer.lock().unwrap();
+ let id_term = Term::from_field_text(api.id_field, &id);
+
+ writer.delete_term(id_term);
+ writer.commit()?;
+
+ Ok(())
+}
+
+pub fn add_documents_batch(docs: Vec) -> Result<()> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+ let mut writer = api.writer.lock().unwrap();
+
+ for doc in docs {
+ let id_term = Term::from_field_text(api.id_field, &doc.id);
+ writer.delete_term(id_term);
+
+ let mut tantivy_doc = TantivyDocument::new();
+ tantivy_doc.add_text(api.id_field, &doc.id);
+ tantivy_doc.add_text(api.text_field, &doc.text);
+ writer.add_document(tantivy_doc)?;
+ }
+ writer.commit()?;
+
+ Ok(())
+}
+
+pub fn delete_documents_batch(ids: Vec) -> Result<()> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+ let mut writer = api.writer.lock().unwrap();
+
+ for id in ids {
+ let id_term = Term::from_field_text(api.id_field, &id);
+ writer.delete_term(id_term);
+ }
+ writer.commit()?;
+
+ Ok(())
+}
+
+pub fn commit() -> Result<()> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+ let mut writer = api.writer.lock().unwrap();
+ writer.commit()?;
+
+ Ok(())
+}
+
+pub fn add_document_no_commit(doc: Document) -> Result<()> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+ let mut writer = api.writer.lock().unwrap();
+
+ let id_term = Term::from_field_text(api.id_field, &doc.id);
+ writer.delete_term(id_term);
+
+ let mut tantivy_doc = TantivyDocument::new();
+ tantivy_doc.add_text(api.id_field, &doc.id);
+ tantivy_doc.add_text(api.text_field, &doc.text);
+
+ writer.add_document(tantivy_doc)?;
+
+ Ok(())
+}
+
+
+pub fn delete_document_no_commit(id: String) -> Result<()> {
+ let state_lock = STATE.lock().unwrap();
+ let api = state_lock.as_ref().ok_or_else(|| anyhow!("Tantivy not initialized"))?;
+
+ let mut writer = api.writer.lock().unwrap();
+ let id_term = Term::from_field_text(api.id_field, &id);
+
+ writer.delete_term(id_term);
+
+ Ok(())
+}
diff --git a/backend/src/lib.rs b/backend/src/lib.rs
index 8b13789..eb4a882 100644
--- a/backend/src/lib.rs
+++ b/backend/src/lib.rs
@@ -1 +1,2 @@
-
+pub mod semantic_search;
+pub mod keyword_search;
\ No newline at end of file
diff --git a/backend/src/main.rs b/backend/src/main.rs
index e7a11a9..88ed471 100644
--- a/backend/src/main.rs
+++ b/backend/src/main.rs
@@ -1,3 +1,29 @@
-fn main() {
- println!("Hello, world!");
+use anyhow::Result;
+use inference::semantic_search::{Embeddings, get_top_k, load_artifacts, run_inference};
+
+fn main() -> Result<()> {
+ let (tokenizer, mut model) = load_artifacts(
+ "../mobile_app/assets/model.onnx".to_string(),
+ "../mobile_app/assets/tokenizer.json".to_string(),
+ )?;
+ let texts = vec![
+ "What is your name".to_string(),
+ "Ki lo ruko e?".to_string(),
+ "Ki lo je losan?".to_string(),
+ ];
+ let query = vec!["Ki lo ruko e?".to_string()];
+ let all_embeddings: Embeddings = run_inference(&texts, &mut model, &tokenizer)?;
+ let query_embeddings: Embeddings = run_inference(&query, &mut model, &tokenizer)?;
+
+ let similarity_matrix = query_embeddings.dot(&all_embeddings.t());
+ println!("Similarity matrix:\n{:?}", similarity_matrix);
+
+ let (_raw_score, _length) = similarity_matrix.into_raw_vec_and_offset();
+
+ let top_k = get_top_k(_raw_score, 3)?;
+ for i in top_k {
+ println!("{0} {1}", i.score, i.index);
+ }
+
+ Ok(())
}
diff --git a/backend/src/semantic_search.rs b/backend/src/semantic_search.rs
new file mode 100644
index 0000000..7712e0b
--- /dev/null
+++ b/backend/src/semantic_search.rs
@@ -0,0 +1,125 @@
+use anyhow::Result;
+use tokenizers::{Encoding, Tokenizer};
+
+use ort::session::Session;
+use ort::session::builder::GraphOptimizationLevel;
+
+type EncodingArray = ndarray::Array2;
+type InputIds = ndarray::Array2;
+pub type AttentionMask = ndarray::Array2;
+pub type Embeddings = ndarray::Array2;
+
+pub enum EncodingType {
+ Ids,
+ AttentionMask,
+}
+
+#[derive(Debug, Clone)]
+pub struct SimilarityScore {
+ pub index: usize,
+ pub score: f32,
+}
+
+pub fn load_artifacts(model_path: String, tokenizer_path: String) -> Result<(Tokenizer, Session)> {
+ let mut tokenizer = Tokenizer::from_file(&tokenizer_path).expect("Failed to load tokenizer.");
+ let padding = Some(tokenizers::PaddingParams {
+ strategy: tokenizers::PaddingStrategy::BatchLongest,
+ direction: tokenizers::PaddingDirection::Right,
+ pad_to_multiple_of: None,
+ pad_id: 1,
+ pad_type_id: 0,
+ pad_token: "".to_string(),
+ });
+ tokenizer.with_padding(padding);
+
+ let session = Session::builder()?
+ .with_optimization_level(GraphOptimizationLevel::Level1)?
+ .with_intra_threads(4)?
+ .commit_from_file(&model_path)
+ .expect("Failed to load the ONNX model.");
+ Ok((tokenizer, session))
+}
+
+pub fn get_encoding_array(
+ encodings: &[Encoding],
+ encoding_type: EncodingType,
+) -> Result {
+ let extract: fn(&Encoding) -> &[u32] = match encoding_type {
+ EncodingType::Ids => |e: &Encoding| e.get_ids(),
+ EncodingType::AttentionMask => |e: &Encoding| e.get_attention_mask(),
+ };
+
+ let nrows = encodings.len();
+ let ncols = extract(&encodings[0]).len();
+ let vec_matrix: Vec = encodings
+ .iter()
+ .flat_map(|e| extract(e).iter().map(|&x| x as i64).collect::>())
+ .collect();
+ Ok(ndarray::Array2::from_shape_vec((nrows, ncols), vec_matrix)
+ .expect("Failed to create Array2D from encodings."))
+}
+
+pub fn tokenize(texts: &[String], tokenizer: &Tokenizer) -> Result<(InputIds, AttentionMask)> {
+ let encodings = tokenizer
+ .encode_batch(texts.to_vec(), true)
+ .expect("Tokenization failed.");
+
+ let input_ids = get_encoding_array(&encodings, EncodingType::Ids)?;
+ let attention_mask = get_encoding_array(&encodings, EncodingType::AttentionMask)?;
+ Ok((input_ids, attention_mask))
+}
+
+pub fn run_inference(
+ text: &[String],
+ model: &mut Session,
+ tokenizer: &Tokenizer,
+) -> Result {
+ let (tokens, attn_mask) = tokenize(text, tokenizer)?;
+ let token_input_value = ort::value::Tensor::from_array(tokens)?;
+ let attn_mask_input_value = ort::value::Tensor::from_array(attn_mask)?;
+ let dense: ort::session::SessionOutputs<'_>= model.run(
+ ort::inputs!["input_ids" => token_input_value, "attention_mask" => attn_mask_input_value]
+ ).expect("Embedding model inference failed.");
+
+ let dense_embeddings = &dense["dense_embeddings"]
+ .try_extract_array::()?
+ .into_dimensionality::()
+ .expect("Failed to convert embeddings to 2D array.");
+ Ok(dense_embeddings.to_owned())
+}
+
+pub fn get_top_k(scores: Vec, k: usize) -> Result> {
+ let mut indexed_scores: Vec<(usize, f32)> = scores.into_iter().enumerate().collect();
+
+ indexed_scores.select_nth_unstable_by(k - 1, |a, b| {
+ b.1.partial_cmp(&a.1).unwrap_or(std::cmp::Ordering::Equal)
+ });
+
+ let mut top_k = indexed_scores.into_iter().take(k).collect::>();
+ top_k.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap_or(std::cmp::Ordering::Equal));
+
+ Ok(top_k
+ .into_iter()
+ .map(|(index, score)| SimilarityScore { index, score })
+ .collect())
+}
+
+pub fn similarity(
+ query: &[String],
+ texts: &[String],
+ model_path: String,
+ tokenizer_path: String,
+ top_k: usize,
+) -> Result> {
+ let (tokenizer, mut model) = load_artifacts(model_path, tokenizer_path)?;
+ let all_embeddings: Embeddings = run_inference(texts, &mut model, &tokenizer)?;
+ let query_embeddings: Embeddings = run_inference(query, &mut model, &tokenizer)?;
+ let similarity_matrix = query_embeddings.dot(&all_embeddings.t());
+
+ println!("Similarity matrix:\n{:?}", similarity_matrix);
+
+ let (_raw_score, _length) = similarity_matrix.into_raw_vec_and_offset();
+ let _top_k = get_top_k(_raw_score, top_k)?;
+
+ Ok(_top_k)
+}
diff --git a/inference/Cargo.lock b/inference/Cargo.lock
deleted file mode 100644
index 13f4cb8..0000000
--- a/inference/Cargo.lock
+++ /dev/null
@@ -1,1992 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 4
-
-[[package]]
-name = "adler2"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
-
-[[package]]
-name = "ahash"
-version = "0.8.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
-dependencies = [
- "cfg-if",
- "getrandom 0.3.4",
- "once_cell",
- "serde",
- "version_check",
- "zerocopy",
-]
-
-[[package]]
-name = "aho-corasick"
-version = "1.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "anyhow"
-version = "1.0.100"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61"
-
-[[package]]
-name = "autocfg"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
-
-[[package]]
-name = "base64"
-version = "0.13.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
-
-[[package]]
-name = "base64"
-version = "0.22.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
-
-[[package]]
-name = "base64ct"
-version = "1.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
-
-[[package]]
-name = "bitflags"
-version = "2.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
-
-[[package]]
-name = "bumpalo"
-version = "3.19.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510"
-
-[[package]]
-name = "byteorder"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
-
-[[package]]
-name = "bytes"
-version = "1.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
-
-[[package]]
-name = "castaway"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
-dependencies = [
- "rustversion",
-]
-
-[[package]]
-name = "cc"
-version = "1.2.54"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6354c81bbfd62d9cfa9cb3c773c2b7b2a3a482d569de977fd0e961f6e7c00583"
-dependencies = [
- "find-msvc-tools",
- "shlex",
-]
-
-[[package]]
-name = "cfg-if"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
-
-[[package]]
-name = "compact_str"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
-dependencies = [
- "castaway",
- "cfg-if",
- "itoa",
- "rustversion",
- "ryu",
- "serde",
- "static_assertions",
-]
-
-[[package]]
-name = "console"
-version = "0.15.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
-dependencies = [
- "encode_unicode",
- "libc",
- "once_cell",
- "unicode-width",
- "windows-sys 0.59.0",
-]
-
-[[package]]
-name = "console"
-version = "0.16.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4"
-dependencies = [
- "encode_unicode",
- "libc",
- "once_cell",
- "unicode-width",
- "windows-sys 0.61.2",
-]
-
-[[package]]
-name = "core-foundation"
-version = "0.9.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "core-foundation-sys"
-version = "0.8.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
-
-[[package]]
-name = "crc32fast"
-version = "1.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
-dependencies = [
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
-dependencies = [
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.8.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
-
-[[package]]
-name = "darling"
-version = "0.20.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
-dependencies = [
- "darling_core",
- "darling_macro",
-]
-
-[[package]]
-name = "darling_core"
-version = "0.20.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
-dependencies = [
- "fnv",
- "ident_case",
- "proc-macro2",
- "quote",
- "strsim",
- "syn",
-]
-
-[[package]]
-name = "darling_macro"
-version = "0.20.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
-dependencies = [
- "darling_core",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "dary_heap"
-version = "0.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04"
-dependencies = [
- "serde",
-]
-
-[[package]]
-name = "der"
-version = "0.7.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
-dependencies = [
- "pem-rfc7468",
- "zeroize",
-]
-
-[[package]]
-name = "derive_builder"
-version = "0.20.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"
-dependencies = [
- "derive_builder_macro",
-]
-
-[[package]]
-name = "derive_builder_core"
-version = "0.20.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
-dependencies = [
- "darling",
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "derive_builder_macro"
-version = "0.20.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
-dependencies = [
- "derive_builder_core",
- "syn",
-]
-
-[[package]]
-name = "dirs"
-version = "6.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
-dependencies = [
- "dirs-sys",
-]
-
-[[package]]
-name = "dirs-sys"
-version = "0.5.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
-dependencies = [
- "libc",
- "option-ext",
- "redox_users",
- "windows-sys 0.61.2",
-]
-
-[[package]]
-name = "displaydoc"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "either"
-version = "1.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
-
-[[package]]
-name = "encode_unicode"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
-
-[[package]]
-name = "errno"
-version = "0.3.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
-dependencies = [
- "libc",
- "windows-sys 0.61.2",
-]
-
-[[package]]
-name = "esaxx-rs"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "fastrand"
-version = "2.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
-
-[[package]]
-name = "find-msvc-tools"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
-
-[[package]]
-name = "flate2"
-version = "1.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369"
-dependencies = [
- "crc32fast",
- "miniz_oxide",
-]
-
-[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-[[package]]
-name = "foreign-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
-dependencies = [
- "foreign-types-shared",
-]
-
-[[package]]
-name = "foreign-types-shared"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
-
-[[package]]
-name = "form_urlencoded"
-version = "1.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
-dependencies = [
- "percent-encoding",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.2.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
-dependencies = [
- "cfg-if",
- "libc",
- "r-efi",
- "wasip2",
-]
-
-[[package]]
-name = "hf-hub"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "629d8f3bbeda9d148036d6b0de0a3ab947abd08ce90626327fc3547a49d59d97"
-dependencies = [
- "dirs",
- "http",
- "indicatif 0.17.11",
- "libc",
- "log",
- "rand",
- "serde",
- "serde_json",
- "thiserror",
- "ureq 2.12.1",
- "windows-sys 0.60.2",
-]
-
-[[package]]
-name = "hmac-sha256"
-version = "1.1.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d0f0ae375a85536cac3a243e3a9cda80a47910348abdea7e2c22f8ec556d586d"
-
-[[package]]
-name = "http"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
-dependencies = [
- "bytes",
- "itoa",
-]
-
-[[package]]
-name = "httparse"
-version = "1.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
-
-[[package]]
-name = "icu_collections"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
-dependencies = [
- "displaydoc",
- "potential_utf",
- "yoke",
- "zerofrom",
- "zerovec",
-]
-
-[[package]]
-name = "icu_locale_core"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
-dependencies = [
- "displaydoc",
- "litemap",
- "tinystr",
- "writeable",
- "zerovec",
-]
-
-[[package]]
-name = "icu_normalizer"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
-dependencies = [
- "icu_collections",
- "icu_normalizer_data",
- "icu_properties",
- "icu_provider",
- "smallvec",
- "zerovec",
-]
-
-[[package]]
-name = "icu_normalizer_data"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
-
-[[package]]
-name = "icu_properties"
-version = "2.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
-dependencies = [
- "icu_collections",
- "icu_locale_core",
- "icu_properties_data",
- "icu_provider",
- "zerotrie",
- "zerovec",
-]
-
-[[package]]
-name = "icu_properties_data"
-version = "2.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
-
-[[package]]
-name = "icu_provider"
-version = "2.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
-dependencies = [
- "displaydoc",
- "icu_locale_core",
- "writeable",
- "yoke",
- "zerofrom",
- "zerotrie",
- "zerovec",
-]
-
-[[package]]
-name = "ident_case"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
-
-[[package]]
-name = "idna"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
-dependencies = [
- "idna_adapter",
- "smallvec",
- "utf8_iter",
-]
-
-[[package]]
-name = "idna_adapter"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
-dependencies = [
- "icu_normalizer",
- "icu_properties",
-]
-
-[[package]]
-name = "indicatif"
-version = "0.17.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235"
-dependencies = [
- "console 0.15.11",
- "number_prefix",
- "portable-atomic",
- "unicode-width",
- "web-time",
-]
-
-[[package]]
-name = "indicatif"
-version = "0.18.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88"
-dependencies = [
- "console 0.16.2",
- "portable-atomic",
- "unicode-width",
- "unit-prefix",
- "web-time",
-]
-
-[[package]]
-name = "inference"
-version = "0.1.0"
-dependencies = [
- "anyhow",
- "ndarray",
- "ort",
- "tokenizers",
-]
-
-[[package]]
-name = "itertools"
-version = "0.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itoa"
-version = "1.0.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
-
-[[package]]
-name = "js-sys"
-version = "0.3.85"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c942ebf8e95485ca0d52d97da7c5a2c387d0e7f0ba4c35e93bfcaee045955b3"
-dependencies = [
- "once_cell",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.180"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
-
-[[package]]
-name = "libredox"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616"
-dependencies = [
- "bitflags",
- "libc",
-]
-
-[[package]]
-name = "linux-raw-sys"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
-
-[[package]]
-name = "litemap"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
-
-[[package]]
-name = "log"
-version = "0.4.29"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
-
-[[package]]
-name = "lzma-rust2"
-version = "0.15.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1670343e58806300d87950e3401e820b519b9384281bbabfb15e3636689ffd69"
-
-[[package]]
-name = "macro_rules_attribute"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "65049d7923698040cd0b1ddcced9b0eb14dd22c5f86ae59c3740eab64a676520"
-dependencies = [
- "macro_rules_attribute-proc_macro",
- "paste",
-]
-
-[[package]]
-name = "macro_rules_attribute-proc_macro"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "670fdfda89751bc4a84ac13eaa63e205cf0fd22b4c9a5fbfa085b63c1f1d3a30"
-
-[[package]]
-name = "matrixmultiply"
-version = "0.3.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
-dependencies = [
- "autocfg",
- "rawpointer",
-]
-
-[[package]]
-name = "memchr"
-version = "2.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
-
-[[package]]
-name = "minimal-lexical"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
-
-[[package]]
-name = "miniz_oxide"
-version = "0.8.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
-dependencies = [
- "adler2",
- "simd-adler32",
-]
-
-[[package]]
-name = "monostate"
-version = "0.1.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3341a273f6c9d5bef1908f17b7267bbab0e95c9bf69a0d4dcf8e9e1b2c76ef67"
-dependencies = [
- "monostate-impl",
- "serde",
- "serde_core",
-]
-
-[[package]]
-name = "monostate-impl"
-version = "0.1.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "native-tls"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
-dependencies = [
- "libc",
- "log",
- "openssl",
- "openssl-probe",
- "openssl-sys",
- "schannel",
- "security-framework",
- "security-framework-sys",
- "tempfile",
-]
-
-[[package]]
-name = "ndarray"
-version = "0.17.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
-dependencies = [
- "matrixmultiply",
- "num-complex",
- "num-integer",
- "num-traits",
- "portable-atomic",
- "portable-atomic-util",
- "rawpointer",
-]
-
-[[package]]
-name = "nom"
-version = "7.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
-dependencies = [
- "memchr",
- "minimal-lexical",
-]
-
-[[package]]
-name = "num-complex"
-version = "0.4.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
-name = "num-integer"
-version = "0.1.46"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
-dependencies = [
- "num-traits",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.19"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "number_prefix"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
-
-[[package]]
-name = "once_cell"
-version = "1.21.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
-
-[[package]]
-name = "onig"
-version = "6.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0"
-dependencies = [
- "bitflags",
- "libc",
- "once_cell",
- "onig_sys",
-]
-
-[[package]]
-name = "onig_sys"
-version = "69.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc"
-dependencies = [
- "cc",
- "pkg-config",
-]
-
-[[package]]
-name = "openssl"
-version = "0.10.75"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
-dependencies = [
- "bitflags",
- "cfg-if",
- "foreign-types",
- "libc",
- "once_cell",
- "openssl-macros",
- "openssl-sys",
-]
-
-[[package]]
-name = "openssl-macros"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "openssl-probe"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
-
-[[package]]
-name = "openssl-sys"
-version = "0.9.111"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
-dependencies = [
- "cc",
- "libc",
- "pkg-config",
- "vcpkg",
-]
-
-[[package]]
-name = "option-ext"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
-
-[[package]]
-name = "ort"
-version = "2.0.0-rc.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a5df903c0d2c07b56950f1058104ab0c8557159f2741782223704de9be73c3c"
-dependencies = [
- "ndarray",
- "ort-sys",
- "smallvec",
- "tracing",
- "ureq 3.1.4",
-]
-
-[[package]]
-name = "ort-sys"
-version = "2.0.0-rc.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06503bb33f294c5f1ba484011e053bfa6ae227074bdb841e9863492dc5960d4b"
-dependencies = [
- "hmac-sha256",
- "lzma-rust2",
- "ureq 3.1.4",
-]
-
-[[package]]
-name = "paste"
-version = "1.0.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
-
-[[package]]
-name = "pem-rfc7468"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
-dependencies = [
- "base64ct",
-]
-
-[[package]]
-name = "percent-encoding"
-version = "2.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b"
-
-[[package]]
-name = "pkg-config"
-version = "0.3.32"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
-
-[[package]]
-name = "portable-atomic"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950"
-
-[[package]]
-name = "portable-atomic-util"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
-dependencies = [
- "portable-atomic",
-]
-
-[[package]]
-name = "potential_utf"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
-dependencies = [
- "zerovec",
-]
-
-[[package]]
-name = "ppv-lite86"
-version = "0.2.21"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
-dependencies = [
- "zerocopy",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.106"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "r-efi"
-version = "5.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
-
-[[package]]
-name = "rand"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
-dependencies = [
- "rand_chacha",
- "rand_core",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
-dependencies = [
- "ppv-lite86",
- "rand_core",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
-dependencies = [
- "getrandom 0.3.4",
-]
-
-[[package]]
-name = "rawpointer"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
-
-[[package]]
-name = "rayon"
-version = "1.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
-dependencies = [
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-cond"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2964d0cf57a3e7a06e8183d14a8b527195c706b7983549cd5462d5aa3747438f"
-dependencies = [
- "either",
- "itertools",
- "rayon",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
-dependencies = [
- "crossbeam-deque",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "redox_users"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
-dependencies = [
- "getrandom 0.2.17",
- "libredox",
- "thiserror",
-]
-
-[[package]]
-name = "regex"
-version = "1.12.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-automata",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.4.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c"
-dependencies = [
- "aho-corasick",
- "memchr",
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.8.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
-
-[[package]]
-name = "ring"
-version = "0.17.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
-dependencies = [
- "cc",
- "cfg-if",
- "getrandom 0.2.17",
- "libc",
- "untrusted",
- "windows-sys 0.52.0",
-]
-
-[[package]]
-name = "rustix"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34"
-dependencies = [
- "bitflags",
- "errno",
- "libc",
- "linux-raw-sys",
- "windows-sys 0.61.2",
-]
-
-[[package]]
-name = "rustls"
-version = "0.23.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b"
-dependencies = [
- "log",
- "once_cell",
- "ring",
- "rustls-pki-types",
- "rustls-webpki",
- "subtle",
- "zeroize",
-]
-
-[[package]]
-name = "rustls-pki-types"
-version = "1.14.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
-dependencies = [
- "zeroize",
-]
-
-[[package]]
-name = "rustls-webpki"
-version = "0.103.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
-dependencies = [
- "ring",
- "rustls-pki-types",
- "untrusted",
-]
-
-[[package]]
-name = "rustversion"
-version = "1.0.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
-
-[[package]]
-name = "ryu"
-version = "1.0.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
-
-[[package]]
-name = "schannel"
-version = "0.1.28"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
-dependencies = [
- "windows-sys 0.61.2",
-]
-
-[[package]]
-name = "security-framework"
-version = "2.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
-dependencies = [
- "bitflags",
- "core-foundation",
- "core-foundation-sys",
- "libc",
- "security-framework-sys",
-]
-
-[[package]]
-name = "security-framework-sys"
-version = "2.15.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
-dependencies = [
- "core-foundation-sys",
- "libc",
-]
-
-[[package]]
-name = "serde"
-version = "1.0.228"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
-dependencies = [
- "serde_core",
- "serde_derive",
-]
-
-[[package]]
-name = "serde_core"
-version = "1.0.228"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
-dependencies = [
- "serde_derive",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.228"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.149"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
-dependencies = [
- "itoa",
- "memchr",
- "serde",
- "serde_core",
- "zmij",
-]
-
-[[package]]
-name = "shlex"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
-
-[[package]]
-name = "simd-adler32"
-version = "0.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
-
-[[package]]
-name = "smallvec"
-version = "1.15.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
-
-[[package]]
-name = "socks"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b"
-dependencies = [
- "byteorder",
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "spm_precompiled"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326"
-dependencies = [
- "base64 0.13.1",
- "nom",
- "serde",
- "unicode-segmentation",
-]
-
-[[package]]
-name = "stable_deref_trait"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
-
-[[package]]
-name = "static_assertions"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
-
-[[package]]
-name = "strsim"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
-
-[[package]]
-name = "subtle"
-version = "2.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
-
-[[package]]
-name = "syn"
-version = "2.0.114"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-ident",
-]
-
-[[package]]
-name = "synstructure"
-version = "0.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "tempfile"
-version = "3.24.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c"
-dependencies = [
- "fastrand",
- "getrandom 0.3.4",
- "once_cell",
- "rustix",
- "windows-sys 0.61.2",
-]
-
-[[package]]
-name = "thiserror"
-version = "2.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
-dependencies = [
- "thiserror-impl",
-]
-
-[[package]]
-name = "thiserror-impl"
-version = "2.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "tinystr"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
-dependencies = [
- "displaydoc",
- "zerovec",
-]
-
-[[package]]
-name = "tokenizers"
-version = "0.22.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b238e22d44a15349529690fb07bd645cf58149a1b1e44d6cb5bd1641ff1a6223"
-dependencies = [
- "ahash",
- "aho-corasick",
- "compact_str",
- "dary_heap",
- "derive_builder",
- "esaxx-rs",
- "getrandom 0.3.4",
- "hf-hub",
- "indicatif 0.18.3",
- "itertools",
- "log",
- "macro_rules_attribute",
- "monostate",
- "onig",
- "paste",
- "rand",
- "rayon",
- "rayon-cond",
- "regex",
- "regex-syntax",
- "serde",
- "serde_json",
- "spm_precompiled",
- "thiserror",
- "unicode-normalization-alignments",
- "unicode-segmentation",
- "unicode_categories",
-]
-
-[[package]]
-name = "tracing"
-version = "0.1.44"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
-dependencies = [
- "pin-project-lite",
- "tracing-core",
-]
-
-[[package]]
-name = "tracing-core"
-version = "0.1.36"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
-dependencies = [
- "once_cell",
-]
-
-[[package]]
-name = "unicode-ident"
-version = "1.0.22"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
-
-[[package]]
-name = "unicode-normalization-alignments"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43f613e4fa046e69818dd287fdc4bc78175ff20331479dab6e1b0f98d57062de"
-dependencies = [
- "smallvec",
-]
-
-[[package]]
-name = "unicode-segmentation"
-version = "1.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
-
-[[package]]
-name = "unicode-width"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
-
-[[package]]
-name = "unicode_categories"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
-
-[[package]]
-name = "unit-prefix"
-version = "0.5.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
-
-[[package]]
-name = "untrusted"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
-
-[[package]]
-name = "ureq"
-version = "2.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d"
-dependencies = [
- "base64 0.22.1",
- "flate2",
- "log",
- "once_cell",
- "rustls",
- "rustls-pki-types",
- "serde",
- "serde_json",
- "socks",
- "url",
- "webpki-roots 0.26.11",
-]
-
-[[package]]
-name = "ureq"
-version = "3.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d39cb1dbab692d82a977c0392ffac19e188bd9186a9f32806f0aaa859d75585a"
-dependencies = [
- "base64 0.22.1",
- "der",
- "log",
- "native-tls",
- "percent-encoding",
- "rustls-pki-types",
- "socks",
- "ureq-proto",
- "utf-8",
- "webpki-root-certs",
-]
-
-[[package]]
-name = "ureq-proto"
-version = "0.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f"
-dependencies = [
- "base64 0.22.1",
- "http",
- "httparse",
- "log",
-]
-
-[[package]]
-name = "url"
-version = "2.5.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
-dependencies = [
- "form_urlencoded",
- "idna",
- "percent-encoding",
- "serde",
-]
-
-[[package]]
-name = "utf-8"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
-
-[[package]]
-name = "utf8_iter"
-version = "1.0.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
-
-[[package]]
-name = "vcpkg"
-version = "0.2.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
-
-[[package]]
-name = "version_check"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
-
-[[package]]
-name = "wasi"
-version = "0.11.1+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
-
-[[package]]
-name = "wasip2"
-version = "1.0.2+wasi-0.2.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
-dependencies = [
- "wit-bindgen",
-]
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.108"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "64024a30ec1e37399cf85a7ffefebdb72205ca1c972291c51512360d90bd8566"
-dependencies = [
- "cfg-if",
- "once_cell",
- "rustversion",
- "wasm-bindgen-macro",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.108"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "008b239d9c740232e71bd39e8ef6429d27097518b6b30bdf9086833bd5b6d608"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.108"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5256bae2d58f54820e6490f9839c49780dff84c65aeab9e772f15d5f0e913a55"
-dependencies = [
- "bumpalo",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.108"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f01b580c9ac74c8d8f0c0e4afb04eeef2acf145458e52c03845ee9cd23e3d12"
-dependencies = [
- "unicode-ident",
-]
-
-[[package]]
-name = "web-time"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "webpki-root-certs"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc"
-dependencies = [
- "rustls-pki-types",
-]
-
-[[package]]
-name = "webpki-roots"
-version = "0.26.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
-dependencies = [
- "webpki-roots 1.0.5",
-]
-
-[[package]]
-name = "webpki-roots"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c"
-dependencies = [
- "rustls-pki-types",
-]
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-
-[[package]]
-name = "windows-link"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
-
-[[package]]
-name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.59.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.60.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
-dependencies = [
- "windows-targets 0.53.5",
-]
-
-[[package]]
-name = "windows-sys"
-version = "0.61.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
-dependencies = [
- "windows-link",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
-dependencies = [
- "windows_aarch64_gnullvm 0.52.6",
- "windows_aarch64_msvc 0.52.6",
- "windows_i686_gnu 0.52.6",
- "windows_i686_gnullvm 0.52.6",
- "windows_i686_msvc 0.52.6",
- "windows_x86_64_gnu 0.52.6",
- "windows_x86_64_gnullvm 0.52.6",
- "windows_x86_64_msvc 0.52.6",
-]
-
-[[package]]
-name = "windows-targets"
-version = "0.53.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
-dependencies = [
- "windows-link",
- "windows_aarch64_gnullvm 0.53.1",
- "windows_aarch64_msvc 0.53.1",
- "windows_i686_gnu 0.53.1",
- "windows_i686_gnullvm 0.53.1",
- "windows_i686_msvc 0.53.1",
- "windows_x86_64_gnu 0.53.1",
- "windows_x86_64_gnullvm 0.53.1",
- "windows_x86_64_msvc 0.53.1",
-]
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
-
-[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
-
-[[package]]
-name = "windows_aarch64_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
-
-[[package]]
-name = "windows_i686_gnu"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
-
-[[package]]
-name = "windows_i686_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
-
-[[package]]
-name = "windows_i686_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
-
-[[package]]
-name = "windows_x86_64_gnu"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.52.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
-
-[[package]]
-name = "windows_x86_64_msvc"
-version = "0.53.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
-
-[[package]]
-name = "wit-bindgen"
-version = "0.51.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
-
-[[package]]
-name = "writeable"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
-
-[[package]]
-name = "yoke"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
-dependencies = [
- "stable_deref_trait",
- "yoke-derive",
- "zerofrom",
-]
-
-[[package]]
-name = "yoke-derive"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "synstructure",
-]
-
-[[package]]
-name = "zerocopy"
-version = "0.8.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd"
-dependencies = [
- "zerocopy-derive",
-]
-
-[[package]]
-name = "zerocopy-derive"
-version = "0.8.33"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "zerofrom"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
-dependencies = [
- "zerofrom-derive",
-]
-
-[[package]]
-name = "zerofrom-derive"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "synstructure",
-]
-
-[[package]]
-name = "zeroize"
-version = "1.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
-
-[[package]]
-name = "zerotrie"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
-dependencies = [
- "displaydoc",
- "yoke",
- "zerofrom",
-]
-
-[[package]]
-name = "zerovec"
-version = "0.11.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
-dependencies = [
- "yoke",
- "zerofrom",
- "zerovec-derive",
-]
-
-[[package]]
-name = "zerovec-derive"
-version = "0.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "zmij"
-version = "1.0.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02aae0f83f69aafc94776e879363e9771d7ecbffe2c7fbb6c14c5e00dfe88439"
diff --git a/inference/Cargo.toml b/inference/Cargo.toml
deleted file mode 100644
index e1b0768..0000000
--- a/inference/Cargo.toml
+++ /dev/null
@@ -1,13 +0,0 @@
-[package]
-name = "inference"
-version = "0.1.0"
-edition = "2024"
-
-[dependencies]
-ndarray = "0.17.2"
-tokenizers = { version = "0.22.2", default-features = false, features = ["esaxx_fast", "indicatif", "onig", "progressbar", "hf-hub", "http"] }
-ort = { version = "2.0.0-rc.11" }
-anyhow = "1.0.100"
-
-[target.'cfg(target_os = "android")'.dependencies]
-ort = { version = "2.0.0-rc.11", default-features = false, features = ["ndarray", "copy-dylibs", "std", "tls-native"] }
diff --git a/inference/src/main.rs b/inference/src/main.rs
deleted file mode 100644
index d971edb..0000000
--- a/inference/src/main.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-use anyhow::Result;
-
-use inference::{load_artifacts, Embeddings, run_inference};
-
-fn main() -> Result<()> {
- let (tokenizer, mut model) = load_artifacts()?;
- let texts = vec![
- "What is your name",
- "Ki lo ruko e?",
- "Ki lo je losan?"
- ];
- let all_embeddings: Embeddings = run_inference(&texts, &mut model, &tokenizer)?;
- let similarity_matrix = all_embeddings.dot(&all_embeddings.t());
- println!("Similarity matrix:\n{:?}", similarity_matrix);
-
- Ok(())
-}
\ No newline at end of file
diff --git a/mobile_app/README.md b/mobile_app/README.md
index d2865ca..d382d70 100644
--- a/mobile_app/README.md
+++ b/mobile_app/README.md
@@ -14,4 +14,71 @@ To run acho on your machine:
- Configure a device (Android 16.0) in Tools > Device Manager. and start with the play button ( ▶)

- `cd mobile_app`
-- `flutter run`
\ No newline at end of file
+- `flutter run`
+
+This app spawns compuation to an isolate to prevent U.I jank, and further intensive computation including Semantic similarity search, and keyword search to Rust using the flutter_rust_bridge plugin.
+
+# 🏗️ Manual Build & Compile Guide
+
+Use this sequence whenever you modify your Rust code (`.rs` files). This process ensures the **Dart code** (Frontend) and **Rust binary** (Backend) are perfectly synchronized.
+
+---
+
+### 1. Set Environment Variables
+Ensure your terminal knows where NDK 27 is. Run this once per terminal session (or save it to your `~/.zshrc`).
+
+```bash
+# Set path to NDK 27
+export ANDROID_NDK_HOME=$HOME/Library/Android/sdk/ndk/27.0.12077973
+export PATH=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin:$PATH
+```
+
+We use ndk 27 due to compatibility with ort crate
+
+### 2. Generate bindings for Rust (containing functionality of keyword search and semantic search)
+
+from location `acho/mobile_app`
+
+```bash
+flutter_rust_bridge_codegen generate
+```
+
+### 3. Compile the .so library for
+
+```bash
+cd rust
+
+# Clean previous builds to force a fresh hash (Recommended)
+cargo clean
+
+# Build Release version
+cargo build --target aarch64-linux-android --release
+
+cd ..
+```
+
+### 4 . Copy the fresh binary to a locaiton for the android target
+
+from location `acho/mobile_app`
+
+```bash
+cp rust/target/aarch64-linux-android/release/librust_lib_mobile_app.so android/app/src/main/jniLibs/arm64-v8a/
+```
+
+### 5. Verify the content of the jniLibs Folder contains the required .so files
+
+```bash
+ls -l android/app/src/main/jniLibs/arm64-v8a/
+```
+
+- libc++_shared.so (From NDK 27)
+- libonnxruntime.so (From onnxruntime-android-1.23.2 AAR or Gradle)
+- librust_lib_mobile_app.so
+
+
+### 6. Most importantly ensure the models and tokenizers are in the Downloads folder on device (TODO: better way of deploying models)
+
+These three files :
+- model.onnx
+- model.onnx_data
+- tokenizer.json
diff --git a/mobile_app/android/app/build.gradle b/mobile_app/android/app/build.gradle
index ba9fb7b..ad0fad7 100644
--- a/mobile_app/android/app/build.gradle
+++ b/mobile_app/android/app/build.gradle
@@ -26,12 +26,18 @@ if (flutterVersionName == null) {
android {
namespace = "com.example.mobile_app"
compileSdk = flutter.compileSdkVersion
- ndkVersion = flutter.ndkVersion
+ ndkVersion = "27.0.12077973"
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
+ dependencies {
+ // ... other dependencies
+
+ // This will auto-download and bundle libonnxruntime.so
+ implementation "com.microsoft.onnxruntime:onnxruntime-android:1.17.0"
+ }
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
@@ -45,7 +51,6 @@ android {
}
kotlinOptions {
- // Change this from "1.8" to "17"
jvmTarget = "17"
}
@@ -56,8 +61,15 @@ android {
signingConfig = signingConfigs.debug
}
}
+ packaging {
+ resources {
+ pickFirst '**/libc++_shared.so'
+ }
+ }
}
flutter {
source = "../.."
}
+
+
diff --git a/mobile_app/android/app/proguard-rules.pro b/mobile_app/android/app/proguard-rules.pro
new file mode 100644
index 0000000..e69de29
diff --git a/mobile_app/android/app/src/main/AndroidManifest.xml b/mobile_app/android/app/src/main/AndroidManifest.xml
index bb3e8cc..275b284 100644
--- a/mobile_app/android/app/src/main/AndroidManifest.xml
+++ b/mobile_app/android/app/src/main/AndroidManifest.xml
@@ -1,5 +1,10 @@
+
+
+
+
+
await RustLib.init());
- testWidgets('Can call rust function', (WidgetTester tester) async {
- await tester.pumpWidget(const MyApp());
- expect(find.textContaining('Result: `Hello, Tom!`'), findsOneWidget);
- });
-}
diff --git a/mobile_app/lib/file.dart b/mobile_app/lib/file.dart
index 1c65d22..b27e611 100644
--- a/mobile_app/lib/file.dart
+++ b/mobile_app/lib/file.dart
@@ -20,7 +20,7 @@ class FileApp extends StatelessWidget {
children: [
const ListTile(
leading: Text(
- "files",
+ "Files",
style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
)),
Column(
diff --git a/mobile_app/lib/home.dart b/mobile_app/lib/home.dart
index 7509d9f..99c21e4 100644
--- a/mobile_app/lib/home.dart
+++ b/mobile_app/lib/home.dart
@@ -5,7 +5,9 @@ import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
import 'package:gap/gap.dart';
import 'package:mobile_app/utils.dart';
-import 'package:flutter_tantivy/flutter_tantivy.dart';
+import 'package:mobile_app/src/rust/frb_generated.dart';
+import 'package:mobile_app/src/rust/api/acho.dart';
+import 'package:mobile_app/src/rust/api/tantivy.dart';
class HomeApp extends StatefulWidget {
List files = [];
@@ -17,6 +19,7 @@ class HomeApp extends StatefulWidget {
class _HomeAppState extends State {
List matchedDocuments = [];
+ List semanticMatchedDocument = [];
List searchedItems = [];
@override
@@ -84,16 +87,26 @@ class _HomeAppState extends State {
onChanged: (text) {},
onSubmitted: (text) async {
final List docs = await compute(findMatch, text);
- //TODO: Handle enter key press,
- //TODO: similar to above depending on latency we may just use this
+ final texts = await getDocumentText();
+
+ final List sdocs = await compute(
+ semanticSearch,
+ ///TODO: Placeholder document
+ SemanticSearch(text, texts));
+
saveSearchHistory(text);
+
+ List _searchedItems = await getSearchHistory();
+ setState(() {
+ searchedItems = _searchedItems;
+ });
+
setState(() {
matchedDocuments = docs;
});
- List _searchedItems = await getSearchHistory();
setState(() {
- searchedItems = _searchedItems;
+ semanticMatchedDocument = sdocs;
});
},
),
@@ -113,8 +126,8 @@ class _HomeAppState extends State {
side: BorderSide(color: Colors.grey[300]!),
),
onPressed: () async {
- final List docs =
- await compute(findMatch, searchedItems[index]);
+ final List docs = [];
+ await compute(findMatch, searchedItems[index]);
setState(() {
matchedDocuments = docs;
@@ -123,59 +136,90 @@ class _HomeAppState extends State {
child: Text(searchedItems[index]), // Display results from search
));
})),
+ const ListTile(
+ leading: Text(
+ "Keyword Match",
+ style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
+ )),
matchedDocuments.length >= 1
- ? const ListTile(
- leading: Text(
- "Matching Documents",
- style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
- ))
- : Expanded(
- child: Column(
- children: [
- const ListTile(
- leading: Text(
- "Files",
- style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
- )),
- Column(
- children: List.generate(widget.files.length, (int index) {
- String fileName = widget.files[index].path.split("/").last;
- String fileType =
- widget.files[index].path.split("/").last.split(".").last;
-
- Map fileIcon = {
- "pdf": Icon(Icons.picture_as_pdf)
- };
-
- return ListTile(
- leading: fileIcon[fileType] ?? Icon(Icons.book),
- trailing: Icon(Icons.chevron_right),
- //TODO: style to make borders visible
- onTap: () {
- PdfScanner().openFile(widget.files[index]);
- //TODO: Handle click, popular search bar with text controller
- },
- title: Text(fileName), // Display results from search
- );
- })),
- ],
- )),
- Expanded(
- child: ListView.builder(
- itemCount: matchedDocuments.length,
- itemBuilder: (context, index) {
- final result = matchedDocuments[index];
-
- return ListTile(
- leading: const Icon(Icons.picture_as_pdf),
- onTap: () {
- _showDocumentDetails(result);
- },
- trailing: const Icon(Icons.chevron_right),
- title: Text(result.doc.text
- .substring(0, 50)), // Display results from search
- );
- })),
+ ? Expanded(
+ child: ListView.builder(
+ itemCount: matchedDocuments.length,
+ itemBuilder: (context, index) {
+ final result = matchedDocuments[index];
+
+ return ListTile(
+ leading: const Icon(Icons.picture_as_pdf),
+ onTap: () {
+ _showDocumentDetails(result);
+ },
+ trailing: const Icon(Icons.chevron_right),
+ title: Text(result.doc.text
+ .substring(0, 50)), // Display results from search
+ );
+ }))
+ : SizedBox.shrink(),
+ Gap(10),
+ const ListTile(
+ leading: Text(
+ "Semantic Match",
+ style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold),
+ )),
+ semanticMatchedDocument.length >= 1
+ ? Expanded(
+ child: ListView.builder(
+ itemCount: semanticMatchedDocument.length,
+ itemBuilder: (context, index) {
+ final result = semanticMatchedDocument[index];
+ return ListTile(
+ leading: const Icon(Icons.picture_as_pdf),
+ onTap: () {
+ showDialog(
+ context: context,
+ builder: (context) => AlertDialog(
+ title: const Text("Document Preview"),
+ content: SingleChildScrollView(
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ const Text(
+ "Matching Chunk:",
+ style: TextStyle(
+ fontWeight: FontWeight.bold,
+ color: Colors.blue),
+ ),
+ const Gap(10),
+ Text(
+ result, // The full text chunk
+ style: const TextStyle(
+ fontSize: 15, height: 1.5),
+ ),
+ ],
+ ),
+ ),
+ actions: [
+ TextButton(
+ onPressed: () => Navigator.pop(context),
+ child: const Text("Close"),
+ ),
+ ElevatedButton(
+ onPressed: () {
+ ///TODO: Integrate with PDF viewer to jump to specific page
+ Navigator.pop(context);
+ },
+ child: const Text("Open Full PDF"),
+ ),
+ ],
+ ),
+ );
+ },
+ trailing: const Icon(Icons.chevron_right),
+ title: Text(result.length > 50 ? result.substring(
+ 0, 50): result), // Display results from search
+ );
+ }))
+ : SizedBox.shrink(),
]));
}
}
diff --git a/mobile_app/lib/main.dart b/mobile_app/lib/main.dart
index abcdf67..e920017 100644
--- a/mobile_app/lib/main.dart
+++ b/mobile_app/lib/main.dart
@@ -3,17 +3,19 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:mobile_app/settings.dart';
-import 'package:flutter/foundation.dart';
import 'package:mobile_app/home.dart';
import 'package:mobile_app/file.dart';
-import 'package:flutter_tantivy/flutter_tantivy.dart';
+
+import 'package:mobile_app/src/rust/frb_generated.dart';
+import 'package:mobile_app/src/rust/api/acho.dart';
+import 'package:mobile_app/src/rust/api/tantivy.dart';
+
import 'package:path_provider/path_provider.dart';
import 'package:mobile_app/storage.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:mobile_app/utils.dart';
Future main() async {
- await RustLib.init();
WidgetsFlutterBinding
.ensureInitialized(); // Ensure plugin services are initialized
@@ -31,9 +33,10 @@ Future main() async {
Log.logger.i("Permission for external storage: $status");
final directory = await getApplicationDocumentsDirectory();
+ await RustLib.init();
final indexPath = '${directory.path}/tantivy_index';
initTantivy(dirPath: indexPath);
- Log.logger.i("Index Path $indexPath");
+ // Log.logger.i("Index Path $indexPath");
runApp(const MyApp());
}
@@ -87,7 +90,11 @@ class MyAppState extends State {
home: Scaffold(
appBar: AppBar(title: const Text('Acho')),
body: PageView(
- children: [HomeApp(files: folders), SettingsApp()],
+ children: [
+ HomeApp(files: folders),
+ FileApp(files: folders),
+ SettingsApp()
+ ],
controller: pageController,
onPageChanged: onPageChanged,
),
@@ -101,6 +108,12 @@ class MyAppState extends State {
icon: Icon(Icons.home_filled),
activeIcon: HomeApp(files: []),
),
+ BottomNavigationBarItem(
+ backgroundColor: Colors.red,
+ label: 'Files',
+ icon: Icon(Icons.folder_outlined),
+ activeIcon: FileApp(files: []),
+ ),
const BottomNavigationBarItem(
label: 'Settings',
icon: Icon(Icons.settings),
diff --git a/mobile_app/lib/settings.dart b/mobile_app/lib/settings.dart
index 2feab11..64eec95 100644
--- a/mobile_app/lib/settings.dart
+++ b/mobile_app/lib/settings.dart
@@ -16,17 +16,11 @@ class SettingsApp extends StatelessWidget {
),
// onTap:,
),
- ListTile(
- leading: Icon(Icons.folder),
- title: Text("Folder"),
- trailing: Icon(Icons.chevron_right_sharp),
- // onTap:,
- ),
ListTile(
leading: Icon(Icons.change_circle_sharp),
title: Text("Re-index PDFs"),
trailing: Icon(Icons.chevron_right_sharp),
- // onTap:,
+ // onTap:
),
Divider(),
ListTile(
diff --git a/mobile_app/lib/src/rust/api/acho.dart b/mobile_app/lib/src/rust/api/acho.dart
new file mode 100644
index 0000000..d62a9b7
--- /dev/null
+++ b/mobile_app/lib/src/rust/api/acho.dart
@@ -0,0 +1,89 @@
+// This file is automatically generated, so please do not edit it.
+// @generated by `flutter_rust_bridge`@ 2.11.1.
+
+// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
+
+import '../frb_generated.dart';
+import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
+
+Future<(Tokenizer, Session)> loadArtifacts(
+ {required String modelPath, required String tokenizerPath}) =>
+ RustLib.instance.api.crateApiAchoLoadArtifacts(
+ modelPath: modelPath, tokenizerPath: tokenizerPath);
+
+Future getEncodingArray(
+ {required List encodings,
+ required EncodingType encodingType}) =>
+ RustLib.instance.api.crateApiAchoGetEncodingArray(
+ encodings: encodings, encodingType: encodingType);
+
+Future<(Array2I64, Array2I64)> tokenize(
+ {required List texts, required Tokenizer tokenizer}) =>
+ RustLib.instance.api
+ .crateApiAchoTokenize(texts: texts, tokenizer: tokenizer);
+
+Future runInference(
+ {required List text,
+ required Session model,
+ required Tokenizer tokenizer}) =>
+ RustLib.instance.api.crateApiAchoRunInference(
+ text: text, model: model, tokenizer: tokenizer);
+
+Future> similarity(
+ {required List query,
+ required List texts,
+ required String modelPath,
+ required String tokenizerPath,
+ required BigInt topK}) =>
+ RustLib.instance.api.crateApiAchoSimilarity(
+ query: query,
+ texts: texts,
+ modelPath: modelPath,
+ tokenizerPath: tokenizerPath,
+ topK: topK);
+
+Future> getTopK(
+ {required List scores, required BigInt k}) =>
+ RustLib.instance.api.crateApiAchoGetTopK(scores: scores, k: k);
+
+// Rust type: RustOpaqueMoi>>
+abstract class Array2F32 implements RustOpaqueInterface {}
+
+// Rust type: RustOpaqueMoi>>
+abstract class Array2I64 implements RustOpaqueInterface {}
+
+// Rust type: RustOpaqueMoi>
+abstract class Encoding implements RustOpaqueInterface {}
+
+// Rust type: RustOpaqueMoi>
+abstract class Session implements RustOpaqueInterface {}
+
+// Rust type: RustOpaqueMoi>
+abstract class Tokenizer implements RustOpaqueInterface {}
+
+enum EncodingType {
+ ids,
+ attentionMask,
+ ;
+}
+
+class SimilarityScore {
+ final BigInt index;
+ final double score;
+
+ const SimilarityScore({
+ required this.index,
+ required this.score,
+ });
+
+ @override
+ int get hashCode => index.hashCode ^ score.hashCode;
+
+ @override
+ bool operator ==(Object other) =>
+ identical(this, other) ||
+ other is SimilarityScore &&
+ runtimeType == other.runtimeType &&
+ index == other.index &&
+ score == other.score;
+}
diff --git a/mobile_app/lib/src/rust/api/keyword_search.dart b/mobile_app/lib/src/rust/api/keyword_search.dart
deleted file mode 100644
index 441be26..0000000
--- a/mobile_app/lib/src/rust/api/keyword_search.dart
+++ /dev/null
@@ -1,26 +0,0 @@
-// This file is automatically generated, so please do not edit it.
-// @generated by `flutter_rust_bridge`@ 2.11.1.
-
-// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
-
-import '../frb_generated.dart';
-import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
-
-// Rust type: RustOpaqueMoi>
-abstract class PathBuf implements RustOpaqueInterface {}
-
-// Rust type: RustOpaqueMoi>
-abstract class SearchFn implements RustOpaqueInterface {
- PathBuf get pathToIndex;
-
- set pathToIndex(PathBuf pathToIndex);
-
- Future deleteIndex();
-
- Future ingestPdfDir({required PathBuf filePath});
-
- // HINT: Make it `#[frb(sync)]` to let it become the default constructor of Dart class.
- /// Creates a new SearchFn instance and initializes the index on disk
- static Future newInstance({required PathBuf path}) =>
- RustLib.instance.api.crateApiKeywordSearchSearchFnNew(path: path);
-}
diff --git a/mobile_app/lib/src/rust/api/tantivy.dart b/mobile_app/lib/src/rust/api/tantivy.dart
new file mode 100644
index 0000000..ab17076
--- /dev/null
+++ b/mobile_app/lib/src/rust/api/tantivy.dart
@@ -0,0 +1,86 @@
+// This file is automatically generated, so please do not edit it.
+// @generated by `flutter_rust_bridge`@ 2.11.1.
+
+// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
+
+import '../frb_generated.dart';
+import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
+
+// These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `TantivyApi`
+// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `clone`, `clone`, `fmt`, `fmt`
+
+void initTantivy({required String dirPath}) =>
+ RustLib.instance.api.crateApiTantivyInitTantivy(dirPath: dirPath);
+
+Future addDocument({required Document doc}) =>
+ RustLib.instance.api.crateApiTantivyAddDocument(doc: doc);
+
+Future> searchDocuments(
+ {required String query, required BigInt topK}) =>
+ RustLib.instance.api
+ .crateApiTantivySearchDocuments(query: query, topK: topK);
+
+Document? getDocumentById({required String id}) =>
+ RustLib.instance.api.crateApiTantivyGetDocumentById(id: id);
+
+Future updateDocument({required Document doc}) =>
+ RustLib.instance.api.crateApiTantivyUpdateDocument(doc: doc);
+
+Future deleteDocument({required String id}) =>
+ RustLib.instance.api.crateApiTantivyDeleteDocument(id: id);
+
+Future addDocumentsBatch({required List docs}) =>
+ RustLib.instance.api.crateApiTantivyAddDocumentsBatch(docs: docs);
+
+Future deleteDocumentsBatch({required List ids}) =>
+ RustLib.instance.api.crateApiTantivyDeleteDocumentsBatch(ids: ids);
+
+void commit() => RustLib.instance.api.crateApiTantivyCommit();
+
+Future addDocumentNoCommit({required Document doc}) =>
+ RustLib.instance.api.crateApiTantivyAddDocumentNoCommit(doc: doc);
+
+Future deleteDocumentNoCommit({required String id}) =>
+ RustLib.instance.api.crateApiTantivyDeleteDocumentNoCommit(id: id);
+
+class Document {
+ final String id;
+ final String text;
+
+ const Document({
+ required this.id,
+ required this.text,
+ });
+
+ @override
+ int get hashCode => id.hashCode ^ text.hashCode;
+
+ @override
+ bool operator ==(Object other) =>
+ identical(this, other) ||
+ other is Document &&
+ runtimeType == other.runtimeType &&
+ id == other.id &&
+ text == other.text;
+}
+
+class SearchResult {
+ final double score;
+ final Document doc;
+
+ const SearchResult({
+ required this.score,
+ required this.doc,
+ });
+
+ @override
+ int get hashCode => score.hashCode ^ doc.hashCode;
+
+ @override
+ bool operator ==(Object other) =>
+ identical(this, other) ||
+ other is SearchResult &&
+ runtimeType == other.runtimeType &&
+ score == other.score &&
+ doc == other.doc;
+}
diff --git a/mobile_app/lib/src/rust/frb_generated.dart b/mobile_app/lib/src/rust/frb_generated.dart
index 50fd264..32fc79a 100644
--- a/mobile_app/lib/src/rust/frb_generated.dart
+++ b/mobile_app/lib/src/rust/frb_generated.dart
@@ -3,7 +3,9 @@
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
+import 'api/acho.dart';
import 'api/simple.dart';
+import 'api/tantivy.dart';
import 'dart:async';
import 'dart:convert';
import 'frb_generated.dart';
@@ -70,7 +72,7 @@ class RustLib extends BaseEntrypoint {
String get codegenVersion => '2.11.1';
@override
- int get rustContentHash => -1918914929;
+ int get rustContentHash => -1510959301;
static const kDefaultExternalLibraryLoaderConfig =
ExternalLibraryLoaderConfig(
@@ -81,9 +83,94 @@ class RustLib extends BaseEntrypoint {
}
abstract class RustLibApi extends BaseApi {
+ Future crateApiTantivyAddDocument({required Document doc});
+
+ Future crateApiTantivyAddDocumentNoCommit({required Document doc});
+
+ Future crateApiTantivyAddDocumentsBatch({required List docs});
+
+ void crateApiTantivyCommit();
+
+ Future crateApiTantivyDeleteDocument({required String id});
+
+ Future crateApiTantivyDeleteDocumentNoCommit({required String id});
+
+ Future crateApiTantivyDeleteDocumentsBatch({required List ids});
+
+ Document? crateApiTantivyGetDocumentById({required String id});
+
+ Future crateApiAchoGetEncodingArray(
+ {required List encodings, required EncodingType encodingType});
+
+ Future> crateApiAchoGetTopK(
+ {required List scores, required BigInt k});
+
String crateApiSimpleGreet({required String name});
Future crateApiSimpleInitApp();
+
+ void crateApiTantivyInitTantivy({required String dirPath});
+
+ Future<(Tokenizer, Session)> crateApiAchoLoadArtifacts(
+ {required String modelPath, required String tokenizerPath});
+
+ Future crateApiAchoRunInference(
+ {required List text,
+ required Session model,
+ required Tokenizer tokenizer});
+
+ Future> crateApiTantivySearchDocuments(
+ {required String query, required BigInt topK});
+
+ Future> crateApiAchoSimilarity(
+ {required List query,
+ required List texts,
+ required String modelPath,
+ required String tokenizerPath,
+ required BigInt topK});
+
+ Future<(Array2I64, Array2I64)> crateApiAchoTokenize(
+ {required List texts, required Tokenizer tokenizer});
+
+ Future crateApiTantivyUpdateDocument({required Document doc});
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Array2F32;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Array2F32;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_Array2F32Ptr;
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Array2I64;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Array2I64;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_Array2I64Ptr;
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Encoding;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Encoding;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_EncodingPtr;
+
+ RustArcIncrementStrongCountFnType get rust_arc_increment_strong_count_Session;
+
+ RustArcDecrementStrongCountFnType get rust_arc_decrement_strong_count_Session;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SessionPtr;
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Tokenizer;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Tokenizer;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_TokenizerPtr;
}
class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
@@ -94,13 +181,265 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
required super.portManager,
});
+ @override
+ Future crateApiTantivyAddDocument({required Document doc}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_box_autoadd_document(doc, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 1, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyAddDocumentConstMeta,
+ argValues: [doc],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyAddDocumentConstMeta => const TaskConstMeta(
+ debugName: "add_document",
+ argNames: ["doc"],
+ );
+
+ @override
+ Future crateApiTantivyAddDocumentNoCommit({required Document doc}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_box_autoadd_document(doc, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 2, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyAddDocumentNoCommitConstMeta,
+ argValues: [doc],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyAddDocumentNoCommitConstMeta =>
+ const TaskConstMeta(
+ debugName: "add_document_no_commit",
+ argNames: ["doc"],
+ );
+
+ @override
+ Future crateApiTantivyAddDocumentsBatch(
+ {required List docs}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_list_document(docs, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 3, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyAddDocumentsBatchConstMeta,
+ argValues: [docs],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyAddDocumentsBatchConstMeta =>
+ const TaskConstMeta(
+ debugName: "add_documents_batch",
+ argNames: ["docs"],
+ );
+
+ @override
+ void crateApiTantivyCommit() {
+ return handler.executeSync(SyncTask(
+ callFfi: () {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 4)!;
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyCommitConstMeta,
+ argValues: [],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyCommitConstMeta => const TaskConstMeta(
+ debugName: "commit",
+ argNames: [],
+ );
+
+ @override
+ Future crateApiTantivyDeleteDocument({required String id}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_String(id, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 5, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyDeleteDocumentConstMeta,
+ argValues: [id],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyDeleteDocumentConstMeta =>
+ const TaskConstMeta(
+ debugName: "delete_document",
+ argNames: ["id"],
+ );
+
+ @override
+ Future crateApiTantivyDeleteDocumentNoCommit({required String id}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_String(id, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 6, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyDeleteDocumentNoCommitConstMeta,
+ argValues: [id],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyDeleteDocumentNoCommitConstMeta =>
+ const TaskConstMeta(
+ debugName: "delete_document_no_commit",
+ argNames: ["id"],
+ );
+
+ @override
+ Future crateApiTantivyDeleteDocumentsBatch(
+ {required List ids}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_list_String(ids, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 7, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyDeleteDocumentsBatchConstMeta,
+ argValues: [ids],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyDeleteDocumentsBatchConstMeta =>
+ const TaskConstMeta(
+ debugName: "delete_documents_batch",
+ argNames: ["ids"],
+ );
+
+ @override
+ Document? crateApiTantivyGetDocumentById({required String id}) {
+ return handler.executeSync(SyncTask(
+ callFfi: () {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_String(id, serializer);
+ return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 8)!;
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_opt_box_autoadd_document,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyGetDocumentByIdConstMeta,
+ argValues: [id],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyGetDocumentByIdConstMeta =>
+ const TaskConstMeta(
+ debugName: "get_document_by_id",
+ argNames: ["id"],
+ );
+
+ @override
+ Future crateApiAchoGetEncodingArray(
+ {required List encodings, required EncodingType encodingType}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ encodings, serializer);
+ sse_encode_encoding_type(encodingType, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 9, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData:
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiAchoGetEncodingArrayConstMeta,
+ argValues: [encodings, encodingType],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiAchoGetEncodingArrayConstMeta =>
+ const TaskConstMeta(
+ debugName: "get_encoding_array",
+ argNames: ["encodings", "encodingType"],
+ );
+
+ @override
+ Future> crateApiAchoGetTopK(
+ {required List scores, required BigInt k}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_list_prim_f_32_loose(scores, serializer);
+ sse_encode_usize(k, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 10, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_list_similarity_score,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiAchoGetTopKConstMeta,
+ argValues: [scores, k],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiAchoGetTopKConstMeta => const TaskConstMeta(
+ debugName: "get_top_k",
+ argNames: ["scores", "k"],
+ );
+
@override
String crateApiSimpleGreet({required String name}) {
return handler.executeSync(SyncTask(
callFfi: () {
final serializer = SseSerializer(generalizedFrbRustBinding);
sse_encode_String(name, serializer);
- return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 1)!;
+ return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 11)!;
},
codec: SseCodec(
decodeSuccessData: sse_decode_String,
@@ -112,63 +451,759 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
));
}
- TaskConstMeta get kCrateApiSimpleGreetConstMeta => const TaskConstMeta(
- debugName: "greet",
- argNames: ["name"],
- );
+ TaskConstMeta get kCrateApiSimpleGreetConstMeta => const TaskConstMeta(
+ debugName: "greet",
+ argNames: ["name"],
+ );
+
+ @override
+ Future crateApiSimpleInitApp() {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 12, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: null,
+ ),
+ constMeta: kCrateApiSimpleInitAppConstMeta,
+ argValues: [],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiSimpleInitAppConstMeta => const TaskConstMeta(
+ debugName: "init_app",
+ argNames: [],
+ );
+
+ @override
+ void crateApiTantivyInitTantivy({required String dirPath}) {
+ return handler.executeSync(SyncTask(
+ callFfi: () {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_String(dirPath, serializer);
+ return pdeCallFfi(generalizedFrbRustBinding, serializer, funcId: 13)!;
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyInitTantivyConstMeta,
+ argValues: [dirPath],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyInitTantivyConstMeta => const TaskConstMeta(
+ debugName: "init_tantivy",
+ argNames: ["dirPath"],
+ );
+
+ @override
+ Future<(Tokenizer, Session)> crateApiAchoLoadArtifacts(
+ {required String modelPath, required String tokenizerPath}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_String(modelPath, serializer);
+ sse_encode_String(tokenizerPath, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 14, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData:
+ sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiAchoLoadArtifactsConstMeta,
+ argValues: [modelPath, tokenizerPath],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiAchoLoadArtifactsConstMeta => const TaskConstMeta(
+ debugName: "load_artifacts",
+ argNames: ["modelPath", "tokenizerPath"],
+ );
+
+ @override
+ Future crateApiAchoRunInference(
+ {required List text,
+ required Session model,
+ required Tokenizer tokenizer}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_list_String(text, serializer);
+ sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ model, serializer);
+ sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ tokenizer, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 15, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData:
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiAchoRunInferenceConstMeta,
+ argValues: [text, model, tokenizer],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiAchoRunInferenceConstMeta => const TaskConstMeta(
+ debugName: "run_inference",
+ argNames: ["text", "model", "tokenizer"],
+ );
+
+ @override
+ Future> crateApiTantivySearchDocuments(
+ {required String query, required BigInt topK}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_String(query, serializer);
+ sse_encode_usize(topK, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 16, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_list_search_result,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivySearchDocumentsConstMeta,
+ argValues: [query, topK],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivySearchDocumentsConstMeta =>
+ const TaskConstMeta(
+ debugName: "search_documents",
+ argNames: ["query", "topK"],
+ );
+
+ @override
+ Future> crateApiAchoSimilarity(
+ {required List query,
+ required List texts,
+ required String modelPath,
+ required String tokenizerPath,
+ required BigInt topK}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_list_String(query, serializer);
+ sse_encode_list_String(texts, serializer);
+ sse_encode_String(modelPath, serializer);
+ sse_encode_String(tokenizerPath, serializer);
+ sse_encode_usize(topK, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 17, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_list_similarity_score,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiAchoSimilarityConstMeta,
+ argValues: [query, texts, modelPath, tokenizerPath, topK],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiAchoSimilarityConstMeta => const TaskConstMeta(
+ debugName: "similarity",
+ argNames: ["query", "texts", "modelPath", "tokenizerPath", "topK"],
+ );
+
+ @override
+ Future<(Array2I64, Array2I64)> crateApiAchoTokenize(
+ {required List texts, required Tokenizer tokenizer}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_list_String(texts, serializer);
+ sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ tokenizer, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 18, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData:
+ sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiAchoTokenizeConstMeta,
+ argValues: [texts, tokenizer],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiAchoTokenizeConstMeta => const TaskConstMeta(
+ debugName: "tokenize",
+ argNames: ["texts", "tokenizer"],
+ );
+
+ @override
+ Future crateApiTantivyUpdateDocument({required Document doc}) {
+ return handler.executeNormal(NormalTask(
+ callFfi: (port_) {
+ final serializer = SseSerializer(generalizedFrbRustBinding);
+ sse_encode_box_autoadd_document(doc, serializer);
+ pdeCallFfi(generalizedFrbRustBinding, serializer,
+ funcId: 19, port: port_);
+ },
+ codec: SseCodec(
+ decodeSuccessData: sse_decode_unit,
+ decodeErrorData: sse_decode_AnyhowException,
+ ),
+ constMeta: kCrateApiTantivyUpdateDocumentConstMeta,
+ argValues: [doc],
+ apiImpl: this,
+ ));
+ }
+
+ TaskConstMeta get kCrateApiTantivyUpdateDocumentConstMeta =>
+ const TaskConstMeta(
+ debugName: "update_document",
+ argNames: ["doc"],
+ );
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Array2F32 => wire
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Array2F32 => wire
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32;
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Array2I64 => wire
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Array2I64 => wire
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64;
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Encoding => wire
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Encoding => wire
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding;
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Session => wire
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Session => wire
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession;
+
+ RustArcIncrementStrongCountFnType
+ get rust_arc_increment_strong_count_Tokenizer => wire
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer;
+
+ RustArcDecrementStrongCountFnType
+ get rust_arc_decrement_strong_count_Tokenizer => wire
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer;
+
+ @protected
+ AnyhowException dco_decode_AnyhowException(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return AnyhowException(raw as String);
+ }
+
+ @protected
+ Array2F32
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return Array2F32Impl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Array2I64
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return Array2I64Impl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Encoding
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return EncodingImpl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Session
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return SessionImpl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Tokenizer
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return TokenizerImpl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Session
+ dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return SessionImpl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Tokenizer
+ dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return TokenizerImpl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Array2F32
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return Array2F32Impl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Array2I64
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return Array2I64Impl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Encoding
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return EncodingImpl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Session
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return SessionImpl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ Tokenizer
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return TokenizerImpl.frbInternalDcoDecode(raw as List);
+ }
+
+ @protected
+ String dco_decode_String(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return raw as String;
+ }
+
+ @protected
+ Document dco_decode_box_autoadd_document(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return dco_decode_document(raw);
+ }
+
+ @protected
+ Document dco_decode_document(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ final arr = raw as List;
+ if (arr.length != 2)
+ throw Exception('unexpected arr length: expect 2 but see ${arr.length}');
+ return Document(
+ id: dco_decode_String(arr[0]),
+ text: dco_decode_String(arr[1]),
+ );
+ }
+
+ @protected
+ EncodingType dco_decode_encoding_type(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return EncodingType.values[raw as int];
+ }
+
+ @protected
+ double dco_decode_f_32(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return raw as double;
+ }
+
+ @protected
+ int dco_decode_i_32(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return raw as int;
+ }
+
+ @protected
+ List
+ dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return (raw as List)
+ .map(
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding)
+ .toList();
+ }
+
+ @protected
+ List dco_decode_list_String(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return (raw as List).map(dco_decode_String).toList();
+ }
+
+ @protected
+ List dco_decode_list_document(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return (raw as List).map(dco_decode_document).toList();
+ }
+
+ @protected
+ List dco_decode_list_prim_f_32_loose(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return raw as List;
+ }
+
+ @protected
+ Float32List dco_decode_list_prim_f_32_strict(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return raw as Float32List;
+ }
+
+ @protected
+ Uint8List dco_decode_list_prim_u_8_strict(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return raw as Uint8List;
+ }
+
+ @protected
+ List dco_decode_list_search_result(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return (raw as List).map(dco_decode_search_result).toList();
+ }
+
+ @protected
+ List dco_decode_list_similarity_score(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return (raw as List).map(dco_decode_similarity_score).toList();
+ }
+
+ @protected
+ Document? dco_decode_opt_box_autoadd_document(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return raw == null ? null : dco_decode_box_autoadd_document(raw);
+ }
+
+ @protected
+ (
+ Array2I64,
+ Array2I64
+ ) dco_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ final arr = raw as List;
+ if (arr.length != 2) {
+ throw Exception('Expected 2 elements, got ${arr.length}');
+ }
+ return (
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ arr[0]),
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ arr[1]),
+ );
+ }
+
+ @protected
+ (
+ Tokenizer,
+ Session
+ ) dco_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ final arr = raw as List;
+ if (arr.length != 2) {
+ throw Exception('Expected 2 elements, got ${arr.length}');
+ }
+ return (
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ arr[0]),
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ arr[1]),
+ );
+ }
+
+ @protected
+ SearchResult dco_decode_search_result(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ final arr = raw as List;
+ if (arr.length != 2)
+ throw Exception('unexpected arr length: expect 2 but see ${arr.length}');
+ return SearchResult(
+ score: dco_decode_f_32(arr[0]),
+ doc: dco_decode_document(arr[1]),
+ );
+ }
+
+ @protected
+ SimilarityScore dco_decode_similarity_score(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ final arr = raw as List;
+ if (arr.length != 2)
+ throw Exception('unexpected arr length: expect 2 but see ${arr.length}');
+ return SimilarityScore(
+ index: dco_decode_usize(arr[0]),
+ score: dco_decode_f_32(arr[1]),
+ );
+ }
+
+ @protected
+ int dco_decode_u_8(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return raw as int;
+ }
+
+ @protected
+ void dco_decode_unit(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return;
+ }
+
+ @protected
+ BigInt dco_decode_usize(dynamic raw) {
+ // Codec=Dco (DartCObject based), see doc to use other codecs
+ return dcoDecodeU64(raw);
+ }
+
+ @protected
+ AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var inner = sse_decode_String(deserializer);
+ return AnyhowException(inner);
+ }
+
+ @protected
+ Array2F32
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return Array2F32Impl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Array2I64
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return Array2I64Impl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Encoding
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return EncodingImpl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Session
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return SessionImpl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Tokenizer
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return TokenizerImpl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Session
+ sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return SessionImpl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Tokenizer
+ sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return TokenizerImpl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Array2F32
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return Array2F32Impl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Array2I64
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return Array2I64Impl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Encoding
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return EncodingImpl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Session
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return SessionImpl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ Tokenizer
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return TokenizerImpl.frbInternalSseDecode(
+ sse_decode_usize(deserializer), sse_decode_i_32(deserializer));
+ }
+
+ @protected
+ String sse_decode_String(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var inner = sse_decode_list_prim_u_8_strict(deserializer);
+ return utf8.decoder.convert(inner);
+ }
+
+ @protected
+ Document sse_decode_box_autoadd_document(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return (sse_decode_document(deserializer));
+ }
+
+ @protected
+ Document sse_decode_document(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var var_id = sse_decode_String(deserializer);
+ var var_text = sse_decode_String(deserializer);
+ return Document(id: var_id, text: var_text);
+ }
+
+ @protected
+ EncodingType sse_decode_encoding_type(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var inner = sse_decode_i_32(deserializer);
+ return EncodingType.values[inner];
+ }
- @override
- Future crateApiSimpleInitApp() {
- return handler.executeNormal(NormalTask(
- callFfi: (port_) {
- final serializer = SseSerializer(generalizedFrbRustBinding);
- pdeCallFfi(generalizedFrbRustBinding, serializer,
- funcId: 2, port: port_);
- },
- codec: SseCodec(
- decodeSuccessData: sse_decode_unit,
- decodeErrorData: null,
- ),
- constMeta: kCrateApiSimpleInitAppConstMeta,
- argValues: [],
- apiImpl: this,
- ));
+ @protected
+ double sse_decode_f_32(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return deserializer.buffer.getFloat32();
}
- TaskConstMeta get kCrateApiSimpleInitAppConstMeta => const TaskConstMeta(
- debugName: "init_app",
- argNames: [],
- );
+ @protected
+ int sse_decode_i_32(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ return deserializer.buffer.getInt32();
+ }
@protected
- String dco_decode_String(dynamic raw) {
- // Codec=Dco (DartCObject based), see doc to use other codecs
- return raw as String;
+ List
+ sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+
+ var len_ = sse_decode_i_32(deserializer);
+ var ans_ = [];
+ for (var idx_ = 0; idx_ < len_; ++idx_) {
+ ans_.add(
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ deserializer));
+ }
+ return ans_;
}
@protected
- Uint8List dco_decode_list_prim_u_8_strict(dynamic raw) {
- // Codec=Dco (DartCObject based), see doc to use other codecs
- return raw as Uint8List;
+ List sse_decode_list_String(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+
+ var len_ = sse_decode_i_32(deserializer);
+ var ans_ = [];
+ for (var idx_ = 0; idx_ < len_; ++idx_) {
+ ans_.add(sse_decode_String(deserializer));
+ }
+ return ans_;
}
@protected
- int dco_decode_u_8(dynamic raw) {
- // Codec=Dco (DartCObject based), see doc to use other codecs
- return raw as int;
+ List sse_decode_list_document(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+
+ var len_ = sse_decode_i_32(deserializer);
+ var ans_ = [];
+ for (var idx_ = 0; idx_ < len_; ++idx_) {
+ ans_.add(sse_decode_document(deserializer));
+ }
+ return ans_;
}
@protected
- void dco_decode_unit(dynamic raw) {
- // Codec=Dco (DartCObject based), see doc to use other codecs
- return;
+ List sse_decode_list_prim_f_32_loose(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var len_ = sse_decode_i_32(deserializer);
+ return deserializer.buffer.getFloat32List(len_);
}
@protected
- String sse_decode_String(SseDeserializer deserializer) {
+ Float32List sse_decode_list_prim_f_32_strict(SseDeserializer deserializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
- var inner = sse_decode_list_prim_u_8_strict(deserializer);
- return utf8.decoder.convert(inner);
+ var len_ = sse_decode_i_32(deserializer);
+ return deserializer.buffer.getFloat32List(len_);
}
@protected
@@ -178,6 +1213,91 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
return deserializer.buffer.getUint8List(len_);
}
+ @protected
+ List sse_decode_list_search_result(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+
+ var len_ = sse_decode_i_32(deserializer);
+ var ans_ = [];
+ for (var idx_ = 0; idx_ < len_; ++idx_) {
+ ans_.add(sse_decode_search_result(deserializer));
+ }
+ return ans_;
+ }
+
+ @protected
+ List sse_decode_list_similarity_score(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+
+ var len_ = sse_decode_i_32(deserializer);
+ var ans_ = [];
+ for (var idx_ = 0; idx_ < len_; ++idx_) {
+ ans_.add(sse_decode_similarity_score(deserializer));
+ }
+ return ans_;
+ }
+
+ @protected
+ Document? sse_decode_opt_box_autoadd_document(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+
+ if (sse_decode_bool(deserializer)) {
+ return (sse_decode_box_autoadd_document(deserializer));
+ } else {
+ return null;
+ }
+ }
+
+ @protected
+ (
+ Array2I64,
+ Array2I64
+ ) sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var var_field0 =
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ deserializer);
+ var var_field1 =
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ deserializer);
+ return (var_field0, var_field1);
+ }
+
+ @protected
+ (
+ Tokenizer,
+ Session
+ ) sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var var_field0 =
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ deserializer);
+ var var_field1 =
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ deserializer);
+ return (var_field0, var_field1);
+ }
+
+ @protected
+ SearchResult sse_decode_search_result(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var var_score = sse_decode_f_32(deserializer);
+ var var_doc = sse_decode_document(deserializer);
+ return SearchResult(score: var_score, doc: var_doc);
+ }
+
+ @protected
+ SimilarityScore sse_decode_similarity_score(SseDeserializer deserializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ var var_index = sse_decode_usize(deserializer);
+ var var_score = sse_decode_f_32(deserializer);
+ return SimilarityScore(index: var_index, score: var_score);
+ }
+
@protected
int sse_decode_u_8(SseDeserializer deserializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
@@ -190,9 +1310,9 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
}
@protected
- int sse_decode_i_32(SseDeserializer deserializer) {
+ BigInt sse_decode_usize(SseDeserializer deserializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
- return deserializer.buffer.getInt32();
+ return deserializer.buffer.getBigUint64();
}
@protected
@@ -201,12 +1321,206 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
return deserializer.buffer.getUint8() != 0;
}
+ @protected
+ void sse_encode_AnyhowException(
+ AnyhowException self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_String(self.message, serializer);
+ }
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ Array2F32 self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as Array2F32Impl).frbInternalSseEncode(move: true), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ Array2I64 self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as Array2I64Impl).frbInternalSseEncode(move: true), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ Encoding self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as EncodingImpl).frbInternalSseEncode(move: true), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as SessionImpl).frbInternalSseEncode(move: true), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as TokenizerImpl).frbInternalSseEncode(move: true), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as SessionImpl).frbInternalSseEncode(move: false), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as TokenizerImpl).frbInternalSseEncode(move: false), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ Array2F32 self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as Array2F32Impl).frbInternalSseEncode(move: null), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ Array2I64 self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as Array2I64Impl).frbInternalSseEncode(move: null), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ Encoding self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as EncodingImpl).frbInternalSseEncode(move: null), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as SessionImpl).frbInternalSseEncode(move: null), serializer);
+ }
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(
+ (self as TokenizerImpl).frbInternalSseEncode(move: null), serializer);
+ }
+
@protected
void sse_encode_String(String self, SseSerializer serializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
sse_encode_list_prim_u_8_strict(utf8.encoder.convert(self), serializer);
}
+ @protected
+ void sse_encode_box_autoadd_document(
+ Document self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_document(self, serializer);
+ }
+
+ @protected
+ void sse_encode_document(Document self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_String(self.id, serializer);
+ sse_encode_String(self.text, serializer);
+ }
+
+ @protected
+ void sse_encode_encoding_type(EncodingType self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_i_32(self.index, serializer);
+ }
+
+ @protected
+ void sse_encode_f_32(double self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ serializer.buffer.putFloat32(self);
+ }
+
+ @protected
+ void sse_encode_i_32(int self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ serializer.buffer.putInt32(self);
+ }
+
+ @protected
+ void
+ sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ List self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_i_32(self.length, serializer);
+ for (final item in self) {
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ item, serializer);
+ }
+ }
+
+ @protected
+ void sse_encode_list_String(List self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_i_32(self.length, serializer);
+ for (final item in self) {
+ sse_encode_String(item, serializer);
+ }
+ }
+
+ @protected
+ void sse_encode_list_document(List self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_i_32(self.length, serializer);
+ for (final item in self) {
+ sse_encode_document(item, serializer);
+ }
+ }
+
+ @protected
+ void sse_encode_list_prim_f_32_loose(
+ List self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_i_32(self.length, serializer);
+ serializer.buffer.putFloat32List(
+ self is Float32List ? self : Float32List.fromList(self));
+ }
+
+ @protected
+ void sse_encode_list_prim_f_32_strict(
+ Float32List self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_i_32(self.length, serializer);
+ serializer.buffer.putFloat32List(self);
+ }
+
@protected
void sse_encode_list_prim_u_8_strict(
Uint8List self, SseSerializer serializer) {
@@ -215,6 +1529,74 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
serializer.buffer.putUint8List(self);
}
+ @protected
+ void sse_encode_list_search_result(
+ List self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_i_32(self.length, serializer);
+ for (final item in self) {
+ sse_encode_search_result(item, serializer);
+ }
+ }
+
+ @protected
+ void sse_encode_list_similarity_score(
+ List self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_i_32(self.length, serializer);
+ for (final item in self) {
+ sse_encode_similarity_score(item, serializer);
+ }
+ }
+
+ @protected
+ void sse_encode_opt_box_autoadd_document(
+ Document? self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+
+ sse_encode_bool(self != null, serializer);
+ if (self != null) {
+ sse_encode_box_autoadd_document(self, serializer);
+ }
+ }
+
+ @protected
+ void
+ sse_encode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ (Array2I64, Array2I64) self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ self.$1, serializer);
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ self.$2, serializer);
+ }
+
+ @protected
+ void
+ sse_encode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ (Tokenizer, Session) self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ self.$1, serializer);
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ self.$2, serializer);
+ }
+
+ @protected
+ void sse_encode_search_result(SearchResult self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_f_32(self.score, serializer);
+ sse_encode_document(self.doc, serializer);
+ }
+
+ @protected
+ void sse_encode_similarity_score(
+ SimilarityScore self, SseSerializer serializer) {
+ // Codec=Sse (Serialization based), see doc to use other codecs
+ sse_encode_usize(self.index, serializer);
+ sse_encode_f_32(self.score, serializer);
+ }
+
@protected
void sse_encode_u_8(int self, SseSerializer serializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
@@ -227,9 +1609,9 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
}
@protected
- void sse_encode_i_32(int self, SseSerializer serializer) {
+ void sse_encode_usize(BigInt self, SseSerializer serializer) {
// Codec=Sse (Serialization based), see doc to use other codecs
- serializer.buffer.putInt32(self);
+ serializer.buffer.putBigUint64(self);
}
@protected
@@ -238,3 +1620,103 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi {
serializer.buffer.putUint8(self ? 1 : 0);
}
}
+
+@sealed
+class Array2F32Impl extends RustOpaque implements Array2F32 {
+ // Not to be used by end users
+ Array2F32Impl.frbInternalDcoDecode(List wire)
+ : super.frbInternalDcoDecode(wire, _kStaticData);
+
+ // Not to be used by end users
+ Array2F32Impl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative)
+ : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData);
+
+ static final _kStaticData = RustArcStaticData(
+ rustArcIncrementStrongCount:
+ RustLib.instance.api.rust_arc_increment_strong_count_Array2F32,
+ rustArcDecrementStrongCount:
+ RustLib.instance.api.rust_arc_decrement_strong_count_Array2F32,
+ rustArcDecrementStrongCountPtr:
+ RustLib.instance.api.rust_arc_decrement_strong_count_Array2F32Ptr,
+ );
+}
+
+@sealed
+class Array2I64Impl extends RustOpaque implements Array2I64 {
+ // Not to be used by end users
+ Array2I64Impl.frbInternalDcoDecode(List wire)
+ : super.frbInternalDcoDecode(wire, _kStaticData);
+
+ // Not to be used by end users
+ Array2I64Impl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative)
+ : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData);
+
+ static final _kStaticData = RustArcStaticData(
+ rustArcIncrementStrongCount:
+ RustLib.instance.api.rust_arc_increment_strong_count_Array2I64,
+ rustArcDecrementStrongCount:
+ RustLib.instance.api.rust_arc_decrement_strong_count_Array2I64,
+ rustArcDecrementStrongCountPtr:
+ RustLib.instance.api.rust_arc_decrement_strong_count_Array2I64Ptr,
+ );
+}
+
+@sealed
+class EncodingImpl extends RustOpaque implements Encoding {
+ // Not to be used by end users
+ EncodingImpl.frbInternalDcoDecode(List wire)
+ : super.frbInternalDcoDecode(wire, _kStaticData);
+
+ // Not to be used by end users
+ EncodingImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative)
+ : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData);
+
+ static final _kStaticData = RustArcStaticData(
+ rustArcIncrementStrongCount:
+ RustLib.instance.api.rust_arc_increment_strong_count_Encoding,
+ rustArcDecrementStrongCount:
+ RustLib.instance.api.rust_arc_decrement_strong_count_Encoding,
+ rustArcDecrementStrongCountPtr:
+ RustLib.instance.api.rust_arc_decrement_strong_count_EncodingPtr,
+ );
+}
+
+@sealed
+class SessionImpl extends RustOpaque implements Session {
+ // Not to be used by end users
+ SessionImpl.frbInternalDcoDecode(List wire)
+ : super.frbInternalDcoDecode(wire, _kStaticData);
+
+ // Not to be used by end users
+ SessionImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative)
+ : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData);
+
+ static final _kStaticData = RustArcStaticData(
+ rustArcIncrementStrongCount:
+ RustLib.instance.api.rust_arc_increment_strong_count_Session,
+ rustArcDecrementStrongCount:
+ RustLib.instance.api.rust_arc_decrement_strong_count_Session,
+ rustArcDecrementStrongCountPtr:
+ RustLib.instance.api.rust_arc_decrement_strong_count_SessionPtr,
+ );
+}
+
+@sealed
+class TokenizerImpl extends RustOpaque implements Tokenizer {
+ // Not to be used by end users
+ TokenizerImpl.frbInternalDcoDecode(List wire)
+ : super.frbInternalDcoDecode(wire, _kStaticData);
+
+ // Not to be used by end users
+ TokenizerImpl.frbInternalSseDecode(BigInt ptr, int externalSizeOnNative)
+ : super.frbInternalSseDecode(ptr, externalSizeOnNative, _kStaticData);
+
+ static final _kStaticData = RustArcStaticData(
+ rustArcIncrementStrongCount:
+ RustLib.instance.api.rust_arc_increment_strong_count_Tokenizer,
+ rustArcDecrementStrongCount:
+ RustLib.instance.api.rust_arc_decrement_strong_count_Tokenizer,
+ rustArcDecrementStrongCountPtr:
+ RustLib.instance.api.rust_arc_decrement_strong_count_TokenizerPtr,
+ );
+}
diff --git a/mobile_app/lib/src/rust/frb_generated.io.dart b/mobile_app/lib/src/rust/frb_generated.io.dart
index 2af216f..7ee5a0b 100644
--- a/mobile_app/lib/src/rust/frb_generated.io.dart
+++ b/mobile_app/lib/src/rust/frb_generated.io.dart
@@ -3,7 +3,9 @@
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
+import 'api/acho.dart';
import 'api/simple.dart';
+import 'api/tantivy.dart';
import 'dart:async';
import 'dart:convert';
import 'dart:ffi' as ffi;
@@ -18,24 +20,292 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl {
required super.portManager,
});
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_Array2F32Ptr =>
+ wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32Ptr;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_Array2I64Ptr =>
+ wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64Ptr;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_EncodingPtr => wire
+ ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncodingPtr;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SessionPtr => wire
+ ._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSessionPtr;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_TokenizerPtr =>
+ wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizerPtr;
+
+ @protected
+ AnyhowException dco_decode_AnyhowException(dynamic raw);
+
+ @protected
+ Array2F32
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ dynamic raw);
+
+ @protected
+ Array2I64
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ dynamic raw);
+
+ @protected
+ Encoding
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw);
+
+ @protected
+ Session
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw);
+
+ @protected
+ Tokenizer
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw);
+
+ @protected
+ Session
+ dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw);
+
+ @protected
+ Tokenizer
+ dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw);
+
+ @protected
+ Array2F32
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ dynamic raw);
+
+ @protected
+ Array2I64
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ dynamic raw);
+
+ @protected
+ Encoding
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw);
+
+ @protected
+ Session
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw);
+
+ @protected
+ Tokenizer
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw);
+
@protected
String dco_decode_String(dynamic raw);
+ @protected
+ Document dco_decode_box_autoadd_document(dynamic raw);
+
+ @protected
+ Document dco_decode_document(dynamic raw);
+
+ @protected
+ EncodingType dco_decode_encoding_type(dynamic raw);
+
+ @protected
+ double dco_decode_f_32(dynamic raw);
+
+ @protected
+ int dco_decode_i_32(dynamic raw);
+
+ @protected
+ List
+ dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw);
+
+ @protected
+ List dco_decode_list_String(dynamic raw);
+
+ @protected
+ List dco_decode_list_document(dynamic raw);
+
+ @protected
+ List dco_decode_list_prim_f_32_loose(dynamic raw);
+
+ @protected
+ Float32List dco_decode_list_prim_f_32_strict(dynamic raw);
+
@protected
Uint8List dco_decode_list_prim_u_8_strict(dynamic raw);
+ @protected
+ List dco_decode_list_search_result(dynamic raw);
+
+ @protected
+ List dco_decode_list_similarity_score(dynamic raw);
+
+ @protected
+ Document? dco_decode_opt_box_autoadd_document(dynamic raw);
+
+ @protected
+ (
+ Array2I64,
+ Array2I64
+ ) dco_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ dynamic raw);
+
+ @protected
+ (
+ Tokenizer,
+ Session
+ ) dco_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ dynamic raw);
+
+ @protected
+ SearchResult dco_decode_search_result(dynamic raw);
+
+ @protected
+ SimilarityScore dco_decode_similarity_score(dynamic raw);
+
@protected
int dco_decode_u_8(dynamic raw);
@protected
void dco_decode_unit(dynamic raw);
+ @protected
+ BigInt dco_decode_usize(dynamic raw);
+
+ @protected
+ AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer);
+
+ @protected
+ Array2F32
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ SseDeserializer deserializer);
+
+ @protected
+ Array2I64
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ SseDeserializer deserializer);
+
+ @protected
+ Encoding
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer);
+
+ @protected
+ Session
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer);
+
+ @protected
+ Tokenizer
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer);
+
+ @protected
+ Session
+ sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer);
+
+ @protected
+ Tokenizer
+ sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer);
+
+ @protected
+ Array2F32
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ SseDeserializer deserializer);
+
+ @protected
+ Array2I64
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ SseDeserializer deserializer);
+
+ @protected
+ Encoding
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer);
+
+ @protected
+ Session
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer);
+
+ @protected
+ Tokenizer
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer);
+
@protected
String sse_decode_String(SseDeserializer deserializer);
+ @protected
+ Document sse_decode_box_autoadd_document(SseDeserializer deserializer);
+
+ @protected
+ Document sse_decode_document(SseDeserializer deserializer);
+
+ @protected
+ EncodingType sse_decode_encoding_type(SseDeserializer deserializer);
+
+ @protected
+ double sse_decode_f_32(SseDeserializer deserializer);
+
+ @protected
+ int sse_decode_i_32(SseDeserializer deserializer);
+
+ @protected
+ List
+ sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer);
+
+ @protected
+ List sse_decode_list_String(SseDeserializer deserializer);
+
+ @protected
+ List sse_decode_list_document(SseDeserializer deserializer);
+
+ @protected
+ List sse_decode_list_prim_f_32_loose(SseDeserializer deserializer);
+
+ @protected
+ Float32List sse_decode_list_prim_f_32_strict(SseDeserializer deserializer);
+
@protected
Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer);
+ @protected
+ List sse_decode_list_search_result(
+ SseDeserializer deserializer);
+
+ @protected
+ List sse_decode_list_similarity_score(
+ SseDeserializer deserializer);
+
+ @protected
+ Document? sse_decode_opt_box_autoadd_document(SseDeserializer deserializer);
+
+ @protected
+ (
+ Array2I64,
+ Array2I64
+ ) sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ SseDeserializer deserializer);
+
+ @protected
+ (
+ Tokenizer,
+ Session
+ ) sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ SseDeserializer deserializer);
+
+ @protected
+ SearchResult sse_decode_search_result(SseDeserializer deserializer);
+
+ @protected
+ SimilarityScore sse_decode_similarity_score(SseDeserializer deserializer);
+
@protected
int sse_decode_u_8(SseDeserializer deserializer);
@@ -43,18 +313,145 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl {
void sse_decode_unit(SseDeserializer deserializer);
@protected
- int sse_decode_i_32(SseDeserializer deserializer);
+ BigInt sse_decode_usize(SseDeserializer deserializer);
@protected
bool sse_decode_bool(SseDeserializer deserializer);
+ @protected
+ void sse_encode_AnyhowException(
+ AnyhowException self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ Array2F32 self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ Array2I64 self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ Encoding self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ Array2F32 self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ Array2I64 self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ Encoding self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer);
+
@protected
void sse_encode_String(String self, SseSerializer serializer);
+ @protected
+ void sse_encode_box_autoadd_document(Document self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_document(Document self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_encoding_type(EncodingType self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_f_32(double self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_i_32(int self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_String(List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_document(List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_prim_f_32_loose(
+ List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_prim_f_32_strict(
+ Float32List self, SseSerializer serializer);
+
@protected
void sse_encode_list_prim_u_8_strict(
Uint8List self, SseSerializer serializer);
+ @protected
+ void sse_encode_list_search_result(
+ List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_similarity_score(
+ List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_opt_box_autoadd_document(
+ Document? self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ (Array2I64, Array2I64) self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ (Tokenizer, Session) self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_search_result(SearchResult self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_similarity_score(
+ SimilarityScore self, SseSerializer serializer);
+
@protected
void sse_encode_u_8(int self, SseSerializer serializer);
@@ -62,7 +459,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl {
void sse_encode_unit(void self, SseSerializer serializer);
@protected
- void sse_encode_i_32(int self, SseSerializer serializer);
+ void sse_encode_usize(BigInt self, SseSerializer serializer);
@protected
void sse_encode_bool(bool self, SseSerializer serializer);
@@ -81,4 +478,164 @@ class RustLibWire implements BaseWire {
/// The symbols are looked up in [dynamicLibrary].
RustLibWire(ffi.DynamicLibrary dynamicLibrary)
: _lookup = dynamicLibrary.lookup;
+
+ void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32Ptr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32');
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32 =
+ _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32Ptr
+ .asFunction)>();
+
+ void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32Ptr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32');
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32 =
+ _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32Ptr
+ .asFunction)>();
+
+ void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64Ptr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64');
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64 =
+ _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64Ptr
+ .asFunction)>();
+
+ void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64Ptr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64');
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64 =
+ _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64Ptr
+ .asFunction)>();
+
+ void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncodingPtr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding');
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding =
+ _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncodingPtr
+ .asFunction)>();
+
+ void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncodingPtr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding');
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding =
+ _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncodingPtr
+ .asFunction)>();
+
+ void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSessionPtr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession');
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession =
+ _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSessionPtr
+ .asFunction)>();
+
+ void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSessionPtr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession');
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession =
+ _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSessionPtr
+ .asFunction)>();
+
+ void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizerPtr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer');
+ late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer =
+ _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizerPtr
+ .asFunction)>();
+
+ void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ ffi.Pointer ptr,
+ ) {
+ return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ ptr,
+ );
+ }
+
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizerPtr =
+ _lookup)>>(
+ 'frbgen_mobile_app_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer');
+ late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer =
+ _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizerPtr
+ .asFunction)>();
}
diff --git a/mobile_app/lib/src/rust/frb_generated.web.dart b/mobile_app/lib/src/rust/frb_generated.web.dart
index 981737f..231c2c7 100644
--- a/mobile_app/lib/src/rust/frb_generated.web.dart
+++ b/mobile_app/lib/src/rust/frb_generated.web.dart
@@ -6,7 +6,9 @@
// Static analysis wrongly picks the IO variant, thus ignore this
// ignore_for_file: argument_type_not_assignable
+import 'api/acho.dart';
import 'api/simple.dart';
+import 'api/tantivy.dart';
import 'dart:async';
import 'dart:convert';
import 'frb_generated.dart';
@@ -20,24 +22,292 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl {
required super.portManager,
});
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_Array2F32Ptr =>
+ wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_Array2I64Ptr =>
+ wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_EncodingPtr => wire
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_SessionPtr => wire
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession;
+
+ CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_TokenizerPtr =>
+ wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer;
+
+ @protected
+ AnyhowException dco_decode_AnyhowException(dynamic raw);
+
+ @protected
+ Array2F32
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ dynamic raw);
+
+ @protected
+ Array2I64
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ dynamic raw);
+
+ @protected
+ Encoding
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw);
+
+ @protected
+ Session
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw);
+
+ @protected
+ Tokenizer
+ dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw);
+
+ @protected
+ Session
+ dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw);
+
+ @protected
+ Tokenizer
+ dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw);
+
+ @protected
+ Array2F32
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ dynamic raw);
+
+ @protected
+ Array2I64
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ dynamic raw);
+
+ @protected
+ Encoding
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw);
+
+ @protected
+ Session
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ dynamic raw);
+
+ @protected
+ Tokenizer
+ dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ dynamic raw);
+
@protected
String dco_decode_String(dynamic raw);
+ @protected
+ Document dco_decode_box_autoadd_document(dynamic raw);
+
+ @protected
+ Document dco_decode_document(dynamic raw);
+
+ @protected
+ EncodingType dco_decode_encoding_type(dynamic raw);
+
+ @protected
+ double dco_decode_f_32(dynamic raw);
+
+ @protected
+ int dco_decode_i_32(dynamic raw);
+
+ @protected
+ List
+ dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ dynamic raw);
+
+ @protected
+ List dco_decode_list_String(dynamic raw);
+
+ @protected
+ List dco_decode_list_document(dynamic raw);
+
+ @protected
+ List dco_decode_list_prim_f_32_loose(dynamic raw);
+
+ @protected
+ Float32List dco_decode_list_prim_f_32_strict(dynamic raw);
+
@protected
Uint8List dco_decode_list_prim_u_8_strict(dynamic raw);
+ @protected
+ List dco_decode_list_search_result(dynamic raw);
+
+ @protected
+ List dco_decode_list_similarity_score(dynamic raw);
+
+ @protected
+ Document? dco_decode_opt_box_autoadd_document(dynamic raw);
+
+ @protected
+ (
+ Array2I64,
+ Array2I64
+ ) dco_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ dynamic raw);
+
+ @protected
+ (
+ Tokenizer,
+ Session
+ ) dco_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ dynamic raw);
+
+ @protected
+ SearchResult dco_decode_search_result(dynamic raw);
+
+ @protected
+ SimilarityScore dco_decode_similarity_score(dynamic raw);
+
@protected
int dco_decode_u_8(dynamic raw);
@protected
void dco_decode_unit(dynamic raw);
+ @protected
+ BigInt dco_decode_usize(dynamic raw);
+
+ @protected
+ AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer);
+
+ @protected
+ Array2F32
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ SseDeserializer deserializer);
+
+ @protected
+ Array2I64
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ SseDeserializer deserializer);
+
+ @protected
+ Encoding
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer);
+
+ @protected
+ Session
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer);
+
+ @protected
+ Tokenizer
+ sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer);
+
+ @protected
+ Session
+ sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer);
+
+ @protected
+ Tokenizer
+ sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer);
+
+ @protected
+ Array2F32
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ SseDeserializer deserializer);
+
+ @protected
+ Array2I64
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ SseDeserializer deserializer);
+
+ @protected
+ Encoding
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer);
+
+ @protected
+ Session
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ SseDeserializer deserializer);
+
+ @protected
+ Tokenizer
+ sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ SseDeserializer deserializer);
+
@protected
String sse_decode_String(SseDeserializer deserializer);
+ @protected
+ Document sse_decode_box_autoadd_document(SseDeserializer deserializer);
+
+ @protected
+ Document sse_decode_document(SseDeserializer deserializer);
+
+ @protected
+ EncodingType sse_decode_encoding_type(SseDeserializer deserializer);
+
+ @protected
+ double sse_decode_f_32(SseDeserializer deserializer);
+
+ @protected
+ int sse_decode_i_32(SseDeserializer deserializer);
+
+ @protected
+ List
+ sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ SseDeserializer deserializer);
+
+ @protected
+ List sse_decode_list_String(SseDeserializer deserializer);
+
+ @protected
+ List sse_decode_list_document(SseDeserializer deserializer);
+
+ @protected
+ List sse_decode_list_prim_f_32_loose(SseDeserializer deserializer);
+
+ @protected
+ Float32List sse_decode_list_prim_f_32_strict(SseDeserializer deserializer);
+
@protected
Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer);
+ @protected
+ List sse_decode_list_search_result(
+ SseDeserializer deserializer);
+
+ @protected
+ List sse_decode_list_similarity_score(
+ SseDeserializer deserializer);
+
+ @protected
+ Document? sse_decode_opt_box_autoadd_document(SseDeserializer deserializer);
+
+ @protected
+ (
+ Array2I64,
+ Array2I64
+ ) sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ SseDeserializer deserializer);
+
+ @protected
+ (
+ Tokenizer,
+ Session
+ ) sse_decode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ SseDeserializer deserializer);
+
+ @protected
+ SearchResult sse_decode_search_result(SseDeserializer deserializer);
+
+ @protected
+ SimilarityScore sse_decode_similarity_score(SseDeserializer deserializer);
+
@protected
int sse_decode_u_8(SseDeserializer deserializer);
@@ -45,18 +315,145 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl {
void sse_decode_unit(SseDeserializer deserializer);
@protected
- int sse_decode_i_32(SseDeserializer deserializer);
+ BigInt sse_decode_usize(SseDeserializer deserializer);
@protected
bool sse_decode_bool(SseDeserializer deserializer);
+ @protected
+ void sse_encode_AnyhowException(
+ AnyhowException self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ Array2F32 self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ Array2I64 self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ Encoding self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ Array2F32 self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ Array2I64 self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ Encoding self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ Session self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ Tokenizer self, SseSerializer serializer);
+
@protected
void sse_encode_String(String self, SseSerializer serializer);
+ @protected
+ void sse_encode_box_autoadd_document(Document self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_document(Document self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_encoding_type(EncodingType self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_f_32(double self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_i_32(int self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_String(List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_document(List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_prim_f_32_loose(
+ List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_prim_f_32_strict(
+ Float32List self, SseSerializer serializer);
+
@protected
void sse_encode_list_prim_u_8_strict(
Uint8List self, SseSerializer serializer);
+ @protected
+ void sse_encode_list_search_result(
+ List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_list_similarity_score(
+ List self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_opt_box_autoadd_document(
+ Document? self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_array_2_i_64(
+ (Array2I64, Array2I64) self, SseSerializer serializer);
+
+ @protected
+ void
+ sse_encode_record_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_tokenizer_auto_owned_rust_opaque_flutter_rust_bridgefor_generated_rust_auto_opaque_inner_session(
+ (Tokenizer, Session) self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_search_result(SearchResult self, SseSerializer serializer);
+
+ @protected
+ void sse_encode_similarity_score(
+ SimilarityScore self, SseSerializer serializer);
+
@protected
void sse_encode_u_8(int self, SseSerializer serializer);
@@ -64,7 +461,7 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl {
void sse_encode_unit(void self, SseSerializer serializer);
@protected
- void sse_encode_i_32(int self, SseSerializer serializer);
+ void sse_encode_usize(BigInt self, SseSerializer serializer);
@protected
void sse_encode_bool(bool self, SseSerializer serializer);
@@ -74,6 +471,66 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl {
class RustLibWire implements BaseWire {
RustLibWire.fromExternalLibrary(ExternalLibrary lib);
+
+ void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ int ptr) =>
+ wasmModule
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ ptr);
+
+ void rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ int ptr) =>
+ wasmModule
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ ptr);
+
+ void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ int ptr) =>
+ wasmModule
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ ptr);
+
+ void rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ int ptr) =>
+ wasmModule
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ ptr);
+
+ void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ int ptr) =>
+ wasmModule
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ ptr);
+
+ void rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ int ptr) =>
+ wasmModule
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ ptr);
+
+ void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ int ptr) =>
+ wasmModule
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ ptr);
+
+ void rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ int ptr) =>
+ wasmModule
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ ptr);
+
+ void rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ int ptr) =>
+ wasmModule
+ .rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ ptr);
+
+ void rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ int ptr) =>
+ wasmModule
+ .rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ ptr);
}
@JS('wasm_bindgen')
@@ -81,4 +538,44 @@ external RustLibWasmModule get wasmModule;
@JS()
@anonymous
-extension type RustLibWasmModule._(JSObject _) implements JSObject {}
+extension type RustLibWasmModule._(JSObject _) implements JSObject {
+ external void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ int ptr);
+
+ external void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2f32(
+ int ptr);
+
+ external void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ int ptr);
+
+ external void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerArray2i64(
+ int ptr);
+
+ external void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ int ptr);
+
+ external void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerEncoding(
+ int ptr);
+
+ external void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ int ptr);
+
+ external void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerSession(
+ int ptr);
+
+ external void
+ rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ int ptr);
+
+ external void
+ rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerTokenizer(
+ int ptr);
+}
diff --git a/mobile_app/lib/utils.dart b/mobile_app/lib/utils.dart
index 3eb0365..6494373 100644
--- a/mobile_app/lib/utils.dart
+++ b/mobile_app/lib/utils.dart
@@ -1,8 +1,11 @@
import 'dart:io';
+import 'dart:core';
+import 'dart:math' as math;
import 'package:permission_handler/permission_handler.dart';
-import 'package:mobile_app/src/rust/api/simple.dart';
import 'package:path_provider/path_provider.dart';
-import 'package:flutter_tantivy/flutter_tantivy.dart';
+import 'package:mobile_app/src/rust/frb_generated.dart';
+import 'package:mobile_app/src/rust/api/acho.dart';
+import 'package:mobile_app/src/rust/api/tantivy.dart';
import 'dart:convert';
import 'package:syncfusion_flutter_pdf/pdf.dart';
@@ -93,11 +96,58 @@ Future> findMatch(String query) async {
await RustLib.init();
final results = await searchDocuments(
query: query,
- topK: BigInt.from(10),
+ topK: BigInt.from(5),
);
return results;
}
+Future> getDocumentText() async {
+ List texts = [];
+
+ List allPdfs = await PdfScanner().getAllPdfs();
+ for (FileSystemEntity i in allPdfs) {
+ final PdfDocument document =
+ PdfDocument(inputBytes: File(i.path).readAsBytesSync());
+ String fileName = i.path.split("/").last;
+ final PdfTextExtractor extractor = PdfTextExtractor(document);
+
+ for (int j = 0; j < document.pages.count; j++) {
+ String pageText = extractor.extractText(startPageIndex: j);
+ texts.add(pageText);
+ };
+}
+ return texts;
+}
+
+class SemanticSearch {
+ final String query;
+ final List texts;
+
+ SemanticSearch(this.query, this.texts);
+}
+
+Future> semanticSearch(SemanticSearch object) async {
+ List result = [];
+ await RustLib.init();
+
+ final score = await similarity(
+ modelPath: "/storage/emulated/0/Download/model.onnx",
+ tokenizerPath: "/storage/emulated/0/Download/tokenizer.json",
+ query: [object.query],
+ texts: object.texts,
+ topK: BigInt.from(math.min(
+ 5,
+ object.texts.length
+ ))
+ );
+ for (var i in score) {
+ result.add(
+ object.texts[i.index.toInt()]
+ );
+ }
+ return result;
+}
+
Future saveSearchHistory(String text) async {
final query = text.trim();
if (query.isEmpty) return;
diff --git a/mobile_app/linux/flutter/generated_plugins.cmake b/mobile_app/linux/flutter/generated_plugins.cmake
index f585e33..a6ac924 100644
--- a/mobile_app/linux/flutter/generated_plugins.cmake
+++ b/mobile_app/linux/flutter/generated_plugins.cmake
@@ -6,7 +6,6 @@ list(APPEND FLUTTER_PLUGIN_LIST
)
list(APPEND FLUTTER_FFI_PLUGIN_LIST
- flutter_tantivy
rust_lib_mobile_app
)
diff --git a/mobile_app/pubspec.lock b/mobile_app/pubspec.lock
index c641df9..6b4f41c 100644
--- a/mobile_app/pubspec.lock
+++ b/mobile_app/pubspec.lock
@@ -1,22 +1,6 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
- _fe_analyzer_shared:
- dependency: transitive
- description:
- name: _fe_analyzer_shared
- sha256: "5b7468c326d2f8a4f630056404ca0d291ade42918f4a3c6233618e724f39da8e"
- url: "https://pub.dev"
- source: hosted
- version: "92.0.0"
- analyzer:
- dependency: transitive
- description:
- name: analyzer
- sha256: "70e4b1ef8003c64793a9e268a551a82869a8a96f39deb73dea28084b0e8bf75e"
- url: "https://pub.dev"
- source: hosted
- version: "9.0.0"
args:
dependency: transitive
description:
@@ -41,14 +25,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.1"
- build:
- dependency: transitive
- description:
- name: build
- sha256: "275bf6bb2a00a9852c28d4e0b410da1d833a734d57d39d44f94bfc895a484ec3"
- url: "https://pub.dev"
- source: hosted
- version: "4.0.4"
build_cli_annotations:
dependency: transitive
description:
@@ -57,14 +33,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.0"
- build_config:
- dependency: transitive
- description:
- name: build_config
- sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187"
- url: "https://pub.dev"
- source: hosted
- version: "1.2.0"
characters:
dependency: transitive
description:
@@ -73,14 +41,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.4.0"
- checked_yaml:
- dependency: transitive
- description:
- name: checked_yaml
- sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f"
- url: "https://pub.dev"
- source: hosted
- version: "2.0.4"
clock:
dependency: transitive
description:
@@ -137,14 +97,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.8"
- dart_style:
- dependency: transitive
- description:
- name: dart_style
- sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b
- url: "https://pub.dev"
- source: hosted
- version: "3.1.3"
dbus:
dependency: transitive
description:
@@ -190,11 +142,6 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
- flutter_driver:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.0"
flutter_lints:
dependency: "direct dev"
description:
@@ -219,14 +166,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.11.1"
- flutter_tantivy:
- dependency: "direct main"
- description:
- name: flutter_tantivy
- sha256: "5b024e4d68bff5aecd7397e20c9ae9e13d19288b707eb9b71233134a861935b5"
- url: "https://pub.dev"
- source: hosted
- version: "0.0.1"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -237,27 +176,6 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
- freezed:
- dependency: "direct main"
- description:
- name: freezed
- sha256: "03dd9b7423ff0e31b7e01b2204593e5e1ac5ee553b6ea9d8184dff4a26b9fb07"
- url: "https://pub.dev"
- source: hosted
- version: "3.2.4"
- freezed_annotation:
- dependency: transitive
- description:
- name: freezed_annotation
- sha256: "7294967ff0a6d98638e7acb774aac3af2550777accd8149c90af5b014e6d44d8"
- url: "https://pub.dev"
- source: hosted
- version: "3.1.0"
- fuchsia_remote_debug_protocol:
- dependency: transitive
- description: flutter
- source: sdk
- version: "0.0.0"
gap:
dependency: "direct main"
description:
@@ -298,11 +216,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "4.1.2"
- integration_test:
- dependency: "direct dev"
- description: flutter
- source: sdk
- version: "0.0.0"
intl:
dependency: transitive
description:
@@ -311,14 +224,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.20.2"
- json_annotation:
- dependency: transitive
- description:
- name: json_annotation
- sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
- url: "https://pub.dev"
- source: hosted
- version: "4.9.0"
leak_tracker:
dependency: transitive
description:
@@ -407,14 +312,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "9.2.2"
- package_config:
- dependency: transitive
- description:
- name: package_config
- sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
- url: "https://pub.dev"
- source: hosted
- version: "2.2.0"
path:
dependency: transitive
description:
@@ -543,14 +440,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.8"
- process:
- dependency: transitive
- description:
- name: process
- sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32"
- url: "https://pub.dev"
- source: hosted
- version: "5.0.2"
pub_semver:
dependency: transitive
description:
@@ -559,14 +448,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.2.0"
- pubspec_parse:
- dependency: transitive
- description:
- name: pubspec_parse
- sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
- url: "https://pub.dev"
- source: hosted
- version: "1.5.0"
rust_lib_mobile_app:
dependency: "direct main"
description:
@@ -579,14 +460,6 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
- source_gen:
- dependency: transitive
- description:
- name: source_gen
- sha256: "1d562a3c1f713904ebbed50d2760217fd8a51ca170ac4b05b0db490699dbac17"
- url: "https://pub.dev"
- source: hosted
- version: "4.2.0"
source_span:
dependency: transitive
description:
@@ -619,14 +492,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.2.0"
- sync_http:
- dependency: transitive
- description:
- name: sync_http
- sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
- url: "https://pub.dev"
- source: hosted
- version: "0.3.1"
syncfusion_flutter_core:
dependency: transitive
description:
@@ -683,14 +548,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "14.2.1"
- watcher:
- dependency: transitive
- description:
- name: watcher
- sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635"
- url: "https://pub.dev"
- source: hosted
- version: "1.2.1"
web:
dependency: transitive
description:
@@ -699,14 +556,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.1.1"
- webdriver:
- dependency: transitive
- description:
- name: webdriver
- sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e"
- url: "https://pub.dev"
- source: hosted
- version: "3.0.3"
win32:
dependency: transitive
description:
diff --git a/mobile_app/pubspec.yaml b/mobile_app/pubspec.yaml
index 29e67b7..5e4d90b 100644
--- a/mobile_app/pubspec.yaml
+++ b/mobile_app/pubspec.yaml
@@ -43,8 +43,6 @@ dependencies:
file_picker: ^10.3.8
logger: ^2.6.2
path_provider: ^2.1.5
- freezed: ^3.2.4
- flutter_tantivy: ^0.0.1
syncfusion_flutter_pdf: ^32.1.25
dev_dependencies:
@@ -57,8 +55,6 @@ dev_dependencies:
# package. See that file for information about deactivating specific lint
# rules and activating additional ones.
flutter_lints: ^3.0.0
- integration_test:
- sdk: flutter
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
diff --git a/mobile_app/rust/.cargo/config.toml b/mobile_app/rust/.cargo/config.toml
new file mode 100644
index 0000000..4e02c5d
--- /dev/null
+++ b/mobile_app/rust/.cargo/config.toml
@@ -0,0 +1,6 @@
+[target.aarch64-linux-android]
+linker = "aarch64-linux-android24-clang"
+rustflags = [
+ "-C", "link-arg=-Wl,-soname,librust_lib_mobile_app.so",
+ "-C", "link-arg=-lc++_shared"
+]
diff --git a/mobile_app/rust/Cargo.lock b/mobile_app/rust/Cargo.lock
index 5944227..e318d30 100644
--- a/mobile_app/rust/Cargo.lock
+++ b/mobile_app/rust/Cargo.lock
@@ -17,6 +17,20 @@ version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
+[[package]]
+name = "ahash"
+version = "0.8.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
+dependencies = [
+ "cfg-if",
+ "getrandom 0.3.4",
+ "once_cell",
+ "serde",
+ "version_check",
+ "zerocopy",
+]
+
[[package]]
name = "aho-corasick"
version = "1.1.4"
@@ -113,12 +127,24 @@ dependencies = [
"windows-link",
]
+[[package]]
+name = "base64"
+version = "0.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+
[[package]]
name = "base64"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
+[[package]]
+name = "base64ct"
+version = "1.8.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
+
[[package]]
name = "bitflags"
version = "2.10.0"
@@ -192,6 +218,21 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+[[package]]
+name = "bytes"
+version = "1.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3"
+
+[[package]]
+name = "castaway"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a"
+dependencies = [
+ "rustversion",
+]
+
[[package]]
name = "cc"
version = "1.2.54"
@@ -216,6 +257,47 @@ version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
+[[package]]
+name = "compact_str"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3fdb1325a1cece981e8a296ab8f0f9b63ae357bd0784a9faaf548cc7b480707a"
+dependencies = [
+ "castaway",
+ "cfg-if",
+ "itoa",
+ "rustversion",
+ "ryu",
+ "serde",
+ "static_assertions",
+]
+
+[[package]]
+name = "console"
+version = "0.15.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8"
+dependencies = [
+ "encode_unicode",
+ "libc",
+ "once_cell",
+ "unicode-width",
+ "windows-sys 0.59.0",
+]
+
+[[package]]
+name = "console"
+version = "0.16.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03e45a4a8926227e4197636ba97a9fc9b00477e9f4bd711395687c5f0734bec4"
+dependencies = [
+ "encode_unicode",
+ "libc",
+ "once_cell",
+ "unicode-width",
+ "windows-sys 0.61.2",
+]
+
[[package]]
name = "console_error_panic_hook"
version = "0.1.7"
@@ -226,6 +308,22 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "core-foundation"
+version = "0.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.8.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
+
[[package]]
name = "crc32fast"
version = "1.5.0"
@@ -287,9 +385,9 @@ dependencies = [
[[package]]
name = "darling"
-version = "0.23.0"
+version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d"
+checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
dependencies = [
"darling_core",
"darling_macro",
@@ -297,10 +395,11 @@ dependencies = [
[[package]]
name = "darling_core"
-version = "0.23.0"
+version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0"
+checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
dependencies = [
+ "fnv",
"ident_case",
"proc-macro2",
"quote",
@@ -310,9 +409,9 @@ dependencies = [
[[package]]
name = "darling_macro"
-version = "0.23.0"
+version = "0.20.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d"
+checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
dependencies = [
"darling_core",
"quote",
@@ -328,6 +427,15 @@ dependencies = [
"cc",
]
+[[package]]
+name = "dary_heap"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06d2e3287df1c007e74221c49ca10a95d557349e54b3a75dc2fb14712c751f04"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "dashmap"
version = "5.5.3"
@@ -352,6 +460,16 @@ dependencies = [
"syn",
]
+[[package]]
+name = "der"
+version = "0.7.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb"
+dependencies = [
+ "pem-rfc7468",
+ "zeroize",
+]
+
[[package]]
name = "deranged"
version = "0.5.5"
@@ -362,6 +480,37 @@ dependencies = [
"serde_core",
]
+[[package]]
+name = "derive_builder"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"
+dependencies = [
+ "derive_builder_macro",
+]
+
+[[package]]
+name = "derive_builder_core"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
+dependencies = [
+ "darling",
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "derive_builder_macro"
+version = "0.20.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
+dependencies = [
+ "derive_builder_core",
+ "syn",
+]
+
[[package]]
name = "digest"
version = "0.10.7"
@@ -372,6 +521,38 @@ dependencies = [
"crypto-common",
]
+[[package]]
+name = "dirs"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e"
+dependencies = [
+ "dirs-sys",
+]
+
+[[package]]
+name = "dirs-sys"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab"
+dependencies = [
+ "libc",
+ "option-ext",
+ "redox_users",
+ "windows-sys 0.61.2",
+]
+
+[[package]]
+name = "displaydoc"
+version = "0.2.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "downcast-rs"
version = "2.0.2"
@@ -384,6 +565,12 @@ version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
+[[package]]
+name = "encode_unicode"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
+
[[package]]
name = "env_filter"
version = "0.1.4"
@@ -410,6 +597,15 @@ dependencies = [
"windows-sys 0.61.2",
]
+[[package]]
+name = "esaxx-rs"
+version = "0.1.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d817e038c30374a4bcb22f94d0a8a0e216958d4c3dcde369b1439fec4bdda6e6"
+dependencies = [
+ "cc",
+]
+
[[package]]
name = "fastdivide"
version = "0.4.2"
@@ -428,6 +624,16 @@ version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8591b0bcc8a98a64310a2fae1bb3e9b8564dd10e381e6e28010fde8e8e8568db"
+[[package]]
+name = "flate2"
+version = "1.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369"
+dependencies = [
+ "crc32fast",
+ "miniz_oxide",
+]
+
[[package]]
name = "flutter_rust_bridge"
version = "2.11.1"
@@ -482,6 +688,30 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
+[[package]]
+name = "foreign-types"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1"
+dependencies = [
+ "foreign-types-shared",
+]
+
+[[package]]
+name = "foreign-types-shared"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b"
+
+[[package]]
+name = "form_urlencoded"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf"
+dependencies = [
+ "percent-encoding",
+]
+
[[package]]
name = "fs4"
version = "0.13.1"
@@ -637,6 +867,12 @@ dependencies = [
"foldhash",
]
+[[package]]
+name = "hashbrown"
+version = "0.16.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
+
[[package]]
name = "hermit-abi"
version = "0.5.2"
@@ -649,12 +885,53 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+[[package]]
+name = "hf-hub"
+version = "0.4.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "629d8f3bbeda9d148036d6b0de0a3ab947abd08ce90626327fc3547a49d59d97"
+dependencies = [
+ "dirs",
+ "http",
+ "indicatif 0.17.11",
+ "libc",
+ "log",
+ "rand 0.9.2",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "ureq 2.12.1",
+ "windows-sys 0.60.2",
+]
+
+[[package]]
+name = "hmac-sha256"
+version = "1.1.13"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0f0ae375a85536cac3a243e3a9cda80a47910348abdea7e2c22f8ec556d586d"
+
[[package]]
name = "htmlescape"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9025058dae765dee5070ec375f591e2ba14638c63feff74f13805a72e523163"
+[[package]]
+name = "http"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a"
+dependencies = [
+ "bytes",
+ "itoa",
+]
+
+[[package]]
+name = "httparse"
+version = "1.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
+
[[package]]
name = "hyperloglogplus"
version = "0.4.1"
@@ -664,12 +941,159 @@ dependencies = [
"serde",
]
+[[package]]
+name = "icu_collections"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
+dependencies = [
+ "displaydoc",
+ "potential_utf",
+ "yoke",
+ "zerofrom",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_locale_core"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
+dependencies = [
+ "displaydoc",
+ "litemap",
+ "tinystr",
+ "writeable",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
+dependencies = [
+ "icu_collections",
+ "icu_normalizer_data",
+ "icu_properties",
+ "icu_provider",
+ "smallvec",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_normalizer_data"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
+
+[[package]]
+name = "icu_properties"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
+dependencies = [
+ "icu_collections",
+ "icu_locale_core",
+ "icu_properties_data",
+ "icu_provider",
+ "zerotrie",
+ "zerovec",
+]
+
+[[package]]
+name = "icu_properties_data"
+version = "2.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
+
+[[package]]
+name = "icu_provider"
+version = "2.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
+dependencies = [
+ "displaydoc",
+ "icu_locale_core",
+ "writeable",
+ "yoke",
+ "zerofrom",
+ "zerotrie",
+ "zerovec",
+]
+
[[package]]
name = "ident_case"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
+[[package]]
+name = "idna"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de"
+dependencies = [
+ "idna_adapter",
+ "smallvec",
+ "utf8_iter",
+]
+
+[[package]]
+name = "idna_adapter"
+version = "1.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+dependencies = [
+ "icu_normalizer",
+ "icu_properties",
+]
+
+[[package]]
+name = "indexmap"
+version = "2.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
+dependencies = [
+ "equivalent",
+ "hashbrown 0.16.1",
+]
+
+[[package]]
+name = "indicatif"
+version = "0.17.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235"
+dependencies = [
+ "console 0.15.11",
+ "number_prefix",
+ "portable-atomic",
+ "unicode-width",
+ "web-time",
+]
+
+[[package]]
+name = "indicatif"
+version = "0.18.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9375e112e4b463ec1b1c6c011953545c65a30164fbab5b581df32b3abf0dcb88"
+dependencies = [
+ "console 0.16.2",
+ "portable-atomic",
+ "unicode-width",
+ "unit-prefix",
+ "web-time",
+]
+
+[[package]]
+name = "itertools"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
+dependencies = [
+ "either",
+]
+
[[package]]
name = "itertools"
version = "0.14.0"
@@ -724,17 +1148,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
[[package]]
-name = "libm"
-version = "0.2.16"
+name = "libloading"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
-
-[[package]]
-name = "linux-raw-sys"
+checksum = "754ca22de805bb5744484a5b151a9e1a8e837d5dc232c2d7d8c2e3492edc8b60"
+dependencies = [
+ "cfg-if",
+ "windows-link",
+]
+
+[[package]]
+name = "libm"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
+
+[[package]]
+name = "libredox"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616"
+dependencies = [
+ "bitflags",
+ "libc",
+]
+
+[[package]]
+name = "linux-raw-sys"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+[[package]]
+name = "litemap"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
+
[[package]]
name = "lock_api"
version = "0.4.14"
@@ -765,6 +1215,38 @@ version = "0.11.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a"
+[[package]]
+name = "lzma-rust2"
+version = "0.15.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1670343e58806300d87950e3401e820b519b9384281bbabfb15e3636689ffd69"
+
+[[package]]
+name = "macro_rules_attribute"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "65049d7923698040cd0b1ddcced9b0eb14dd22c5f86ae59c3740eab64a676520"
+dependencies = [
+ "macro_rules_attribute-proc_macro",
+ "paste",
+]
+
+[[package]]
+name = "macro_rules_attribute-proc_macro"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "670fdfda89751bc4a84ac13eaa63e205cf0fd22b4c9a5fbfa085b63c1f1d3a30"
+
+[[package]]
+name = "matrixmultiply"
+version = "0.3.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
+dependencies = [
+ "autocfg",
+ "rawpointer",
+]
+
[[package]]
name = "md-5"
version = "0.10.6"
@@ -812,6 +1294,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
dependencies = [
"adler2",
+ "simd-adler32",
+]
+
+[[package]]
+name = "monostate"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3341a273f6c9d5bef1908f17b7267bbab0e95c9bf69a0d4dcf8e9e1b2c76ef67"
+dependencies = [
+ "monostate-impl",
+ "serde",
+ "serde_core",
+]
+
+[[package]]
+name = "monostate-impl"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e4db6d5580af57bf992f59068d4ea26fd518574ff48d7639b255a36f9de6e7e9"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
]
[[package]]
@@ -820,6 +1325,62 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2195bf6aa996a481483b29d62a7663eed3fe39600c460e323f8ff41e90bdd89b"
+[[package]]
+name = "native-tls"
+version = "0.2.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
+dependencies = [
+ "libc",
+ "log",
+ "openssl",
+ "openssl-probe",
+ "openssl-sys",
+ "schannel",
+ "security-framework",
+ "security-framework-sys",
+ "tempfile",
+]
+
+[[package]]
+name = "ndarray"
+version = "0.17.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
+dependencies = [
+ "matrixmultiply",
+ "num-complex",
+ "num-integer",
+ "num-traits",
+ "portable-atomic",
+ "portable-atomic-util",
+ "rawpointer",
+]
+
+[[package]]
+name = "ndarray-stats"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b6e54a8b65764f71827a90ca1d56965ec0c67f069f996477bd493402a901d1f"
+dependencies = [
+ "indexmap",
+ "itertools 0.13.0",
+ "ndarray",
+ "noisy_float",
+ "num-integer",
+ "num-traits",
+ "rand 0.8.5",
+]
+
+[[package]]
+name = "noisy_float"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c16843be85dd410c6a12251c4eca0dd1d3ee8c5725f746c4d5e0fdcec0a864b2"
+dependencies = [
+ "num-traits",
+]
+
[[package]]
name = "nom"
version = "7.1.3"
@@ -830,12 +1391,30 @@ dependencies = [
"minimal-lexical",
]
+[[package]]
+name = "num-complex"
+version = "0.4.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
+dependencies = [
+ "num-traits",
+]
+
[[package]]
name = "num-conv"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050"
+[[package]]
+name = "num-integer"
+version = "0.1.46"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
+dependencies = [
+ "num-traits",
+]
+
[[package]]
name = "num-traits"
version = "0.2.19"
@@ -856,6 +1435,12 @@ dependencies = [
"libc",
]
+[[package]]
+name = "number_prefix"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3"
+
[[package]]
name = "object"
version = "0.37.3"
@@ -873,9 +1458,106 @@ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "oneshot"
-version = "0.1.12"
+version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ce66197e99546da6c6d991285f605192e794ceae69686c17163844a7bf8fcc2"
+checksum = "269bca4c2591a28585d6bf10d9ed0332b7d76900a1b02bec41bdc3a2cdcda107"
+
+[[package]]
+name = "onig"
+version = "6.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0"
+dependencies = [
+ "bitflags",
+ "libc",
+ "once_cell",
+ "onig_sys",
+]
+
+[[package]]
+name = "onig_sys"
+version = "69.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7f86c6eef3d6df15f23bcfb6af487cbd2fed4e5581d58d5bf1f5f8b7f6727dc"
+dependencies = [
+ "cc",
+ "pkg-config",
+]
+
+[[package]]
+name = "openssl"
+version = "0.10.75"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "08838db121398ad17ab8531ce9de97b244589089e290a384c900cb9ff7434328"
+dependencies = [
+ "bitflags",
+ "cfg-if",
+ "foreign-types",
+ "libc",
+ "once_cell",
+ "openssl-macros",
+ "openssl-sys",
+]
+
+[[package]]
+name = "openssl-macros"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "openssl-probe"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.111"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "82cab2d520aa75e3c58898289429321eb788c3106963d0dc886ec7a5f4adc321"
+dependencies = [
+ "cc",
+ "libc",
+ "pkg-config",
+ "vcpkg",
+]
+
+[[package]]
+name = "option-ext"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
+
+[[package]]
+name = "ort"
+version = "2.0.0-rc.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4a5df903c0d2c07b56950f1058104ab0c8557159f2741782223704de9be73c3c"
+dependencies = [
+ "libloading",
+ "ndarray",
+ "ort-sys",
+ "smallvec",
+ "tracing",
+ "ureq 3.1.4",
+]
+
+[[package]]
+name = "ort-sys"
+version = "2.0.0-rc.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "06503bb33f294c5f1ba484011e053bfa6ae227074bdb841e9863492dc5960d4b"
+dependencies = [
+ "hmac-sha256",
+ "lzma-rust2",
+ "ureq 3.1.4",
+]
[[package]]
name = "oslog"
@@ -910,6 +1592,27 @@ dependencies = [
"windows-link",
]
+[[package]]
+name = "paste"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+
+[[package]]
+name = "pem-rfc7468"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412"
+dependencies = [
+ "base64ct",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "2.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
+
[[package]]
name = "pin-project-lite"
version = "0.2.16"
@@ -934,6 +1637,24 @@ version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950"
+[[package]]
+name = "portable-atomic-util"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8a2f0d8d040d7848a709caf78912debcc3f33ee4b3cac47d73d1e1069e83507"
+dependencies = [
+ "portable-atomic",
+]
+
+[[package]]
+name = "potential_utf"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+dependencies = [
+ "zerovec",
+]
+
[[package]]
name = "powerfmt"
version = "0.2.0"
@@ -990,8 +1711,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
- "rand_chacha",
- "rand_core",
+ "rand_chacha 0.3.1",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand"
+version = "0.9.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1"
+dependencies = [
+ "rand_chacha 0.9.0",
+ "rand_core 0.9.5",
]
[[package]]
@@ -1001,7 +1732,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
dependencies = [
"ppv-lite86",
- "rand_core",
+ "rand_core 0.6.4",
+]
+
+[[package]]
+name = "rand_chacha"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb"
+dependencies = [
+ "ppv-lite86",
+ "rand_core 0.9.5",
]
[[package]]
@@ -1013,6 +1754,15 @@ dependencies = [
"getrandom 0.2.17",
]
+[[package]]
+name = "rand_core"
+version = "0.9.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c"
+dependencies = [
+ "getrandom 0.3.4",
+]
+
[[package]]
name = "rand_distr"
version = "0.4.3"
@@ -1020,9 +1770,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31"
dependencies = [
"num-traits",
- "rand",
+ "rand 0.8.5",
]
+[[package]]
+name = "rawpointer"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
+
[[package]]
name = "rayon"
version = "1.11.0"
@@ -1033,6 +1789,17 @@ dependencies = [
"rayon-core",
]
+[[package]]
+name = "rayon-cond"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2964d0cf57a3e7a06e8183d14a8b527195c706b7983549cd5462d5aa3747438f"
+dependencies = [
+ "either",
+ "itertools 0.14.0",
+ "rayon",
+]
+
[[package]]
name = "rayon-core"
version = "1.13.0"
@@ -1052,6 +1819,17 @@ dependencies = [
"bitflags",
]
+[[package]]
+name = "redox_users"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
+dependencies = [
+ "getrandom 0.2.17",
+ "libredox",
+ "thiserror",
+]
+
[[package]]
name = "regex"
version = "1.12.2"
@@ -1081,6 +1859,20 @@ version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58"
+[[package]]
+name = "ring"
+version = "0.17.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
+dependencies = [
+ "cc",
+ "cfg-if",
+ "getrandom 0.2.17",
+ "libc",
+ "untrusted",
+ "windows-sys 0.52.0",
+]
+
[[package]]
name = "rust-stemmers"
version = "1.2.0"
@@ -1095,8 +1887,14 @@ dependencies = [
name = "rust_lib_mobile_app"
version = "0.1.0"
dependencies = [
+ "anyhow",
"flutter_rust_bridge",
+ "ndarray",
+ "ndarray-stats",
+ "once_cell",
+ "ort",
"tantivy",
+ "tokenizers",
]
[[package]]
@@ -1124,18 +1922,91 @@ dependencies = [
"windows-sys 0.61.2",
]
+[[package]]
+name = "rustls"
+version = "0.23.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b"
+dependencies = [
+ "log",
+ "once_cell",
+ "ring",
+ "rustls-pki-types",
+ "rustls-webpki",
+ "subtle",
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-pki-types"
+version = "1.14.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "be040f8b0a225e40375822a563fa9524378b9d63112f53e19ffff34df5d33fdd"
+dependencies = [
+ "zeroize",
+]
+
+[[package]]
+name = "rustls-webpki"
+version = "0.103.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7df23109aa6c1567d1c575b9952556388da57401e4ace1d15f79eedad0d8f53"
+dependencies = [
+ "ring",
+ "rustls-pki-types",
+ "untrusted",
+]
+
[[package]]
name = "rustversion"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
+[[package]]
+name = "ryu"
+version = "1.0.22"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984"
+
+[[package]]
+name = "schannel"
+version = "0.1.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "891d81b926048e76efe18581bf793546b4c0eaf8448d72be8de2bbee5fd166e1"
+dependencies = [
+ "windows-sys 0.61.2",
+]
+
[[package]]
name = "scopeguard"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
+[[package]]
+name = "security-framework"
+version = "2.11.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
+dependencies = [
+ "bitflags",
+ "core-foundation",
+ "core-foundation-sys",
+ "libc",
+ "security-framework-sys",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "2.15.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cc1f0cbffaac4852523ce30d8bd3c5cdc873501d96ff467ca09b6767bb8cd5c0"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
[[package]]
name = "serde"
version = "1.0.228"
@@ -1185,6 +2056,12 @@ version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
+[[package]]
+name = "simd-adler32"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
+
[[package]]
name = "sketches-ddsketch"
version = "0.3.0"
@@ -1206,18 +2083,53 @@ version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
+[[package]]
+name = "socks"
+version = "0.3.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f0c3dbbd9ae980613c6dd8e28a9407b50509d3803b57624d5dfe8315218cd58b"
+dependencies = [
+ "byteorder",
+ "libc",
+ "winapi",
+]
+
+[[package]]
+name = "spm_precompiled"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5851699c4033c63636f7ea4cf7b7c1f1bf06d0cc03cfb42e711de5a5c46cf326"
+dependencies = [
+ "base64 0.13.1",
+ "nom",
+ "serde",
+ "unicode-segmentation",
+]
+
[[package]]
name = "stable_deref_trait"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
[[package]]
name = "strsim"
version = "0.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
+[[package]]
+name = "subtle"
+version = "2.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
+
[[package]]
name = "syn"
version = "2.0.114"
@@ -1229,6 +2141,17 @@ dependencies = [
"unicode-ident",
]
+[[package]]
+name = "synstructure"
+version = "0.13.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "tantivy"
version = "0.25.0"
@@ -1237,7 +2160,7 @@ checksum = "502915c7381c5cb2d2781503962610cb880ad8f1a0ca95df1bae645d5ebf2545"
dependencies = [
"aho-corasick",
"arc-swap",
- "base64",
+ "base64 0.22.1",
"bitpacking",
"bon",
"byteorder",
@@ -1250,7 +2173,7 @@ dependencies = [
"fs4",
"htmlescape",
"hyperloglogplus",
- "itertools",
+ "itertools 0.14.0",
"levenshtein_automata",
"log",
"lru",
@@ -1298,7 +2221,7 @@ checksum = "8b628488ae936c83e92b5c4056833054ca56f76c0e616aee8339e24ac89119cd"
dependencies = [
"downcast-rs",
"fastdivide",
- "itertools",
+ "itertools 0.14.0",
"serde",
"tantivy-bitpacker",
"tantivy-common",
@@ -1348,7 +2271,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8292095d1a8a2c2b36380ec455f910ab52dde516af36321af332c93f20ab7d5"
dependencies = [
"futures-util",
- "itertools",
+ "itertools 0.14.0",
"tantivy-bitpacker",
"tantivy-common",
"tantivy-fst",
@@ -1448,6 +2371,51 @@ dependencies = [
"time-core",
]
+[[package]]
+name = "tinystr"
+version = "0.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
+dependencies = [
+ "displaydoc",
+ "zerovec",
+]
+
+[[package]]
+name = "tokenizers"
+version = "0.22.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b238e22d44a15349529690fb07bd645cf58149a1b1e44d6cb5bd1641ff1a6223"
+dependencies = [
+ "ahash",
+ "aho-corasick",
+ "compact_str",
+ "dary_heap",
+ "derive_builder",
+ "esaxx-rs",
+ "getrandom 0.3.4",
+ "hf-hub",
+ "indicatif 0.18.3",
+ "itertools 0.14.0",
+ "log",
+ "macro_rules_attribute",
+ "monostate",
+ "onig",
+ "paste",
+ "rand 0.9.2",
+ "rayon",
+ "rayon-cond",
+ "regex",
+ "regex-syntax",
+ "serde",
+ "serde_json",
+ "spm_precompiled",
+ "thiserror",
+ "unicode-normalization-alignments",
+ "unicode-segmentation",
+ "unicode_categories",
+]
+
[[package]]
name = "tokio"
version = "1.49.0"
@@ -1457,6 +2425,25 @@ dependencies = [
"pin-project-lite",
]
+[[package]]
+name = "tracing"
+version = "0.1.44"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
+dependencies = [
+ "pin-project-lite",
+ "tracing-core",
+]
+
+[[package]]
+name = "tracing-core"
+version = "0.1.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
+dependencies = [
+ "once_cell",
+]
+
[[package]]
name = "typenum"
version = "1.19.0"
@@ -1469,12 +2456,124 @@ version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
+[[package]]
+name = "unicode-normalization-alignments"
+version = "0.1.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "43f613e4fa046e69818dd287fdc4bc78175ff20331479dab6e1b0f98d57062de"
+dependencies = [
+ "smallvec",
+]
+
+[[package]]
+name = "unicode-segmentation"
+version = "1.12.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
+
+[[package]]
+name = "unicode-width"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
+
+[[package]]
+name = "unicode_categories"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
+
+[[package]]
+name = "unit-prefix"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "81e544489bf3d8ef66c953931f56617f423cd4b5494be343d9b9d3dda037b9a3"
+
+[[package]]
+name = "untrusted"
+version = "0.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
+
+[[package]]
+name = "ureq"
+version = "2.12.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d"
+dependencies = [
+ "base64 0.22.1",
+ "flate2",
+ "log",
+ "once_cell",
+ "rustls",
+ "rustls-pki-types",
+ "serde",
+ "serde_json",
+ "socks",
+ "url",
+ "webpki-roots 0.26.11",
+]
+
+[[package]]
+name = "ureq"
+version = "3.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d39cb1dbab692d82a977c0392ffac19e188bd9186a9f32806f0aaa859d75585a"
+dependencies = [
+ "base64 0.22.1",
+ "der",
+ "log",
+ "native-tls",
+ "percent-encoding",
+ "rustls-pki-types",
+ "socks",
+ "ureq-proto",
+ "utf-8",
+ "webpki-root-certs",
+]
+
+[[package]]
+name = "ureq-proto"
+version = "0.5.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d81f9efa9df032be5934a46a068815a10a042b494b6a58cb0a1a97bb5467ed6f"
+dependencies = [
+ "base64 0.22.1",
+ "http",
+ "httparse",
+ "log",
+]
+
+[[package]]
+name = "url"
+version = "2.5.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed"
+dependencies = [
+ "form_urlencoded",
+ "idna",
+ "percent-encoding",
+ "serde",
+]
+
+[[package]]
+name = "utf-8"
+version = "0.7.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
+
[[package]]
name = "utf8-ranges"
version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcfc827f90e53a02eaef5e535ee14266c1d569214c6aa70133a624d8a3164ba"
+[[package]]
+name = "utf8_iter"
+version = "1.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be"
+
[[package]]
name = "uuid"
version = "1.20.0"
@@ -1487,6 +2586,12 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "vcpkg"
+version = "0.2.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
+
[[package]]
name = "version_check"
version = "0.9.5"
@@ -1577,6 +2682,43 @@ dependencies = [
"wasm-bindgen",
]
+[[package]]
+name = "web-time"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb"
+dependencies = [
+ "js-sys",
+ "wasm-bindgen",
+]
+
+[[package]]
+name = "webpki-root-certs"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc"
+dependencies = [
+ "rustls-pki-types",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "0.26.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9"
+dependencies = [
+ "webpki-roots 1.0.5",
+]
+
+[[package]]
+name = "webpki-roots"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c"
+dependencies = [
+ "rustls-pki-types",
+]
+
[[package]]
name = "winapi"
version = "0.3.9"
@@ -1605,13 +2747,31 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
+[[package]]
+name = "windows-sys"
+version = "0.52.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+dependencies = [
+ "windows-targets 0.52.6",
+]
+
[[package]]
name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
dependencies = [
- "windows-targets",
+ "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-sys"
+version = "0.60.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb"
+dependencies = [
+ "windows-targets 0.53.5",
]
[[package]]
@@ -1629,14 +2789,31 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
dependencies = [
- "windows_aarch64_gnullvm",
- "windows_aarch64_msvc",
- "windows_i686_gnu",
- "windows_i686_gnullvm",
- "windows_i686_msvc",
- "windows_x86_64_gnu",
- "windows_x86_64_gnullvm",
- "windows_x86_64_msvc",
+ "windows_aarch64_gnullvm 0.52.6",
+ "windows_aarch64_msvc 0.52.6",
+ "windows_i686_gnu 0.52.6",
+ "windows_i686_gnullvm 0.52.6",
+ "windows_i686_msvc 0.52.6",
+ "windows_x86_64_gnu 0.52.6",
+ "windows_x86_64_gnullvm 0.52.6",
+ "windows_x86_64_msvc 0.52.6",
+]
+
+[[package]]
+name = "windows-targets"
+version = "0.53.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3"
+dependencies = [
+ "windows-link",
+ "windows_aarch64_gnullvm 0.53.1",
+ "windows_aarch64_msvc 0.53.1",
+ "windows_i686_gnu 0.53.1",
+ "windows_i686_gnullvm 0.53.1",
+ "windows_i686_msvc 0.53.1",
+ "windows_x86_64_gnu 0.53.1",
+ "windows_x86_64_gnullvm 0.53.1",
+ "windows_x86_64_msvc 0.53.1",
]
[[package]]
@@ -1645,54 +2822,131 @@ version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3"
+[[package]]
+name = "windows_aarch64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
+
[[package]]
name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
+
[[package]]
name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
+[[package]]
+name = "windows_i686_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3"
+
[[package]]
name = "windows_i686_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66"
+[[package]]
+name = "windows_i686_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
+
[[package]]
name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
+[[package]]
+name = "windows_i686_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
+
[[package]]
name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
+
[[package]]
name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
+[[package]]
+name = "windows_x86_64_gnullvm"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
+
[[package]]
name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.53.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650"
+
[[package]]
name = "wit-bindgen"
version = "0.51.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
+[[package]]
+name = "writeable"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
+
+[[package]]
+name = "yoke"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
+dependencies = [
+ "stable_deref_trait",
+ "yoke-derive",
+ "zerofrom",
+]
+
+[[package]]
+name = "yoke-derive"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
[[package]]
name = "zerocopy"
version = "0.8.34"
@@ -1713,6 +2967,66 @@ dependencies = [
"syn",
]
+[[package]]
+name = "zerofrom"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+dependencies = [
+ "zerofrom-derive",
+]
+
+[[package]]
+name = "zerofrom-derive"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+ "synstructure",
+]
+
+[[package]]
+name = "zeroize"
+version = "1.8.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0"
+
+[[package]]
+name = "zerotrie"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+dependencies = [
+ "displaydoc",
+ "yoke",
+ "zerofrom",
+]
+
+[[package]]
+name = "zerovec"
+version = "0.11.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
+dependencies = [
+ "yoke",
+ "zerofrom",
+ "zerovec-derive",
+]
+
+[[package]]
+name = "zerovec-derive"
+version = "0.11.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
[[package]]
name = "zmij"
version = "1.0.17"
diff --git a/mobile_app/rust/Cargo.toml b/mobile_app/rust/Cargo.toml
index 371c110..46d88db 100644
--- a/mobile_app/rust/Cargo.toml
+++ b/mobile_app/rust/Cargo.toml
@@ -8,8 +8,20 @@ crate-type = ["cdylib", "staticlib"]
[dependencies]
flutter_rust_bridge = "=2.11.1"
+ndarray = "0.17.2"
+tokenizers = { version = "0.22.2", default-features = false, features = ["esaxx_fast", "indicatif", "onig", "progressbar", "hf-hub", "http"] }
+anyhow = "1.0.100"
+ndarray-stats = "0.7.0"
+ort = { version = "2.0.0-rc.11", features = ["load-dynamic"]}
tantivy = "0.25.0"
-#seekstorm = { git = "https://github.com/Ok3ks/seekstorm", branch = "compile-for-mobile", version = "1.2.5" }
+once_cell = "1.21.3"
[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] }
+
+[profile.release]
+lto = true
+# This helps prevent symbol clashes
+panic = "abort"
+
+
diff --git a/mobile_app/rust/build.rs b/mobile_app/rust/build.rs
new file mode 100644
index 0000000..245c4e9
--- /dev/null
+++ b/mobile_app/rust/build.rs
@@ -0,0 +1,7 @@
+fn main() {
+ #[cfg(target_os = "android")]
+ {
+ // This tells the linker that we will provide libc++_shared.so at runtime
+ println!("cargo:rustc-link-lib=c++_shared");
+ }
+}
\ No newline at end of file
diff --git a/inference/src/lib.rs b/mobile_app/rust/src/api/acho.rs
similarity index 55%
rename from inference/src/lib.rs
rename to mobile_app/rust/src/api/acho.rs
index 56d32e5..e79210b 100644
--- a/inference/src/lib.rs
+++ b/mobile_app/rust/src/api/acho.rs
@@ -1,4 +1,3 @@
-use std::env;
use anyhow::Result;
use tokenizers::{Encoding, Tokenizer};
@@ -7,17 +6,22 @@ use ort::session::builder::GraphOptimizationLevel;
type EncodingArray = ndarray::Array2;
type InputIds = ndarray::Array2;
-type AttentionMask = ndarray::Array2;
+pub type AttentionMask = ndarray::Array2