agent-dump 1.2.5__tar.gz → 1.2.6__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 (141) hide show
  1. {agent_dump-1.2.5 → agent_dump-1.2.6}/Cargo.lock +20 -19
  2. {agent_dump-1.2.5 → agent_dump-1.2.6}/Cargo.toml +2 -1
  3. {agent_dump-1.2.5 → agent_dump-1.2.6}/PKG-INFO +3 -3
  4. {agent_dump-1.2.5 → agent_dump-1.2.6}/README.md +2 -2
  5. agent_dump-1.2.5/crates/agent-dump-core/src/compat/json.rs → agent_dump-1.2.6/crates/agent-dump-core/src/compat/json/mod.rs +5 -1
  6. agent_dump-1.2.6/crates/agent-dump-core/src/compat/mod.rs +5 -0
  7. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/output/diagnostics.rs +29 -7
  8. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/output/render.rs +13 -2
  9. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/antigravity_cli/mod.rs +6 -3
  10. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/antigravity_cli/tests.rs +44 -9
  11. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/claude/mod.rs +40 -8
  12. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/codex/enrichment.rs +16 -4
  13. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/codex/exec.rs +6 -1
  14. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/codex/mod.rs +192 -41
  15. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/codex/patch.rs +6 -1
  16. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/contract.rs +21 -6
  17. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/cursor/mod.rs +50 -11
  18. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/cursor/transcript.rs +7 -1
  19. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/desktop/cherry.rs +45 -8
  20. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/desktop/deepchat.rs +109 -26
  21. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/desktop/minimax.rs +83 -14
  22. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/desktop/mod.rs +21 -8
  23. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/desktop/tests.rs +163 -50
  24. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/droid/mod.rs +27 -6
  25. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/dsh/mod.rs +13 -4
  26. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/dsh/transcript.rs +6 -2
  27. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/gemini_cli/chat.rs +178 -24
  28. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/gemini_cli/mod.rs +5 -3
  29. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/grok/mod.rs +10 -4
  30. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/kimi/mod.rs +43 -13
  31. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/kimi_code/mod.rs +11 -5
  32. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/mod.rs +2 -2
  33. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/pi/mod.rs +150 -23
  34. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/sqlite/connection.rs +7 -1
  35. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/sqlite/legacy.rs +10 -5
  36. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/sqlite/mod.rs +189 -33
  37. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/sqlite/v2.rs +30 -6
  38. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/text.rs +7 -4
  39. agent_dump-1.2.5/crates/agent-dump-core/src/query/index.rs → agent_dump-1.2.6/crates/agent-dump-core/src/query/index/mod.rs +142 -20
  40. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/query/index/tests.rs +16 -2
  41. {agent_dump-1.2.5 → agent_dump-1.2.6}/pyproject.toml +3 -4
  42. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/cli_args.rs +7 -8
  43. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/events.rs +12 -6
  44. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/handoff.rs +33 -8
  45. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/llm.rs +31 -11
  46. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/log.rs +17 -22
  47. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/model.rs +4 -2
  48. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/progress.rs +2 -5
  49. agent_dump-1.2.5/src/collect/prompts.rs → agent_dump-1.2.6/src/collect/prompts/mod.rs +23 -21
  50. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/reduction.rs +55 -8
  51. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/sessions.rs +19 -10
  52. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/summary.rs +20 -7
  53. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/command.rs +243 -215
  54. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/date_input.rs +5 -14
  55. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/shortcut.rs +4 -4
  56. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/terminal/reader.rs +41 -7
  57. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/terminal/selector.rs +8 -15
  58. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/terminal/tui.rs +3 -3
  59. agent_dump-1.2.5/src/workflows/reader.rs → agent_dump-1.2.6/src/workflows/browse.rs +7 -9
  60. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/workflows/collect.rs +410 -289
  61. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/workflows/config.rs +17 -41
  62. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/workflows/interactive.rs +46 -58
  63. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/workflows/list.rs +23 -28
  64. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/workflows/machine.rs +21 -9
  65. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/workflows/maintenance.rs +27 -27
  66. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/workflows/mod.rs +1 -1
  67. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/workflows/read.rs +2 -3
  68. agent_dump-1.2.6/src/workflows/uri.rs +533 -0
  69. agent_dump-1.2.5/crates/agent-dump-core/src/compat/mod.rs +0 -2
  70. agent_dump-1.2.5/src/workflows/uri.rs +0 -491
  71. {agent_dump-1.2.5 → agent_dump-1.2.6}/LICENSE +0 -0
  72. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/Cargo.toml +0 -0
  73. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/compat/json/diagnostic.rs +0 -0
  74. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/compat/json/encoding.rs +0 -0
  75. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/compat/value.rs +0 -0
  76. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/config.rs +0 -0
  77. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/lib.rs +0 -0
  78. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/output/export.rs +0 -0
  79. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/output/formats.rs +0 -0
  80. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/output/i18n.rs +0 -0
  81. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/output/mod.rs +0 -0
  82. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/parallel.rs +0 -0
  83. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/antigravity_cli/proto.rs +0 -0
  84. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/antigravity_cli/transcript.rs +0 -0
  85. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/claude/transcript.rs +0 -0
  86. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/codex/children.rs +0 -0
  87. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/codex/rollout.rs +0 -0
  88. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/codex/transcript.rs +0 -0
  89. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/codex/usage.rs +0 -0
  90. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/cursor/workspace.rs +0 -0
  91. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/dsh/log.rs +0 -0
  92. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/error.rs +0 -0
  93. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/files.rs +0 -0
  94. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/grok/transcript.rs +0 -0
  95. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/jsonl.rs +0 -0
  96. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/kimi/transcript.rs +0 -0
  97. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/kimi/wire.rs +0 -0
  98. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/kimi_code/wire.rs +0 -0
  99. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/pi/transcript.rs +0 -0
  100. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/registry.rs +0 -0
  101. /agent_dump-1.2.5/crates/agent-dump-core/src/providers/source_tests.rs → /agent_dump-1.2.6/crates/agent-dump-core/src/providers/tests.rs +0 -0
  102. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/providers/title.rs +0 -0
  103. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/query/context.rs +0 -0
  104. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/query/filter.rs +0 -0
  105. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/query/mod.rs +0 -0
  106. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/query/read.rs +0 -0
  107. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/query/scanner.rs +0 -0
  108. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/query/text.rs +0 -0
  109. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/query/transcript.rs +0 -0
  110. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/session/assembly.rs +0 -0
  111. /agent_dump-1.2.5/crates/agent-dump-core/src/session/cache.rs → /agent_dump-1.2.6/crates/agent-dump-core/src/session/cache/mod.rs +0 -0
  112. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/session/cache/tests.rs +0 -0
  113. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/session/mod.rs +0 -0
  114. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/session/timestamp.rs +0 -0
  115. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/storage/mod.rs +0 -0
  116. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/storage/private_files.rs +0 -0
  117. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/storage/source_io.rs +0 -0
  118. {agent_dump-1.2.5 → agent_dump-1.2.6}/crates/agent-dump-core/src/storage/zstd.rs +0 -0
  119. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/locales/en.json +0 -0
  120. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/locales/zh.json +0 -0
  121. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/.gitattributes +0 -0
  122. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/README.md +0 -0
  123. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/insight-chunk.txt +0 -0
  124. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/insight-handoff.txt +0 -0
  125. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/insight-merge.txt +0 -0
  126. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/insight-report.txt +0 -0
  127. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/insight-retry.txt +0 -0
  128. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/pm-chunk.txt +0 -0
  129. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/pm-handoff.txt +0 -0
  130. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/pm-merge.txt +0 -0
  131. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/pm-report.txt +0 -0
  132. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/pm-retry.txt +0 -0
  133. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/read-session-en.txt +0 -0
  134. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/read-session-zh.txt +0 -0
  135. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/system.txt +0 -0
  136. {agent_dump-1.2.5 → agent_dump-1.2.6}/resources/prompts/uri.txt +0 -0
  137. {agent_dump-1.2.5 → agent_dump-1.2.6}/rust-toolchain.toml +0 -0
  138. {agent_dump-1.2.5 → agent_dump-1.2.6}/rustfmt.toml +0 -0
  139. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/collect/mod.rs +0 -0
  140. {agent_dump-1.2.5 → agent_dump-1.2.6}/src/main.rs +0 -0
  141. {agent_dump-1.2.5 → agent_dump-1.2.6}/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.6"
14
14
  dependencies = [
15
15
  "agent-dump-core",
16
16
  "caseless",
@@ -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"
@@ -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"
@@ -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.6"
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.6
4
4
  Classifier: Environment :: Console
5
5
  Classifier: License :: OSI Approved :: MIT License
6
6
  Classifier: Programming Language :: Rust
@@ -706,7 +706,7 @@ web/ # Landing page
706
706
 
707
707
  ## Development
708
708
 
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.
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. 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
710
 
711
711
  ```bash
712
712
  # Run Cargo directly from the repository root
@@ -742,7 +742,7 @@ just build-npm
742
742
  just test-npm-smoke
743
743
  ```
744
744
 
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/`.
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). CLI contract and tooling tests remain in `tests/`.
746
746
 
747
747
  ## Release
748
748
 
@@ -682,7 +682,7 @@ web/ # Landing page
682
682
 
683
683
  ## Development
684
684
 
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.
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. 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
686
 
687
687
  ```bash
688
688
  # Run Cargo directly from the repository root
@@ -718,7 +718,7 @@ just build-npm
718
718
  just test-npm-smoke
719
719
  ```
720
720
 
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/`.
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). CLI contract and tooling tests remain in `tests/`.
722
722
 
723
723
  ## Release
724
724
 
@@ -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
  [
@@ -4,11 +4,14 @@ use rusqlite::Connection;
4
4
  use serde_json::json;
5
5
 
6
6
  const FIXTURE: &str = "
7
- CREATE TABLE steps (idx INTEGER PRIMARY KEY, step_type INTEGER NOT NULL, status INTEGER NOT NULL, step_payload BLOB);
7
+ CREATE TABLE steps (idx INTEGER PRIMARY KEY, step_type INTEGER NOT NULL, \
8
+ status INTEGER NOT NULL, step_payload BLOB);
8
9
  CREATE TABLE gen_metadata (idx INTEGER PRIMARY KEY, data BLOB);
9
10
  INSERT INTO steps VALUES (1, 14, 3, X'9a010412024869');
10
11
  INSERT INTO steps VALUES (2, 15, 3, X'a201060a04446f6e65');
11
- INSERT INTO steps VALUES (3, 132, 3, X'2a2322210a0663616c6c2d311209726561645f66696c651a0c7b2270617468223a2261227d');
12
+ INSERT INTO steps VALUES (3, 132, 3, \
13
+ X'2a2322210a0663616c6c2d311209726561645f66696c65\
14
+ 1a0c7b2270617468223a2261227d');
12
15
  INSERT INTO steps VALUES (4, 23, 3, X'f20109220741207469746c65');
13
16
  INSERT INTO steps VALUES (5, 999, 3, X'a00601');
14
17
  ";
@@ -52,12 +55,25 @@ fn native_steps_keep_order_tools_titles_and_summary_facts() {
52
55
  let summaries =
53
56
  Connection::open(root.path().join("conversation_summaries.db"))
54
57
  .unwrap();
55
- summaries.execute_batch("CREATE TABLE conversation_summaries (conversation_id TEXT PRIMARY KEY, title TEXT, workspace_uris TEXT, last_modified_time TEXT, parent_conversation_id TEXT);").unwrap();
58
+ summaries
59
+ .execute_batch(
60
+ "CREATE TABLE conversation_summaries (\
61
+ conversation_id TEXT PRIMARY KEY, title TEXT, \
62
+ workspace_uris TEXT, last_modified_time TEXT, \
63
+ parent_conversation_id TEXT);",
64
+ )
65
+ .unwrap();
56
66
  let workspace = root.path().join("agy-fixture");
57
67
  summaries
58
68
  .execute(
59
- "INSERT INTO conversation_summaries VALUES ('session', 'Summary title', ?1, '2026-09-02 16:57:28.971105+00:00', '')",
60
- [json!(["not a uri", url::Url::from_file_path(&workspace).unwrap().as_str()]).to_string()],
69
+ "INSERT INTO conversation_summaries VALUES \
70
+ ('session', 'Summary title', ?1, \
71
+ '2026-09-02 16:57:28.971105+00:00', '')",
72
+ [json!([
73
+ "not a uri",
74
+ url::Url::from_file_path(&workspace).unwrap().as_str(),
75
+ ])
76
+ .to_string()],
61
77
  )
62
78
  .unwrap();
63
79
  let mut provider = provider(root.path());
@@ -104,11 +120,24 @@ fn native_steps_keep_order_tools_titles_and_summary_facts() {
104
120
  );
105
121
  assert_eq!(
106
122
  tool["state"],
107
- json!({"status": "unknown", "input": {"path": "a"}, "output": null, "metadata": {"antigravity_step_type": 132, "antigravity_status": 3}})
123
+ json!({
124
+ "status": "unknown",
125
+ "input": {"path": "a"},
126
+ "output": null,
127
+ "metadata": {
128
+ "antigravity_step_type": 132,
129
+ "antigravity_status": 3,
130
+ },
131
+ })
108
132
  );
109
133
  assert_eq!(
110
134
  data["stats"],
111
- json!({"total_cost": 0, "total_input_tokens": 0, "total_output_tokens": 0, "message_count": 3})
135
+ json!({
136
+ "total_cost": 0,
137
+ "total_input_tokens": 0,
138
+ "total_output_tokens": 0,
139
+ "message_count": 3,
140
+ })
112
141
  );
113
142
  assert_eq!(
114
143
  provider
@@ -215,7 +244,13 @@ fn usage_deduplicates_retries_and_attaches_to_the_next_assistant_message() {
215
244
  assert_eq!(usage["tokens"]["output"], 2);
216
245
  assert_eq!(
217
246
  data["stats"],
218
- json!({"total_cost": 0, "total_input_tokens": 193, "total_output_tokens": 37, "message_count": 5, "total_tokens": 230})
247
+ json!({
248
+ "total_cost": 0,
249
+ "total_input_tokens": 193,
250
+ "total_output_tokens": 37,
251
+ "message_count": 5,
252
+ "total_tokens": 230,
253
+ })
219
254
  );
220
255
  assert_eq!(session.created_at.as_millisecond(), 1_788_000_001_500);
221
256
  }
@@ -286,7 +321,7 @@ fn empty_databases_are_skipped_and_invalid_ones_fail_alone() {
286
321
 
287
322
  #[test]
288
323
  fn source_selection_retries_absence_and_keeps_selected_root() {
289
- crate::providers::source_tests::source_selection(
324
+ crate::providers::tests::source_selection(
290
325
  "conversations",
291
326
  false,
292
327
  |roots| AntigravityCli { roots },
@@ -302,7 +302,8 @@ pub struct Claude {
302
302
  impl Claude {
303
303
  #[allow(
304
304
  clippy::unnecessary_wraps,
305
- reason = "Provider factories share the fallible registry interface; source access is deferred"
305
+ reason = "Provider factories share the fallible registry interface; \
306
+ source access is deferred"
306
307
  )]
307
308
  pub fn open(kind: Kind) -> crate::Result<Self> {
308
309
  Ok(Self {
@@ -595,9 +596,14 @@ impl Provider for Claude {
595
596
  crate::providers::contract::source_roots(self)?,
596
597
  vec![
597
598
  self.kind.location_hint(),
598
- ["Re-run `agent-dump --list` to confirm the session still exists.", "重新运行 `agent-dump --list` 确认该会话是否仍存在。"],
599
+ [
600
+ "Re-run `agent-dump --list` to confirm the session \
601
+ still exists.",
602
+ "重新运行 `agent-dump --list` 确认该会话是否仍存在。",
603
+ ],
599
604
  ],
600
- ).into());
605
+ )
606
+ .into());
601
607
  }
602
608
  crate::providers::claude::transcript::read(
603
609
  session,
@@ -626,7 +632,7 @@ mod tests {
626
632
 
627
633
  #[test]
628
634
  fn source_selection_retries_absence_and_keeps_selected_root() {
629
- crate::providers::source_tests::source_selection(
635
+ crate::providers::tests::source_selection(
630
636
  "projects",
631
637
  true,
632
638
  |roots| Claude {
@@ -637,7 +643,15 @@ mod tests {
637
643
  |base| {
638
644
  let path = base.join("project/kept.jsonl");
639
645
  std::fs::create_dir_all(path.parent().unwrap()).unwrap();
640
- std::fs::write(&path, concat!(r#"{"type":"user","timestamp":"2026-01-15T00:00:00Z","message":{"role":"user","content":"Keep"}}"#, "\n")).unwrap();
646
+ std::fs::write(
647
+ &path,
648
+ concat!(
649
+ r#"{"type":"user","timestamp":"2026-01-15T00:00:00Z","#,
650
+ r#""message":{"role":"user","content":"Keep"}}"#,
651
+ "\n",
652
+ ),
653
+ )
654
+ .unwrap();
641
655
  path
642
656
  },
643
657
  );
@@ -654,7 +668,16 @@ mod tests {
654
668
  ] {
655
669
  let path = projects.join(project).join(format!("{id}.jsonl"));
656
670
  std::fs::create_dir_all(path.parent().unwrap()).unwrap();
657
- std::fs::write(&path, serde_json::json!({"type": "user", "timestamp": "2026-01-15T00:00:00Z", "message": {"role": "user", "content": "Fallback"}}).to_string()).unwrap();
671
+ std::fs::write(
672
+ &path,
673
+ serde_json::json!({
674
+ "type": "user",
675
+ "timestamp": "2026-01-15T00:00:00Z",
676
+ "message": {"role": "user", "content": "Fallback"}
677
+ })
678
+ .to_string(),
679
+ )
680
+ .unwrap();
658
681
  }
659
682
  let index = projects.join("first/sessions-index.json");
660
683
  std::fs::write(&index, "[]").unwrap();
@@ -719,7 +742,16 @@ mod tests {
719
742
  let directory = tempfile::tempdir().unwrap();
720
743
  let path = directory.path().join("projects/project/kept.jsonl");
721
744
  std::fs::create_dir_all(path.parent().unwrap()).unwrap();
722
- std::fs::write(&path, "{\"type\":\"user\",\"sessionId\":\"kept\",\"timestamp\":\"2026-01-15T00:00:00Z\",\"message\":{\"role\":\"user\",\"content\":\"hello\"}}\n").unwrap();
745
+ std::fs::write(
746
+ &path,
747
+ concat!(
748
+ r#"{"type":"user","sessionId":"kept","#,
749
+ r#""timestamp":"2026-01-15T00:00:00Z","#,
750
+ r#""message":{"role":"user","content":"hello"}}"#,
751
+ "\n",
752
+ ),
753
+ )
754
+ .unwrap();
723
755
  let provider = Claude {
724
756
  kind: Kind::Claude,
725
757
  roots: SourceRoots::fixed(
@@ -730,7 +762,7 @@ mod tests {
730
762
  ),
731
763
  titles: HashMap::new(),
732
764
  };
733
- crate::providers::source_tests::removed_file(
765
+ crate::providers::tests::removed_file(
734
766
  provider,
735
767
  &path,
736
768
  "kept",
@@ -22,7 +22,15 @@ static CONTEXT_BLOCK: LazyLock<Regex> = LazyLock::new(|| {
22
22
  .map(|tag| format!("<{tag}>.*?</{tag}>"))
23
23
  .collect::<Vec<_>>()
24
24
  .join("|");
25
- Regex::new(&format!(r"(?is)\A(?:# AGENTS\.md instructions for [^\r\n]+\r?\n(?:[ \t]*\r?\n)*)?(?:{blocks})(?:[ \t]*\r?\n)*")).unwrap()
25
+ Regex::new(&format!(
26
+ concat!(
27
+ r"(?is)\A(?:# AGENTS\.md instructions for [^\r\n]+\r?\n",
28
+ r"(?:[ \t]*\r?\n)*)?",
29
+ r"(?:{blocks})(?:[ \t]*\r?\n)*",
30
+ ),
31
+ blocks = blocks,
32
+ ))
33
+ .unwrap()
26
34
  });
27
35
 
28
36
  pub fn inner_tag<'a>(text: &'a str, tag: &str) -> Option<&'a str> {
@@ -222,9 +230,13 @@ pub fn json_payload(data: &SessionData) -> SessionData {
222
230
  skill_index += 1;
223
231
  }
224
232
  for message in &mut payload.messages {
225
- message
226
- .parts
227
- .retain(|part| !matches!(part, Part::Tool(tool) if tool.tool.rsplit('.').next() == Some("wait_agent")));
233
+ message.parts.retain(|part| {
234
+ !matches!(
235
+ part,
236
+ Part::Tool(tool)
237
+ if tool.tool.rsplit('.').next() == Some("wait_agent")
238
+ )
239
+ });
228
240
  if message
229
241
  .parts
230
242
  .iter()
@@ -454,7 +454,12 @@ mod tests {
454
454
  json!([
455
455
  {"type":"text","text":"boom","time_created":7},
456
456
  {"type":"image","mime_type":"image/png","data":"AAAA","time_created":7},
457
- {"type":"image","mime_type":null,"data":"https://example.test/a.png","time_created":7}
457
+ {
458
+ "type":"image",
459
+ "mime_type":null,
460
+ "data":"https://example.test/a.png",
461
+ "time_created":7
462
+ }
458
463
  ])
459
464
  );
460
465
  assert_eq!(