agent-decoder 0.3.2__tar.gz → 0.3.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 (369) hide show
  1. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.github/CODEOWNERS +1 -1
  2. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.github/ISSUE_TEMPLATE/config.yml +1 -1
  3. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.github/workflows/ci.yml +1 -1
  4. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.github/workflows/publish.yml +1 -1
  5. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.gitignore +8 -1
  6. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.pre-commit-config.yaml +1 -1
  7. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/ARCHITECTURE.md +63 -11
  8. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/CHANGELOG.md +45 -8
  9. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/CONTRIBUTING.md +6 -6
  10. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/LICENSE +1 -1
  11. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/Makefile +2 -2
  12. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/PKG-INFO +56 -44
  13. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/README.md +51 -40
  14. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/SECURITY.md +3 -3
  15. {agent_decoder-0.3.2/clau_decode → agent_decoder-0.3.6/agent_decoder}/__init__.py +3 -3
  16. agent_decoder-0.3.6/docs/ad-poster.png +0 -0
  17. agent_decoder-0.3.6/docs/agent-runs.md +15 -0
  18. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/index.html +1 -1
  19. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/package-lock.json +2 -2
  20. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/package.json +1 -1
  21. agent_decoder-0.3.6/frontend/public/site.webmanifest +1 -0
  22. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/App.tsx +14 -2
  23. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/api/client.ts +2 -0
  24. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/api/types.ts +25 -3
  25. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/LICENSES.md +1 -1
  26. agent_decoder-0.3.6/frontend/src/components/ArtifactsPanel/ArtifactsPanel.tsx +191 -0
  27. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/ChatInput.tsx +3 -3
  28. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/ChatInputBanners.tsx +1 -1
  29. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/ChatView.tsx +2 -2
  30. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/ConversationHeader.tsx +22 -2
  31. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/ModelPicker.tsx +3 -2
  32. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/OwnershipBanner.tsx +1 -1
  33. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/__tests__/ChatViewLifecycle.test.tsx +10 -10
  34. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/__tests__/NativeTerminalView.test.tsx +2 -0
  35. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/hooks/useRecaps.ts +6 -6
  36. agent_decoder-0.3.6/frontend/src/components/ChatView/nativeTerminal/__tests__/eraseScrollback.test.ts +64 -0
  37. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/nativeTerminal/xtermTerminal.ts +17 -1
  38. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/DashboardEmpty.tsx +1 -1
  39. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/DashboardSearch.tsx +1 -1
  40. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/Hero.tsx +1 -1
  41. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/fmt.ts +1 -0
  42. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/AssistantMessage.tsx +1 -1
  43. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/TextBlock.tsx +29 -7
  44. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/__tests__/Ephemeral.test.tsx +4 -4
  45. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/hooks/__tests__/useScrollController.test.tsx +29 -1
  46. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/hooks/useScrollController.ts +19 -14
  47. agent_decoder-0.3.6/frontend/src/components/Runs.css +26 -0
  48. agent_decoder-0.3.6/frontend/src/components/Runs.tsx +97 -0
  49. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/RecapSettings.tsx +1 -1
  50. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/RescanButton.tsx +1 -1
  51. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/SettingsModal.tsx +7 -7
  52. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/__tests__/SettingsModal.test.tsx +1 -1
  53. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/SearchOverlay.tsx +1 -1
  54. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/SessionItem.tsx +2 -2
  55. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/ShortcutsPopup.tsx +1 -0
  56. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/Sidebar.tsx +6 -1
  57. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/SidebarHeader.tsx +1 -1
  58. agent_decoder-0.3.6/frontend/src/components/__tests__/Runs.test.tsx +50 -0
  59. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ui/icons.tsx +11 -0
  60. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/router.ts +2 -1
  61. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/store/index.ts +9 -0
  62. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/styles/theme.css +2 -2
  63. agent_decoder-0.3.6/frontend/src/utils/__tests__/artifacts.test.ts +35 -0
  64. agent_decoder-0.3.6/frontend/src/utils/artifacts.ts +66 -0
  65. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/events.ts +1 -1
  66. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/localStorage.ts +9 -6
  67. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/vite.config.ts +1 -1
  68. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/pyproject.toml +23 -9
  69. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/scripts/capture-move-bundle.sh +4 -4
  70. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/__init__.py +2 -2
  71. agent_decoder-0.3.6/src/agent_decoder/__main__.py +11 -0
  72. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/_auth_env.py +4 -6
  73. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/_pty_preexec.py +1 -1
  74. agent_decoder-0.3.6/src/agent_decoder/_tmux_capture.py +23 -0
  75. agent_decoder-0.3.6/src/agent_decoder/_tmux_exec.py +16 -0
  76. agent_decoder-0.3.6/src/agent_decoder/agent_runs.py +266 -0
  77. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/aggregator.py +1 -1
  78. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/extractor.py +1 -1
  79. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/fast.py +1 -1
  80. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/pricing.py +29 -9
  81. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/prompt.py +1 -1
  82. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/service.py +1 -1
  83. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/stats.py +1 -1
  84. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/tips.py +1 -1
  85. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/cli.py +13 -13
  86. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/config.py +31 -12
  87. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/db.py +361 -228
  88. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/driver_manager.py +53 -78
  89. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/drivers/base.py +16 -4
  90. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/drivers/registry.py +4 -5
  91. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/drivers/tmux_driver.py +27 -11
  92. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/editor.py +2 -2
  93. agent_decoder-0.3.6/src/agent_decoder/execution_manager.py +414 -0
  94. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/locks.py +3 -3
  95. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/migrate.py +12 -15
  96. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/models.py +6 -0
  97. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/parser.py +16 -2
  98. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/providers/__init__.py +1 -1
  99. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/providers/base.py +6 -2
  100. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/providers/claude.py +4 -2
  101. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/providers/codex.py +8 -2
  102. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/providers/registry.py +2 -2
  103. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/pty_runner.py +155 -17
  104. agent_decoder-0.3.6/src/agent_decoder/query_parser.py +127 -0
  105. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/scanner.py +28 -2
  106. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/server.py +249 -90
  107. agent_decoder-0.3.6/src/agent_decoder/static/assets/ArtifactsPanel-D-CqWycU.js +1 -0
  108. agent_decoder-0.3.2/src/clau_decode/static/assets/ChatView-BBVXuITs.js → agent_decoder-0.3.6/src/agent_decoder/static/assets/ChatView-CFunVM15.js +39 -39
  109. agent_decoder-0.3.6/src/agent_decoder/static/assets/Dashboard-CBe8ZXJ-.js +1 -0
  110. agent_decoder-0.3.6/src/agent_decoder/static/assets/FileViewer-CVtveC8R.js +1 -0
  111. agent_decoder-0.3.2/src/clau_decode/static/assets/HelpPopup-CPtECjYw.js → agent_decoder-0.3.6/src/agent_decoder/static/assets/HelpPopup-BYhBIvA6.js +1 -1
  112. agent_decoder-0.3.6/src/agent_decoder/static/assets/Runs-DvLUpR9O.js +1 -0
  113. agent_decoder-0.3.6/src/agent_decoder/static/assets/Runs-Y8oF-gxW.css +1 -0
  114. agent_decoder-0.3.2/src/clau_decode/static/assets/ScrollContainer-BT_Dzxah.js → agent_decoder-0.3.6/src/agent_decoder/static/assets/ScrollContainer-CA7-aYqv.js +1 -1
  115. agent_decoder-0.3.6/src/agent_decoder/static/assets/SearchOverlay-CF4dXG6x.js +1 -0
  116. agent_decoder-0.3.6/src/agent_decoder/static/assets/SessionItem-BUejVuL5.js +1 -0
  117. agent_decoder-0.3.6/src/agent_decoder/static/assets/SettingsModal-DWSMRQmn.js +1 -0
  118. agent_decoder-0.3.6/src/agent_decoder/static/assets/ShortcutsPopup-Df9bhfs6.js +1 -0
  119. agent_decoder-0.3.6/src/agent_decoder/static/assets/Sidebar-CJcwJziw.js +1 -0
  120. agent_decoder-0.3.6/src/agent_decoder/static/assets/fileType-BHvAriyJ.js +1 -0
  121. agent_decoder-0.3.6/src/agent_decoder/static/assets/formatRelative-CavTjOcy.js +1 -0
  122. agent_decoder-0.3.6/src/agent_decoder/static/assets/hljs-CvdnYs1C.js +35 -0
  123. agent_decoder-0.3.2/src/clau_decode/static/assets/index-BHdCOIkq.css → agent_decoder-0.3.6/src/agent_decoder/static/assets/index-Bo2bFwpv.css +1 -1
  124. agent_decoder-0.3.6/src/agent_decoder/static/assets/index-XPrlVfCr.js +5 -0
  125. agent_decoder-0.3.2/src/clau_decode/static/assets/react-Bi_azaFt.js → agent_decoder-0.3.6/src/agent_decoder/static/assets/react-CCIEwYL0.js +4 -4
  126. agent_decoder-0.3.6/src/agent_decoder/static/assets/renderSnippet-CcNMfZRd.js +1 -0
  127. agent_decoder-0.3.6/src/agent_decoder/static/assets/sessionCache-Cj3FsbQ4.js +1 -0
  128. agent_decoder-0.3.2/src/clau_decode/static/assets/shared-DdVGprvF.js → agent_decoder-0.3.6/src/agent_decoder/static/assets/shared-CAVcrZag.js +1 -1
  129. agent_decoder-0.3.6/src/agent_decoder/static/assets/ui-BVMZ0uWi.js +1 -0
  130. agent_decoder-0.3.6/src/agent_decoder/static/assets/useDebounce-CRtjXm0i.js +1 -0
  131. agent_decoder-0.3.6/src/agent_decoder/static/assets/useSessionDetail-D4HneaxZ.js +1 -0
  132. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/index.html +5 -6
  133. agent_decoder-0.3.6/src/agent_decoder/static/site.webmanifest +1 -0
  134. agent_decoder-0.3.6/src/agent_decoder/tmux_terminal.py +297 -0
  135. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/update_check.py +5 -4
  136. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_aggregator.py +19 -19
  137. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_cost.py +9 -9
  138. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_extractor.py +11 -11
  139. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_fast_parity.py +6 -6
  140. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_integration.py +11 -11
  141. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_pricing.py +42 -23
  142. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_prompt.py +7 -7
  143. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_service.py +5 -5
  144. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_stats.py +17 -17
  145. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/test_tips.py +23 -23
  146. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/conftest.py +1 -1
  147. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/drivers/test_driver_manager.py +26 -9
  148. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/drivers/test_tmux_driver.py +9 -9
  149. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/fake_claude_tui.py +1 -1
  150. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/providers/test_claude_adapter.py +4 -4
  151. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/providers/test_codex_adapter.py +3 -3
  152. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/providers/test_registry.py +6 -4
  153. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_active_data_sources.py +1 -1
  154. agent_decoder-0.3.6/tests/test_agent_runs.py +272 -0
  155. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_analytics_ignores_ephemerals.py +3 -3
  156. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_auth_env.py +3 -5
  157. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_btw_capture.py +34 -34
  158. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_cli.py +10 -10
  159. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_codex_e2e.py +5 -5
  160. agent_decoder-0.3.6/tests/test_config_legacy_migration.py +34 -0
  161. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_db.py +204 -64
  162. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_db_session_meta.py +2 -2
  163. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_delete_sessions.py +3 -3
  164. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_dev_import_path.py +3 -3
  165. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_e2e.py +169 -11
  166. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_editor.py +20 -20
  167. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_ephemeral_messages.py +1 -1
  168. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_events_bus.py +1 -1
  169. agent_decoder-0.3.6/tests/test_execution_manager.py +408 -0
  170. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_export_ephemeral.py +6 -6
  171. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_locks.py +18 -18
  172. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_migrate.py +2 -2
  173. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_parser.py +82 -34
  174. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_pty_native.py +1 -1
  175. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_pty_runner.py +7 -7
  176. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_pty_runner_btw.py +5 -5
  177. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_pty_screen_state.py +1 -1
  178. agent_decoder-0.3.6/tests/test_query_parser.py +93 -0
  179. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_recaps.py +3 -3
  180. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_reporter.py +31 -31
  181. agent_decoder-0.3.6/tests/test_scan_unchanged_files.py +178 -0
  182. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_scanner.py +79 -11
  183. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_search_ephemeral.py +1 -1
  184. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_server.py +76 -4
  185. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_server_capabilities.py +8 -8
  186. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_server_open_terminal.py +3 -3
  187. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_server_session_title.py +4 -4
  188. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/test_update_check.py +9 -9
  189. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/uv.lock +29 -2
  190. agent_decoder-0.3.2/docs/native-input-required-plan.md +0 -135
  191. agent_decoder-0.3.2/frontend/public/site.webmanifest +0 -1
  192. agent_decoder-0.3.2/src/clau_decode/__main__.py +0 -11
  193. agent_decoder-0.3.2/src/clau_decode/static/assets/Dashboard-3CYO4HQw.js +0 -1
  194. agent_decoder-0.3.2/src/clau_decode/static/assets/FileViewer-BwbDc3ky.js +0 -1
  195. agent_decoder-0.3.2/src/clau_decode/static/assets/SearchOverlay-DqI7aZaC.js +0 -1
  196. agent_decoder-0.3.2/src/clau_decode/static/assets/SessionItem-DlyKg80u.js +0 -1
  197. agent_decoder-0.3.2/src/clau_decode/static/assets/SettingsModal-CZBfMqx7.js +0 -1
  198. agent_decoder-0.3.2/src/clau_decode/static/assets/ShortcutsPopup-W7CPdCzW.js +0 -1
  199. agent_decoder-0.3.2/src/clau_decode/static/assets/Sidebar-BBswhEua.js +0 -1
  200. agent_decoder-0.3.2/src/clau_decode/static/assets/client-DTSXvAb8.js +0 -1
  201. agent_decoder-0.3.2/src/clau_decode/static/assets/formatRelative-j86webkr.js +0 -1
  202. agent_decoder-0.3.2/src/clau_decode/static/assets/hljs-B3O74O7Z.js +0 -35
  203. agent_decoder-0.3.2/src/clau_decode/static/assets/index-DfKltZ6z.js +0 -5
  204. agent_decoder-0.3.2/src/clau_decode/static/assets/renderSnippet-CqpQQugH.js +0 -1
  205. agent_decoder-0.3.2/src/clau_decode/static/assets/ui-BcGPjpYn.js +0 -1
  206. agent_decoder-0.3.2/src/clau_decode/static/site.webmanifest +0 -1
  207. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.editorconfig +0 -0
  208. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  209. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  210. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  211. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/.github/dependabot.yml +0 -0
  212. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/CODE_OF_CONDUCT.md +0 -0
  213. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/docs/demo-poster.jpg +0 -0
  214. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/playwright.config.ts +0 -0
  215. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/public/android-chrome-192x192.png +0 -0
  216. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/public/android-chrome-512x512.png +0 -0
  217. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/public/app-icon.png +0 -0
  218. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/public/apple-touch-icon.png +0 -0
  219. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/public/favicon-16x16.png +0 -0
  220. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/public/favicon-32x32.png +0 -0
  221. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/public/favicon.ico +0 -0
  222. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/api/__tests__/client.test.ts +0 -0
  223. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/api/sessionCache.ts +0 -0
  224. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/fira-code.woff2 +0 -0
  225. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/ioskeley-mono.woff2 +0 -0
  226. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/jetbrains-mono.woff2 +0 -0
  227. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/julia-mono.woff2 +0 -0
  228. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/libertinus-mono.woff2 +0 -0
  229. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/monaspace-argon.woff2 +0 -0
  230. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/source-code-pro.woff2 +0 -0
  231. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/spline-sans-mono.woff2 +0 -0
  232. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/assets/fonts/xanh-mono.woff2 +0 -0
  233. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/ChatInputBar.tsx +0 -0
  234. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/EmptyState.tsx +0 -0
  235. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/MessageListContainerContext.ts +0 -0
  236. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/MessageListLoader.tsx +0 -0
  237. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/NativeActionBanner.tsx +0 -0
  238. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/NativeTerminalView.tsx +0 -0
  239. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/ProviderThemeContext.tsx +0 -0
  240. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/__tests__/ChatInput.test.tsx +0 -0
  241. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/__tests__/ConversationHeader.test.tsx +0 -0
  242. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/__tests__/EmptyState.test.tsx +0 -0
  243. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/__tests__/NativeActionBanner.test.tsx +0 -0
  244. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/chatCard.ts +0 -0
  245. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/hooks/__tests__/useRecaps.test.tsx +0 -0
  246. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/hooks/useExpandPreserveAnchor.ts +0 -0
  247. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/hooks/useMessageHistory.ts +0 -0
  248. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/hooks/useNativePty.ts +0 -0
  249. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ChatView/hooks/useSessionOwnership.ts +0 -0
  250. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/ActivityStrip.tsx +0 -0
  251. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/Dashboard.tsx +0 -0
  252. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/FeaturedSession.tsx +0 -0
  253. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/HeadlineInsight.tsx +0 -0
  254. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/ModelRates.tsx +0 -0
  255. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/ModelUsageStrip.tsx +0 -0
  256. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/ProjectStrip.tsx +0 -0
  257. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/SectionHeader.tsx +0 -0
  258. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/Sparkline.tsx +0 -0
  259. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/StatStrip.tsx +0 -0
  260. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/TipCard.tsx +0 -0
  261. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Dashboard/TouchedFilesList.tsx +0 -0
  262. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ErrorBoundary.tsx +0 -0
  263. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/FileViewer/FileViewer.tsx +0 -0
  264. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/FileViewer/index.ts +0 -0
  265. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/ConfirmDialog.tsx +0 -0
  266. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/EphemeralMessage.tsx +0 -0
  267. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/MessageList.tsx +0 -0
  268. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/SidechainBranch.tsx +0 -0
  269. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/StreamingIndicator.tsx +0 -0
  270. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/ThinkingBlock.tsx +0 -0
  271. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/ThoughtChain.tsx +0 -0
  272. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/ToolUseBlock.tsx +0 -0
  273. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/UserMessage.tsx +0 -0
  274. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/__tests__/TextBlock.test.tsx +0 -0
  275. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/__tests__/ToolUseBlock.test.tsx +0 -0
  276. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/__tests__/UserMessage.test.tsx +0 -0
  277. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/blockRenderers.tsx +0 -0
  278. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/groupMessages.ts +0 -0
  279. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/hooks/__tests__/useSessionDetail.test.ts +0 -0
  280. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/hooks/useCycle.ts +0 -0
  281. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/hooks/useSessionDetail.ts +0 -0
  282. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Messages/pairToolBlocks.ts +0 -0
  283. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ScrollContainer.tsx +0 -0
  284. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/NativePtyFontPicker.tsx +0 -0
  285. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/PathEditor.tsx +0 -0
  286. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/PermissionModeSection.tsx +0 -0
  287. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/ProfileSection.tsx +0 -0
  288. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/SortOrderSection.tsx +0 -0
  289. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Settings/shared.tsx +0 -0
  290. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/FileExplorer.tsx +0 -0
  291. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/HelpPopup.tsx +0 -0
  292. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/NewTaskButton.tsx +0 -0
  293. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/ProjectGroup.tsx +0 -0
  294. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/__tests__/NewTaskButton.test.tsx +0 -0
  295. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/__tests__/SearchOverlay.test.tsx +0 -0
  296. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/__tests__/SessionItem.test.tsx +0 -0
  297. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/__tests__/SessionItemRename.test.tsx +0 -0
  298. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/hooks/__tests__/useRunnerStatuses.test.tsx +0 -0
  299. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Sidebar/hooks/useRunnerStatuses.ts +0 -0
  300. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/Toast.tsx +0 -0
  301. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ui/ContextMenu.tsx +0 -0
  302. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ui/DelayedSkeleton.tsx +0 -0
  303. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ui/LoadingAnimation.tsx +0 -0
  304. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/components/ui/RenameInput.tsx +0 -0
  305. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/config/ui.ts +0 -0
  306. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/constants/nativePtyFonts.ts +0 -0
  307. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/main.tsx +0 -0
  308. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/store/__tests__/toggleExplorer.test.ts +0 -0
  309. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/store/blocksState.ts +0 -0
  310. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/styles/nativePtyFonts.css +0 -0
  311. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/test-setup.ts +0 -0
  312. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/__tests__/lazyWithRetry.test.tsx +0 -0
  313. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/__tests__/sessionMeta.test.tsx +0 -0
  314. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/fileType.ts +0 -0
  315. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/formatRelative.ts +0 -0
  316. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/hljs.ts +0 -0
  317. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/lazyWithRetry.tsx +0 -0
  318. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/nativePtyFocus.ts +0 -0
  319. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/renderSnippet.tsx +0 -0
  320. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/sessionMeta.ts +0 -0
  321. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/timestamps.ts +0 -0
  322. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/src/utils/useDebounce.ts +0 -0
  323. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/tests/ghostty-web.pw.ts +0 -0
  324. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/tsconfig.json +0 -0
  325. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/frontend/tsconfig.node.json +0 -0
  326. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/__init__.py +0 -0
  327. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/cost.py +0 -0
  328. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/analytics/models.py +0 -0
  329. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/btw_capture.py +0 -0
  330. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/drivers/__init__.py +0 -0
  331. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/events_bus.py +0 -0
  332. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/pty_native.py +0 -0
  333. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/pty_screen_state.py +0 -0
  334. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/recap_runner.py +0 -0
  335. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/reporter.py +0 -0
  336. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/android-chrome-192x192.png +0 -0
  337. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/android-chrome-512x512.png +0 -0
  338. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/app-icon.png +0 -0
  339. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/apple-touch-icon.png +0 -0
  340. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/ChatView-BrP-ENHg.css +0 -0
  341. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/fira-code-DGosTW8U.woff2 +0 -0
  342. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/ioskeley-mono-C7VR2-sL.woff2 +0 -0
  343. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/jetbrains-mono-V6pRDFza.woff2 +0 -0
  344. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/julia-mono-Cbvba6sW.woff2 +0 -0
  345. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/libertinus-mono-Coz17E-O.woff2 +0 -0
  346. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/monaspace-argon-RS-2TGNg.woff2 +0 -0
  347. /agent_decoder-0.3.2/src/clau_decode/static/assets/nativePtyFonts-BaXKtUsn.js → /agent_decoder-0.3.6/src/agent_decoder/static/assets/nativePtyFonts-BxhRYj2G.js +0 -0
  348. /agent_decoder-0.3.2/src/clau_decode/static/assets/rolldown-runtime-S-ySWqyJ.js → /agent_decoder-0.3.6/src/agent_decoder/static/assets/rolldown-runtime-QTnfLwEv.js +0 -0
  349. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/source-code-pro-DEXWLoHG.woff2 +0 -0
  350. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/spline-sans-mono-mUpA6Mve.woff2 +0 -0
  351. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/assets/xanh-mono-Dsg19vWS.woff2 +0 -0
  352. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/favicon-16x16.png +0 -0
  353. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/favicon-32x32.png +0 -0
  354. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/static/favicon.ico +0 -0
  355. {agent_decoder-0.3.2/src/clau_decode → agent_decoder-0.3.6/src/agent_decoder}/watcher.py +0 -0
  356. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/__init__.py +0 -0
  357. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/analytics/__init__.py +0 -0
  358. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/drivers/__init__.py +0 -0
  359. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/drivers/fake_cli.py +0 -0
  360. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/aaaaaaaa-0000-0000-0000-000000000001.jsonl +0 -0
  361. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/bad-name.jsonl +0 -0
  362. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/bbbbbbbb-0000-0000-0000-000000000002.jsonl +0 -0
  363. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/btw_capture/live_zai_no_open_marker.bin +0 -0
  364. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/btw_capture/multiline.bin +0 -0
  365. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/codex/sample_rollout.jsonl +0 -0
  366. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/session_with_usage.jsonl +0 -0
  367. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/sidechain_session.jsonl +0 -0
  368. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/fixtures/simple_session.jsonl +0 -0
  369. {agent_decoder-0.3.2 → agent_decoder-0.3.6}/tests/providers/__init__.py +0 -0
@@ -1,4 +1,4 @@
1
- # CODEOWNERS for Clau-Decode
1
+ # CODEOWNERS for Agent Decoder
2
2
  #
3
3
  # GitHub uses this file to auto-request reviews on pull requests.
4
4
  # The last matching pattern for a given file wins, so order matters.
@@ -1,5 +1,5 @@
1
1
  blank_issues_enabled: true
2
2
  contact_links:
3
3
  - name: Questions and general discussion
4
- url: https://github.com/Comradery64/Clau-Decode/discussions
4
+ url: https://github.com/Comradery64/Agent-Decoder/discussions
5
5
  about: For usage questions, ideas in flux, or anything that isn't a clear bug or feature request, please use Discussions.
@@ -48,7 +48,7 @@ jobs:
48
48
 
49
49
  - name: Tests (pytest with coverage)
50
50
  # pyproject's [tool.pytest.ini_options] addopts already enables
51
- # --cov=clau_decode; append an XML report for Codecov upload.
51
+ # --cov=agent_decoder; append an XML report for Codecov upload.
52
52
  run: uv run pytest --cov-report=xml
53
53
 
54
54
  - name: Upload coverage to Codecov
@@ -32,7 +32,7 @@ jobs:
32
32
  # deleted or overwritten.
33
33
  run: |
34
34
  TAG_VERSION="${GITHUB_REF_NAME#v}"
35
- PKG_VERSION="$(grep -oP '(?<=^__version__ = ")[^"]+' src/clau_decode/__init__.py)"
35
+ PKG_VERSION="$(grep -oP '(?<=^__version__ = ")[^"]+' src/agent_decoder/__init__.py)"
36
36
  if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then
37
37
  echo "::error::Tag v$TAG_VERSION does not match __version__ ($PKG_VERSION)"
38
38
  exit 1
@@ -50,4 +50,11 @@ demo-data/
50
50
  demo-reel/
51
51
 
52
52
  # Keep the built static assets — they ship with the package
53
- !src/clau_decode/static/
53
+ !src/agent_decoder/static/
54
+
55
+ # Local scratch/handoff docs and agent config — never published
56
+ docs/archive/
57
+ /.handoff/
58
+ /.internal-archive/
59
+ /.claude/
60
+ /CLAUDE.md
@@ -1,4 +1,4 @@
1
- # Pre-commit hooks for clau-decode.
1
+ # Pre-commit hooks for agent-decoder.
2
2
  # Install once with `pre-commit install`; run on demand with `pre-commit run --all-files`.
3
3
  # pre-commit autoupdate will refresh these revs.
4
4
 
@@ -1,12 +1,12 @@
1
1
  # Architecture
2
2
 
3
- This document describes the internal architecture of `clau-decode`. It
3
+ This document describes the internal architecture of `ring`. It
4
4
  complements [`README.md`](README.md) (user-facing) with the technical detail a
5
5
  contributor or reviewer needs to navigate the code.
6
6
 
7
7
  ## Overview
8
8
 
9
- Clau-Decode is a single-process, local-first application. A FastAPI server
9
+ Agent Decoder is a single-process, local-first application. A FastAPI server
10
10
  (uvicorn, bound to `127.0.0.1:4242` by default) scans your AI coding
11
11
  assistant's JSONL session files into a SQLite index, exposes them through a
12
12
  JSON HTTP API plus a Server-Sent Events stream, and serves a pre-built React +
@@ -36,8 +36,8 @@ flowchart LR
36
36
 
37
37
  subgraph Filesystem[Filesystem]
38
38
  JSONL[~/.claude/projects/**/*.jsonl]
39
- Cfg[~/.config/clau-decode/config.json]
40
- Cache[~/.local/share/clau-decode/index.db]
39
+ Cfg[~/.config/agent-decoder/config.json]
40
+ Cache[~/.local/share/agent-decoder/index.db]
41
41
  end
42
42
 
43
43
  SPA -->|fetch + EventSource| Server
@@ -63,11 +63,11 @@ flowchart LR
63
63
  2. The frontend router (`frontend/src/router.ts`) updates the URL hash to
64
64
  `#/chat/<session_id>` and `App.tsx` reacts to the route change.
65
65
  3. `frontend/src/api/client.ts` issues `GET /api/sessions/<session_id>`.
66
- 4. The FastAPI route (`src/clau_decode/server.py`) calls `Database.get_session_detail`
67
- (`src/clau_decode/db.py`), which reads the session row and its messages
66
+ 4. The FastAPI route (`src/agent_decoder/server.py`) calls `Database.get_session_detail`
67
+ (`src/agent_decoder/db.py`), which reads the session row and its messages
68
68
  from SQLite.
69
69
  5. If the JSONL file's mtime has changed since the last index update, the
70
- server re-parses the file via `parse_session` (`src/clau_decode/parser.py`)
70
+ server re-parses the file via `parse_session` (`src/agent_decoder/parser.py`)
71
71
  and upserts the new messages back into SQLite before returning.
72
72
  6. The route returns a `SessionDetail` JSON document; the React `ChatView`
73
73
  component renders markdown, tool-use, thinking, and sidechain blocks.
@@ -77,7 +77,7 @@ flowchart LR
77
77
 
78
78
  ## Key directories
79
79
 
80
- ### Backend — `src/clau_decode/`
80
+ ### Backend — `src/agent_decoder/`
81
81
 
82
82
  | Path | Role |
83
83
  |------|------|
@@ -114,13 +114,13 @@ flowchart LR
114
114
 
115
115
  ## Storage
116
116
 
117
- Clau-Decode follows the [XDG Base Directory
117
+ Agent Decoder follows the [XDG Base Directory
118
118
  spec](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html):
119
119
 
120
120
  | Purpose | Path (default) | Notes |
121
121
  |---------|----------------|-------|
122
- | User config | `~/.config/clau-decode/config.json` (or `$XDG_CONFIG_HOME/clau-decode/config.json`) | Atomic writes (`*.tmp` → rename) |
123
- | Session index | `~/.local/share/clau-decode/index.db` (or `$XDG_DATA_HOME/clau-decode/index.db`) | SQLite + FTS5; durable (holds stars/archives/titles). Use `--force-refresh` to rescan rather than deleting |
122
+ | User config | `~/.config/agent-decoder/config.json` (or `$XDG_CONFIG_HOME/agent-decoder/config.json`) | Atomic writes (`*.tmp` → rename) |
123
+ | Session index | `~/.local/share/agent-decoder/index.db` (or `$XDG_DATA_HOME/agent-decoder/index.db`) | SQLite + FTS5; durable (holds stars/archives/titles). Use `--force-refresh` to rescan rather than deleting |
124
124
  | Scanned sessions | `~/.claude/projects/**/*.jsonl` (configurable) | Read-only by default; written only via the runner or `--enable-edit` |
125
125
 
126
126
  No remote storage. No outbound network calls except optional pricing-table
@@ -164,3 +164,55 @@ See [`SECURITY.md`](SECURITY.md) for the disclosure process and full scope.
164
164
  pre-warmed in the background after first paint.
165
165
  - **GZip middleware.** FastAPI compresses JSON responses over a few hundred
166
166
  bytes, which keeps session-detail payloads small on large conversations.
167
+
168
+ ### Shared interactive execution
169
+
170
+ `ExecutionManager` is the single server owner of Claude and Codex terminals.
171
+ It shares the session lock table, active Native terminal, sizing configuration,
172
+ and shutdown lifecycle. `pty_runner.PtyManager` supplies Claude's established
173
+ input policy (ownership, input acknowledgments/watchdog, `/model`, permissions,
174
+ and ephemeral `/btw` capture); `driver_manager.DriverSessionPolicy` supplies
175
+ Codex's launch/resume, state polling, and rollout adoption. Neither policy is
176
+ instantiated as another manager. The former `DriverManager` import resolves to
177
+ `ExecutionManager` for compatibility. Native input, resize, snapshot, status,
178
+ and termination routes all use the same owner. Provider capability checks still
179
+ run before focus/submit; read-only providers cannot acquire a terminal.
180
+
181
+ Both providers use the isolated `agent-decoder` tmux socket by default.
182
+ `AGENT_DECODER_TMUX_SOCKET` overrides it for isolated installations/tests.
183
+ Claude falls back to direct PTY when tmux is absent; internal consumers can
184
+ explicitly request `terminal_backend="direct"`. Codex requires tmux and retains
185
+ its runtime capability gate. Claude launch environments use a private temporary
186
+ file consumed and unlinked before exec; secrets do not appear in launch argv or
187
+ tmux metadata.
188
+
189
+ Normal server shutdown **detaches** attach clients, stops local watchdogs and
190
+ capture readers, releases server-owned Claude sidecars, and leaves tmux harnesses
191
+ running. Browser disconnect/idle does not reap tmux harnesses. Explicit kill
192
+ **terminates** the harness; kill also resolves a persistent terminal after a
193
+ server restart without spawning or first focusing it. Direct PTY cannot detach
194
+ and therefore terminates on shutdown. Claude reattachment checks session/cwd
195
+ metadata against the pane PID plus the OS process start identity and executable.
196
+ A changed process or a fresh foreign sidecar prevents adoption. Binary,
197
+ permission, or model configuration changes require a verified owned respawn;
198
+ live `/model` updates the persisted launch configuration. These checks coordinate
199
+ same-user processes, not mutually untrusted users sharing a tmux server.
200
+
201
+ Tmux redraws terminal output, which is suitable for Native hydration but changes
202
+ the escape sequences Claude's `/btw` parser needs. Claude therefore also uses
203
+ `pipe-pane` into a private Unix datagram receiver for the original byte stream.
204
+ The relay drains without waiting for the application; datagrams and receiver
205
+ work per loop turn are bounded. Sequence gaps or capture-buffer overflow fail
206
+ the pending ephemeral response instead of persisting partial text. A capture
207
+ owner token prevents an old client from stopping a replacement relay. Detach
208
+ removes the local socket and stops its relay; after a crash an orphaned relay
209
+ keeps draining/dropping until reattachment replaces it.
210
+
211
+ Limitations: pending ephemeral `/btw` output is not recovered across a server
212
+ crash/restart, and output during detach is not retained as a raw byte history;
213
+ reattachment hydrates the tmux screen while JSONL remains the content source.
214
+ A crashed process may leave a private temporary socket directory until OS temp
215
+ cleanup. Deliberately replacing/execing a managed pane into a different executable
216
+ requires explicit recovery rather than automatic ownership adoption. Real
217
+ provider auth/network smoke tests remain opt-in; behavioral tests use synthetic
218
+ CLIs and unique tmux sockets.
@@ -1,11 +1,45 @@
1
1
  # Changelog
2
2
 
3
- All notable changes to Clau-Decode will be documented in this file.
3
+ All notable changes to Agent Decoder (formerly Clau-Decode) will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). While the project is in the 0.x series, breaking changes may land in any minor release; we'll call them out clearly.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.3.6] - 2026-11-06
10
+
11
+ ### Added
12
+
13
+ - **Durable agent runs and a cross-provider Runs screen** (#52). Each managed execution attempt is recorded in an `agent_runs` table that is independent of the rebuildable session index; no screen or exit code is treated as proof of completion. Read it at `GET /api/runs` and `GET /api/runs/{id}`.
14
+ - **Unified Claude and Codex execution ownership** with persistent tmux terminals (#51), so both providers share one execution manager.
15
+ - **Artifacts panel** listing a session's images and written files.
16
+
17
+ ### Changed
18
+
19
+ - Share one syntax highlighter and cache rendered markdown, and toggle the artifacts panel without re-rendering the chat.
20
+ - Local agent and handoff files (`.handoff/`, `.claude/`, `CLAUDE.md`, ...) are excluded from sdist builds and gitignored.
21
+
22
+ ### Fixed
23
+
24
+ - **Periodic rescan no longer re-parses every Codex transcript each minute.** Codex rollouts are named `rollout-<timestamp>-<uuid>` but indexed under the session id inside the file, so the "has this file changed?" lookup by file name missed most of them and the server re-parsed gigabytes of unchanged transcripts on every pass (a ~14 s CPU spike every 60 s, plus `message_count` reset to 0 on large rollouts). Unchanged files are now skipped by path, including rollouts that share a session id.
25
+ - Dangling symlinks under `~/.claude/projects` are skipped quietly instead of logging a "No such file" warning on every rescan.
26
+ - Native terminal no longer snaps back to the bottom and wipes scrollback when a full-screen clear (`ESC[3J`) arrives while you are scrolled up. A real `/clear` at the bottom still clears. An ignored sequence is logged to the browser console (`agent-decoder: ignored ESC[3J …`) so the cause can be confirmed in real use.
27
+
28
+ ## [0.3.5] - 2026-10-24
29
+
30
+ ### Changed
31
+
32
+ - **BREAKING: the `clau-decode` command is gone — launch with `ring`.** Renamed the project to **Agent Decoder R.I.N.G.** (Replay, Inspect, Navigate, Grep). The launcher is now `ring`; the Python module is now `agent_decoder`.
33
+ - Config and index DB live in `agent-decoder/` dirs. Existing `clau-decode/` data is copied over on first run and left in place as a backup.
34
+
35
+ ### Fixed
36
+
37
+ - Decoded view no longer snaps back to the bottom a few moments after you scroll up with the keyboard, touch, or scrollbar: a no-op follow-write at the bottom left an internal "programmatic scroll" flag stuck, so the next streamed update re-pinned you.
38
+
39
+ ### Added
40
+
41
+ - Search query language: `"exact phrase"`, `-exclude`, `a OR b`, `prefix*`, and `role:` / `project:` / `session:` / `before:` / `after:` filters.
42
+
9
43
  ## [0.3.2] - 2026-09-07
10
44
 
11
45
  ### Added
@@ -238,10 +272,13 @@ Initial public release.
238
272
 
239
273
  - License changed from MIT to [FSL-1.1-Apache-2.0](LICENSE). All prior unreleased history was developed under MIT; the 0.1.0 release and everything after it ship under FSL-1.1-Apache-2.0, which converts to Apache 2.0 two years after each release.
240
274
 
241
- [0.3.2]: https://github.com/Comradery64/Clau-Decode/compare/v0.3.1.3...v0.3.2
242
- [0.3.1.2]: https://github.com/Comradery64/Clau-Decode/compare/v0.3.1.1...v0.3.1.2
243
- [0.3.1.1]: https://github.com/Comradery64/Clau-Decode/compare/v0.3.1...v0.3.1.1
244
- [0.3.1]: https://github.com/Comradery64/Clau-Decode/compare/v0.3.0...v0.3.1
245
- [0.3.0]: https://github.com/Comradery64/Clau-Decode/compare/v0.2.0...v0.3.0
246
- [0.2.0]: https://github.com/Comradery64/Clau-Decode/compare/v0.1.0...v0.2.0
247
- [0.1.0]: https://github.com/Comradery64/Clau-Decode/releases/tag/v0.1.0
275
+ [Unreleased]: https://github.com/Comradery64/Agent-Decoder/compare/v0.3.6...HEAD
276
+ [0.3.6]: https://github.com/Comradery64/Agent-Decoder/compare/v0.3.5...v0.3.6
277
+ [0.3.5]: https://github.com/Comradery64/Agent-Decoder/compare/v0.3.2...v0.3.5
278
+ [0.3.2]: https://github.com/Comradery64/Agent-Decoder/compare/v0.3.1.3...v0.3.2
279
+ [0.3.1.2]: https://github.com/Comradery64/Agent-Decoder/compare/v0.3.1.1...v0.3.1.2
280
+ [0.3.1.1]: https://github.com/Comradery64/Agent-Decoder/compare/v0.3.1...v0.3.1.1
281
+ [0.3.1]: https://github.com/Comradery64/Agent-Decoder/compare/v0.3.0...v0.3.1
282
+ [0.3.0]: https://github.com/Comradery64/Agent-Decoder/compare/v0.2.0...v0.3.0
283
+ [0.2.0]: https://github.com/Comradery64/Agent-Decoder/compare/v0.1.0...v0.2.0
284
+ [0.1.0]: https://github.com/Comradery64/Agent-Decoder/releases/tag/v0.1.0
@@ -1,6 +1,6 @@
1
- # Contributing to Clau-Decode
1
+ # Contributing to Agent Decoder
2
2
 
3
- Thanks for your interest in Clau-Decode! This project is a local, privacy-focused tool for browsing AI coding assistant chat history. Contributions of all kinds are welcome.
3
+ Thanks for your interest in Agent Decoder! This project is a local, privacy-focused tool for browsing AI coding assistant chat history. Contributions of all kinds are welcome.
4
4
 
5
5
  ## Ways to contribute
6
6
 
@@ -13,11 +13,11 @@ If you're not sure whether something is in scope, open an issue first and we can
13
13
 
14
14
  ## Development setup
15
15
 
16
- Clau-Decode has a Python 3.10+ backend (FastAPI + SQLite, tested with pytest) and a TypeScript frontend (React 18 + Vite, tested with vitest). You'll need Python 3.10+, [`uv`](https://docs.astral.sh/uv/), and Node.js 20+.
16
+ Agent Decoder has a Python 3.10+ backend (FastAPI + SQLite, tested with pytest) and a TypeScript frontend (React 18 + Vite, tested with vitest). You'll need Python 3.10+, [`uv`](https://docs.astral.sh/uv/), and Node.js 20+.
17
17
 
18
18
  ```bash
19
- git clone https://github.com/Comradery64/Clau-Decode
20
- cd Clau-Decode
19
+ git clone https://github.com/Comradery64/Agent-Decoder
20
+ cd Agent Decoder
21
21
 
22
22
  # Install backend deps + build the frontend
23
23
  make dev
@@ -73,7 +73,7 @@ Please confirm:
73
73
 
74
74
  ## Licensing
75
75
 
76
- Clau-Decode is released under the [Functional Source License, Version 1.1, with the Apache 2.0 Future License](LICENSE) (FSL-1.1-Apache-2.0). By submitting a contribution you agree that it is offered under those same terms. There is no CLA — your `git` authorship is sufficient attribution. Please don't paste in code you don't have the right to license under FSL-1.1-Apache-2.0.
76
+ Agent Decoder is released under the [Functional Source License, Version 1.1, with the Apache 2.0 Future License](LICENSE) (FSL-1.1-Apache-2.0). By submitting a contribution you agree that it is offered under those same terms. There is no CLA — your `git` authorship is sufficient attribution. Please don't paste in code you don't have the right to license under FSL-1.1-Apache-2.0.
77
77
 
78
78
  ## Questions
79
79
 
@@ -9,7 +9,7 @@ FSL-1.1-Apache-2.0
9
9
  Copyright 2026 Comradery64
10
10
 
11
11
  Licensor: Comradery64
12
- Licensed Work: clau-decode. The Licensed Work is © 2026 Comradery64.
12
+ Licensed Work: Agent Decoder R.I.N.G. (formerly clau-decode). The Licensed Work is © 2026 Comradery64.
13
13
  Effective Date: 2026-05-13
14
14
  Change Date: 2028-05-13
15
15
  Change License: Apache License, Version 2.0
@@ -22,11 +22,11 @@ test:
22
22
 
23
23
  # Run the app from source
24
24
  run:
25
- uv run clau-decode
25
+ uv run ring
26
26
 
27
27
  # Clean build artifacts
28
28
  clean:
29
29
  rm -rf frontend/node_modules frontend/dist
30
- rm -rf src/clau_decode/static/assets src/clau_decode/static/index.html
30
+ rm -rf src/agent_decoder/static/assets src/agent_decoder/static/index.html
31
31
  rm -rf .pytest_cache
32
32
  find . -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agent-decoder
3
- Version: 0.3.2
3
+ Version: 0.3.6
4
4
  Summary: A local web UI for browsing and analyzing AI coding assistant chat history
5
- Project-URL: Homepage, https://github.com/Comradery64/Clau-Decode
6
- Project-URL: Repository, https://github.com/Comradery64/Clau-Decode
7
- Project-URL: Issues, https://github.com/Comradery64/Clau-Decode/issues
5
+ Project-URL: Homepage, https://github.com/Comradery64/Agent-Decoder
6
+ Project-URL: Repository, https://github.com/Comradery64/Agent-Decoder
7
+ Project-URL: Issues, https://github.com/Comradery64/Agent-Decoder/issues
8
8
  License: FSL-1.1-Apache-2.0
9
9
  License-File: LICENSE
10
10
  Keywords: ai-chat,analytics,chat-history,viewer
@@ -31,17 +31,23 @@ Requires-Dist: httpx>=0.27.0; extra == 'dev'
31
31
  Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
32
32
  Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
33
33
  Requires-Dist: pytest>=8.0.0; extra == 'dev'
34
+ Requires-Dist: ruff==0.15.12; extra == 'dev'
34
35
  Description-Content-Type: text/markdown
35
36
 
36
- <h1 align="center">Clau-Decode</h1>
37
+ <h1 align="center">Agent Decoder R.I.N.G.</h1>
37
38
 
38
39
  <p align="center">
39
- <em>Browse, search, and analyze your AI coding assistant chat history — entirely local, entirely private.</em>
40
+ <strong>Replay, Inspect, Navigate, Grep.</strong><br>
41
+ <em>Decode your agents' secret messages. "Send 10¢ and a box top!"</em>
40
42
  </p>
41
43
 
42
44
  <p align="center">
43
- <a href="https://github.com/Comradery64/Clau-Decode/actions/workflows/ci.yml">
44
- <img alt="CI" src="https://img.shields.io/github/actions/workflow/status/Comradery64/Clau-Decode/ci.yml?branch=main&label=CI&style=flat-square">
45
+ Browse, search, and analyze your AI coding assistant chat history — entirely local, entirely private.
46
+ </p>
47
+
48
+ <p align="center">
49
+ <a href="https://github.com/Comradery64/Agent-Decoder/actions/workflows/ci.yml">
50
+ <img alt="CI" src="https://img.shields.io/github/actions/workflow/status/Comradery64/Agent-Decoder/ci.yml?branch=main&label=CI&style=flat-square">
45
51
  </a>
46
52
  <a href="LICENSE">
47
53
  <img alt="License" src="https://img.shields.io/badge/license-FSL--1.1--Apache--2.0-blue?style=flat-square">
@@ -49,32 +55,22 @@ Description-Content-Type: text/markdown
49
55
  <a href="pyproject.toml">
50
56
  <img alt="Python" src="https://img.shields.io/badge/python-3.10%2B-blue?style=flat-square">
51
57
  </a>
52
- <a href="https://github.com/Comradery64/Clau-Decode/blob/main/CHANGELOG.md">
58
+ <a href="https://github.com/Comradery64/Agent-Decoder/blob/main/CHANGELOG.md">
53
59
  <img alt="Changelog" src="https://img.shields.io/badge/changelog-keep--a--changelog-orange?style=flat-square">
54
60
  </a>
55
61
  </p>
56
62
 
57
63
  <p align="center">
58
- <video
59
- src="https://github.com/user-attachments/assets/6f5a9a09-fbab-467f-82b1-c2e642dc8726"
60
- poster="https://github.com/Comradery64/Clau-Decode/raw/main/docs/demo-poster.jpg"
61
- controls
62
- muted
63
- playsinline
64
- width="820">
65
- <a href="https://github.com/user-attachments/assets/6f5a9a09-fbab-467f-82b1-c2e642dc8726">
66
- <img src="https://github.com/Comradery64/Clau-Decode/raw/main/docs/demo-poster.jpg" alt="Clau-Decode demo — click to play" width="820">
67
- </a>
68
- </video>
64
+ <img src="docs/ad-poster.png" alt="Agent Decoder R.I.N.G. retro-futurist ad poster" width="360">
69
65
  </p>
70
66
 
71
67
  ---
72
68
 
73
- ## Why Clau-Decode?
69
+ ## Why Agent Decoder?
74
70
 
75
71
  Your AI coding assistant writes a small mountain of JSONL session files into
76
72
  `~/.claude/projects/` — useful, but unreadable and impossible to search by hand.
77
- Clau-Decode reads those files locally, indexes them into SQLite, and serves a
73
+ Agent Decoder reads those files locally, indexes them into SQLite, and serves a
78
74
  fast browser UI with full-text search, conversation rendering, analytics, and a
79
75
  recap engine.
80
76
 
@@ -83,22 +79,22 @@ recap engine.
83
79
  ```bash
84
80
  # Install as an isolated tool — its own virtualenv, on your PATH, nothing
85
81
  # touches your system Python. Use whichever you already have:
86
- uv tool install git+https://github.com/Comradery64/Clau-Decode.git
82
+ uv tool install git+https://github.com/Comradery64/Agent-Decoder.git
87
83
  # or:
88
- pipx install git+https://github.com/Comradery64/Clau-Decode.git
84
+ pipx install git+https://github.com/Comradery64/Agent-Decoder.git
89
85
 
90
- clau-decode # opens http://localhost:4242
86
+ ring # opens http://localhost:4242
91
87
 
92
88
  # update later — re-pull the latest from main (git installs need --force;
93
89
  # plain `upgrade`/`reinstall` won't fetch new commits):
94
- uv tool install --force git+https://github.com/Comradery64/Clau-Decode.git
90
+ uv tool install --force git+https://github.com/Comradery64/Agent-Decoder.git
95
91
  # or:
96
- pipx install --force git+https://github.com/Comradery64/Clau-Decode.git
92
+ pipx install --force git+https://github.com/Comradery64/Agent-Decoder.git
97
93
  ```
98
94
 
99
95
  Requires Python 3.10+. The wheel ships the pre-built frontend, so **no Node.js is needed** — only for development. All data stays on your machine — no telemetry.
100
96
 
101
- > Just trying it out? Run without installing: `uvx --from git+https://github.com/Comradery64/Clau-Decode.git clau-decode`
97
+ > Just trying it out? Run without installing: `uvx --from git+https://github.com/Comradery64/Agent-Decoder.git ring`
102
98
  > Prefer not to install? Run it straight from a clone — see [Development](#development).
103
99
  > Advanced: `pip install` works too, but only **inside an activated virtualenv** — never your system/Homebrew Python (PEP 668 will block it, and a global install can shadow other checkouts).
104
100
 
@@ -121,6 +117,22 @@ git fetch origin && git reset --hard origin/main
121
117
  - `Cmd+K` global search across every session — content, tool use, file paths, thinking blocks
122
118
  - Inline live-search bar on the home page for quick lookups
123
119
  - Results show highlighted excerpts and jump directly to the matching message
120
+ - Query syntax (works in both search boxes):
121
+
122
+ | Type | Means |
123
+ |------|-------|
124
+ | `"exact phrase"` | match the words together, in order |
125
+ | `-word` / `-"a phrase"` | exclude messages containing it |
126
+ | `a OR b` | either term (plain spaces mean AND) |
127
+ | `deploy*` | prefix match |
128
+ | `role:user` / `-role:assistant` | only / not that role |
129
+ | `project:foo` / `-project:foo` | project id contains / doesn't contain `foo` |
130
+ | `session:<id>` | one session |
131
+ | `after:2026-01-01` `before:2026-02-01` | date range (ISO dates) |
132
+
133
+ Example: `"staging deploy" -rollback role:user after:2026-09-01`. A query needs at
134
+ least one positive term — `-word` or filters alone return nothing. Unknown
135
+ `key:` prefixes (like `http://x`) are searched as plain text.
124
136
 
125
137
  ### Conversation viewer
126
138
  - Rendered markdown with code syntax highlighting
@@ -207,11 +219,11 @@ git fetch origin && git reset --hard origin/main
207
219
 
208
220
  | Command | Description |
209
221
  |---------|-------------|
210
- | `clau-decode` | Launch the web UI (default) |
211
- | `clau-decode scan` | Rescan and print summary |
212
- | `clau-decode today` | Show today's token usage and cost |
213
- | `clau-decode stats` | Print statistical metrics |
214
- | `clau-decode tips` | Print optimization tips |
222
+ | `ring` | Launch the web UI (default) |
223
+ | `ring scan` | Rescan and print summary |
224
+ | `ring today` | Show today's token usage and cost |
225
+ | `ring stats` | Print statistical metrics |
226
+ | `ring tips` | Print optimization tips |
215
227
 
216
228
  ### Keyboard shortcuts
217
229
 
@@ -229,7 +241,7 @@ git fetch origin && git reset --hard origin/main
229
241
 
230
242
  ## Configuration
231
243
 
232
- Settings are saved to `~/.config/clau-decode/config.json`. Edit them in the UI,
244
+ Settings are saved to `~/.config/agent-decoder/config.json`. Edit them in the UI,
233
245
  or directly:
234
246
 
235
247
  ```json
@@ -242,14 +254,14 @@ or directly:
242
254
  }
243
255
  ```
244
256
 
245
- The session index lives at `~/.local/share/clau-decode/index.db` (durable, so it
246
- survives cache clears). To force a full rescan, run `clau-decode --force-refresh` —
257
+ The session index lives at `~/.local/share/agent-decoder/index.db` (durable, so it
258
+ survives cache clears). To force a full rescan, run `ring --force-refresh` —
247
259
  prefer this over deleting the DB, which also discards stars, archives, and custom
248
260
  titles.
249
261
 
250
262
  ## Architecture
251
263
 
252
- Clau-Decode is a local-first FastAPI server that scans your AI coding
264
+ Agent Decoder is a local-first FastAPI server that scans your AI coding
253
265
  assistant's JSONL session files into a SQLite index, serves a React +
254
266
  TypeScript SPA, and drives the Claude CLI through a hidden PTY for in-app
255
267
  sessions.
@@ -259,17 +271,17 @@ See [`ARCHITECTURE.md`](ARCHITECTURE.md) for a system diagram and deeper notes.
259
271
  ## Development
260
272
 
261
273
  ```bash
262
- git clone https://github.com/Comradery64/Clau-Decode
263
- cd Clau-Decode
274
+ git clone https://github.com/Comradery64/Agent-Decoder
275
+ cd Agent Decoder
264
276
 
265
277
  # Install backend deps (into an isolated .venv) + build the frontend
266
278
  make dev # = uv sync && build frontend
267
279
 
268
280
  # Run the app from source — in the project venv, so it always runs THIS
269
281
  # checkout (no global install, no shadowing):
270
- uv run clau-decode --no-open
282
+ uv run ring --no-open
271
283
  # equivalently, as a module from the checkout root:
272
- uv run python -m clau_decode --no-open
284
+ uv run python -m agent_decoder --no-open
273
285
  # (make run wraps this)
274
286
 
275
287
  # Run tests
@@ -306,9 +318,9 @@ process in [`SECURITY.md`](SECURITY.md) — do **not** open a public issue.
306
318
 
307
319
  ## Acknowledgements
308
320
 
309
- Clau-Decode is **inspired by, and built around the file format of, [Claude](https://www.anthropic.com/claude) and Claude Code from [Anthropic](https://www.anthropic.com/)**. This project is not affiliated with, endorsed by, or sponsored by Anthropic, PBC. *Claude* and *Claude Code* are trademarks of Anthropic, PBC; all references in this project are nominative.
321
+ Agent Decoder is **inspired by, and built around the file format of, [Claude](https://www.anthropic.com/claude) and Claude Code from [Anthropic](https://www.anthropic.com/)**. This project is not affiliated with, endorsed by, or sponsored by Anthropic, PBC. *Claude* and *Claude Code* are trademarks of Anthropic, PBC; all references in this project are nominative.
310
322
 
311
- > *A personal note from the author* — I didn't write the code in this repository or build any of the underlying tools. I sat at my computer, typed into it, and kept asking it for more. The actual line-by-line authoring was done by AI coding assistants — Anthropic's [Claude](https://www.anthropic.com/claude) (Sonnet and Opus) and [Z.ai](https://z.ai/)'s GLM-5.1, with the latter doing a substantial share of the heavy lifting alongside them. They aren't in the lists below because they're AI models rather than libraries, but they deserve named credit here. The projects, products, and people below did the rest of the real work that made Clau-Decode possible:
323
+ > *A personal note from the author* — I didn't write the code in this repository or build any of the underlying tools. I sat at my computer, typed into it, and kept asking it for more. The actual line-by-line authoring was done by AI coding assistants — Anthropic's [Claude](https://www.anthropic.com/claude) (Sonnet and Opus) and [Z.ai](https://z.ai/)'s GLM-5.1, with the latter doing a substantial share of the heavy lifting alongside them. They aren't in the lists below because they're AI models rather than libraries, but they deserve named credit here. The projects, products, and people below did the rest of the real work that made Agent Decoder possible:
312
324
 
313
325
  **Backend (Python)**
314
326
 
@@ -370,7 +382,7 @@ The Native view ships these monospace fonts so the in-app font picker works on a
370
382
  - [Ruff](https://docs.astral.sh/ruff/) and [pre-commit](https://pre-commit.com/) — code style and pre-commit hooks
371
383
  - [Editorconfig](https://editorconfig.org/) — consistent indentation across editors
372
384
 
373
- Every project listed above is independently licensed by its respective authors; check each project's repository for terms. If we've missed an attribution, please [open an issue](https://github.com/Comradery64/Clau-Decode/issues).
385
+ Every project listed above is independently licensed by its respective authors; check each project's repository for terms. If we've missed an attribution, please [open an issue](https://github.com/Comradery64/Agent-Decoder/issues).
374
386
 
375
387
  ## License
376
388