agent-dump 1.2.6__tar.gz → 1.2.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agent_dump-1.2.6 → agent_dump-1.2.7}/Cargo.lock +17 -17
- {agent_dump-1.2.6 → agent_dump-1.2.7}/Cargo.toml +2 -2
- {agent_dump-1.2.6 → agent_dump-1.2.7}/PKG-INFO +13 -11
- {agent_dump-1.2.6 → agent_dump-1.2.7}/README.md +12 -10
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/connection.rs +1 -5
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/filter.rs +86 -66
- {agent_dump-1.2.6 → agent_dump-1.2.7}/pyproject.toml +1 -1
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/README.md +2 -2
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/mod.rs +1 -0
- agent_dump-1.2.7/src/collect/pool.rs +38 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/reduction.rs +222 -149
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/collect.rs +20 -6
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/list.rs +46 -30
- {agent_dump-1.2.6 → agent_dump-1.2.7}/LICENSE +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/Cargo.toml +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/compat/json/diagnostic.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/compat/json/encoding.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/compat/json/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/compat/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/compat/value.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/config.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/lib.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/diagnostics.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/export.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/formats.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/i18n.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/render.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/parallel.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/antigravity_cli/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/antigravity_cli/proto.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/antigravity_cli/tests.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/antigravity_cli/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/claude/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/claude/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/children.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/enrichment.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/exec.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/patch.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/rollout.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/usage.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/contract.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/cursor/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/cursor/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/cursor/workspace.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/cherry.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/deepchat.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/minimax.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/tests.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/droid/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/dsh/log.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/dsh/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/dsh/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/error.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/files.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/gemini_cli/chat.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/gemini_cli/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/grok/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/grok/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/jsonl.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi/wire.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi_code/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi_code/wire.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/pi/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/pi/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/registry.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/legacy.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/v2.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/tests.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/text.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/title.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/context.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/index/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/index/tests.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/read.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/scanner.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/text.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/transcript.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/assembly.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/cache/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/cache/tests.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/timestamp.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/storage/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/storage/private_files.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/storage/source_io.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/storage/zstd.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/locales/en.json +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/locales/zh.json +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/.gitattributes +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/insight-chunk.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/insight-handoff.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/insight-merge.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/insight-report.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/insight-retry.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/pm-chunk.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/pm-handoff.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/pm-merge.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/pm-report.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/pm-retry.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/read-session-en.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/read-session-zh.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/system.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/resources/prompts/uri.txt +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/rust-toolchain.toml +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/rustfmt.toml +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/cli_args.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/events.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/handoff.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/llm.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/log.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/model.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/progress.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/prompts/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/sessions.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/collect/summary.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/command.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/date_input.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/main.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/shortcut.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/terminal/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/terminal/reader.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/terminal/selector.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/terminal/tui.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/browse.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/config.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/interactive.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/machine.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/maintenance.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/mod.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/read.rs +0 -0
- {agent_dump-1.2.6 → agent_dump-1.2.7}/src/workflows/uri.rs +0 -0
|
@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
|
|
|
10
10
|
|
|
11
11
|
[[package]]
|
|
12
12
|
name = "agent-dump"
|
|
13
|
-
version = "1.2.
|
|
13
|
+
version = "1.2.7"
|
|
14
14
|
dependencies = [
|
|
15
15
|
"agent-dump-core",
|
|
16
16
|
"caseless",
|
|
@@ -926,9 +926,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
|
|
|
926
926
|
|
|
927
927
|
[[package]]
|
|
928
928
|
name = "libsqlite3-sys"
|
|
929
|
-
version = "0.
|
|
929
|
+
version = "0.39.1"
|
|
930
930
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
931
|
-
checksum = "
|
|
931
|
+
checksum = "14a5f01b87b92705d07b433c06f96cbc764637d81a0bffb5734ce17cf0f9a2b3"
|
|
932
932
|
dependencies = [
|
|
933
933
|
"cc",
|
|
934
934
|
"pkg-config",
|
|
@@ -1339,9 +1339,9 @@ dependencies = [
|
|
|
1339
1339
|
|
|
1340
1340
|
[[package]]
|
|
1341
1341
|
name = "rusqlite"
|
|
1342
|
-
version = "0.
|
|
1342
|
+
version = "0.41.1"
|
|
1343
1343
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1344
|
-
checksum = "
|
|
1344
|
+
checksum = "da9bba6f3506135e120a6586df05be18b48d18896600646a4bec8f993d91a594"
|
|
1345
1345
|
dependencies = [
|
|
1346
1346
|
"bitflags 2.13.2",
|
|
1347
1347
|
"fallible-iterator",
|
|
@@ -1374,9 +1374,9 @@ dependencies = [
|
|
|
1374
1374
|
|
|
1375
1375
|
[[package]]
|
|
1376
1376
|
name = "rustls"
|
|
1377
|
-
version = "0.23.
|
|
1377
|
+
version = "0.23.46"
|
|
1378
1378
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1379
|
-
checksum = "
|
|
1379
|
+
checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf"
|
|
1380
1380
|
dependencies = [
|
|
1381
1381
|
"log",
|
|
1382
1382
|
"once_cell",
|
|
@@ -1767,9 +1767,9 @@ checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
|
|
|
1767
1767
|
|
|
1768
1768
|
[[package]]
|
|
1769
1769
|
name = "unicode-normalization"
|
|
1770
|
-
version = "0.1.
|
|
1770
|
+
version = "0.1.26"
|
|
1771
1771
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1772
|
-
checksum = "
|
|
1772
|
+
checksum = "75cd3fb03d5288b3ba9a1ee103ac7e9cbb59f0b03d64f8ddfcc04dd42758a85d"
|
|
1773
1773
|
dependencies = [
|
|
1774
1774
|
"tinyvec",
|
|
1775
1775
|
]
|
|
@@ -1793,9 +1793,9 @@ dependencies = [
|
|
|
1793
1793
|
|
|
1794
1794
|
[[package]]
|
|
1795
1795
|
name = "unicode-width"
|
|
1796
|
-
version = "0.2.
|
|
1796
|
+
version = "0.2.3"
|
|
1797
1797
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1798
|
-
checksum = "
|
|
1798
|
+
checksum = "ca718471876992059f251e33aafc334346ada08042b7661dd1fe313a9bced557"
|
|
1799
1799
|
|
|
1800
1800
|
[[package]]
|
|
1801
1801
|
name = "untrusted"
|
|
@@ -1805,9 +1805,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
|
|
|
1805
1805
|
|
|
1806
1806
|
[[package]]
|
|
1807
1807
|
name = "ureq"
|
|
1808
|
-
version = "3.
|
|
1808
|
+
version = "3.5.0"
|
|
1809
1809
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1810
|
-
checksum = "
|
|
1810
|
+
checksum = "cde93ff05758a36a851a398a772b0b79a82fbe3c186a46f2696baaeaf84c966b"
|
|
1811
1811
|
dependencies = [
|
|
1812
1812
|
"base64 0.23.1",
|
|
1813
1813
|
"cookie_store",
|
|
@@ -1825,9 +1825,9 @@ dependencies = [
|
|
|
1825
1825
|
|
|
1826
1826
|
[[package]]
|
|
1827
1827
|
name = "ureq-proto"
|
|
1828
|
-
version = "0.6.
|
|
1828
|
+
version = "0.6.5"
|
|
1829
1829
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1830
|
-
checksum = "
|
|
1830
|
+
checksum = "841583fc36089d7d59419568ae157f43a5a03a2e5a81ba87c77d1596ef46e922"
|
|
1831
1831
|
dependencies = [
|
|
1832
1832
|
"base64 0.23.1",
|
|
1833
1833
|
"http",
|
|
@@ -1867,9 +1867,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
|
|
|
1867
1867
|
|
|
1868
1868
|
[[package]]
|
|
1869
1869
|
name = "uuid"
|
|
1870
|
-
version = "1.
|
|
1870
|
+
version = "1.29.0"
|
|
1871
1871
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1872
|
-
checksum = "
|
|
1872
|
+
checksum = "4a0e2d11620c50695fe12bbbfde96b3477fe606e7284c22d505c12ce51214514"
|
|
1873
1873
|
dependencies = [
|
|
1874
1874
|
"getrandom 0.4.3",
|
|
1875
1875
|
"js-sys",
|
|
@@ -32,7 +32,7 @@ regex = "1"
|
|
|
32
32
|
sha2 = "0.11"
|
|
33
33
|
tempfile = "3"
|
|
34
34
|
walkdir = "2"
|
|
35
|
-
rusqlite = { version = "0.
|
|
35
|
+
rusqlite = { version = "0.41", default-features = false, features = ["bundled"] }
|
|
36
36
|
num-bigint = "0.5"
|
|
37
37
|
toml_edit = "0.25"
|
|
38
38
|
ureq = { version = "3", features = ["json"] }
|
|
@@ -47,7 +47,7 @@ nix = { version = "0.31", default-features = false, features = ["fs", "user"] }
|
|
|
47
47
|
|
|
48
48
|
[package]
|
|
49
49
|
name = "agent-dump"
|
|
50
|
-
version = "1.2.
|
|
50
|
+
version = "1.2.7"
|
|
51
51
|
edition = "2024"
|
|
52
52
|
rust-version = "1.90"
|
|
53
53
|
publish = false
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-dump
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.7
|
|
4
4
|
Classifier: Environment :: Console
|
|
5
5
|
Classifier: License :: OSI Approved :: MIT License
|
|
6
6
|
Classifier: Programming Language :: Rust
|
|
@@ -261,16 +261,14 @@ Next steps:
|
|
|
261
261
|
|
|
262
262
|
### Exit Codes
|
|
263
263
|
|
|
264
|
-
Explicit provider scopes (`provider:`, legacy provider prefixes, or `providers=` in query URIs) are applied before discovery. Unselected providers are not scanned. An empty explicit scope result keeps the mode’s no-match behavior, without probing unrelated providers.
|
|
265
|
-
|
|
266
264
|
| Code | Meaning |
|
|
267
265
|
|------|---------|
|
|
268
266
|
| `0` | The command did what was asked — including when the result set is legitimately empty (no sessions in the `--days` window, a keyword or `--search` that matched nothing), and when interactive export partially succeeds. |
|
|
269
267
|
| `1` | The command could not do what was asked: no provider data exists on this machine, a URI did not resolve to a session, every requested interactive export failed, or an argument combination is invalid. |
|
|
270
|
-
| `2` | Argument usage error
|
|
268
|
+
| `2` | Argument usage error rejected by the argument parser (unknown flag, invalid `--format` value). |
|
|
271
269
|
|
|
272
|
-
|
|
273
|
-
|
|
270
|
+
`agent-dump --list && ...` continues after an empty listing and stops only when no
|
|
271
|
+
provider has data on this machine.
|
|
274
272
|
|
|
275
273
|
## Path Discovery
|
|
276
274
|
|
|
@@ -327,7 +325,7 @@ MiniMax Code supports listing, query, search, stats, collect, and print / JSON /
|
|
|
327
325
|
|
|
328
326
|
Set `MINIMAX_DATA_DIR` explicitly for custom profiles or other directories. The reader does not read model-context JSONL or attachment files, run migrations, or recover rewound messages. Raw export, direct legacy storage reads, and desktop data are unsupported. Pending migrations and corrupt sessions produce diagnostics instead of appearing empty. See the [MiniMax Code design and acceptance scope](docs/providers/minimax.md).
|
|
329
327
|
|
|
330
|
-
Antigravity CLI supports listing, query, search, stats, collect, and print / JSON / Markdown exports. Databases are opened read-only, and only the Protobuf fields for user prompts, assistant text, title updates, tool calls, step times, and token usage are decoded. Tool results are not stored in a known format, so tool calls have status `unknown` and keep the native step type and status in metadata; other unrecognized steps are skipped. Databases without steps are not listed. Titles come from the latest title step, the summary title, then the first user prompt. Steps without a native time use the summary update time or the database modification time and are marked as inferred, so collect
|
|
328
|
+
Antigravity CLI supports listing, query, search, stats, collect, and print / JSON / Markdown exports. Databases are opened read-only, and only the Protobuf fields for user prompts, assistant text, title updates, tool calls, step times, and token usage are decoded. Tool results are not stored in a known format, so tool calls have status `unknown` and keep the native step type and status in metadata; other unrecognized steps are skipped. Databases without steps are not listed. Titles come from the latest title step, the summary title, then the first user prompt. Steps without a native time use the summary update time or the database modification time and are marked as inferred, so collect excludes them. Usage repeated across retries is counted once and attached to the next assistant message; usage after the last step becomes a usage-only assistant message. Input includes cache tokens and session output includes reasoning; cost is not estimated. Raw export is unsupported. A malformed step or unsupported table fails only that session. See the [Antigravity CLI reading rules](docs/providers/antigravity-cli.md).
|
|
331
329
|
|
|
332
330
|
OpenCode supports legacy SQLite and 2.x `session_v2/session_message`. When both schemas coexist, V2 wins for the same session ID. Until `migration.v1-v2` is completed, legacy sessions that OpenCode has not copied yet stay listed; after that only V2 is read, so sessions deleted in V2 do not come back. Sessions without visible messages are not listed, and message counts include only visible messages. An empty title falls back to the first user text, then `Untitled Session`. V2 messages follow `seq` order. Image attachments become image parts; other attachments, `@agent`/`@skill` mentions, errors and system, compaction or switch records become labelled text. Only invalid message JSON or a non-array assistant `content` fails a V2 session; other malformed fields are left empty. Input tokens include cache reads and writes, output tokens include reasoning, and legacy parent sessions add their descendants' usage. ZCode uses the legacy reader, skips `subagent_child` sessions and keeps plan and image parts. Synthetic input, system/skill messages, compaction and shell records are excluded from collect. `OPENCODE_DB` selects a custom or channel database; a missing explicit path never falls back, and `:memory:` is unavailable. Referenced attachment files are never opened. Running and archived records remain readable; pending inbox items are excluded. Raw export remains normalized `.raw.json`, not an OpenCode import file. See the [design and acceptance scope](docs/providers/opencode-v2.md).
|
|
333
331
|
|
|
@@ -381,9 +379,11 @@ agent-dump --config view
|
|
|
381
379
|
agent-dump --config edit
|
|
382
380
|
```
|
|
383
381
|
|
|
384
|
-
`--query` uses the same matching as `--search`: whitespace-separated literal terms must all occur, anywhere in the title or transcript. Structured keys (`provider`, `role`, `path`, `limit`) activate structured parsing; quote values containing spaces. `role` restricts matching to those messages, and `limit` applies to the final global results. `error:timeout`
|
|
382
|
+
`--query` uses the same matching as `--search`: whitespace-separated literal terms must all occur, anywhere in the title or transcript. Structured keys (`provider`, `role`, `path`, `limit`) activate structured parsing; quote values containing spaces. `role` restricts matching to those messages, and `limit` applies to the final global results. Without a structured key, `error:timeout` is a plain term; once the query contains one, any other `key:value` token is rejected. Lists print all matches; interactive Provider counts reflect the filtered results.
|
|
383
|
+
|
|
384
|
+
Explicit provider scopes (`provider:`, legacy provider prefixes, or `providers=` in query URIs) are applied before discovery. Unselected providers are not scanned. An empty explicit scope result keeps the mode's no-match behavior, without probing unrelated providers.
|
|
385
385
|
|
|
386
|
-
Collect uses explicit `--since`/`--until` first, then explicit `--days`, otherwise today. `--save` accepts a directory or a `.md` file, with absolute or relative paths. The [collect section](#collect-
|
|
386
|
+
Collect uses explicit `--since`/`--until` first, then explicit `--days`, otherwise today. `--save` accepts a directory or a `.md` file, with absolute or relative paths. The [collect coverage section](#collect-coverage) describes full input coverage, exclusions, progress, and incomplete reports.
|
|
387
387
|
|
|
388
388
|
### Summarize with an external agent
|
|
389
389
|
|
|
@@ -466,7 +466,7 @@ Existing calls still accept `-days`, `-query`, `-format`, `-output`, `-summary`,
|
|
|
466
466
|
| `--interactive`, `-i` | Open the session reader to select and export sessions (same as `--browse` in a terminal) | - |
|
|
467
467
|
| `--days`, `-d` | Query sessions from the last positive N days. Values outside the supported calendar range are rejected. In collect mode, applies when `--since/--until` are omitted. | 7 outside collect; today only in collect |
|
|
468
468
|
| `--time-field` | Use `created` or `updated` time for the `--days` window in list/search/browse/interactive modes. | `updated` |
|
|
469
|
-
| `--query`, `-q` | Query filter. Keyword terms are split on whitespace and matched case-insensitively like `--search`; every term must occur in the session title or logical transcript. Supports a plain keyword or structured terms like `bug provider:codex role:user path:. limit:20`. Structured values containing spaces support shell-style quoting and escaping. `limit` must be a positive signed 64-bit integer.
|
|
469
|
+
| `--query`, `-q` | Query filter. Keyword terms are split on whitespace and matched case-insensitively like `--search`; every term must occur in the session title or logical transcript. Supports a plain keyword or structured terms like `bug provider:codex role:user path:. limit:20`. Structured values containing spaces support shell-style quoting and escaping. `limit` must be a positive signed 64-bit integer. Once the query contains a structured key, other `key:value` tokens are rejected. Cannot be combined with `agents://...` query URIs. | - |
|
|
470
470
|
| `--head` | URI mode only. Print bounded discovery metadata without rereading the transcript; message count is exact when discovery scanned the complete source and explicitly `unknown` otherwise. Does not export files or print body content. Cannot be combined with `--format` or `--summary`. | - |
|
|
471
471
|
| `--collect` | Collect sessions by date range, optionally constrained by `--query` or an `agents://...` query URI (mutually exclusive). Only visible user/assistant text is summarized; system/developer/tool messages, reasoning, plans, tool calls, and tool results are excluded, and empty projected sessions are ignored. PM mode extracts requests, decisions, and agent-reported outcomes before deterministic session merge and tree reduction. Multi-stage progress is shown on stderr. | - |
|
|
472
472
|
| `--collect-mode` | collect output mode: `pm` for project-management summaries, `insight` for author insight summaries. | `pm` |
|
|
@@ -497,7 +497,7 @@ When URI mode combines `print` with file formats, a print read/render failure is
|
|
|
497
497
|
|
|
498
498
|
See [CLI migration and the frozen Python release](docs/cli-compatibility.md#source-builds-and-python-api-migration).
|
|
499
499
|
|
|
500
|
-
###
|
|
500
|
+
### Collect coverage
|
|
501
501
|
|
|
502
502
|
Discovery failures are counted separately because the number of missing sessions is unknown. Reads that fail during query filtering also count as session read failures. These gaps are included in saved reports and completion logs; `--emit-prompt` carries them in its task metadata and fails if failures leave no candidates.
|
|
503
503
|
|
|
@@ -509,6 +509,8 @@ Collect discovers candidate sessions without a creation-time cutoff and processe
|
|
|
509
509
|
|
|
510
510
|
PM summaries merge sessions only within the same date and known working directory. Sessions without a working directory retain separate attribution.
|
|
511
511
|
|
|
512
|
+
### Configuration file
|
|
513
|
+
|
|
512
514
|
Default config path:
|
|
513
515
|
|
|
514
516
|
- macOS/Linux: `~/.config/agent-dump/config.toml`
|
|
@@ -237,16 +237,14 @@ Next steps:
|
|
|
237
237
|
|
|
238
238
|
### Exit Codes
|
|
239
239
|
|
|
240
|
-
Explicit provider scopes (`provider:`, legacy provider prefixes, or `providers=` in query URIs) are applied before discovery. Unselected providers are not scanned. An empty explicit scope result keeps the mode’s no-match behavior, without probing unrelated providers.
|
|
241
|
-
|
|
242
240
|
| Code | Meaning |
|
|
243
241
|
|------|---------|
|
|
244
242
|
| `0` | The command did what was asked — including when the result set is legitimately empty (no sessions in the `--days` window, a keyword or `--search` that matched nothing), and when interactive export partially succeeds. |
|
|
245
243
|
| `1` | The command could not do what was asked: no provider data exists on this machine, a URI did not resolve to a session, every requested interactive export failed, or an argument combination is invalid. |
|
|
246
|
-
| `2` | Argument usage error
|
|
244
|
+
| `2` | Argument usage error rejected by the argument parser (unknown flag, invalid `--format` value). |
|
|
247
245
|
|
|
248
|
-
|
|
249
|
-
|
|
246
|
+
`agent-dump --list && ...` continues after an empty listing and stops only when no
|
|
247
|
+
provider has data on this machine.
|
|
250
248
|
|
|
251
249
|
## Path Discovery
|
|
252
250
|
|
|
@@ -303,7 +301,7 @@ MiniMax Code supports listing, query, search, stats, collect, and print / JSON /
|
|
|
303
301
|
|
|
304
302
|
Set `MINIMAX_DATA_DIR` explicitly for custom profiles or other directories. The reader does not read model-context JSONL or attachment files, run migrations, or recover rewound messages. Raw export, direct legacy storage reads, and desktop data are unsupported. Pending migrations and corrupt sessions produce diagnostics instead of appearing empty. See the [MiniMax Code design and acceptance scope](docs/providers/minimax.md).
|
|
305
303
|
|
|
306
|
-
Antigravity CLI supports listing, query, search, stats, collect, and print / JSON / Markdown exports. Databases are opened read-only, and only the Protobuf fields for user prompts, assistant text, title updates, tool calls, step times, and token usage are decoded. Tool results are not stored in a known format, so tool calls have status `unknown` and keep the native step type and status in metadata; other unrecognized steps are skipped. Databases without steps are not listed. Titles come from the latest title step, the summary title, then the first user prompt. Steps without a native time use the summary update time or the database modification time and are marked as inferred, so collect
|
|
304
|
+
Antigravity CLI supports listing, query, search, stats, collect, and print / JSON / Markdown exports. Databases are opened read-only, and only the Protobuf fields for user prompts, assistant text, title updates, tool calls, step times, and token usage are decoded. Tool results are not stored in a known format, so tool calls have status `unknown` and keep the native step type and status in metadata; other unrecognized steps are skipped. Databases without steps are not listed. Titles come from the latest title step, the summary title, then the first user prompt. Steps without a native time use the summary update time or the database modification time and are marked as inferred, so collect excludes them. Usage repeated across retries is counted once and attached to the next assistant message; usage after the last step becomes a usage-only assistant message. Input includes cache tokens and session output includes reasoning; cost is not estimated. Raw export is unsupported. A malformed step or unsupported table fails only that session. See the [Antigravity CLI reading rules](docs/providers/antigravity-cli.md).
|
|
307
305
|
|
|
308
306
|
OpenCode supports legacy SQLite and 2.x `session_v2/session_message`. When both schemas coexist, V2 wins for the same session ID. Until `migration.v1-v2` is completed, legacy sessions that OpenCode has not copied yet stay listed; after that only V2 is read, so sessions deleted in V2 do not come back. Sessions without visible messages are not listed, and message counts include only visible messages. An empty title falls back to the first user text, then `Untitled Session`. V2 messages follow `seq` order. Image attachments become image parts; other attachments, `@agent`/`@skill` mentions, errors and system, compaction or switch records become labelled text. Only invalid message JSON or a non-array assistant `content` fails a V2 session; other malformed fields are left empty. Input tokens include cache reads and writes, output tokens include reasoning, and legacy parent sessions add their descendants' usage. ZCode uses the legacy reader, skips `subagent_child` sessions and keeps plan and image parts. Synthetic input, system/skill messages, compaction and shell records are excluded from collect. `OPENCODE_DB` selects a custom or channel database; a missing explicit path never falls back, and `:memory:` is unavailable. Referenced attachment files are never opened. Running and archived records remain readable; pending inbox items are excluded. Raw export remains normalized `.raw.json`, not an OpenCode import file. See the [design and acceptance scope](docs/providers/opencode-v2.md).
|
|
309
307
|
|
|
@@ -357,9 +355,11 @@ agent-dump --config view
|
|
|
357
355
|
agent-dump --config edit
|
|
358
356
|
```
|
|
359
357
|
|
|
360
|
-
`--query` uses the same matching as `--search`: whitespace-separated literal terms must all occur, anywhere in the title or transcript. Structured keys (`provider`, `role`, `path`, `limit`) activate structured parsing; quote values containing spaces. `role` restricts matching to those messages, and `limit` applies to the final global results. `error:timeout`
|
|
358
|
+
`--query` uses the same matching as `--search`: whitespace-separated literal terms must all occur, anywhere in the title or transcript. Structured keys (`provider`, `role`, `path`, `limit`) activate structured parsing; quote values containing spaces. `role` restricts matching to those messages, and `limit` applies to the final global results. Without a structured key, `error:timeout` is a plain term; once the query contains one, any other `key:value` token is rejected. Lists print all matches; interactive Provider counts reflect the filtered results.
|
|
359
|
+
|
|
360
|
+
Explicit provider scopes (`provider:`, legacy provider prefixes, or `providers=` in query URIs) are applied before discovery. Unselected providers are not scanned. An empty explicit scope result keeps the mode's no-match behavior, without probing unrelated providers.
|
|
361
361
|
|
|
362
|
-
Collect uses explicit `--since`/`--until` first, then explicit `--days`, otherwise today. `--save` accepts a directory or a `.md` file, with absolute or relative paths. The [collect section](#collect-
|
|
362
|
+
Collect uses explicit `--since`/`--until` first, then explicit `--days`, otherwise today. `--save` accepts a directory or a `.md` file, with absolute or relative paths. The [collect coverage section](#collect-coverage) describes full input coverage, exclusions, progress, and incomplete reports.
|
|
363
363
|
|
|
364
364
|
### Summarize with an external agent
|
|
365
365
|
|
|
@@ -442,7 +442,7 @@ Existing calls still accept `-days`, `-query`, `-format`, `-output`, `-summary`,
|
|
|
442
442
|
| `--interactive`, `-i` | Open the session reader to select and export sessions (same as `--browse` in a terminal) | - |
|
|
443
443
|
| `--days`, `-d` | Query sessions from the last positive N days. Values outside the supported calendar range are rejected. In collect mode, applies when `--since/--until` are omitted. | 7 outside collect; today only in collect |
|
|
444
444
|
| `--time-field` | Use `created` or `updated` time for the `--days` window in list/search/browse/interactive modes. | `updated` |
|
|
445
|
-
| `--query`, `-q` | Query filter. Keyword terms are split on whitespace and matched case-insensitively like `--search`; every term must occur in the session title or logical transcript. Supports a plain keyword or structured terms like `bug provider:codex role:user path:. limit:20`. Structured values containing spaces support shell-style quoting and escaping. `limit` must be a positive signed 64-bit integer.
|
|
445
|
+
| `--query`, `-q` | Query filter. Keyword terms are split on whitespace and matched case-insensitively like `--search`; every term must occur in the session title or logical transcript. Supports a plain keyword or structured terms like `bug provider:codex role:user path:. limit:20`. Structured values containing spaces support shell-style quoting and escaping. `limit` must be a positive signed 64-bit integer. Once the query contains a structured key, other `key:value` tokens are rejected. Cannot be combined with `agents://...` query URIs. | - |
|
|
446
446
|
| `--head` | URI mode only. Print bounded discovery metadata without rereading the transcript; message count is exact when discovery scanned the complete source and explicitly `unknown` otherwise. Does not export files or print body content. Cannot be combined with `--format` or `--summary`. | - |
|
|
447
447
|
| `--collect` | Collect sessions by date range, optionally constrained by `--query` or an `agents://...` query URI (mutually exclusive). Only visible user/assistant text is summarized; system/developer/tool messages, reasoning, plans, tool calls, and tool results are excluded, and empty projected sessions are ignored. PM mode extracts requests, decisions, and agent-reported outcomes before deterministic session merge and tree reduction. Multi-stage progress is shown on stderr. | - |
|
|
448
448
|
| `--collect-mode` | collect output mode: `pm` for project-management summaries, `insight` for author insight summaries. | `pm` |
|
|
@@ -473,7 +473,7 @@ When URI mode combines `print` with file formats, a print read/render failure is
|
|
|
473
473
|
|
|
474
474
|
See [CLI migration and the frozen Python release](docs/cli-compatibility.md#source-builds-and-python-api-migration).
|
|
475
475
|
|
|
476
|
-
###
|
|
476
|
+
### Collect coverage
|
|
477
477
|
|
|
478
478
|
Discovery failures are counted separately because the number of missing sessions is unknown. Reads that fail during query filtering also count as session read failures. These gaps are included in saved reports and completion logs; `--emit-prompt` carries them in its task metadata and fails if failures leave no candidates.
|
|
479
479
|
|
|
@@ -485,6 +485,8 @@ Collect discovers candidate sessions without a creation-time cutoff and processe
|
|
|
485
485
|
|
|
486
486
|
PM summaries merge sessions only within the same date and known working directory. Sessions without a working directory retain separate attribution.
|
|
487
487
|
|
|
488
|
+
### Configuration file
|
|
489
|
+
|
|
488
490
|
Default config path:
|
|
489
491
|
|
|
490
492
|
- macOS/Linux: `~/.config/agent-dump/config.toml`
|
{agent_dump-1.2.6 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/connection.rs
RENAMED
|
@@ -117,11 +117,7 @@ pub fn each_row(
|
|
|
117
117
|
mut visit: impl FnMut(Value) -> crate::Result<()>,
|
|
118
118
|
) -> crate::Result<()> {
|
|
119
119
|
let mut statement = connection.prepare(sql)?;
|
|
120
|
-
let names: Vec<String> = statement
|
|
121
|
-
.column_names()
|
|
122
|
-
.iter()
|
|
123
|
-
.map(|name| (*name).into())
|
|
124
|
-
.collect();
|
|
120
|
+
let names: Vec<String> = statement.column_names().map(Into::into).collect();
|
|
125
121
|
let mut rows = statement.query(parameters)?;
|
|
126
122
|
while let Some(row) = rows.next()? {
|
|
127
123
|
let mut record = Map::new();
|
|
@@ -2,6 +2,7 @@ use crate::query::Query;
|
|
|
2
2
|
use crate::query::scanner::ScannedProvider;
|
|
3
3
|
use crate::query::text::{Mode, TextQuery};
|
|
4
4
|
use crate::session::cache::SessionDataCache;
|
|
5
|
+
use crate::session::{Session, SessionData};
|
|
5
6
|
use std::collections::{HashMap, HashSet};
|
|
6
7
|
use std::io::Write;
|
|
7
8
|
|
|
@@ -160,7 +161,7 @@ fn fallback(
|
|
|
160
161
|
warnings: &mut impl Write,
|
|
161
162
|
) -> crate::Result<Selection> {
|
|
162
163
|
let mut selection = Selection::default();
|
|
163
|
-
let
|
|
164
|
+
let mut candidates = Vec::new();
|
|
164
165
|
for (g, group) in groups.iter().enumerate() {
|
|
165
166
|
for (s, session) in group.sessions.iter().enumerate() {
|
|
166
167
|
if !query.includes_path(&session.directory) {
|
|
@@ -173,23 +174,50 @@ fn fallback(
|
|
|
173
174
|
snippet: session.title.clone(),
|
|
174
175
|
rank: 0.0,
|
|
175
176
|
});
|
|
176
|
-
|
|
177
|
+
} else {
|
|
178
|
+
candidates.push((g, s));
|
|
177
179
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
let cache = SessionDataCache::default();
|
|
183
|
+
crate::parallel::ordered(
|
|
184
|
+
&candidates,
|
|
185
|
+
|&(g, s)| {
|
|
186
|
+
let group = &groups[g];
|
|
187
|
+
let session = &group.sessions[s];
|
|
188
|
+
let mut diagnostics = Vec::new();
|
|
189
|
+
let result = cache
|
|
190
|
+
.lease(
|
|
191
|
+
group.info.name,
|
|
192
|
+
group.provider.as_ref(),
|
|
193
|
+
session,
|
|
194
|
+
zh,
|
|
195
|
+
&mut |d| {
|
|
196
|
+
diagnostics.push(d);
|
|
197
|
+
Ok(())
|
|
198
|
+
},
|
|
199
|
+
)
|
|
200
|
+
.map(|data| evidence(&data, session, query, text));
|
|
201
|
+
(g, s, result, diagnostics)
|
|
202
|
+
},
|
|
203
|
+
|(g, s, result, diagnostics)| {
|
|
204
|
+
for diagnostic in diagnostics {
|
|
205
|
+
writeln!(
|
|
206
|
+
warnings,
|
|
207
|
+
"{}",
|
|
208
|
+
crate::output::diagnostics::record_warning(&diagnostic, zh)
|
|
209
|
+
)?;
|
|
210
|
+
}
|
|
211
|
+
let group = &groups[g];
|
|
212
|
+
let session = &group.sessions[s];
|
|
213
|
+
match result {
|
|
214
|
+
Ok(Some((snippet, rank))) => selection.matches.push(Match {
|
|
215
|
+
group: g,
|
|
216
|
+
session: s,
|
|
217
|
+
snippet,
|
|
218
|
+
rank,
|
|
219
|
+
}),
|
|
220
|
+
Ok(None) => {}
|
|
193
221
|
Err(error) => {
|
|
194
222
|
selection
|
|
195
223
|
.failures
|
|
@@ -212,56 +240,48 @@ fn fallback(
|
|
|
212
240
|
]
|
|
213
241
|
)
|
|
214
242
|
)?;
|
|
215
|
-
continue;
|
|
216
243
|
}
|
|
217
|
-
};
|
|
218
|
-
let evidence = if let Some(roles) = &query.roles {
|
|
219
|
-
data.messages
|
|
220
|
-
.iter()
|
|
221
|
-
.filter(|message| {
|
|
222
|
-
roles.contains(&message.role.to_lowercase())
|
|
223
|
-
})
|
|
224
|
-
.find_map(|message| {
|
|
225
|
-
if text.literals.is_empty() {
|
|
226
|
-
let content =
|
|
227
|
-
crate::query::transcript::message_texts(
|
|
228
|
-
message,
|
|
229
|
-
)
|
|
230
|
-
.join("\n");
|
|
231
|
-
let normalized =
|
|
232
|
-
crate::query::text::normalize(&content);
|
|
233
|
-
let excerpt: String =
|
|
234
|
-
normalized.chars().take(96).collect();
|
|
235
|
-
let snippet = if normalized.chars().count() > 96 {
|
|
236
|
-
format!("{}...", excerpt.trim_end())
|
|
237
|
-
} else {
|
|
238
|
-
excerpt
|
|
239
|
-
};
|
|
240
|
-
Some((snippet, 0.0))
|
|
241
|
-
} else {
|
|
242
|
-
let content =
|
|
243
|
-
crate::query::transcript::searchable_message(
|
|
244
|
-
message,
|
|
245
|
-
);
|
|
246
|
-
text.find(&[&content]).map(|e| (e.snippet, 0.0))
|
|
247
|
-
}
|
|
248
|
-
})
|
|
249
|
-
} else {
|
|
250
|
-
text.find(&[
|
|
251
|
-
&session.title,
|
|
252
|
-
&crate::query::transcript::searchable(&data),
|
|
253
|
-
])
|
|
254
|
-
.map(|e| (e.snippet, if e.title_matches { 1.0 } else { 0.0 }))
|
|
255
|
-
};
|
|
256
|
-
if let Some((snippet, rank)) = evidence {
|
|
257
|
-
selection.matches.push(Match {
|
|
258
|
-
group: g,
|
|
259
|
-
session: s,
|
|
260
|
-
snippet,
|
|
261
|
-
rank,
|
|
262
|
-
});
|
|
263
244
|
}
|
|
264
|
-
|
|
265
|
-
|
|
245
|
+
Ok(())
|
|
246
|
+
},
|
|
247
|
+
)?;
|
|
266
248
|
Ok(selection)
|
|
267
249
|
}
|
|
250
|
+
|
|
251
|
+
fn evidence(
|
|
252
|
+
data: &SessionData,
|
|
253
|
+
session: &Session,
|
|
254
|
+
query: &Query,
|
|
255
|
+
text: &TextQuery,
|
|
256
|
+
) -> Option<(String, f64)> {
|
|
257
|
+
if let Some(roles) = &query.roles {
|
|
258
|
+
data.messages
|
|
259
|
+
.iter()
|
|
260
|
+
.filter(|message| roles.contains(&message.role.to_lowercase()))
|
|
261
|
+
.find_map(|message| {
|
|
262
|
+
if text.literals.is_empty() {
|
|
263
|
+
let content =
|
|
264
|
+
crate::query::transcript::message_texts(message)
|
|
265
|
+
.join("\n");
|
|
266
|
+
let normalized = crate::query::text::normalize(&content);
|
|
267
|
+
let excerpt: String = normalized.chars().take(96).collect();
|
|
268
|
+
let snippet = if normalized.chars().count() > 96 {
|
|
269
|
+
format!("{}...", excerpt.trim_end())
|
|
270
|
+
} else {
|
|
271
|
+
excerpt
|
|
272
|
+
};
|
|
273
|
+
Some((snippet, 0.0))
|
|
274
|
+
} else {
|
|
275
|
+
let content =
|
|
276
|
+
crate::query::transcript::searchable_message(message);
|
|
277
|
+
text.find(&[&content]).map(|e| (e.snippet, 0.0))
|
|
278
|
+
}
|
|
279
|
+
})
|
|
280
|
+
} else {
|
|
281
|
+
text.find(&[
|
|
282
|
+
&session.title,
|
|
283
|
+
&crate::query::transcript::searchable(data),
|
|
284
|
+
])
|
|
285
|
+
.map(|e| (e.snippet, if e.title_matches { 1.0 } else { 0.0 }))
|
|
286
|
+
}
|
|
287
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
collect 与 summary
|
|
1
|
+
collect 与 summary 的固定提示词最初来自 Python 参考版本 `dca2d97`,以编译期字符串嵌入 Rust。
|
|
2
2
|
`{since}`、`{until}` 只接收已解析的日期,`{label}` 只接收内部归并阶段名。
|
|
3
3
|
所有来源正文、路径、标题与模型返回均进入有类型、来源和 Unicode 长度的 JSON envelope。
|
|
4
|
-
|
|
4
|
+
变更提示词属于可观察行为。
|
|
5
5
|
|
|
6
6
|
`read-session-en.txt` 和 `read-session-zh.txt` 是 `--read-prompt` 的读取说明,不调用模型。`__COMMANDS_JSON__` 由当前可执行文件和已校验 URI 构造的参数数组、shell 命令清单替换;不包含会话正文。CLI 契约测试覆盖所有已注册 Provider 的提示词和读取入口。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
use std::collections::VecDeque;
|
|
2
|
+
use std::panic::{AssertUnwindSafe, catch_unwind, resume_unwind};
|
|
3
|
+
use std::sync::mpsc;
|
|
4
|
+
|
|
5
|
+
/// Runs queued jobs with at most `limit` in flight. `handle` sees each result
|
|
6
|
+
/// on the calling thread and may add or drop queued jobs; an error stops new
|
|
7
|
+
/// jobs and returns once the running ones finish.
|
|
8
|
+
pub fn run<J: Send, R: Send>(
|
|
9
|
+
limit: usize,
|
|
10
|
+
mut queue: VecDeque<J>,
|
|
11
|
+
work: impl Fn(J) -> R + Sync,
|
|
12
|
+
mut handle: impl FnMut(R, &mut VecDeque<J>) -> crate::Result<()>,
|
|
13
|
+
) -> crate::Result<()> {
|
|
14
|
+
std::thread::scope(|scope| {
|
|
15
|
+
let (sender, receiver) = mpsc::channel();
|
|
16
|
+
let mut running = 0;
|
|
17
|
+
loop {
|
|
18
|
+
while running < limit.max(1)
|
|
19
|
+
&& let Some(job) = queue.pop_front()
|
|
20
|
+
{
|
|
21
|
+
let (sender, work) = (sender.clone(), &work);
|
|
22
|
+
scope.spawn(move || {
|
|
23
|
+
let result = catch_unwind(AssertUnwindSafe(|| work(job)));
|
|
24
|
+
let _ = sender.send(result);
|
|
25
|
+
});
|
|
26
|
+
running += 1;
|
|
27
|
+
}
|
|
28
|
+
if running == 0 {
|
|
29
|
+
return Ok(());
|
|
30
|
+
}
|
|
31
|
+
running -= 1;
|
|
32
|
+
match receiver.recv().expect("the pool keeps a sender") {
|
|
33
|
+
Ok(result) => handle(result, &mut queue)?,
|
|
34
|
+
Err(panic) => resume_unwind(panic),
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
}
|