agent-dump 1.2.5__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.
Files changed (143) hide show
  1. {agent_dump-1.2.5 → agent_dump-1.2.7}/Cargo.lock +36 -35
  2. {agent_dump-1.2.5 → agent_dump-1.2.7}/Cargo.toml +3 -2
  3. {agent_dump-1.2.5 → agent_dump-1.2.7}/PKG-INFO +15 -13
  4. {agent_dump-1.2.5 → agent_dump-1.2.7}/README.md +14 -12
  5. agent_dump-1.2.5/crates/agent-dump-core/src/compat/json.rs → agent_dump-1.2.7/crates/agent-dump-core/src/compat/json/mod.rs +5 -1
  6. agent_dump-1.2.7/crates/agent-dump-core/src/compat/mod.rs +5 -0
  7. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/diagnostics.rs +29 -7
  8. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/render.rs +13 -2
  9. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/antigravity_cli/mod.rs +6 -3
  10. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/antigravity_cli/tests.rs +44 -9
  11. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/claude/mod.rs +40 -8
  12. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/enrichment.rs +16 -4
  13. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/exec.rs +6 -1
  14. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/mod.rs +192 -41
  15. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/patch.rs +6 -1
  16. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/contract.rs +21 -6
  17. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/cursor/mod.rs +50 -11
  18. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/cursor/transcript.rs +7 -1
  19. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/cherry.rs +45 -8
  20. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/deepchat.rs +109 -26
  21. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/minimax.rs +83 -14
  22. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/mod.rs +21 -8
  23. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/desktop/tests.rs +163 -50
  24. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/droid/mod.rs +27 -6
  25. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/dsh/mod.rs +13 -4
  26. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/dsh/transcript.rs +6 -2
  27. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/gemini_cli/chat.rs +178 -24
  28. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/gemini_cli/mod.rs +5 -3
  29. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/grok/mod.rs +10 -4
  30. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi/mod.rs +43 -13
  31. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi_code/mod.rs +11 -5
  32. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/mod.rs +2 -2
  33. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/pi/mod.rs +150 -23
  34. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/connection.rs +8 -6
  35. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/legacy.rs +10 -5
  36. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/mod.rs +189 -33
  37. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/sqlite/v2.rs +30 -6
  38. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/text.rs +7 -4
  39. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/filter.rs +86 -66
  40. agent_dump-1.2.5/crates/agent-dump-core/src/query/index.rs → agent_dump-1.2.7/crates/agent-dump-core/src/query/index/mod.rs +142 -20
  41. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/index/tests.rs +16 -2
  42. {agent_dump-1.2.5 → agent_dump-1.2.7}/pyproject.toml +3 -4
  43. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/README.md +2 -2
  44. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/cli_args.rs +7 -8
  45. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/events.rs +12 -6
  46. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/handoff.rs +33 -8
  47. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/llm.rs +31 -11
  48. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/log.rs +17 -22
  49. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/mod.rs +1 -0
  50. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/model.rs +4 -2
  51. agent_dump-1.2.7/src/collect/pool.rs +38 -0
  52. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/progress.rs +2 -5
  53. agent_dump-1.2.5/src/collect/prompts.rs → agent_dump-1.2.7/src/collect/prompts/mod.rs +23 -21
  54. agent_dump-1.2.7/src/collect/reduction.rs +433 -0
  55. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/sessions.rs +19 -10
  56. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/collect/summary.rs +20 -7
  57. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/command.rs +243 -215
  58. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/date_input.rs +5 -14
  59. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/shortcut.rs +4 -4
  60. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/terminal/reader.rs +41 -7
  61. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/terminal/selector.rs +8 -15
  62. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/terminal/tui.rs +3 -3
  63. agent_dump-1.2.5/src/workflows/reader.rs → agent_dump-1.2.7/src/workflows/browse.rs +7 -9
  64. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/workflows/collect.rs +424 -289
  65. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/workflows/config.rs +17 -41
  66. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/workflows/interactive.rs +46 -58
  67. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/workflows/list.rs +63 -52
  68. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/workflows/machine.rs +21 -9
  69. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/workflows/maintenance.rs +27 -27
  70. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/workflows/mod.rs +1 -1
  71. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/workflows/read.rs +2 -3
  72. agent_dump-1.2.7/src/workflows/uri.rs +533 -0
  73. agent_dump-1.2.5/crates/agent-dump-core/src/compat/mod.rs +0 -2
  74. agent_dump-1.2.5/src/collect/reduction.rs +0 -313
  75. agent_dump-1.2.5/src/workflows/uri.rs +0 -491
  76. {agent_dump-1.2.5 → agent_dump-1.2.7}/LICENSE +0 -0
  77. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/Cargo.toml +0 -0
  78. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/compat/json/diagnostic.rs +0 -0
  79. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/compat/json/encoding.rs +0 -0
  80. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/compat/value.rs +0 -0
  81. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/config.rs +0 -0
  82. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/lib.rs +0 -0
  83. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/export.rs +0 -0
  84. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/formats.rs +0 -0
  85. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/i18n.rs +0 -0
  86. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/output/mod.rs +0 -0
  87. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/parallel.rs +0 -0
  88. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/antigravity_cli/proto.rs +0 -0
  89. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/antigravity_cli/transcript.rs +0 -0
  90. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/claude/transcript.rs +0 -0
  91. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/children.rs +0 -0
  92. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/rollout.rs +0 -0
  93. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/transcript.rs +0 -0
  94. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/codex/usage.rs +0 -0
  95. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/cursor/workspace.rs +0 -0
  96. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/dsh/log.rs +0 -0
  97. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/error.rs +0 -0
  98. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/files.rs +0 -0
  99. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/grok/transcript.rs +0 -0
  100. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/jsonl.rs +0 -0
  101. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi/transcript.rs +0 -0
  102. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi/wire.rs +0 -0
  103. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/kimi_code/wire.rs +0 -0
  104. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/pi/transcript.rs +0 -0
  105. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/registry.rs +0 -0
  106. /agent_dump-1.2.5/crates/agent-dump-core/src/providers/source_tests.rs → /agent_dump-1.2.7/crates/agent-dump-core/src/providers/tests.rs +0 -0
  107. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/providers/title.rs +0 -0
  108. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/context.rs +0 -0
  109. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/mod.rs +0 -0
  110. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/read.rs +0 -0
  111. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/scanner.rs +0 -0
  112. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/text.rs +0 -0
  113. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/query/transcript.rs +0 -0
  114. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/assembly.rs +0 -0
  115. /agent_dump-1.2.5/crates/agent-dump-core/src/session/cache.rs → /agent_dump-1.2.7/crates/agent-dump-core/src/session/cache/mod.rs +0 -0
  116. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/cache/tests.rs +0 -0
  117. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/mod.rs +0 -0
  118. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/session/timestamp.rs +0 -0
  119. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/storage/mod.rs +0 -0
  120. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/storage/private_files.rs +0 -0
  121. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/storage/source_io.rs +0 -0
  122. {agent_dump-1.2.5 → agent_dump-1.2.7}/crates/agent-dump-core/src/storage/zstd.rs +0 -0
  123. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/locales/en.json +0 -0
  124. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/locales/zh.json +0 -0
  125. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/.gitattributes +0 -0
  126. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/insight-chunk.txt +0 -0
  127. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/insight-handoff.txt +0 -0
  128. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/insight-merge.txt +0 -0
  129. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/insight-report.txt +0 -0
  130. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/insight-retry.txt +0 -0
  131. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/pm-chunk.txt +0 -0
  132. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/pm-handoff.txt +0 -0
  133. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/pm-merge.txt +0 -0
  134. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/pm-report.txt +0 -0
  135. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/pm-retry.txt +0 -0
  136. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/read-session-en.txt +0 -0
  137. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/read-session-zh.txt +0 -0
  138. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/system.txt +0 -0
  139. {agent_dump-1.2.5 → agent_dump-1.2.7}/resources/prompts/uri.txt +0 -0
  140. {agent_dump-1.2.5 → agent_dump-1.2.7}/rust-toolchain.toml +0 -0
  141. {agent_dump-1.2.5 → agent_dump-1.2.7}/rustfmt.toml +0 -0
  142. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/main.rs +0 -0
  143. {agent_dump-1.2.5 → agent_dump-1.2.7}/src/terminal/mod.rs +0 -0
@@ -10,7 +10,7 @@ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
10
 
11
11
  [[package]]
12
12
  name = "agent-dump"
13
- version = "1.2.5"
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.38.2"
929
+ version = "0.39.1"
930
930
  source = "registry+https://github.com/rust-lang/crates.io-index"
931
- checksum = "f1d20bef17f513b9b3004532233187769cd072d790971f4e4da0e346eb6401e8"
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.40.2"
1342
+ version = "0.41.1"
1343
1343
  source = "registry+https://github.com/rust-lang/crates.io-index"
1344
- checksum = "23f2a97da3e3873c73cb2a2e71b35c40ff95e0b1eefa8d72d8499a6928c3b5b3"
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.45"
1377
+ version = "0.23.46"
1378
1378
  source = "registry+https://github.com/rust-lang/crates.io-index"
1379
- checksum = "0d41d731c7d2f962d1ccc364cec258de3c0e93b38c2fb3ba97ac74513048d634"
1379
+ checksum = "48e13bd8c0e9365c43cfa5c9e8f9ad49d3c8444926c9aac819e0e4dc503c8fdf"
1380
1380
  dependencies = [
1381
1381
  "log",
1382
1382
  "once_cell",
@@ -1398,9 +1398,9 @@ dependencies = [
1398
1398
 
1399
1399
  [[package]]
1400
1400
  name = "rustls-webpki"
1401
- version = "0.103.15"
1401
+ version = "0.103.16"
1402
1402
  source = "registry+https://github.com/rust-lang/crates.io-index"
1403
- checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2"
1403
+ checksum = "4443b1b6d39d7c663139942cc4558262562d2c84123bb6282ef177009ca8b281"
1404
1404
  dependencies = [
1405
1405
  "ring",
1406
1406
  "rustls-pki-types",
@@ -1415,9 +1415,9 @@ checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f"
1415
1415
 
1416
1416
  [[package]]
1417
1417
  name = "ruzstd"
1418
- version = "0.9.0"
1418
+ version = "0.9.1"
1419
1419
  source = "registry+https://github.com/rust-lang/crates.io-index"
1420
- checksum = "a252f5e20f038fe7b4ea53e073e65398d652c864cc162fc77c56c2f13717b888"
1420
+ checksum = "69e4ce4a039f42bf25920b95667e4d789e98749ab11bbb8d2c2936f788421bb5"
1421
1421
 
1422
1422
  [[package]]
1423
1423
  name = "ryu"
@@ -1478,10 +1478,11 @@ dependencies = [
1478
1478
 
1479
1479
  [[package]]
1480
1480
  name = "serde_json"
1481
- version = "1.0.151"
1481
+ version = "1.0.154"
1482
1482
  source = "registry+https://github.com/rust-lang/crates.io-index"
1483
- checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14"
1483
+ checksum = "e7e9cc8b1b85264074fbcc02a88680c4096b1e47df8f739dceb03bf482f04bd6"
1484
1484
  dependencies = [
1485
+ "foldhash",
1485
1486
  "indexmap",
1486
1487
  "itoa",
1487
1488
  "memchr",
@@ -1492,9 +1493,9 @@ dependencies = [
1492
1493
 
1493
1494
  [[package]]
1494
1495
  name = "sha2"
1495
- version = "0.11.0"
1496
+ version = "0.11.1"
1496
1497
  source = "registry+https://github.com/rust-lang/crates.io-index"
1497
- checksum = "446ba717509524cb3f22f17ecc096f10f4822d76ab5c0b9822c5f9c284e825f4"
1498
+ checksum = "47d7069beb7d6ac7b9acd1039986e73443f24234f41074da099d6f994ac9ad19"
1498
1499
  dependencies = [
1499
1500
  "cfg-if",
1500
1501
  "cpufeatures",
@@ -1717,18 +1718,18 @@ checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee"
1717
1718
 
1718
1719
  [[package]]
1719
1720
  name = "toml_datetime"
1720
- version = "1.1.1+spec-1.1.0"
1721
+ version = "1.1.2+spec-1.1.0"
1721
1722
  source = "registry+https://github.com/rust-lang/crates.io-index"
1722
- checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
1723
+ checksum = "2b86d767906c6c42421dcba507eb9d203e779497710a47782a224bb871653053"
1723
1724
  dependencies = [
1724
1725
  "serde_core",
1725
1726
  ]
1726
1727
 
1727
1728
  [[package]]
1728
1729
  name = "toml_edit"
1729
- version = "0.25.15+spec-1.1.0"
1730
+ version = "0.25.17+spec-1.1.0"
1730
1731
  source = "registry+https://github.com/rust-lang/crates.io-index"
1731
- checksum = "1340ea94a5856333492c9064b02c778b191dd2c853778d9609debdcdfea3a614"
1732
+ checksum = "e3641d5bbb5349a79e1020a242d251efbc546ad8048d133958323ce9c40a9c9c"
1732
1733
  dependencies = [
1733
1734
  "indexmap",
1734
1735
  "toml_datetime",
@@ -1739,18 +1740,18 @@ dependencies = [
1739
1740
 
1740
1741
  [[package]]
1741
1742
  name = "toml_parser"
1742
- version = "1.1.3+spec-1.1.0"
1743
+ version = "1.1.5+spec-1.1.0"
1743
1744
  source = "registry+https://github.com/rust-lang/crates.io-index"
1744
- checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56"
1745
+ checksum = "baa693a8032d7e1cada7d0041e96126df243179ff061456783ac7f12bda4744c"
1745
1746
  dependencies = [
1746
1747
  "winnow",
1747
1748
  ]
1748
1749
 
1749
1750
  [[package]]
1750
1751
  name = "toml_writer"
1751
- version = "1.1.2+spec-1.1.0"
1752
+ version = "1.1.3+spec-1.1.0"
1752
1753
  source = "registry+https://github.com/rust-lang/crates.io-index"
1753
- checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2"
1754
+ checksum = "06bdbd8cfc056b8d2e2e85f29b56a3bdbecb527cef81eb39e3e7b98af4652770"
1754
1755
 
1755
1756
  [[package]]
1756
1757
  name = "typenum"
@@ -1766,9 +1767,9 @@ checksum = "d245f478577f809a851594d02313b640fb437e0bb33866753cff937863096954"
1766
1767
 
1767
1768
  [[package]]
1768
1769
  name = "unicode-normalization"
1769
- version = "0.1.25"
1770
+ version = "0.1.26"
1770
1771
  source = "registry+https://github.com/rust-lang/crates.io-index"
1771
- checksum = "5fd4f6878c9cb28d874b009da9e8d183b5abc80117c40bbd187a1fde336be6e8"
1772
+ checksum = "75cd3fb03d5288b3ba9a1ee103ac7e9cbb59f0b03d64f8ddfcc04dd42758a85d"
1772
1773
  dependencies = [
1773
1774
  "tinyvec",
1774
1775
  ]
@@ -1792,9 +1793,9 @@ dependencies = [
1792
1793
 
1793
1794
  [[package]]
1794
1795
  name = "unicode-width"
1795
- version = "0.2.2"
1796
+ version = "0.2.3"
1796
1797
  source = "registry+https://github.com/rust-lang/crates.io-index"
1797
- checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254"
1798
+ checksum = "ca718471876992059f251e33aafc334346ada08042b7661dd1fe313a9bced557"
1798
1799
 
1799
1800
  [[package]]
1800
1801
  name = "untrusted"
@@ -1804,9 +1805,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
1804
1805
 
1805
1806
  [[package]]
1806
1807
  name = "ureq"
1807
- version = "3.4.2"
1808
+ version = "3.5.0"
1808
1809
  source = "registry+https://github.com/rust-lang/crates.io-index"
1809
- checksum = "9a7ac20be9b7726e0bbdbf974c059676d9acb1cd414961f570a4e8231cacd7fc"
1810
+ checksum = "cde93ff05758a36a851a398a772b0b79a82fbe3c186a46f2696baaeaf84c966b"
1810
1811
  dependencies = [
1811
1812
  "base64 0.23.1",
1812
1813
  "cookie_store",
@@ -1824,9 +1825,9 @@ dependencies = [
1824
1825
 
1825
1826
  [[package]]
1826
1827
  name = "ureq-proto"
1827
- version = "0.6.4"
1828
+ version = "0.6.5"
1828
1829
  source = "registry+https://github.com/rust-lang/crates.io-index"
1829
- checksum = "f86fd172ccca569e458f61b6bdd6220965a9ef36e672a6852953b51a0e1583be"
1830
+ checksum = "841583fc36089d7d59419568ae157f43a5a03a2e5a81ba87c77d1596ef46e922"
1830
1831
  dependencies = [
1831
1832
  "base64 0.23.1",
1832
1833
  "http",
@@ -1866,9 +1867,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
1866
1867
 
1867
1868
  [[package]]
1868
1869
  name = "uuid"
1869
- version = "1.28.0"
1870
+ version = "1.29.0"
1870
1871
  source = "registry+https://github.com/rust-lang/crates.io-index"
1871
- checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606"
1872
+ checksum = "4a0e2d11620c50695fe12bbbfde96b3477fe606e7284c22d505c12ce51214514"
1872
1873
  dependencies = [
1873
1874
  "getrandom 0.4.3",
1874
1875
  "js-sys",
@@ -1950,9 +1951,9 @@ dependencies = [
1950
1951
 
1951
1952
  [[package]]
1952
1953
  name = "webpki-roots"
1953
- version = "1.0.9"
1954
+ version = "1.0.10"
1954
1955
  source = "registry+https://github.com/rust-lang/crates.io-index"
1955
- checksum = "7dcd9d09a39985f5344844e66b0c530a33843579125f23e21e9f0f220850f22a"
1956
+ checksum = "1c1c8e20c8a38fc7d65abfe74eb7280e4aa667e8eec8bc84996d2874810748d9"
1956
1957
  dependencies = [
1957
1958
  "rustls-pki-types",
1958
1959
  ]
@@ -9,6 +9,7 @@ unsafe_code = "deny"
9
9
  all = { level = "deny", priority = -1 }
10
10
  pedantic = { level = "deny", priority = -1 }
11
11
  nursery = { level = "warn", priority = -1 }
12
+ self_named_module_files = "deny"
12
13
  module_name_repetitions = "allow"
13
14
  missing_errors_doc = "allow"
14
15
  missing_panics_doc = "allow"
@@ -31,7 +32,7 @@ regex = "1"
31
32
  sha2 = "0.11"
32
33
  tempfile = "3"
33
34
  walkdir = "2"
34
- rusqlite = { version = "0.40", default-features = false, features = ["bundled"] }
35
+ rusqlite = { version = "0.41", default-features = false, features = ["bundled"] }
35
36
  num-bigint = "0.5"
36
37
  toml_edit = "0.25"
37
38
  ureq = { version = "3", features = ["json"] }
@@ -46,7 +47,7 @@ nix = { version = "0.31", default-features = false, features = ["fs", "user"] }
46
47
 
47
48
  [package]
48
49
  name = "agent-dump"
49
- version = "1.2.5"
50
+ version = "1.2.7"
50
51
  edition = "2024"
51
52
  rust-version = "1.90"
52
53
  publish = false
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-dump
3
- Version: 1.2.5
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, raised by `argparse` (unknown flag, invalid `--format` value). |
268
+ | `2` | Argument usage error rejected by the argument parser (unknown flag, invalid `--format` value). |
271
269
 
272
- This makes `agent-dump --list && ...` meaningful: it succeeds when sessions were
273
- listed and fails when there is nothing to list because no provider has data.
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 does not date 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).
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` remains a plain term. Lists print all matches; interactive Provider counts reflect the filtered results.
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-configuration-file) describes full input coverage, exclusions, progress, and incomplete reports.
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. Unknown structured keys are rejected. Cannot be combined with `agents://...` query URIs. | - |
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
- ### collect configuration file
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`
@@ -706,7 +708,7 @@ web/ # Landing page
706
708
 
707
709
  ## Development
708
710
 
709
- Rust is the build and runtime implementation starting with v1.0.0, with Ratatui for terminal interaction. The old Python application has been removed from the working tree. CI and `just isok` run Rust behavior contracts without the historical Python CLI. Optional differential tests install the immutable 0.15.9 wheel in an isolated reference environment through `just test-differential`. Migration plans and acceptance records remain in Git history. See [project goals](docs/product.md) and [architecture](docs/architecture.md) for the current design.
711
+ Rust is the build and runtime implementation starting with v1.0.0, with Ratatui for terminal interaction. The old Python application has been removed from the working tree. CI and `just isok` run Rust behavior contracts without the historical Python CLI. Paired performance evaluation installs the immutable 0.15.9 wheel in an isolated reference environment through `just reference`. Migration plans and acceptance records remain in Git history. See [project goals](docs/product.md) and [architecture](docs/architecture.md) for the current design.
710
712
 
711
713
  ```bash
712
714
  # Run Cargo directly from the repository root
@@ -742,7 +744,7 @@ just build-npm
742
744
  just test-npm-smoke
743
745
  ```
744
746
 
745
- Both crates inherit workspace lints: unsafe code is denied, Clippy all/pedantic are denied, and nursery warnings fail the gate through `-D warnings`. Explicit exceptions and their reasons are documented in the [development guide](docs/development-guide.md#rust-格式与-lint). Existing CLI differential and tooling tests remain in `tests/`.
747
+ Both crates inherit workspace lints: unsafe code is denied, Clippy all/pedantic are denied, and nursery warnings fail the gate through `-D warnings`. Explicit exceptions and their reasons are documented in the [development guide](docs/development-guide.md#rust-格式与-lint). CLI contract and tooling tests remain in `tests/`.
746
748
 
747
749
  ## Release
748
750
 
@@ -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, raised by `argparse` (unknown flag, invalid `--format` value). |
244
+ | `2` | Argument usage error rejected by the argument parser (unknown flag, invalid `--format` value). |
247
245
 
248
- This makes `agent-dump --list && ...` meaningful: it succeeds when sessions were
249
- listed and fails when there is nothing to list because no provider has data.
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 does not date 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).
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` remains a plain term. Lists print all matches; interactive Provider counts reflect the filtered results.
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-configuration-file) describes full input coverage, exclusions, progress, and incomplete reports.
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. Unknown structured keys are rejected. Cannot be combined with `agents://...` query URIs. | - |
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
- ### collect configuration file
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`
@@ -682,7 +684,7 @@ web/ # Landing page
682
684
 
683
685
  ## Development
684
686
 
685
- Rust is the build and runtime implementation starting with v1.0.0, with Ratatui for terminal interaction. The old Python application has been removed from the working tree. CI and `just isok` run Rust behavior contracts without the historical Python CLI. Optional differential tests install the immutable 0.15.9 wheel in an isolated reference environment through `just test-differential`. Migration plans and acceptance records remain in Git history. See [project goals](docs/product.md) and [architecture](docs/architecture.md) for the current design.
687
+ Rust is the build and runtime implementation starting with v1.0.0, with Ratatui for terminal interaction. The old Python application has been removed from the working tree. CI and `just isok` run Rust behavior contracts without the historical Python CLI. Paired performance evaluation installs the immutable 0.15.9 wheel in an isolated reference environment through `just reference`. Migration plans and acceptance records remain in Git history. See [project goals](docs/product.md) and [architecture](docs/architecture.md) for the current design.
686
688
 
687
689
  ```bash
688
690
  # Run Cargo directly from the repository root
@@ -718,7 +720,7 @@ just build-npm
718
720
  just test-npm-smoke
719
721
  ```
720
722
 
721
- Both crates inherit workspace lints: unsafe code is denied, Clippy all/pedantic are denied, and nursery warnings fail the gate through `-D warnings`. Explicit exceptions and their reasons are documented in the [development guide](docs/development-guide.md#rust-格式与-lint). Existing CLI differential and tooling tests remain in `tests/`.
723
+ Both crates inherit workspace lints: unsafe code is denied, Clippy all/pedantic are denied, and nursery warnings fail the gate through `-D warnings`. Explicit exceptions and their reasons are documented in the [development guide](docs/development-guide.md#rust-格式与-lint). CLI contract and tooling tests remain in `tests/`.
722
724
 
723
725
  ## Release
724
726
 
@@ -130,7 +130,11 @@ pub struct Formatter(serde_json::ser::PrettyFormatter<'static>);
130
130
 
131
131
  macro_rules! delegate {
132
132
  ($($name:ident($($argument:ident: $type:ty),*));* $(;)?) => {
133
- $(fn $name<W: ?Sized + Write>(&mut self, writer: &mut W, $($argument: $type),*) -> io::Result<()> {
133
+ $(fn $name<W: ?Sized + Write>(
134
+ &mut self,
135
+ writer: &mut W,
136
+ $($argument: $type),*
137
+ ) -> io::Result<()> {
134
138
  self.0.$name(writer, $($argument),*)
135
139
  })*
136
140
  };
@@ -0,0 +1,5 @@
1
+ //! Preserves the Python-compatible JSON and value semantics of existing
2
+ //! observable output. Frozen: do not extend; new code should not use it.
3
+
4
+ pub mod json;
5
+ pub mod value;
@@ -157,13 +157,28 @@ impl Diagnostic {
157
157
  zh: bool,
158
158
  ) -> Self {
159
159
  Self {
160
- summary: if zh { "命令因未预期的错误中止。" } else { "Command aborted with an unexpected error." }.into(),
160
+ summary: if zh {
161
+ "命令因未预期的错误中止。"
162
+ } else {
163
+ "Command aborted with an unexpected error."
164
+ }
165
+ .into(),
161
166
  details: vec![provider_error::operation_message(error, zh)],
162
167
  next_steps: if zh {
163
- ["重试一次以确认是否为瞬时故障。", "若可稳定复现,请带上上面的错误类型与命令参数提交 issue。"]
168
+ [
169
+ "重试一次以确认是否为瞬时故障。",
170
+ "若可稳定复现,请带上上面的错误类型与命令参数提交 issue。",
171
+ ]
164
172
  } else {
165
- ["Retry once to check whether the failure is transient.", "If it reproduces consistently, open an issue with the error type above and your command arguments."]
166
- }.into_iter().map(str::to_owned).collect(),
173
+ [
174
+ "Retry once to check whether the failure is transient.",
175
+ "If it reproduces consistently, open an issue with the \
176
+ error type above and your command arguments.",
177
+ ]
178
+ }
179
+ .into_iter()
180
+ .map(str::to_owned)
181
+ .collect(),
167
182
  ..Self::default()
168
183
  }
169
184
  }
@@ -235,7 +250,12 @@ impl Diagnostic {
235
250
  "检查 URI 中的 session id 是否完整且对应正确 provider。".into(),
236
251
  ]
237
252
  } else {
238
- vec!["Run `agent-dump --list` to confirm the session still exists.".into(), "Check that the session id in the URI is complete and belongs to that provider.".into()]
253
+ vec![
254
+ "Run `agent-dump --list` to confirm the session still \
255
+ exists.".into(),
256
+ "Check that the session id in the URI is complete and \
257
+ belongs to that provider.".into(),
258
+ ]
239
259
  },
240
260
  ..Self::default()
241
261
  }
@@ -380,8 +400,10 @@ impl Diagnostic {
380
400
  ],
381
401
  (false, None) => &[
382
402
  "Confirm the agent has produced session data on this machine.",
383
- "If you use a custom directory, check that the relevant environment variable points at it.",
384
- "In a development environment, check whether the `data/<agent>` fallback directory exists.",
403
+ "If you use a custom directory, check that the relevant \
404
+ environment variable points at it.",
405
+ "In a development environment, check whether the \
406
+ `data/<agent>` fallback directory exists.",
385
407
  ],
386
408
  };
387
409
  Self {
@@ -2,7 +2,17 @@ use crate::session::{Part, Session, SessionData};
2
2
  use std::fmt::Write;
3
3
 
4
4
  const fn unsafe_char(c: char) -> bool {
5
- matches!(c, '\u{0}'..='\u{8}' | '\u{b}'..='\u{1f}' | '\u{7f}'..='\u{9f}' | '\u{61c}' | '\u{200e}' | '\u{200f}' | '\u{202a}'..='\u{202e}' | '\u{2066}'..='\u{2069}')
5
+ matches!(
6
+ c,
7
+ '\u{0}'..='\u{8}'
8
+ | '\u{b}'..='\u{1f}'
9
+ | '\u{7f}'..='\u{9f}'
10
+ | '\u{61c}'
11
+ | '\u{200e}'
12
+ | '\u{200f}'
13
+ | '\u{202a}'..='\u{202e}'
14
+ | '\u{2066}'..='\u{2069}'
15
+ )
6
16
  }
7
17
  pub fn safe_body(text: &str) -> String {
8
18
  let mut safe = String::with_capacity(text.len());
@@ -181,7 +191,8 @@ pub fn excerpt(
181
191
  incomplete: bool,
182
192
  ) -> String {
183
193
  let mut output = format!(
184
- "# Session Context\n\n- URI: `{}`\n- Locator: `{}`\n- Messages: {}–{} of {}\n- Status: {}\n\n",
194
+ "# Session Context\n\n- URI: `{}`\n- Locator: `{}`\n- Messages: {}–{} \
195
+ of {}\n- Status: {}\n\n",
185
196
  safe_line(uri),
186
197
  safe_line(locator),
187
198
  range.start + 1,
@@ -60,7 +60,8 @@ fn read_summaries(
60
60
  }
61
61
  let connection = connect(&path)?;
62
62
  let mut statement = connection.prepare(
63
- "SELECT conversation_id, title, workspace_uris, last_modified_time FROM conversation_summaries",
63
+ "SELECT conversation_id, title, workspace_uris, last_modified_time \
64
+ FROM conversation_summaries",
64
65
  )?;
65
66
  let mut rows = statement.query([])?;
66
67
  while let Some(row) = rows.next()? {
@@ -153,7 +154,8 @@ fn session(
153
154
  impl AntigravityCli {
154
155
  #[allow(
155
156
  clippy::unnecessary_wraps,
156
- reason = "Provider factories share the fallible registry interface; source access is deferred"
157
+ reason = "Provider factories share the fallible registry interface; \
158
+ source access is deferred"
157
159
  )]
158
160
  pub fn open() -> crate::Result<Self> {
159
161
  Ok(Self {
@@ -198,7 +200,8 @@ impl AntigravityCli {
198
200
  source_roots(self)?,
199
201
  vec![
200
202
  [
201
- "Confirm the Antigravity CLI conversation database has not been moved or cleaned up.",
203
+ "Confirm the Antigravity CLI conversation database has \
204
+ not been moved or cleaned up.",
202
205
  "确认 Antigravity CLI 会话数据库没有被移动或清理。",
203
206
  ],
204
207
  [