dexterm-cli 0.1.3 → 0.1.5

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 (259) hide show
  1. package/dist/packages/cli/assets/claude/analyst-system.md +2 -1
  2. package/dist/packages/cli/src/agent-paper.js +60 -0
  3. package/dist/packages/cli/src/analyst/backend.js +183 -0
  4. package/dist/packages/cli/src/analyst/codex.js +301 -0
  5. package/dist/packages/cli/src/analyst/session.js +9 -2
  6. package/dist/packages/cli/src/app-help-gen.js +18 -9
  7. package/dist/packages/cli/src/docs-kb-gen.js +228 -0
  8. package/dist/packages/cli/src/doctor.js +80 -9
  9. package/dist/packages/cli/src/index.js +1 -1
  10. package/dist/packages/cli/src/kb-skill-cmd.js +3 -0
  11. package/dist/packages/cli/src/larp-detected.js +209 -0
  12. package/dist/packages/cli/src/live/dev-history.js +99 -0
  13. package/dist/packages/cli/src/live/newpairs.js +12 -0
  14. package/dist/packages/cli/src/live/screens/token-live.js +11 -1
  15. package/dist/packages/cli/src/live/token.js +39 -1
  16. package/dist/packages/cli/src/main.js +260 -7
  17. package/dist/packages/cli/src/mcp-follow.js +255 -0
  18. package/dist/packages/cli/src/record-cmd.js +2 -0
  19. package/dist/packages/cli/src/rules.js +25 -2
  20. package/dist/packages/cli/src/screens/analyst-session.js +5 -3
  21. package/dist/packages/cli/src/screens/analyst.js +4 -3
  22. package/dist/packages/cli/src/spectate-cmd.js +14 -3
  23. package/dist/packages/cli/src/version.js +1 -1
  24. package/dist/packages/cli/src/x-cmd.js +11 -5
  25. package/dist/packages/custom/src/rules.js +2 -2
  26. package/dist/packages/custom/src/schema.js +5 -1
  27. package/dist/packages/data/src/fixtures.js +28 -6
  28. package/dist/packages/data/src/index.js +3 -0
  29. package/dist/packages/data/src/sources/jupiter.js +1 -0
  30. package/dist/packages/data/src/trade/agent/paper-desk.js +336 -0
  31. package/dist/packages/data/src/trade/agent/rendezvous.js +161 -0
  32. package/dist/packages/mcp/assets/kb/app-help/agent-paper-trade.md +38 -0
  33. package/dist/packages/mcp/assets/kb/app-help/ask-the-analyst.md +1 -1
  34. package/dist/packages/mcp/assets/kb/app-help/connect-an-agent.md +1 -1
  35. package/dist/packages/mcp/assets/kb/app-help/dev-history.md +32 -0
  36. package/dist/packages/mcp/assets/kb/app-help/paper-trade.md +1 -1
  37. package/dist/packages/mcp/assets/kb/app-help/screen-positions.md +4 -1
  38. package/dist/packages/mcp/assets/kb/app-help/screen-token.md +1 -0
  39. package/dist/packages/mcp/assets/kb/app-help/spectate-an-agent.md +4 -1
  40. package/dist/packages/mcp/assets/kb/app-help/use-codex-analyst.md +31 -0
  41. package/dist/packages/mcp/assets/kb/docs/docs-agents-agent-paper-trading.md +50 -0
  42. package/dist/packages/mcp/assets/kb/docs/docs-agents-capability-tiers-enforced-server-side.md +38 -0
  43. package/dist/packages/mcp/assets/kb/docs/docs-agents-directory-metadata-prepared-not-submitted.md +36 -0
  44. package/dist/packages/mcp/assets/kb/docs/docs-agents-install-in-one-command.md +51 -0
  45. package/dist/packages/mcp/assets/kb/docs/docs-agents-per-agent-mandates.md +35 -0
  46. package/dist/packages/mcp/assets/kb/docs/docs-agents-recipes.md +43 -0
  47. package/dist/packages/mcp/assets/kb/docs/docs-agents-red-team-coverage.md +30 -0
  48. package/dist/packages/mcp/assets/kb/docs/docs-agents-two-ways-to-connect.md +37 -0
  49. package/dist/packages/mcp/assets/kb/docs/docs-agents-untrusted-by-default.md +36 -0
  50. package/dist/packages/mcp/assets/kb/docs/docs-agents-watch-an-agent-work-spectator-view.md +35 -0
  51. package/dist/packages/mcp/assets/kb/docs/docs-agents.md +26 -0
  52. package/dist/packages/mcp/assets/kb/docs/docs-analyst-answer-style.md +35 -0
  53. package/dist/packages/mcp/assets/kb/docs/docs-analyst-if-claude-is-missing.md +25 -0
  54. package/dist/packages/mcp/assets/kb/docs/docs-analyst-it-knows-the-app.md +33 -0
  55. package/dist/packages/mcp/assets/kb/docs/docs-analyst-mcp-tools.md +33 -0
  56. package/dist/packages/mcp/assets/kb/docs/docs-analyst-plain-language-filters.md +25 -0
  57. package/dist/packages/mcp/assets/kb/docs/docs-analyst-skills.md +31 -0
  58. package/dist/packages/mcp/assets/kb/docs/docs-analyst-starting-a-run.md +33 -0
  59. package/dist/packages/mcp/assets/kb/docs/docs-analyst-use-codex-instead-of-claude.md +35 -0
  60. package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-it-can-change-three-tiers.md +33 -0
  61. package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-it-sees.md +26 -0
  62. package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-the-analyst-can-never-do.md +31 -0
  63. package/dist/packages/mcp/assets/kb/docs/docs-analyst.md +23 -0
  64. package/dist/packages/mcp/assets/kb/docs/docs-beginners-1-start-dexterm.md +35 -0
  65. package/dist/packages/mcp/assets/kb/docs/docs-beginners-2-open-a-real-coin-by-contract-address.md +43 -0
  66. package/dist/packages/mcp/assets/kb/docs/docs-beginners-3-read-the-safety-panel.md +40 -0
  67. package/dist/packages/mcp/assets/kb/docs/docs-beginners-4-read-the-holder-panel.md +35 -0
  68. package/dist/packages/mcp/assets/kb/docs/docs-beginners-5-optionally-ask-the-analyst.md +39 -0
  69. package/dist/packages/mcp/assets/kb/docs/docs-beginners-6-export-or-share-what-you-see.md +34 -0
  70. package/dist/packages/mcp/assets/kb/docs/docs-beginners-7-quit-safely.md +34 -0
  71. package/dist/packages/mcp/assets/kb/docs/docs-beginners-before-any-experimental-trading.md +33 -0
  72. package/dist/packages/mcp/assets/kb/docs/docs-beginners-check-the-installation-with-doctor.md +38 -0
  73. package/dist/packages/mcp/assets/kb/docs/docs-beginners-choose-a-setup-path.md +30 -0
  74. package/dist/packages/mcp/assets/kb/docs/docs-beginners-common-mistakes-and-recovery.md +30 -0
  75. package/dist/packages/mcp/assets/kb/docs/docs-beginners-copy-and-paste-without-surprises.md +39 -0
  76. package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-data-says-unavailable-stale-or-rate-limited.md +35 -0
  77. package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-dexterm-says-command-not-found.md +36 -0
  78. package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-optional-help-is-unavailable.md +33 -0
  79. package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-paste-does-nothing-or-pastes-twice.md +35 -0
  80. package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-the-screen-looks-broken.md +33 -0
  81. package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-you-typed-the-wrong-thing.md +33 -0
  82. package/dist/packages/mcp/assets/kb/docs/docs-beginners-install-node-js-first.md +36 -0
  83. package/dist/packages/mcp/assets/kb/docs/docs-beginners-linux.md +30 -0
  84. package/dist/packages/mcp/assets/kb/docs/docs-beginners-macos-homebrew.md +46 -0
  85. package/dist/packages/mcp/assets/kb/docs/docs-beginners-macos-or-linux-npm.md +39 -0
  86. package/dist/packages/mcp/assets/kb/docs/docs-beginners-macos.md +30 -0
  87. package/dist/packages/mcp/assets/kb/docs/docs-beginners-open-the-terminal.md +29 -0
  88. package/dist/packages/mcp/assets/kb/docs/docs-beginners-reopen-dexterm-later.md +36 -0
  89. package/dist/packages/mcp/assets/kb/docs/docs-beginners-ten-minute-first-win.md +30 -0
  90. package/dist/packages/mcp/assets/kb/docs/docs-beginners-terminal-shell-prompt-command-output-and-path.md +40 -0
  91. package/dist/packages/mcp/assets/kb/docs/docs-beginners-where-to-go-next.md +32 -0
  92. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows-expectations.md +29 -0
  93. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows-powershell-experimental.md +39 -0
  94. package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows.md +30 -0
  95. package/dist/packages/mcp/assets/kb/docs/docs-beginners.md +29 -0
  96. package/dist/packages/mcp/assets/kb/docs/docs-cli-dexterm-help.md +31 -0
  97. package/dist/packages/mcp/assets/kb/docs/docs-cli-filter-grammar.md +37 -0
  98. package/dist/packages/mcp/assets/kb/docs/docs-cli-flags.md +27 -0
  99. package/dist/packages/mcp/assets/kb/docs/docs-cli-invocations.md +43 -0
  100. package/dist/packages/mcp/assets/kb/docs/docs-cli-presets.md +26 -0
  101. package/dist/packages/mcp/assets/kb/docs/docs-cli-scan-commands.md +26 -0
  102. package/dist/packages/mcp/assets/kb/docs/docs-cli-sort-keys.md +27 -0
  103. package/dist/packages/mcp/assets/kb/docs/docs-cli-subcommands.md +26 -0
  104. package/dist/packages/mcp/assets/kb/docs/docs-cli.md +25 -0
  105. package/dist/packages/mcp/assets/kb/docs/docs-configuration-environment-variables.md +47 -0
  106. package/dist/packages/mcp/assets/kb/docs/docs-configuration-files-on-disk.md +41 -0
  107. package/dist/packages/mcp/assets/kb/docs/docs-configuration-headless-recorder-dexterm-record.md +44 -0
  108. package/dist/packages/mcp/assets/kb/docs/docs-configuration-history-recorder.md +33 -0
  109. package/dist/packages/mcp/assets/kb/docs/docs-configuration-packs.md +38 -0
  110. package/dist/packages/mcp/assets/kb/docs/docs-configuration-price-display-mode.md +35 -0
  111. package/dist/packages/mcp/assets/kb/docs/docs-configuration-push-alerts-and-dexterm-watch.md +45 -0
  112. package/dist/packages/mcp/assets/kb/docs/docs-configuration-rules-engine.md +37 -0
  113. package/dist/packages/mcp/assets/kb/docs/docs-configuration-the-analyst-s-launch.md +29 -0
  114. package/dist/packages/mcp/assets/kb/docs/docs-configuration-the-optional-free-rpc-key.md +42 -0
  115. package/dist/packages/mcp/assets/kb/docs/docs-configuration-themes-and-keymaps.md +29 -0
  116. package/dist/packages/mcp/assets/kb/docs/docs-configuration-themes-and-look.md +27 -0
  117. package/dist/packages/mcp/assets/kb/docs/docs-configuration-widgets.md +31 -0
  118. package/dist/packages/mcp/assets/kb/docs/docs-configuration-workspaces.md +30 -0
  119. package/dist/packages/mcp/assets/kb/docs/docs-configuration.md +25 -0
  120. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-1-follow-a-wallet-see-what-it-does.md +51 -0
  121. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-2-the-one-key-mirror-ticket-a-proposal.md +56 -0
  122. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-3-capped-auto-mirror-default-off-less.md +47 -0
  123. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-what-is-proven-what-is-not.md +36 -0
  124. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading.md +31 -0
  125. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-cache.md +32 -0
  126. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-health-registry.md +29 -0
  127. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-rate-limits-and-pacing.md +32 -0
  128. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-request-budget-meter.md +30 -0
  129. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-sources.md +47 -0
  130. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-the-helius-credit-meter.md +30 -0
  131. package/dist/packages/mcp/assets/kb/docs/docs-data-sources.md +27 -0
  132. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-dexterm-doctor.md +33 -0
  133. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-first-run.md +34 -0
  134. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-install.md +81 -0
  135. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-next.md +32 -0
  136. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-requirements.md +35 -0
  137. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-running-the-tests.md +34 -0
  138. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-supported-platforms.md +44 -0
  139. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-updating.md +28 -0
  140. package/dist/packages/mcp/assets/kb/docs/docs-getting-started.md +27 -0
  141. package/dist/packages/mcp/assets/kb/docs/docs-keyboard-global-keys.md +26 -0
  142. package/dist/packages/mcp/assets/kb/docs/docs-keyboard-keys-handled-by-the-loop.md +29 -0
  143. package/dist/packages/mcp/assets/kb/docs/docs-keyboard-per-screen-keys.md +26 -0
  144. package/dist/packages/mcp/assets/kb/docs/docs-keyboard-what-shows.md +27 -0
  145. package/dist/packages/mcp/assets/kb/docs/docs-keyboard.md +26 -0
  146. package/dist/packages/mcp/assets/kb/docs/docs-larp-measured-accuracy.md +53 -0
  147. package/dist/packages/mcp/assets/kb/docs/docs-larp-open-link-keys.md +26 -0
  148. package/dist/packages/mcp/assets/kb/docs/docs-larp-paste-a-coin-on-the-web.md +35 -0
  149. package/dist/packages/mcp/assets/kb/docs/docs-larp-the-verdict.md +29 -0
  150. package/dist/packages/mcp/assets/kb/docs/docs-larp-timestamped-follow-up-drafts.md +35 -0
  151. package/dist/packages/mcp/assets/kb/docs/docs-larp-what-it-looks-at.md +33 -0
  152. package/dist/packages/mcp/assets/kb/docs/docs-larp.md +24 -0
  153. package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-degraded-states-you-will-see.md +36 -0
  154. package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-free-vs-paid-x-api-tiers-your-bill-your-limits.md +37 -0
  155. package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-kol-lists-and-the-per-handle-filter.md +28 -0
  156. package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-tests.md +25 -0
  157. package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-what-is-read-and-when.md +35 -0
  158. package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-what-you-set-up-once.md +40 -0
  159. package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-where-the-tokens-live.md +27 -0
  160. package/dist/packages/mcp/assets/kb/docs/docs-login-with-x.md +26 -0
  161. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-a-live-ticket.md +42 -0
  162. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-before-you-press-size-vs-caps.md +34 -0
  163. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-devnet-signer-mainnet-token.md +35 -0
  164. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-jupiter-rate-limits.md +33 -0
  165. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-letting-an-agent-paper-trade-experimental.md +32 -0
  166. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet.md +32 -0
  167. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-live-trading-devnet-first.md +30 -0
  168. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-mainnet.md +31 -0
  169. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-order-plans-and-standing-mandates.md +44 -0
  170. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-panic.md +31 -0
  171. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-pnl-cards.md +37 -0
  172. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-live-fire-path-devnet-the-fast-wallet.md +41 -0
  173. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-signer-process.md +34 -0
  174. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-ticket.md +31 -0
  175. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-wallet.md +34 -0
  176. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-trade-moments.md +32 -0
  177. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-what-the-live-path-keeps.md +37 -0
  178. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-your-first-live-trade.md +41 -0
  179. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading.md +32 -0
  180. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-bubble-map-popup.md +27 -0
  181. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-build-the-native-window.md +33 -0
  182. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-config-dexterm-popup-json.md +38 -0
  183. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-docking-macos.md +27 -0
  184. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-keys-in-the-popup.md +30 -0
  185. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-market-cap-axis.md +28 -0
  186. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-security-model.md +33 -0
  187. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-token-and-feeds-popups.md +38 -0
  188. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-what-it-shows.md +30 -0
  189. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart.md +27 -0
  190. package/dist/packages/mcp/assets/kb/docs/docs-scan-cost-control.md +28 -0
  191. package/dist/packages/mcp/assets/kb/docs/docs-scan-keys-flag-command.md +34 -0
  192. package/dist/packages/mcp/assets/kb/docs/docs-scan-safety-four-layers.md +32 -0
  193. package/dist/packages/mcp/assets/kb/docs/docs-scan-states.md +27 -0
  194. package/dist/packages/mcp/assets/kb/docs/docs-scan-the-read.md +25 -0
  195. package/dist/packages/mcp/assets/kb/docs/docs-scan-triggers-and-score.md +37 -0
  196. package/dist/packages/mcp/assets/kb/docs/docs-scan.md +24 -0
  197. package/dist/packages/mcp/assets/kb/docs/docs-scorecard-frozen-canary.md +30 -0
  198. package/dist/packages/mcp/assets/kb/docs/docs-scorecard-frozen-task-1401-evaluation.md +35 -0
  199. package/dist/packages/mcp/assets/kb/docs/docs-scorecard-latest-skill-care-run.md +33 -0
  200. package/dist/packages/mcp/assets/kb/docs/docs-scorecard-links-only-larp-baseline-where-it-is-weak.md +35 -0
  201. package/dist/packages/mcp/assets/kb/docs/docs-scorecard-not-measured.md +29 -0
  202. package/dist/packages/mcp/assets/kb/docs/docs-scorecard-rug-verdict-rules.md +33 -0
  203. package/dist/packages/mcp/assets/kb/docs/docs-scorecard-source-and-rebuild.md +31 -0
  204. package/dist/packages/mcp/assets/kb/docs/docs-scorecard.md +27 -0
  205. package/dist/packages/mcp/assets/kb/docs/docs-screens-1-screener.md +35 -0
  206. package/dist/packages/mcp/assets/kb/docs/docs-screens-2-new-pairs.md +28 -0
  207. package/dist/packages/mcp/assets/kb/docs/docs-screens-3-watchlist.md +27 -0
  208. package/dist/packages/mcp/assets/kb/docs/docs-screens-4-analyst-tab.md +28 -0
  209. package/dist/packages/mcp/assets/kb/docs/docs-screens-bubble-map.md +32 -0
  210. package/dist/packages/mcp/assets/kb/docs/docs-screens-coin-images.md +32 -0
  211. package/dist/packages/mcp/assets/kb/docs/docs-screens-dev-history.md +44 -0
  212. package/dist/packages/mcp/assets/kb/docs/docs-screens-how-well-it-predicts-measured-held-out.md +46 -0
  213. package/dist/packages/mcp/assets/kb/docs/docs-screens-live-holder-and-rug-signals.md +51 -0
  214. package/dist/packages/mcp/assets/kb/docs/docs-screens-order-plans.md +26 -0
  215. package/dist/packages/mcp/assets/kb/docs/docs-screens-paper-ticket-and-positions.md +29 -0
  216. package/dist/packages/mcp/assets/kb/docs/docs-screens-the-look.md +29 -0
  217. package/dist/packages/mcp/assets/kb/docs/docs-screens-token-screen.md +36 -0
  218. package/dist/packages/mcp/assets/kb/docs/docs-screens-trending-social-and-kol-lists.md +34 -0
  219. package/dist/packages/mcp/assets/kb/docs/docs-screens.md +26 -0
  220. package/dist/packages/mcp/assets/kb/docs/docs-spectator-1-the-agent-activity-window-follow-mode.md +56 -0
  221. package/dist/packages/mcp/assets/kb/docs/docs-spectator-2-the-read-only-stream-spectate.md +42 -0
  222. package/dist/packages/mcp/assets/kb/docs/docs-spectator-3-save-and-replay-record-file-dexterm-spectate.md +41 -0
  223. package/dist/packages/mcp/assets/kb/docs/docs-spectator-follow-over-mcp-in-the-running-terminal.md +39 -0
  224. package/dist/packages/mcp/assets/kb/docs/docs-spectator-limits.md +36 -0
  225. package/dist/packages/mcp/assets/kb/docs/docs-spectator-quick-start.md +37 -0
  226. package/dist/packages/mcp/assets/kb/docs/docs-spectator-security-model.md +35 -0
  227. package/dist/packages/mcp/assets/kb/docs/docs-spectator-see-also.md +29 -0
  228. package/dist/packages/mcp/assets/kb/docs/docs-spectator-streaming-it.md +32 -0
  229. package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-three-surfaces.md +37 -0
  230. package/dist/packages/mcp/assets/kb/docs/docs-spectator-what-is-redacted.md +35 -0
  231. package/dist/packages/mcp/assets/kb/docs/docs-spectator.md +29 -0
  232. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-common-questions.md +33 -0
  233. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-doctor-lines.md +38 -0
  234. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-in-app-messages.md +42 -0
  235. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-reporting-a-problem.md +25 -0
  236. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting.md +23 -0
  237. package/dist/packages/mcp/assets/kb/docs/docs-voice-doctor.md +26 -0
  238. package/dist/packages/mcp/assets/kb/docs/docs-voice-it-clarifies-it-never-guesses.md +36 -0
  239. package/dist/packages/mcp/assets/kb/docs/docs-voice-latency.md +38 -0
  240. package/dist/packages/mcp/assets/kb/docs/docs-voice-linux-and-windows.md +32 -0
  241. package/dist/packages/mcp/assets/kb/docs/docs-voice-privacy.md +26 -0
  242. package/dist/packages/mcp/assets/kb/docs/docs-voice-still-unverified.md +27 -0
  243. package/dist/packages/mcp/assets/kb/docs/docs-voice-the-voice-neural-by-default.md +48 -0
  244. package/dist/packages/mcp/assets/kb/docs/docs-voice-what-it-can-never-do.md +27 -0
  245. package/dist/packages/mcp/assets/kb/docs/docs-voice-what-you-can-say.md +38 -0
  246. package/dist/packages/mcp/assets/kb/docs/docs-voice.md +25 -0
  247. package/dist/packages/mcp/src/app-help.js +123 -0
  248. package/dist/packages/mcp/src/firewall.js +2 -2
  249. package/dist/packages/mcp/src/index.js +8 -4
  250. package/dist/packages/mcp/src/paper-agent.js +92 -0
  251. package/dist/packages/mcp/src/server.js +261 -29
  252. package/dist/packages/mcp/src/spectator-sink.js +146 -5
  253. package/dist/packages/mcp/src/user-content.js +1 -0
  254. package/dist/packages/recorder/src/dev-history.js +129 -0
  255. package/dist/packages/recorder/src/index.js +1 -0
  256. package/dist/packages/recorder/src/recorder.js +23 -0
  257. package/dist/packages/recorder/src/schema.js +11 -0
  258. package/dist/packages/voice/src/stt/whisper.js +4 -2
  259. package/package.json +6 -5
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: docs-screens-2-new-pairs
3
+ title: Screens tour › 2 · New pairs
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: 2 · New pairs
8
+ anchor: 2-new-pairs
9
+ url: https://dexterm.xyz/docs/screens#2-new-pairs
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - new
14
+ - pairs
15
+ - tour
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/screens.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ new pairs on sample data
27
+
28
+ A push stream of pump.fun creates and migrations from PumpPortal on one WebSocket, plus Jupiter `recent` and RugCheck `new_tokens` polls. Bonding progress is estimated from the curve's virtual reserves at create time and says so. The SNIPE and BUNDLE columns and the spotlight's Snipers and Bundled rows come from the wallet-intel scan (https://dexterm.xyz/docs/screens#bubble-map) of the row your cursor rests on, after about 2 s. The scan only runs with a free Helius key, because only Helius history can read the launch window. An unscanned row shows a dash, a scan in flight shows `…`, and without the key the spotlight says `needs Helius key`. No number is guessed. The highlight follows the coin you picked by mint, so a new arrival never shifts your cursor onto another row.
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: docs-screens-3-watchlist
3
+ title: Screens tour › 3 · Watchlist
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: 3 · Watchlist
8
+ anchor: 3-watchlist
9
+ url: https://dexterm.xyz/docs/screens#3-watchlist
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - watchlist
14
+ - tour
15
+ confidence: high
16
+ owner: maintainers
17
+ origin: docs-generated
18
+ reviewed_by: generated@2026-10-16
19
+ generated_from: dexterm/site content/docs (task-1420)
20
+ sources:
21
+ - site/content/docs/screens.md
22
+ date: 2026-10-16
23
+ ---
24
+
25
+ the watchlist on sample data
26
+
27
+ A local SQLite watchlist priced every (generated from the app: see https://dexterm.xyz/docs/screens#3-watchlist; app-help has the exact keys and commands) s, with the LIVE/POLL badge per row. Alerts are proposals until you arm them with `y`; armed rules fire once into the ALERTS log. `d` removes a row. Nothing here trades.
@@ -0,0 +1,28 @@
1
+ ---
2
+ id: docs-screens-4-analyst-tab
3
+ title: Screens tour › 4 · Analyst tab
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: 4 · Analyst tab
8
+ anchor: 4-analyst-tab
9
+ url: https://dexterm.xyz/docs/screens#4-analyst-tab
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - analyst
14
+ - tab
15
+ - tour
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/screens.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ the analyst tab on sample data (the transcript is demo text; a real run spawns your own claude)
27
+
28
+ A chat beside a navigable coin list. `↑`/`↓` change the selected coin (which updates the context the analyst sees next turn); `PgUp`/`PgDn` scroll the transcript; `i` or `⏎` focuses the input. When an answer lists coins it renders as a table you can navigate: `⏎` opens the coin, `o` opens its PAPER ticket. Details in the analyst (https://dexterm.xyz/docs/analyst).
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: docs-screens-bubble-map
3
+ title: Screens tour › Bubble map
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: Bubble map
8
+ anchor: bubble-map
9
+ url: https://dexterm.xyz/docs/screens#bubble-map
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - bubble
14
+ - map
15
+ - tour
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/screens.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ `M` on a token opens the holder graph. Each of the top token accounts (merged by owner) is a disc whose **area is its share of supply**, drawn on a half-row pixel grid so it is round in the terminal without any image protocol. **Colour is the rule that labelled the wallet, never a judgement:** yellow dev / dev-linked, magenta bundle, green linked by a shared funder (orange for a direct transfer), red sniper, cyan pool / LP / program-owned vault, grey exchange or multi-token whale, dim unlinked. Linked wallets sit inside a dotted ring with a tag like `B·C1 6w 12.0%`; `j`/`k` select a holder (phosphor, with dotted edges to its cluster mates), `m` flips to a treemap (share, not linkage), `z` zooms the selected cluster, `D` forces a deep scan, `r` rescans, `M` opens the popup window (https://dexterm.xyz/docs/popup-chart#bubble-map-popup).
27
+
28
+ The rules (from the task-1286 spike, replay-tested against its recordings): **P1 pool** (the selling counterparty in ≥ 25 % of launch transactions), **D1 creator** (fee payer of the first transaction referencing the mint), **R1 funder** (two holders share a funding source; a shared exchange funder is a veto, not a link), **R1b** (a holder funded another holder), **R2 bundle** (same-slot buys **and** a shared funder; same-slot alone is a cohort), **R3 transfer** (a direct token move between two holders, pools excluded), **R4 dev-linked** (funded by the creator), **R5 same-slot-created** (weak, shown, never links), **S1 sniper** (bought in the first 3 slots after the first pool trade), **F1 fresh-at-buy** (the wallet's first transactions already move this token), **X1 multi-token-top20**, and **L0** static lists. The **WHY THIS LABEL** panel leads with the holder's class (POOL, CURVE, VAULT, LOCK, CEX, BURN, DEV, LINKED or UNLABELLED) and the on-chain reason, then prints each rule with its confidence (`on-chain`, `program-authority`, `derived`, `seed`, `weak`) and up to three evidence lines; exchange labels come from a typed seed list and always read **unverified**. Cabal-class labels (cabal-candidate, smart, bot, follower, call-group) are hidden until their precision is measured.
29
+
30
+ **HOLDER INSIGHTS** print their sample every time (`sample top 20 accts of 142.5K holders · 55% supply · funders 7/20 · launch 300 txs`): top-10 raw (by token account, the explorer number), **ex-pool** (POOL / CURVE / VAULT / LOCK / BURN owners dropped; the cluster-adjusted figure, with linked owners merged and exchanges dropped too, rides underneath), a red **main risk** line when a counted owner holds more than 30 %, snipers, bundled supply, dev share (an upper bound when the creator is outside the sample) and fresh wallets. The token screen's Snipers and Bundled supply rows, the new-pairs SNIPE / BUNDLE columns and the `I` token popup read the same scan.
31
+
32
+ Two scan tiers, both through the limiter, the health registry and the Helius credit meter: **light** when a token opens (top-20 accounts, owner kinds, funders for the 7 largest wallets, the first 100 launch transactions; about 80 credits, less once funders are cached, since a wallet's first inflow never changes) and **deep** for watchlist coins or on `D` (every top wallet, 300 launch transactions). Funders and the launch window are Helius-only (`getTransactionsForAddress`): **keyless, the map still draws** from the public RPC holder list with static labels and says plainly that a free Helius key adds funders and the launch window; when no endpoint serves the ranked holder list at all, the screen says `unavailable` with the reason and the fix, never a fake map.
@@ -0,0 +1,32 @@
1
+ ---
2
+ id: docs-screens-coin-images
3
+ title: Screens tour › Coin images
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: Coin images
8
+ anchor: coin-images
9
+ url: https://dexterm.xyz/docs/screens#coin-images
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - coin
14
+ - images
15
+ - tour
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/screens.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ Every row in the screener, new pairs and watchlist carries the coin's picture as a 2-cell icon (dropped silently when the frame is too narrow); the token screen shows an 8×4 picture at the left of its header, the screener's spotlight card a 6×3 one, and the chart popup a 16 px one in its title strip.
27
+
28
+ - **Real pixels** in terminals with an inline-image protocol: kitty graphics (kitty, Ghostty, WezTerm, Konsole), iTerm2 inline images (iTerm2), sixel where the terminal advertises it. At startup dexterm sends one short capability query to the terminal (≤ 150 ms) and picks the richest protocol it actually answers.
29
+ - **Everywhere else, Apple Terminal.app included: block art.** The picture is sampled into half-block and quadrant cells and, on a 256-colour terminal, dithered into the xterm palette so round logos keep their disc. Not a photo, but recognisable at a glance. `dexterm doctor` has a **Coin images** line that says which path you get; Ghostty or iTerm2 (both free) give the real pictures.
30
+ - **A placeholder, never an error:** while a picture loads, when a coin has none, or when its host is down, the box shows the ticker's initial on a colour hashed from the symbol.
31
+ - **Off switch:** `--no-images`, `DEXTERM_IMAGES=0`, or `~/.dexterm/images.json` (`{"enabled": false}`). Replays and offline runs have no network, so pictures there could only come from the cache: they stay off unless asked.
32
+ - **Privacy:** fetching a picture contacts the host that serves it (DexScreener's image CDN for most coins, otherwise the token's own metadata host). dexterm fetches once through its own local cache and the chart popup is served the cached copy, so an image host never sees a popup load and a coin seen before is never fetched again. `--no-images` keeps every image host from ever seeing your IP. Bytes are treated as hostile: sniffed by magic bytes, capped, and decoded by dexterm's own pure-TypeScript decoders (PNG, JPEG, GIF) — nothing executes. The trust page (https://dexterm.xyz/trust/#privacy) has the statement.
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: docs-screens-dev-history
3
+ title: Screens tour › Dev history
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: Dev history
8
+ anchor: dev-history
9
+ url: https://dexterm.xyz/docs/screens#dev-history
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - dev
14
+ - history
15
+ - tour
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/screens.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ *Since 0.1.5.* "Has this deployer rugged before?" The ON-CHAIN panel adds the creator's **recorded** track record, from dexterm's own history recorder (https://dexterm.xyz/docs/configuration#history-recorder), keyless:
27
+
28
+ | row | what it shows |
29
+ | --- | --- |
30
+ | Dev rugs (recorded) | rugs out of the creator's **labelled** prior launches, with the sample (`2/5 · n=5`); red at two or more (the `serial_rugger` flag), `unknown` with no labelled record |
31
+ | Dev launches seen | prior launches the recorder linked to this wallet, and which source named the creator |
32
+ | Dev sold its bag | median minutes from launch to the dev's exit on prior launches (held over 0.5 % of supply, then 0.1 % or less), with n |
33
+ | Dev linked | the creator's funder or the linked cluster it sits in (same funder, same-block bundle, transfers) from the wallet-intel scan (https://dexterm.xyz/docs/screens#bubble-map), and how many of those wallets launched coins that rugged |
34
+
35
+ - **Where the creator comes from.** The wallet a keyless source names when dexterm sees the coin: Jupiter's `dev` field on every token row, a PumpPortal create, or RugCheck's new-token feed. The first source wins and is recorded with the time. GoPlus is asked only by the MCP tool, as a last resort.
36
+ - **Where the outcomes come from.** The recorder's code-only labels (rug, dead, fade, flat, runner; the 72-hour label when known, else the longest one settled). They are the keyless-proxy tier: a rug is a liquidity collapse the recorder saw, not a verified on-chain drain.
37
+ - **Honest by construction.** Every number names its sample and age. No record is `unknown`, never "clean". Only coins this machine's recorder saw count, so a deployer's launches dexterm never saw are missing; run `dexterm record` (https://dexterm.xyz/docs/configuration#headless-recorder-dexterm-record) to keep it fed. It is a risk flag from observed history, never a certificate.
38
+ - **Alerts.** The rule field `devrugs` is the creator's labelled rugs (unknown = no match). A brand-new pair from a wallet with a record joins the rule rows, so this fires on launch:
39
+
40
+ ```text
41
+ when devrugs >= 2 then alert(warn, "new coin from a wallet that rugged before") scope newpairs
42
+ ```
43
+
44
+ - **For agents.** The read-only `dev_history` MCP tool returns the same report by mint or creator wallet; `get_dev_history` and the dossier fill prior launches and rugs from it (tier `local-history`), so the deterministic analysis pack raises `serial_rugger` on recorded history.
@@ -0,0 +1,46 @@
1
+ ---
2
+ id: docs-screens-how-well-it-predicts-measured-held-out
3
+ title: Screens tour › Dev history › How well it predicts (measured, held out)
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: How well it predicts (measured, held out)
8
+ anchor: how-well-it-predicts-measured-held-out
9
+ url: https://dexterm.xyz/docs/screens#how-well-it-predicts-measured-held-out
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - well
14
+ - predicts
15
+ - measured
16
+ - held
17
+ - out
18
+ - dev
19
+ - history
20
+ - tour
21
+ confidence: high
22
+ owner: maintainers
23
+ origin: docs-generated
24
+ reviewed_by: generated@2026-10-16
25
+ generated_from: dexterm/site content/docs (task-1420)
26
+ sources:
27
+ - site/content/docs/screens.md
28
+ date: 2026-10-16
29
+ ---
30
+
31
+ Measured 2026-10-18 on the history recorder's own coins, with the same held-out window as the skill backtest (https://dexterm.xyz/docs/larp) (the newest 30 % of coins by first sighting, never used to tune anything; the rule is fixed in advance: `serial_rugger` = two or more labelled rugs). Each coin is judged only on what was known at its first sighting: prior launches recorded before it, and labels already settled by then. Outcomes are the recorder's 72-hour labels (keyless-proxy tier): **rug**, and **bad** = rug or dead. The labelled history covers 2026-10-10 to 2026-10-13.
32
+
33
+ - **Too few repeat deployers to measure the rug-history signal yet.** Of 9405 creator wallets behind 24724 recorded coins, 2127 launched two or more of them. In the held-out window 1 of 143 coins (skill-backtest set) and 4 of 387 (all 72-hour-labelled coins) had a creator with a prior labelled rug; across all 1289 labelled coins, 4. There is no number to publish for "a prior rug predicts a rug" until the record is longer. The panel says `unknown` in exactly this case.
34
+ - **What the held-out window does show.** Base rates: rug 5.7% (22/387, 95% CI 3.8–8.5%), bad 41.6% (161/387, 95% CI 36.8–46.6%). Coins whose creator had labelled prior launches and no rug: rug 6.4% (5/78, 95% CI 2.8–14.1%), bad 30.8% (24/78, 95% CI 21.6–41.7%); that is a small sample and the intervals overlap the base rate, so it is not evidence that a "clean" record means anything.
35
+ - **Exploratory, chosen after seeing the result above** (so treat it as a lead, not a finding): coins whose creator had three or more labelled prior launches, mostly *not* rug or dead, went bad 16.1% (5/31, 95% CI 7.1–32.6%) of the time in the held-out window, against 44.0% (155/352, 95% CI 38.9–49.3%) for coins with fewer labelled priors; only 4 coins had a creator whose priors were mostly bad, too few to say anything.
36
+ - **Why so thin:** the recorder's labelled history is about a week old, and a prior launch only counts once its own label had settled before the coin was first seen.
37
+ - **Jupiter's count of coins this dev minted** (keyless, at first sighting, held-out, 367 coins with a value; base bad rate 39.5% (145/367, 95% CI 34.6–44.6%)):
38
+
39
+ | dev minted | coins | rug | bad (rug or dead) |
40
+ | --- | --- | --- | --- |
41
+ | 1 | 128 | 3.9% (5/128, 95% CI 1.7–8.8%) | 43.8% (56/128, 95% CI 35.5–52.4%) |
42
+ | 2-5 | 59 | 0.0% (0/59, 95% CI 0.0–6.1%) | 20.3% (12/59, 95% CI 12.0–32.3%) |
43
+ | 6-20 | 28 | 3.6% (1/28, 95% CI 0.6–17.7%) | 28.6% (8/28, 95% CI 15.2–47.1%) |
44
+ | 21+ | 152 | 4.6% (7/152, 95% CI 2.2–9.2%) | 45.4% (69/152, 95% CI 37.7–53.3%) |
45
+
46
+ We will re-run this as the recorder grows and publish the result, good or bad. It is a risk flag from observed history, never a certificate.
@@ -0,0 +1,51 @@
1
+ ---
2
+ id: docs-screens-live-holder-and-rug-signals
3
+ title: Screens tour › Live holder and rug signals
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: Live holder and rug signals
8
+ anchor: live-holder-and-rug-signals
9
+ url: https://dexterm.xyz/docs/screens#live-holder-and-rug-signals
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - live
14
+ - holder
15
+ - rug
16
+ - signals
17
+ - tour
18
+ confidence: high
19
+ owner: maintainers
20
+ origin: docs-generated
21
+ reviewed_by: generated@2026-10-16
22
+ generated_from: dexterm/site content/docs (task-1420)
23
+ sources:
24
+ - site/content/docs/screens.md
25
+ date: 2026-10-16
26
+ ---
27
+
28
+ While a token is open, its holder and rug-risk reads update as the data moves, not only when you open the screen. When a reading crosses a threshold, a **LIVE SIGNALS** strip in the ON-CHAIN panel shows a line like `⚑ top-10 concentration 31% → 38% (pools excluded)` with its **source** and the **age** of the data, and a short notice flashes. Each signal is a risk flag to check, not a verdict.
29
+
30
+ | signal | fires when |
31
+ | --- | --- |
32
+ | dev sell | the creator's share drops by 1 point or more |
33
+ | concentration | the top-10 share (pools excluded) moves by 3 points or more |
34
+ | LP unlock | the locked share of the liquidity drops by 1 point or more |
35
+ | liquidity | liquidity falls by 25 % or more |
36
+ | authority | the mint or freeze authority appears or is revoked |
37
+ | bundle / sniper | bundled supply rises by 1 point, or another sniper appears |
38
+ | fresh wallets | the share of fresh-at-buy wallets rises by 5 points |
39
+ | bonding / migrated | bonding-curve progress rises by 5 points, or the coin migrates |
40
+
41
+ - **Three cadences, each honest about its source.** Authorities, LP, liquidity and the top-10 share refresh with the token poll (every (generated from the app: see https://dexterm.xyz/docs/screens#live-holder-and-rug-signals; app-help has the exact keys and commands) s). Bonding progress streams sub-second from the same on-chain push as the LIVE price badge. Holder, bundle, sniper and fresh-wallet reads re-scan every 45 s while the token is open, and only with a free Helius key. Keyless, they show a dash and spend no requests.
42
+ - **Stale never fires.** The first reading of each field is a baseline and fires nothing. A reading older than 60 s, or one its source marks stale, never fires a signal and is shown as **stale**, never hidden or filled in. A migration is caught on the next token refresh, not sub-second.
43
+ - **Every signal is an alert trigger.** The rules engine (https://dexterm.xyz/docs/configuration#rules-engine) reads the open token's live fields `top10`, `dev`, `bundled`, `snipers`, `fresh`, `cluster`, `lplocked`, `bonding`, `mintable` and `freezable` (1 when that authority is present), with `.delta` and `.velocity`. A rule can then reach your push channels (https://dexterm.xyz/docs/configuration#push-alerts-and-dexterm-watch):
44
+
45
+ ```text
46
+ when dev.delta < -2 then alert(down, "dev selling")
47
+ when mintable > 0 then alert(warn, "mint authority present")
48
+ when top10.delta > 5 then alert(warn, "concentration up")
49
+ ```
50
+
51
+ The signals read the same keyless and free-tier sources as the rest of the token screen, through the same rate limiter. They raise flags; they cannot trade, arm or sign anything.
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: docs-screens-order-plans
3
+ title: Screens tour › Order plans
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: Order plans
8
+ anchor: order-plans
9
+ url: https://dexterm.xyz/docs/screens#order-plans
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - order
14
+ - plans
15
+ - tour
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/screens.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ `O` from anywhere opens the order-plans screen: a PLANS / MANDATES tab strip (`tab` flips), each plan on one line with its status tone (proposed, armed, filled, done, cancelled, expired) and the signer's read-back of what it will do. `a` on a row opens a hold-to-arm prompt; only a key held at the terminal arms, and the prompt is unreachable from the popup, voice, an agent or piped input. `c` cancels a plan, `r` revokes a mandate, `!` is panic (revoke everything), `M` opens the read-only plans popup, `G` shows the hands-free gate setting (GATE ON by default), and `L` raises the fire-path prompt: a held keypress switches plan fills between PAPER and LIVE · DEVNET · fast wallet (refused while plans are armed, without the signer process, off devnet or without a fast wallet). The header says PAPER unless a fill path is provably live. Plans, mandates, caps and the journal are in order plans and standing mandates (https://dexterm.xyz/docs/paper-trading#order-plans-and-standing-mandates).
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: docs-screens-paper-ticket-and-positions
3
+ title: Screens tour › PAPER ticket and positions
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: PAPER ticket and positions
8
+ anchor: paper-ticket-and-positions
9
+ url: https://dexterm.xyz/docs/screens#paper-ticket-and-positions
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - paper
14
+ - ticket
15
+ - positions
16
+ - tour
17
+ confidence: high
18
+ owner: maintainers
19
+ origin: docs-generated
20
+ reviewed_by: generated@2026-10-16
21
+ generated_from: dexterm/site content/docs (task-1420)
22
+ sources:
23
+ - site/content/docs/screens.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ a PAPER ticket on sample data
28
+
29
+ `B` or `S` on a token opens a simulated ticket priced from a keyless Jupiter quote; `P` from anywhere opens the positions screen (equity, cash, realized and unrealized PnL, trade history). Every frame carries the PAPER banner. The confirm gate is on by default and sizes above (generated from the app: see https://dexterm.xyz/docs/screens#paper-ticket-and-positions; app-help has the exact keys and commands) SOL must be typed back. The model is in paper trading and safety (https://dexterm.xyz/docs/paper-trading).
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: docs-screens-the-look
3
+ title: Screens tour › The look
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: The look
8
+ anchor: the-look
9
+ url: https://dexterm.xyz/docs/screens#the-look
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - look
14
+ - tour
15
+ confidence: high
16
+ owner: maintainers
17
+ origin: docs-generated
18
+ reviewed_by: generated@2026-10-16
19
+ generated_from: dexterm/site content/docs (task-1420)
20
+ sources:
21
+ - site/content/docs/screens.md
22
+ date: 2026-10-16
23
+ ---
24
+
25
+ the rain follows the market: gold on a pump
26
+
27
+ Matrix rain made of your own tickers, mint prefixes and transaction tails lives in the gutters and the blank parts of panels. Its colour and speed come from the data: gold on a pump, red on a dump, driven by the open token's candles or the rows on screen. Two masks on the cell buffer make it impossible for an effect to overdraw a number: data glyphs are marked hard, effects can only write to blank, unmarked cells, and a contrast gate in the test suite proves every numeric cell stays at 4.5:1 or better with effects on.
28
+
29
+ `c` toggles calm mode (no rain, glitch, blink or scanlines); `--intensity normal` is 15 fps with sparser rain; `NO_COLOR` implies calm. After (generated from the app: see https://dexterm.xyz/docs/screens#the-look; app-help has the exact keys and commands) s without a key the ambient rain drops to (generated from the app: see https://dexterm.xyz/docs/screens#the-look; app-help has the exact keys and commands) fps so an idle terminal costs about 2% CPU; the next key snaps it back.
@@ -0,0 +1,36 @@
1
+ ---
2
+ id: docs-screens-token-screen
3
+ title: Screens tour › Token screen
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: Token screen
8
+ anchor: token-screen
9
+ url: https://dexterm.xyz/docs/screens#token-screen
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - token
14
+ - screen
15
+ - tour
16
+ confidence: high
17
+ owner: maintainers
18
+ origin: docs-generated
19
+ reviewed_by: generated@2026-10-16
20
+ generated_from: dexterm/site content/docs (task-1420)
21
+ sources:
22
+ - site/content/docs/screens.md
23
+ date: 2026-10-16
24
+ ---
25
+
26
+ a token on sample data (the seeded renderer shows the raw tape where the live screen shows the BUY/SELL FLOW panel)
27
+
28
+ Everything about one coin: candles (1m to 1d, `1`–`6`), market stats, mint and freeze authority from the chain, holder count and top-10 concentration from Jupiter (the ranked top-20 list needs a free RPC key and says so), RugCheck summary, GoPlus second opinion, and in the lower right the **BUY/SELL FLOW** panel: buys versus sells for 1m, 5m, 1h, 6h and 24h with a ratio bar, USD volume and a trend arrow versus the previous window. `F` swaps it for the raw trade tape.
29
+
30
+ The price badge says **LIVE** only while a fresh on-chain push is flowing for that coin over the fast lane (one WebSocket on its pump.fun bonding curve), otherwise **POLL**. When you hold a PAPER position in the coin a `◈ POSITION · PAPER` row renders under the chart with side, size, value, average entry, price and unrealized PnL.
31
+
32
+ **Who holds it.** Once the wallet-intel scan (https://dexterm.xyz/docs/screens#bubble-map) lands (about 1.5 s after the token opens), every row of the HOLDERS panel carries a class read from the chain, never guessed: **POOL** (an AMM / CLMM / DLMM pool vault: Raydium, Orca, Meteora, PumpSwap), **CURVE** (a bonding curve: pump.fun, Meteora DBC for Jupiter Studio and Meteora launches, Raydium LaunchLab), **VAULT** (Meteora dynamic and Alpha vaults), **LOCK** (a Streamflow or Jupiter Lock escrow), **CEX** (seed-list exchange wallet, always *unverified*), **BURN** (the incinerator), **DEV** (the creator), **LINKED** (tied to another top holder by a funder, bundle or transfer rule) and **UNLABELLED** for everything else, including an account of a program dexterm does not list. The class comes from the token account's owner and the owner account's program (the same account lookup the scan already makes, no new request); the constant pool-authority addresses are re-derived in the tests. The single Top 10 holders row then becomes two: **Top 10 ex-pool** drops POOL / CURVE / VAULT / LOCK / BURN owners and is what the colour reads, **Top 10 raw** is what explorers show, so a fresh launch whose curve still holds 70 % no longer reads as a 78 % whale. Unlabelled owners are always counted. When a counted owner holds more than 30 % the panel says so on its first line (`⚠ main risk: UNLABELLED Ab12…Cd34 holds 71.6%`); when the biggest holder is a venue it says which (`· top holder 70.0% is CURVE (Meteora DBC): not counted in ex-pool`). A lock or vault names its escrow and program; dexterm does not decode the unlock schedule yet and says so.
33
+
34
+ When the Snipers and Bundled supply rows have no number they give the reason: `needs Helius key` only when no key is configured, otherwise `Helius paused · r` (rate-limited), `Helius cap today` (the daily credit budget is spent), `history failed · r` (the history call errored) or `no launch txs read`. `r` on the token screen re-runs a scan whose launch window did not land.
35
+
36
+ Keys here: `B`/`S` PAPER buy/sell, `C` chart popup, `M` bubble map (below), `V` vet the product (LARP detector), `W`/`X`/`T` open the advertised site/X/Telegram, `L` list every advertised link, `y` copy the contract address, `a` run the analyst dossier, `i` or `⏎` type a question, `s` the SOCIAL panel (below), `H` a PnL card (https://dexterm.xyz/docs/paper-trading#pnl-cards) when you have fills in the coin.
@@ -0,0 +1,34 @@
1
+ ---
2
+ id: docs-screens-trending-social-and-kol-lists
3
+ title: Screens tour › Trending, social and KOL lists
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ heading: Trending, social and KOL lists
8
+ anchor: trending-social-and-kol-lists
9
+ url: https://dexterm.xyz/docs/screens#trending-social-and-kol-lists
10
+ tags:
11
+ - docs
12
+ - screens
13
+ - trending
14
+ - social
15
+ - kol
16
+ - lists
17
+ - tour
18
+ confidence: high
19
+ owner: maintainers
20
+ origin: docs-generated
21
+ reviewed_by: generated@2026-10-16
22
+ generated_from: dexterm/site content/docs (task-1420)
23
+ sources:
24
+ - site/content/docs/screens.md
25
+ date: 2026-10-16
26
+ ---
27
+
28
+ Three views over a social layer that is keyless by default and reads X only through your own login (https://dexterm.xyz/docs/login-with-x). There is no scraping, and nothing is ever posted; every post and headline passes the same prompt firewall as token text before it is stored or shown.
29
+
30
+ - **`T` TRENDING IN THE SPACE** (from every screen except the token screen, where `T` still opens Telegram). Coins ranked from public lists: Jupiter trending and organic score, GeckoTerminal trending pools, and CoinGecko trending for macro context; a DexScreener paid boost counts *against* a coin. With no posts to count, a coin's velocity falls back to its last-hour volume against its 24 h average. Sub-panels: NARRATIVES (coins linked by shared KOL threads or co-mentions) and NEWS (CoinDesk, Cointelegraph, The Block and Decrypt official RSS, every 10 min; context, not signal). `f` source filter, `x` show the rows held back as spam or cashtag squats, `n` narrative filter, `s` sources and their health, `a` one board summary from your own claude (at most every 5 min), `⏎` open the coin, `M` the feeds popup (https://dexterm.xyz/docs/popup-chart#token-and-feeds-popups).
31
+ - **`s` SOCIAL panel on the token screen** replaces ON-CHAIN/HOLDERS. In live mode it holds rule-written on-chain rows only (labelled holders, tracked wallets, trades of $5K or more, and the wallet-intel scan (https://dexterm.xyz/docs/screens#bubble-map)'s linked clusters and launch snipers, each naming the rule that linked them, such as `12.0% of supply sits in 4 wallets that bought in the same slot and share a funder (bundle, R2)`); X and Telegram posts appear only in the `--fixtures` demo, because no keyless post source is wired. Near-duplicates collapse into one row, bursts from fresh accounts are marked spam, and instruction-like posts are withheld from the model entirely.
32
+ - **`K` KOL lists**: your own handle lists and imported packs, stored in the local database. A pack is a hash-locked directory and a tampered one is refused. `space` enables or disables a list, `m` mutes a handle, `d` removes one, `i` adds one. The same is scriptable with `dexterm kol` (see the CLI reference (https://dexterm.xyz/docs/cli#subcommands)).
33
+
34
+ - **X posts** appear in both views after `dexterm x login` (Login with X (https://dexterm.xyz/docs/login-with-x)): the open coin's posts in the SOCIAL panel (searched every 60 s, newer posts only), and your KOL lists' posts on the board. The band shows the state and never pretends: `x-stream ○ logged out`, `●4s @you` while reading, `◐ rate limited 5m`, `◐ daily budget`, `◐ app tier (no search)` on a Free-tier app. On the KOL screen `X` imports the lists your X account owns (handles only) and `o` narrows the board and the panel to the selected handle (`o` again or `f` clears).
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: docs-screens
3
+ title: Screens tour
4
+ kind: docs
5
+ page: screens
6
+ page_title: Screens tour
7
+ url: https://dexterm.xyz/docs/screens
8
+ tags:
9
+ - docs
10
+ - screens
11
+ - tour
12
+ confidence: high
13
+ owner: maintainers
14
+ origin: docs-generated
15
+ reviewed_by: generated@2026-10-16
16
+ generated_from: dexterm/site content/docs (task-1420)
17
+ sources:
18
+ - site/content/docs/screens.md
19
+ date: 2026-10-16
20
+ ---
21
+
22
+ The screener, token screen, new pairs, watchlist, analyst tab, PAPER ticket and positions.
23
+
24
+ dexterm is five screens on one keyboard model, plus the PAPER ticket and positions. The header carries the SOL price, the live/degraded status of the feed, the Helius credit meter when a key is configured, and the AI scan indicator when the scan is on. The footer lists the keys that matter on the current screen; `?` lists all of them.
25
+
26
+ Every screenshot on this site is the real app on seeded sample data with made-up tickers; the header reads `◌ sample data`. The one exception is the analyst beat on the home page: a labelled, scripted replay of real historical $WIF data from the 2023-12-14 daily close (header `◌ replay · historical data · scripted demo`). It is not a live recommendation and not financial advice; nowhere else on the site is a real token paired with a price.
@@ -0,0 +1,56 @@
1
+ ---
2
+ id: docs-spectator-1-the-agent-activity-window-follow-mode
3
+ title: Spectator view (watch the agent cook) › The three surfaces › 1. The AGENT ACTIVITY window (follow mode)
4
+ kind: docs
5
+ page: spectator
6
+ page_title: Spectator view (watch the agent cook)
7
+ heading: 1. The AGENT ACTIVITY window (follow mode)
8
+ anchor: 1-the-agent-activity-window-follow-mode
9
+ url: https://dexterm.xyz/docs/spectator#1-the-agent-activity-window-follow-mode
10
+ tags:
11
+ - docs
12
+ - spectator
13
+ - agent
14
+ - activity
15
+ - window
16
+ - follow
17
+ - mode
18
+ - three
19
+ - surfaces
20
+ - view
21
+ - watch
22
+ - cook
23
+ confidence: high
24
+ owner: maintainers
25
+ origin: docs-generated
26
+ reviewed_by: generated@2026-10-16
27
+ generated_from: dexterm/site content/docs (task-1420)
28
+ sources:
29
+ - site/content/docs/spectator.md
30
+ date: 2026-10-16
31
+ ---
32
+
33
+ `--spectator-popup` opens the spectator window through dexterm's popup host. It is the docked native window on macOS when the native shell is built, and a browser tab on loopback otherwise, as with the chart popup (https://dexterm.xyz/docs/popup-chart#build-the-native-window). `agent serve` prints which one it opened. The window refreshes once a second and shows:
34
+
35
+ - **screen**: the screen the agent asked to show (screener, token, watchlist, ticket) with the token, feed, filter and highlight it picked. This line comes from the agent's navigation events. See limits (https://dexterm.xyz/docs/spectator#limits) for what it is not.
36
+ - **agents**: each connected agent with an `agent` badge, its tier (`observe`, `annotate` or `propose`), its status (`active`, `paused` or `killed`) and when it last did something.
37
+ - **activity**: newest first, up to 80 lines (the window keeps the last 200 events). Each line shows how long ago it happened, the agent, the phase, the tool, a short summary, the time the call took in ms and the age of the data it returned. Refused calls are marked.
38
+
39
+ | phase | meaning |
40
+ | --- | --- |
41
+ | `connect` / `disconnect` | an agent opened or closed a session (with its client and any mandate) |
42
+ | `result` | a read tool returned (`ok` or an error) |
43
+ | `nav` | a navigation tool asked the screen to move (`open_token`, `show_in_screener`, `switch_feed`, `add_to_watchlist`, `open_ticket`) |
44
+ | `proposal` | the agent made a proposal you would have to confirm (an alert, an order-plan draft, a watchlist add) |
45
+ | `refused` | the gate refused the call, with its reason (`never`, `tier`, `mandate`, `spoof`, …) |
46
+ | `note` / `subscribe` | the agent wrote a note, or subscribed to a live stream |
47
+ | `control` | you paused, resumed or killed the agent |
48
+
49
+ **Controls.** Each agent row has buttons:
50
+
51
+ - **pause**: the gate refuses the agent's next call. The agent stays connected and visible.
52
+ - **take over**: pauses the agent and marks you as the driver. The window shows `YOU HAVE TAKEN OVER`, and the agent stays frozen but visible.
53
+ - **resume**: shown for a paused agent. Its calls go through again and control goes back to the agent.
54
+ - **kill** (the panic button): closes every live session for that agent now and leaves it paused, so a reconnect stays frozen. To revoke the agent for good, run `dexterm agent rotate <name>` or `dexterm agent remove <name>`.
55
+
56
+ These four are the only messages the window can send, and each carries just an agent name. The `agent serve` process maps them to the bus's own pause, resume and kick, the same controls the roster popup uses, and checks them again before acting. The window has no button, message or path that can arm, sign, confirm, send or raise a cap.
@@ -0,0 +1,42 @@
1
+ ---
2
+ id: docs-spectator-2-the-read-only-stream-spectate
3
+ title: Spectator view (watch the agent cook) › The three surfaces › 2. The read-only stream (--spectate)
4
+ kind: docs
5
+ page: spectator
6
+ page_title: Spectator view (watch the agent cook)
7
+ heading: 2. The read-only stream (--spectate)
8
+ anchor: 2-the-read-only-stream-spectate
9
+ url: https://dexterm.xyz/docs/spectator#2-the-read-only-stream-spectate
10
+ tags:
11
+ - docs
12
+ - spectator
13
+ - read-only
14
+ - stream
15
+ - spectate
16
+ - three
17
+ - surfaces
18
+ - view
19
+ - watch
20
+ - agent
21
+ - cook
22
+ confidence: high
23
+ owner: maintainers
24
+ origin: docs-generated
25
+ reviewed_by: generated@2026-10-16
26
+ generated_from: dexterm/site content/docs (task-1420)
27
+ sources:
28
+ - site/content/docs/spectator.md
29
+ date: 2026-10-16
30
+ ---
31
+
32
+ `dexterm agent serve --spectate` starts a WebSocket server on `127.0.0.1` on a random port and prints the port. The per-session token goes to `~/.dexterm/spectator.json` (mode 0600). It is never printed and never on a command line. `dexterm spectate --info` shows the endpoint (`--json` for scripts).
33
+
34
+ A viewer connects, then sends `{"method":"hello","token":"…"}` with the token from that file within 10 seconds, or the connection is closed. After a good hello it receives:
35
+
36
+ ```text
37
+ {"type":"welcome","protocol":"dexterm-spectator/1","redacted":true,"t":…}
38
+ {"type":"event","snapshot":true,"event":{…}} # the recent backlog, oldest first
39
+ {"type":"event","snapshot":false,"event":{…}} # then each new event as it happens
40
+ ```
41
+
42
+ Each `event` has the same fields the window uses: `seq`, `t`, `phase`, `agent`, `tier`, `transport`, `tool`, `summary`, `ok`, `ms`, `dataAgeSec`, `refusal`, `nav`, and `redacted: true`. The server honours exactly two inbound messages: `hello` and `ping` (answered with `pong`). Anything else is counted as dropped and ignored. dexterm does not ship a viewer for the raw stream. It is meant for your own overlay or tooling on the same machine.
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: docs-spectator-3-save-and-replay-record-file-dexterm-spectate
3
+ title: Spectator view (watch the agent cook) › The three surfaces › 3. Save and replay (--record FILE, dexterm spectate)
4
+ kind: docs
5
+ page: spectator
6
+ page_title: Spectator view (watch the agent cook)
7
+ heading: 3. Save and replay (--record FILE, dexterm spectate)
8
+ anchor: 3-save-and-replay-record-file-dexterm-spectate
9
+ url: https://dexterm.xyz/docs/spectator#3-save-and-replay-record-file-dexterm-spectate
10
+ tags:
11
+ - docs
12
+ - spectator
13
+ - save
14
+ - replay
15
+ - record
16
+ - file
17
+ - dexterm
18
+ - spectate
19
+ - three
20
+ - surfaces
21
+ - view
22
+ - watch
23
+ - agent
24
+ confidence: high
25
+ owner: maintainers
26
+ origin: docs-generated
27
+ reviewed_by: generated@2026-10-16
28
+ generated_from: dexterm/site content/docs (task-1420)
29
+ sources:
30
+ - site/content/docs/spectator.md
31
+ date: 2026-10-16
32
+ ---
33
+
34
+ `dexterm agent serve --record FILE` appends every event to `FILE` as one JSON line, **redacted**, with the file created mode 0600. The redaction makes the file fit to share in a bug report or a demo.
35
+
36
+ ```sh
37
+ $ dexterm spectate --replay session.jsonl # SCREEN, AGENTS and ACTIVITY as text
38
+ $ dexterm spectate --replay session.jsonl --json # {"meta":…,"view":…} for scripts
39
+ ```
40
+
41
+ Replay is offline and deterministic. It folds the saved events back into the same screen picture and activity list the window uses, then prints them in the terminal. It does not reopen the window. Don't confuse this with `dexterm --record FILE` on the main app, which saves raw data responses for `--replay` (see the CLI reference (https://dexterm.xyz/docs/cli)). The two flags share a name and do different things.