dexterm-cli 0.1.6 → 0.2.0

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 (395) hide show
  1. package/dist/packages/agents/src/schema.js +22 -1
  2. package/dist/packages/agents/src/spectator.js +3 -1
  3. package/dist/packages/agents/src/story.js +11 -2
  4. package/dist/packages/agents/src/tiers.js +36 -2
  5. package/dist/packages/agents/src/tools.js +35 -2
  6. package/dist/packages/autotrade/assets/exit-profile.schema.json +492 -0
  7. package/dist/packages/autotrade/assets/limits.schema.json +569 -0
  8. package/dist/packages/autotrade/assets/profiles/moonbag.json +46 -0
  9. package/dist/packages/autotrade/assets/profiles/runner.json +88 -0
  10. package/dist/packages/autotrade/assets/profiles/scalp.json +88 -0
  11. package/dist/packages/autotrade/assets/profiles/swing.json +88 -0
  12. package/dist/packages/autotrade/assets/strategies/moonbag.json +101 -0
  13. package/dist/packages/autotrade/assets/strategies/runner.json +101 -0
  14. package/dist/packages/autotrade/assets/strategies/sample-dip-ladder.json +188 -0
  15. package/dist/packages/autotrade/assets/strategies/scalp.json +98 -0
  16. package/dist/packages/autotrade/assets/strategies/swing.json +97 -0
  17. package/dist/packages/autotrade/assets/strategies/yolo.json +157 -0
  18. package/dist/packages/autotrade/assets/tapes/yolo-rehearsal.json +1 -0
  19. package/dist/packages/autotrade/examples/executor/README.md +70 -0
  20. package/dist/packages/autotrade/examples/executor/jsonl-tail-executor.mjs +57 -0
  21. package/dist/packages/autotrade/examples/executor/kit.mjs +144 -0
  22. package/dist/packages/autotrade/examples/executor/signal-cmd-executor.mjs +25 -0
  23. package/dist/packages/autotrade/examples/executor/telegram-bot-recipe.md +47 -0
  24. package/dist/packages/autotrade/examples/executor/webhook-executor.mjs +47 -0
  25. package/dist/packages/autotrade/src/account.js +74 -0
  26. package/dist/packages/autotrade/src/backtest.js +358 -0
  27. package/dist/packages/autotrade/src/basis-text.js +32 -0
  28. package/dist/packages/autotrade/src/chat/approvals.js +484 -0
  29. package/dist/packages/autotrade/src/chat/audit.js +140 -0
  30. package/dist/packages/autotrade/src/chat/config.js +95 -0
  31. package/dist/packages/autotrade/src/chat/connector.js +24 -0
  32. package/dist/packages/autotrade/src/chat/control.js +104 -0
  33. package/dist/packages/autotrade/src/chat/fake.js +100 -0
  34. package/dist/packages/autotrade/src/chat/format.js +71 -0
  35. package/dist/packages/autotrade/src/chat/hub.js +187 -0
  36. package/dist/packages/autotrade/src/chat/index.js +18 -0
  37. package/dist/packages/autotrade/src/chat/notify.js +302 -0
  38. package/dist/packages/autotrade/src/chat/pairing.js +46 -0
  39. package/dist/packages/autotrade/src/chat/redact.js +48 -0
  40. package/dist/packages/autotrade/src/chat/secrets.js +106 -0
  41. package/dist/packages/autotrade/src/chat/service.js +251 -0
  42. package/dist/packages/autotrade/src/chat/telegram.js +290 -0
  43. package/dist/packages/autotrade/src/desk-executor.js +188 -0
  44. package/dist/packages/autotrade/src/engine.js +401 -0
  45. package/dist/packages/autotrade/src/execution-port.js +97 -0
  46. package/dist/packages/autotrade/src/executor-health.js +217 -0
  47. package/dist/packages/autotrade/src/fleet-config.js +169 -0
  48. package/dist/packages/autotrade/src/fleet-control.js +276 -0
  49. package/dist/packages/autotrade/src/fleet.js +642 -0
  50. package/dist/packages/autotrade/src/forward.js +355 -0
  51. package/dist/packages/autotrade/src/index.js +72 -0
  52. package/dist/packages/autotrade/src/journey.js +477 -0
  53. package/dist/packages/autotrade/src/ledger.js +108 -0
  54. package/dist/packages/autotrade/src/limits.js +682 -0
  55. package/dist/packages/autotrade/src/live-source.js +182 -0
  56. package/dist/packages/autotrade/src/monitor-daemon.js +715 -0
  57. package/dist/packages/autotrade/src/monitor.js +190 -0
  58. package/dist/packages/autotrade/src/ollama-sessions.js +137 -0
  59. package/dist/packages/autotrade/src/outbox.js +394 -0
  60. package/dist/packages/autotrade/src/paper-accounts.js +72 -0
  61. package/dist/packages/autotrade/src/paper-limits.js +87 -0
  62. package/dist/packages/autotrade/src/real-mode.js +688 -0
  63. package/dist/packages/autotrade/src/receipts.js +330 -0
  64. package/dist/packages/autotrade/src/replay.js +198 -0
  65. package/dist/packages/autotrade/src/report.js +168 -0
  66. package/dist/packages/autotrade/src/runner-config.js +99 -0
  67. package/dist/packages/autotrade/src/runner.js +923 -0
  68. package/dist/packages/autotrade/src/safety.js +243 -0
  69. package/dist/packages/autotrade/src/service-guard.js +125 -0
  70. package/dist/packages/autotrade/src/service-install.js +213 -0
  71. package/dist/packages/autotrade/src/service-recover.js +232 -0
  72. package/dist/packages/autotrade/src/service.js +289 -0
  73. package/dist/packages/autotrade/src/session.js +269 -0
  74. package/dist/packages/autotrade/src/sessions.js +503 -0
  75. package/dist/packages/autotrade/src/signal-channels.js +312 -0
  76. package/dist/packages/autotrade/src/signal.js +196 -0
  77. package/dist/packages/autotrade/src/store.js +250 -0
  78. package/dist/packages/autotrade/src/strategy.js +258 -0
  79. package/dist/packages/autotrade/src/trade-ledger.js +241 -0
  80. package/dist/packages/autotrade/src/yolo.js +140 -0
  81. package/dist/packages/cli/assets/claude/analyst-system.md +4 -4
  82. package/dist/packages/cli/assets/claude/plugin/skills/token-dossier/SKILL.md +1 -1
  83. package/dist/packages/cli/src/ai-cmd.js +412 -0
  84. package/dist/packages/cli/src/analyst/backend.js +83 -15
  85. package/dist/packages/cli/src/analyst/codex.js +15 -9
  86. package/dist/packages/cli/src/analyst/ollama.js +263 -0
  87. package/dist/packages/cli/src/analyst/session.js +5 -2
  88. package/dist/packages/cli/src/app-help-gen.js +56 -8
  89. package/dist/packages/cli/src/autotrade-cmd/audit.js +74 -0
  90. package/dist/packages/cli/src/autotrade-cmd/backtest.js +216 -0
  91. package/dist/packages/cli/src/autotrade-cmd/executor.js +91 -0
  92. package/dist/packages/cli/src/autotrade-cmd/flatten.js +64 -0
  93. package/dist/packages/cli/src/autotrade-cmd/fleet.js +401 -0
  94. package/dist/packages/cli/src/autotrade-cmd/forward.js +283 -0
  95. package/dist/packages/cli/src/autotrade-cmd/journey.js +208 -0
  96. package/dist/packages/cli/src/autotrade-cmd/limits.js +393 -0
  97. package/dist/packages/cli/src/autotrade-cmd/receipt.js +63 -0
  98. package/dist/packages/cli/src/autotrade-cmd/report.js +79 -0
  99. package/dist/packages/cli/src/autotrade-cmd/requests.js +79 -0
  100. package/dist/packages/cli/src/autotrade-cmd/run.js +657 -0
  101. package/dist/packages/cli/src/autotrade-cmd/service.js +873 -0
  102. package/dist/packages/cli/src/autotrade-cmd/signal.js +824 -0
  103. package/dist/packages/cli/src/autotrade-cmd/stop.js +76 -0
  104. package/dist/packages/cli/src/autotrade-cmd/strategies.js +198 -0
  105. package/dist/packages/cli/src/autotrade-cmd/strategy-control.js +174 -0
  106. package/dist/packages/cli/src/autotrade-cmd/telegram-host.js +101 -0
  107. package/dist/packages/cli/src/autotrade-cmd.js +214 -0
  108. package/dist/packages/cli/src/display.js +156 -17
  109. package/dist/packages/cli/src/doctor.js +62 -3
  110. package/dist/packages/cli/src/export.js +10 -2
  111. package/dist/packages/cli/src/index.js +1 -1
  112. package/dist/packages/cli/src/ledger-cmd.js +290 -0
  113. package/dist/packages/cli/src/live/chart-fills.js +46 -0
  114. package/dist/packages/cli/src/live/index.js +23 -89
  115. package/dist/packages/cli/src/live/screens/token-live.js +9 -6
  116. package/dist/packages/cli/src/live/trade.js +12 -457
  117. package/dist/packages/cli/src/live/watchlist.js +1 -1
  118. package/dist/packages/cli/src/main.js +147 -190
  119. package/dist/packages/cli/src/mcp-cmd.js +7 -1
  120. package/dist/packages/cli/src/plan-cmd.js +1 -1
  121. package/dist/packages/cli/src/pnl-app.js +31 -21
  122. package/dist/packages/cli/src/pnl-card.js +162 -21
  123. package/dist/packages/cli/src/popup.js +22 -6
  124. package/dist/packages/cli/src/record-cmd.js +141 -20
  125. package/dist/packages/cli/src/screens/agent-hud.js +34 -2
  126. package/dist/packages/cli/src/screens/analyst-session.js +7 -4
  127. package/dist/packages/cli/src/screens/analyst.js +3 -2
  128. package/dist/packages/cli/src/screens/autotrade-journey.js +134 -0
  129. package/dist/packages/cli/src/screens/autotrade-keys.js +182 -0
  130. package/dist/packages/cli/src/screens/autotrade-proposals.js +123 -0
  131. package/dist/packages/cli/src/screens/autotrade-screen.js +776 -0
  132. package/dist/packages/cli/src/screens/autotrade-ui.js +650 -0
  133. package/dist/packages/cli/src/screens/autotrade-worker.js +91 -0
  134. package/dist/packages/cli/src/screens/brain.js +37 -11
  135. package/dist/packages/cli/src/screens/overlay.js +5 -2
  136. package/dist/packages/cli/src/screens/plans.js +5 -17
  137. package/dist/packages/cli/src/screens/pnl-chip.js +9 -8
  138. package/dist/packages/cli/src/screens/positions.js +6 -28
  139. package/dist/packages/cli/src/screens/ticket.js +38 -205
  140. package/dist/packages/cli/src/screens/token.js +3 -3
  141. package/dist/packages/cli/src/state.js +25 -19
  142. package/dist/packages/cli/src/telegram-cmd.js +454 -0
  143. package/dist/packages/cli/src/trade.js +3 -128
  144. package/dist/packages/cli/src/version.js +1 -1
  145. package/dist/packages/cli/src/wallet-cmd.js +39 -340
  146. package/dist/packages/cli/src/wallet-command.js +8 -11
  147. package/dist/packages/cli/src/widgets.js +0 -12
  148. package/dist/packages/custom/src/config.js +20 -2
  149. package/dist/packages/custom/src/schema.js +35 -10
  150. package/dist/packages/custom/src/workspace.js +3 -3
  151. package/dist/packages/data/src/basis.js +191 -0
  152. package/dist/packages/data/src/detail.js +53 -2
  153. package/dist/packages/data/src/index.js +0 -14
  154. package/dist/packages/data/src/store.js +14 -5
  155. package/dist/packages/data/src/trade/agent/paper-desk.js +228 -16
  156. package/dist/packages/data/src/trade/agent/rendezvous.js +3 -2
  157. package/dist/packages/data/src/trade/bridge.js +4 -102
  158. package/dist/packages/data/src/trade/ledger/export.js +101 -0
  159. package/dist/packages/data/src/trade/ledger/file.js +135 -0
  160. package/dist/packages/data/src/trade/ledger/fold.js +191 -0
  161. package/dist/packages/data/src/trade/ledger/index.js +9 -0
  162. package/dist/packages/data/src/trade/ledger/schema.js +83 -0
  163. package/dist/packages/data/src/trade/ledger/sources.js +307 -0
  164. package/dist/packages/data/src/trade/ledger/stats.js +123 -0
  165. package/dist/packages/data/src/trade/ledger/tags.js +116 -0
  166. package/dist/packages/data/src/trade/ledger/view.js +51 -0
  167. package/dist/packages/data/src/trade/plans/index.js +0 -1
  168. package/dist/packages/data/src/trade/plans/service.js +3 -27
  169. package/dist/packages/mcp/assets/kb/app-help/autotrade-chat.md +48 -0
  170. package/dist/packages/mcp/assets/kb/app-help/autotrade-executor-kit.md +44 -0
  171. package/dist/packages/mcp/assets/kb/app-help/autotrade-journey.md +46 -0
  172. package/dist/packages/mcp/assets/kb/app-help/autotrade-limits.md +48 -0
  173. package/dist/packages/mcp/assets/kb/app-help/autotrade-parallel.md +42 -0
  174. package/dist/packages/mcp/assets/kb/app-help/autotrade-real-signal.md +45 -0
  175. package/dist/packages/mcp/assets/kb/app-help/autotrade-runner.md +35 -0
  176. package/dist/packages/mcp/assets/kb/app-help/autotrade-stop.md +37 -0
  177. package/dist/packages/mcp/assets/kb/app-help/autotrade-strategies.md +35 -0
  178. package/dist/packages/mcp/assets/kb/app-help/autotrade-telegram.md +40 -0
  179. package/dist/packages/mcp/assets/kb/app-help/chart-trade-markers.md +42 -0
  180. package/dist/packages/mcp/assets/kb/app-help/link-a-wallet.md +4 -10
  181. package/dist/packages/mcp/assets/kb/app-help/live-trading.md +38 -0
  182. package/dist/packages/mcp/assets/kb/app-help/live-yolo.md +34 -0
  183. package/dist/packages/mcp/assets/kb/app-help/order-plans.md +1 -1
  184. package/dist/packages/mcp/assets/kb/app-help/price-or-marketcap.md +5 -2
  185. package/dist/packages/mcp/assets/kb/app-help/screen-analyst.md +3 -0
  186. package/dist/packages/mcp/assets/kb/app-help/screen-autotrade.md +229 -0
  187. package/dist/packages/mcp/assets/kb/app-help/screen-kol.md +3 -0
  188. package/dist/packages/mcp/assets/kb/app-help/screen-newpairs.md +3 -0
  189. package/dist/packages/mcp/assets/kb/app-help/screen-positions.md +3 -0
  190. package/dist/packages/mcp/assets/kb/app-help/screen-screener.md +3 -0
  191. package/dist/packages/mcp/assets/kb/app-help/screen-token.md +3 -0
  192. package/dist/packages/mcp/assets/kb/app-help/screen-trending.md +3 -0
  193. package/dist/packages/mcp/assets/kb/app-help/screen-watchlist.md +3 -0
  194. package/dist/packages/mcp/assets/kb/app-help/standing-mandates.md +1 -1
  195. package/dist/packages/mcp/assets/kb/app-help/trade-ledger.md +54 -0
  196. package/dist/packages/mcp/assets/kb/app-help/use-local-model.md +38 -0
  197. package/dist/packages/mcp/assets/kb/docs/docs-agents-agent-paper-trading.md +4 -1
  198. package/dist/packages/mcp/assets/kb/docs/docs-agents-reading-your-trade-ledger.md +31 -0
  199. package/dist/packages/mcp/assets/kb/docs/docs-agents-untrusted-by-default.md +1 -1
  200. package/dist/packages/mcp/assets/kb/docs/docs-analyst-if-claude-is-missing.md +1 -1
  201. package/dist/packages/mcp/assets/kb/docs/docs-analyst-use-a-local-model-instead.md +27 -0
  202. package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-it-sees.md +2 -0
  203. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-backtests-and-their-limits.md +56 -0
  204. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-change-a-strategy-by-chat.md +51 -0
  205. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-checking-the-record-of-a-run.md +28 -0
  206. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-comparing-them.md +41 -0
  207. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-exits-and-wakes.md +76 -0
  208. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-how-a-stop-reaches-the-runner.md +32 -0
  209. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-on-the-q-screen.md +38 -0
  210. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-one-strategy-or-all-of-them.md +35 -0
  211. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-paper-accounts.md +50 -0
  212. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-presets.md +37 -0
  213. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-running-it-all-day.md +31 -0
  214. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-sessions-and-their-limits.md +31 -0
  215. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-several-strategies-at-once.md +33 -0
  216. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-stopping-it.md +37 -0
  217. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-strategies-and-presets.md +34 -0
  218. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-always-on-service.md +57 -0
  219. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-autotrade-json-file.md +48 -0
  220. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-heartbeat.md +27 -0
  221. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-run-file-and-the-heartbeat.md +34 -0
  222. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-the-runner-and-candidate-sessions.md +45 -0
  223. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-each-session-shows-first.md +31 -0
  224. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-costs-claude-usage-per-session.md +58 -0
  225. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-is-paper-self-directed.md +50 -0
  226. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-what-it-will-not-do.md +31 -0
  227. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-which-account-day-caps-and-the-usage-guard.md +44 -0
  228. package/dist/packages/mcp/assets/kb/docs/docs-autotrade-your-strategies.md +37 -0
  229. package/dist/packages/mcp/assets/kb/docs/docs-autotrade.md +22 -0
  230. package/dist/packages/mcp/assets/kb/docs/docs-beginners-before-any-experimental-trading.md +2 -2
  231. package/dist/packages/mcp/assets/kb/docs/docs-beginners.md +1 -1
  232. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-1-ask-for-a-strategy.md +27 -0
  233. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-2-backtest-it-held-out-split.md +31 -0
  234. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-3-forward-test-it-on-live-data.md +44 -0
  235. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-4-promote-it-to-always-on-paper.md +36 -0
  236. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-5-real-only-if-you-choose.md +36 -0
  237. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-the-ladder.md +39 -0
  238. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-the-report.md +31 -0
  239. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat-what-the-analyst-knows.md +30 -0
  240. package/dist/packages/mcp/assets/kb/docs/docs-build-a-strategy-by-chat.md +24 -0
  241. package/dist/packages/mcp/assets/kb/docs/docs-configuration-chart-markers.md +30 -0
  242. package/dist/packages/mcp/assets/kb/docs/docs-configuration-chart-y-axis.md +1 -1
  243. package/dist/packages/mcp/assets/kb/docs/docs-configuration-environment-variables.md +4 -1
  244. package/dist/packages/mcp/assets/kb/docs/docs-configuration-files-on-disk.md +1 -0
  245. package/dist/packages/mcp/assets/kb/docs/docs-configuration-headless-recorder-dexterm-record.md +3 -1
  246. package/dist/packages/mcp/assets/kb/docs/docs-configuration-price-display-mode.md +8 -6
  247. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-2-the-one-key-mirror-ticket-a-proposal.md +1 -1
  248. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-3-capped-auto-mirror-default-off-less.md +1 -1
  249. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-what-is-proven-what-is-not.md +1 -1
  250. package/dist/packages/mcp/assets/kb/docs/docs-copy-trading.md +1 -1
  251. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-recorded-history-and-retention.md +36 -0
  252. package/dist/packages/mcp/assets/kb/docs/docs-data-sources-sources.md +1 -0
  253. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-first-run.md +1 -1
  254. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-install.md +3 -3
  255. package/dist/packages/mcp/assets/kb/docs/docs-getting-started-requirements.md +1 -1
  256. package/dist/packages/mcp/assets/kb/docs/docs-getting-started.md +1 -1
  257. package/dist/packages/mcp/assets/kb/docs/docs-going-real-executor-health.md +38 -0
  258. package/dist/packages/mcp/assets/kb/docs/docs-going-real-paper-vs-real.md +33 -0
  259. package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-digest.md +36 -0
  260. package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-executor-kit.md +48 -0
  261. package/dist/packages/mcp/assets/kb/docs/docs-going-real-the-whole-path.md +37 -0
  262. package/dist/packages/mcp/assets/kb/docs/docs-going-real-what-dexterm-does-and-never-does.md +44 -0
  263. package/dist/packages/mcp/assets/kb/docs/docs-going-real-your-limits.md +77 -0
  264. package/dist/packages/mcp/assets/kb/docs/docs-going-real.md +24 -0
  265. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-changed-in-0-1-7.md +26 -0
  266. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-real-mode-your-strategy-s-trades-to-your.md +31 -0
  267. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-stopping.md +28 -0
  268. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-the-short-version.md +34 -0
  269. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-using-a-trading-bot-with-dexterm.md +31 -0
  270. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does-not-do.md +30 -0
  271. package/dist/packages/mcp/assets/kb/docs/docs-live-trading-what-dexterm-does.md +29 -0
  272. package/dist/packages/mcp/assets/kb/docs/docs-live-trading.md +23 -0
  273. package/dist/packages/mcp/assets/kb/docs/docs-ollama-another-machine.md +28 -0
  274. package/dist/packages/mcp/assets/kb/docs/docs-ollama-autotrade-on-a-local-model.md +29 -0
  275. package/dist/packages/mcp/assets/kb/docs/docs-ollama-check-your-model-dexterm-ai-probe.md +38 -0
  276. package/dist/packages/mcp/assets/kb/docs/docs-ollama-how-we-checked.md +27 -0
  277. package/dist/packages/mcp/assets/kb/docs/docs-ollama-models-without-tool-calling.md +32 -0
  278. package/dist/packages/mcp/assets/kb/docs/docs-ollama-pick-the-engine-globally-or-per-surface.md +43 -0
  279. package/dist/packages/mcp/assets/kb/docs/docs-ollama-restriction-profiles.md +35 -0
  280. package/dist/packages/mcp/assets/kb/docs/docs-ollama-set-it-up-in-two-minutes.md +39 -0
  281. package/dist/packages/mcp/assets/kb/docs/docs-ollama-troubleshooting.md +35 -0
  282. package/dist/packages/mcp/assets/kb/docs/docs-ollama-what-runs-on-a-local-model.md +39 -0
  283. package/dist/packages/mcp/assets/kb/docs/docs-ollama-what-stays-outside-the-model.md +36 -0
  284. package/dist/packages/mcp/assets/kb/docs/docs-ollama-which-model.md +38 -0
  285. package/dist/packages/mcp/assets/kb/docs/docs-ollama-your-own-agent-on-the-local-model.md +28 -0
  286. package/dist/packages/mcp/assets/kb/docs/docs-ollama.md +28 -0
  287. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-letting-an-agent-paper-trade-experimental.md +3 -4
  288. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet-read-only.md +30 -0
  289. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-order-plans-and-standing-mandates.md +3 -4
  290. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-panic.md +4 -7
  291. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-paper-only-mandates.md +6 -7
  292. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-pnl-cards.md +7 -7
  293. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-safety-model.md +34 -0
  294. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-ticket.md +3 -4
  295. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-trade-ledger.md +42 -0
  296. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-wallet.md +4 -5
  297. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-trade-moments.md +4 -5
  298. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading.md +4 -5
  299. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-buy-and-sell-markers.md +37 -0
  300. package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-what-it-shows.md +2 -1
  301. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-receipts-what-your-executor-did.md +42 -0
  302. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-safety.md +34 -0
  303. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-set-it-up.md +47 -0
  304. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-the-channels.md +42 -0
  305. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-the-signal.md +48 -0
  306. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-what-it-is.md +35 -0
  307. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-what-it-will-not-do.md +34 -0
  308. package/dist/packages/mcp/assets/kb/docs/docs-real-mode-where-you-see-it.md +34 -0
  309. package/dist/packages/mcp/assets/kb/docs/docs-real-mode.md +27 -0
  310. package/dist/packages/mcp/assets/kb/docs/docs-screens-autotrade-paper.md +26 -0
  311. package/dist/packages/mcp/assets/kb/docs/docs-screens-order-plans.md +1 -1
  312. package/dist/packages/mcp/assets/kb/docs/docs-screens-token-screen.md +2 -0
  313. package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-brain-view-and-the-pnl-chip.md +1 -1
  314. package/dist/packages/mcp/assets/kb/docs/docs-telegram-approve-one-tap-entries.md +50 -0
  315. package/dist/packages/mcp/assets/kb/docs/docs-telegram-control-the-commands.md +43 -0
  316. package/dist/packages/mcp/assets/kb/docs/docs-telegram-if-something-goes-wrong.md +30 -0
  317. package/dist/packages/mcp/assets/kb/docs/docs-telegram-notify-what-reaches-your-phone.md +41 -0
  318. package/dist/packages/mcp/assets/kb/docs/docs-telegram-set-it-up.md +47 -0
  319. package/dist/packages/mcp/assets/kb/docs/docs-telegram-the-record.md +26 -0
  320. package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-is.md +33 -0
  321. package/dist/packages/mcp/assets/kb/docs/docs-telegram-what-it-will-not-do.md +31 -0
  322. package/dist/packages/mcp/assets/kb/docs/docs-telegram.md +23 -0
  323. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-common-questions.md +1 -1
  324. package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-doctor-lines.md +4 -0
  325. package/dist/packages/mcp/assets/kb/docs/docs-voice-linux-and-windows.md +1 -1
  326. package/dist/packages/mcp/assets/kb/docs/docs-voice.md +1 -1
  327. package/dist/packages/mcp/assets/kb/docs/docs-yolo-1-replay-it-on-your-own-history.md +42 -0
  328. package/dist/packages/mcp/assets/kb/docs/docs-yolo-2-run-it-on-paper.md +34 -0
  329. package/dist/packages/mcp/assets/kb/docs/docs-yolo-3-watch-it-and-stop-it.md +32 -0
  330. package/dist/packages/mcp/assets/kb/docs/docs-yolo-the-rules.md +37 -0
  331. package/dist/packages/mcp/assets/kb/docs/docs-yolo-what-it-is.md +34 -0
  332. package/dist/packages/mcp/assets/kb/docs/docs-yolo-what-it-will-not-do.md +31 -0
  333. package/dist/packages/mcp/assets/kb/docs/docs-yolo.md +26 -0
  334. package/dist/packages/mcp/assets/kb/entries/autotrade.md +40 -0
  335. package/dist/packages/mcp/src/app-help.js +1 -1
  336. package/dist/packages/mcp/src/autotrade-tools.js +1107 -0
  337. package/dist/packages/mcp/src/backtest-requests.js +71 -0
  338. package/dist/packages/mcp/src/engine/config.js +159 -0
  339. package/dist/packages/mcp/src/engine/index.js +10 -0
  340. package/dist/packages/mcp/src/engine/loop.js +101 -0
  341. package/dist/packages/mcp/src/engine/mcp-client.js +123 -0
  342. package/dist/packages/mcp/src/engine/ollama.js +258 -0
  343. package/dist/packages/mcp/src/engine/probe.js +110 -0
  344. package/dist/packages/mcp/src/engine/reason.js +35 -0
  345. package/dist/packages/mcp/src/engine/restrictions.js +111 -0
  346. package/dist/packages/mcp/src/index.js +7 -1
  347. package/dist/packages/mcp/src/ledger-tools.js +494 -0
  348. package/dist/packages/mcp/src/paper-agent.js +2 -0
  349. package/dist/packages/mcp/src/server.js +138 -19
  350. package/dist/packages/packs/src/backtest.js +3 -1
  351. package/dist/packages/popup/src/pages/chart-lib.js +134 -21
  352. package/dist/packages/popup/src/pages/chart.css +9 -0
  353. package/dist/packages/popup/src/pages/chart.html +3 -1
  354. package/dist/packages/popup/src/pages/chart.js +104 -7
  355. package/dist/packages/popup/src/protocol.js +2 -0
  356. package/dist/packages/popup/src/server.js +4 -0
  357. package/dist/packages/recorder/src/index.js +2 -0
  358. package/dist/packages/recorder/src/recorder.js +63 -6
  359. package/dist/packages/recorder/src/retention.js +100 -0
  360. package/dist/packages/recorder/src/schema.js +34 -1
  361. package/dist/packages/recorder/src/ticks.js +237 -0
  362. package/dist/packages/tui/src/index.js +1 -0
  363. package/dist/packages/tui/src/keymap.js +28 -1
  364. package/dist/packages/tui/src/markers.js +219 -0
  365. package/dist/packages/tui/src/widgets.js +149 -2
  366. package/package.json +2 -1
  367. package/dist/packages/data/src/trade/caps.js +0 -323
  368. package/dist/packages/data/src/trade/executor.js +0 -933
  369. package/dist/packages/data/src/trade/plans/executor-live.js +0 -220
  370. package/dist/packages/data/src/trade/rpc-exec.js +0 -229
  371. package/dist/packages/data/src/trade/signer/client.js +0 -197
  372. package/dist/packages/data/src/trade/signer/fast-wallet.js +0 -154
  373. package/dist/packages/data/src/trade/signer/host.js +0 -97
  374. package/dist/packages/data/src/trade/signer/main.js +0 -121
  375. package/dist/packages/data/src/trade/signer/probe-builder.js +0 -85
  376. package/dist/packages/data/src/trade/signer/protocol.js +0 -92
  377. package/dist/packages/data/src/trade/signer/service.js +0 -400
  378. package/dist/packages/data/src/trade/signer/sol-usd-feed.js +0 -98
  379. package/dist/packages/data/src/trade/sol-usd.js +0 -86
  380. package/dist/packages/data/src/trade/swap-build.js +0 -108
  381. package/dist/packages/data/src/trade/token-delta.js +0 -201
  382. package/dist/packages/data/vendor/solana-web3/LICENSE +0 -20
  383. package/dist/packages/data/vendor/solana-web3/NOTICE.md +0 -13
  384. package/dist/packages/data/vendor/solana-web3/index.iife.min.js +0 -20
  385. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-a-live-ticket.md +0 -42
  386. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-before-you-press-size-vs-caps.md +0 -34
  387. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-devnet-signer-mainnet-token.md +0 -35
  388. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-jupiter-rate-limits.md +0 -33
  389. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet.md +0 -32
  390. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-live-trading-devnet-first.md +0 -30
  391. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-mainnet.md +0 -31
  392. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-live-fire-path-devnet-the-fast-wallet.md +0 -41
  393. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-signer-process.md +0 -34
  394. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-what-the-live-path-keeps.md +0 -37
  395. package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-your-first-live-trade.md +0 -41
@@ -0,0 +1,229 @@
1
+ ---
2
+ id: screen-autotrade
3
+ title: The autotrade (paper) screen
4
+ kind: app-help
5
+ screen: autotrade
6
+ feature: autotrade-strategies
7
+ tags:
8
+ - app-help
9
+ - screen
10
+ - autotrade
11
+ - the
12
+ - autotrade
13
+ - (paper)
14
+ - screen
15
+ keys:
16
+ - q
17
+ - ctrl+c
18
+ - 1
19
+ - 2
20
+ - 3
21
+ - 4
22
+ - tab
23
+ - j
24
+ - down
25
+ - k
26
+ - up
27
+ - g
28
+ - home
29
+ - G
30
+ - end
31
+ - pagedown
32
+ - ctrl+f
33
+ - pageup
34
+ - ctrl+b
35
+ - enter
36
+ - esc
37
+ - backspace
38
+ - a
39
+ - v
40
+ - m
41
+ - ,
42
+ - <
43
+ - >
44
+ - ?
45
+ - t
46
+ - p
47
+ - $
48
+ - E
49
+ - w
50
+ - b
51
+ - y
52
+ - x
53
+ - P
54
+ - Z
55
+ - R
56
+ - T
57
+ - K
58
+ - N
59
+ - O
60
+ - U
61
+ - ctrl+w w
62
+ - ctrl+w n
63
+ - ctrl+w tab
64
+ - ctrl+w N
65
+ - ctrl+w s
66
+ - ctrl+w m
67
+ - ctrl+w o
68
+ - ctrl+w d
69
+ - ctrl+r
70
+ - Q
71
+ - n
72
+ - d
73
+ - e
74
+ - c
75
+ - i
76
+ - r
77
+ - s
78
+ - u
79
+ - !
80
+ - f
81
+ - o
82
+ - J
83
+ - F
84
+ - X
85
+ - A
86
+ actions:
87
+ - quit
88
+ - screen.screener
89
+ - screen.newpairs
90
+ - screen.watchlist
91
+ - screen.analyst
92
+ - screen.next
93
+ - move.down
94
+ - move.up
95
+ - move.top
96
+ - move.bottom
97
+ - move.pagedown
98
+ - move.pageup
99
+ - open
100
+ - back
101
+ - analyst.toggle
102
+ - voice.talk
103
+ - voice.mute
104
+ - voice.cycle
105
+ - voice.rate
106
+ - help.toggle
107
+ - theme.next
108
+ - pause.toggle
109
+ - display.priceMode
110
+ - export.view
111
+ - watch.add
112
+ - alert.propose
113
+ - alert.confirm
114
+ - alert.dismiss
115
+ - screen.positions
116
+ - scan.toggle
117
+ - scan.resume
118
+ - screen.trending
119
+ - social.kol
120
+ - screen.narrative
121
+ - screen.plans
122
+ - screen.follows
123
+ - workspace.list
124
+ - workspace.next
125
+ - workspace.prev
126
+ - workspace.save
127
+ - workspace.morning
128
+ - workspace.popups
129
+ - workspace.default
130
+ - screen.rules
131
+ - screen.autotrade
132
+ - autotrade.view
133
+ - autotrade.new
134
+ - autotrade.dup
135
+ - autotrade.edit
136
+ - autotrade.compare
137
+ - autotrade.backtest
138
+ - autotrade.sweep
139
+ - autotrade.export
140
+ - autotrade.import
141
+ - autotrade.run
142
+ - autotrade.save
143
+ - autotrade.undo
144
+ - autotrade.kill
145
+ - autotrade.pause
146
+ - autotrade.flatten
147
+ - autotrade.proposal
148
+ - autotrade.journey
149
+ - autotrade.forward
150
+ - autotrade.forwardstop
151
+ - autotrade.promote
152
+ tools:
153
+ - strategy_list
154
+ - autotrade_status
155
+ confidence: high
156
+ owner: maintainers
157
+ origin: app-help-generated
158
+ reviewed_by: generated@2026-10-16
159
+ generated_from: dexterm/app keymap + overlay + mcp tools (task-1413)
160
+ sources:
161
+ - packages/tui/src/keymap.ts
162
+ - packages/cli/src/screens/overlay.ts
163
+ date: 2026-10-16
164
+ ---
165
+
166
+ Press `Q` anywhere for AUTOTRADE, paper only. tab cycles five views: STRATEGIES (the presets and your own files with mode, version, hash and the last backtest), EDITOR (one form in six sections: entry, exits, risk, sizing, agent, execution; every change re-validates, errors show inline with their path, the screen filter is checked by the screener's own parser and its error column is marked; `s` saves only a valid draft as a new version, `u` undoes), COMPARE (two marked strategies side by side, changed fields first, both backtested on the same tape), BACKTEST (the report with attribution, an equity sparkline, clamps, refusals and the limits box; `w` runs a sweep whose verdict comes from coins it never tuned on) and RUNNER (the paper runner's heartbeat, halt reason, candidates, sessions, positions and ledger tail). Presets are read-only: `d` makes your own copy. Nothing on this screen switches a strategy to live, arms a mandate or touches a wallet. A strategy edit the analyst proposed in chat shows as a card: `o` opens its diff, `y` applies it, and a LOOSER edit (any risk number less safe) needs a second `y` on the less-safe popup.
167
+
168
+ Keys on this screen:
169
+ `q/^C` — quit
170
+ `1` — screener
171
+ `2` — new pairs
172
+ `3` — watchlist
173
+ `4` — analyst
174
+ `j/↓` — move
175
+ `k/↑` — move
176
+ `g/home` — top
177
+ `G/end` — bottom
178
+ `PgDn/^F` — page
179
+ `PgUp/^B` — page
180
+ `⏎` — open
181
+ `esc/⌫` — back
182
+ `a` — ask claude
183
+ `v` — voice
184
+ `m` — mute voice
185
+ `,` — change voice
186
+ `</>` — slower / faster voice
187
+ `?` — help
188
+ `t` — theme
189
+ `$` — price ⇄ mcap
190
+ `E` — export PNG + report
191
+ `y` — confirm alert
192
+ `P` — positions
193
+ `Z` — AI scan
194
+ `R` — resume scan
195
+ `T` — trending
196
+ `K` — KOL lists
197
+ `N` — narrative board
198
+ `O` — order plans
199
+ `U` — followed wallets
200
+ `^W w` — workspaces
201
+ `^W n/^W tab` — next workspace
202
+ `^W N` — previous workspace
203
+ `^W s` — save workspace
204
+ `^W m` — morning HUD
205
+ `^W o` — open workspace popups
206
+ `^W d` — default workspace
207
+ `^R` — rules
208
+ `Q` — autotrade (paper)
209
+ `tab` — next view
210
+ `n` — new from preset
211
+ `d` — duplicate
212
+ `e` — edit
213
+ `c` — mark to compare
214
+ `b` — backtest
215
+ `w` — sweep (held-out)
216
+ `x` — export file
217
+ `i` — import file
218
+ `r` — runner
219
+ `s` — save (new version)
220
+ `u` — undo
221
+ `!` — kill (soft stop)
222
+ `p` — pause new entries
223
+ `f` — flatten (confirm)
224
+ `o` — review chat proposal
225
+ `J` — journey (ladder)
226
+ `F` — forward test (paper)
227
+ `X` — stop forward test
228
+ `A` — review promotion
229
+ `?` — this help
@@ -72,6 +72,7 @@ keys:
72
72
  - ctrl+w o
73
73
  - ctrl+w d
74
74
  - ctrl+r
75
+ - Q
75
76
  actions:
76
77
  - quit
77
78
  - screen.screener
@@ -123,6 +124,7 @@ actions:
123
124
  - workspace.popups
124
125
  - workspace.default
125
126
  - screen.rules
127
+ - screen.autotrade
126
128
  confidence: high
127
129
  owner: maintainers
128
130
  origin: app-help-generated
@@ -186,5 +188,6 @@ Keys on this screen:
186
188
  `^W o` — open workspace popups
187
189
  `^W d` — default workspace
188
190
  `^R` — rules
191
+ `Q` — autotrade (paper)
189
192
  `c` — calm mode (effects off)
190
193
  `?` — this help
@@ -68,6 +68,7 @@ keys:
68
68
  - ctrl+w o
69
69
  - ctrl+w d
70
70
  - ctrl+r
71
+ - Q
71
72
  actions:
72
73
  - quit
73
74
  - screen.screener
@@ -115,6 +116,7 @@ actions:
115
116
  - workspace.popups
116
117
  - workspace.default
117
118
  - screen.rules
119
+ - screen.autotrade
118
120
  tools:
119
121
  - screener_query
120
122
  confidence: high
@@ -177,5 +179,6 @@ Keys on this screen:
177
179
  `^W o` — open workspace popups
178
180
  `^W d` — default workspace
179
181
  `^R` — rules
182
+ `Q` — autotrade (paper)
180
183
  `c` — calm mode (effects off)
181
184
  `?` — this help
@@ -69,6 +69,7 @@ keys:
69
69
  - ctrl+w o
70
70
  - ctrl+w d
71
71
  - ctrl+r
72
+ - Q
72
73
  actions:
73
74
  - quit
74
75
  - screen.screener
@@ -116,6 +117,7 @@ actions:
116
117
  - workspace.popups
117
118
  - workspace.default
118
119
  - screen.rules
120
+ - screen.autotrade
119
121
  tools:
120
122
  - paper_positions
121
123
  - paper_pnl
@@ -179,5 +181,6 @@ Keys on this screen:
179
181
  `^W o` — open workspace popups
180
182
  `^W d` — default workspace
181
183
  `^R` — rules
184
+ `Q` — autotrade (paper)
182
185
  `c` — calm mode (effects off)
183
186
  `?` — this help
@@ -76,6 +76,7 @@ keys:
76
76
  - ctrl+w o
77
77
  - ctrl+w d
78
78
  - ctrl+r
79
+ - Q
79
80
  actions:
80
81
  - quit
81
82
  - screen.screener
@@ -128,6 +129,7 @@ actions:
128
129
  - workspace.popups
129
130
  - workspace.default
130
131
  - screen.rules
132
+ - screen.autotrade
131
133
  tools:
132
134
  - screener_query
133
135
  confidence: high
@@ -195,5 +197,6 @@ Keys on this screen:
195
197
  `^W o` — open workspace popups
196
198
  `^W d` — default workspace
197
199
  `^R` — rules
200
+ `Q` — autotrade (paper)
198
201
  `c` — calm mode (effects off)
199
202
  `?` — this help
@@ -84,6 +84,7 @@ keys:
84
84
  - ctrl+w o
85
85
  - ctrl+w d
86
86
  - ctrl+r
87
+ - Q
87
88
  actions:
88
89
  - quit
89
90
  - screen.screener
@@ -154,6 +155,7 @@ actions:
154
155
  - workspace.popups
155
156
  - workspace.default
156
157
  - screen.rules
158
+ - screen.autotrade
157
159
  tools:
158
160
  - get_dossier
159
161
  - get_token
@@ -240,5 +242,6 @@ Keys on this screen:
240
242
  `^W o` — open workspace popups
241
243
  `^W d` — default workspace
242
244
  `^R` — rules
245
+ `Q` — autotrade (paper)
243
246
  `c` — calm mode (effects off)
244
247
  `?` — this help
@@ -71,6 +71,7 @@ keys:
71
71
  - ctrl+w o
72
72
  - ctrl+w d
73
73
  - ctrl+r
74
+ - Q
74
75
  actions:
75
76
  - quit
76
77
  - screen.screener
@@ -123,6 +124,7 @@ actions:
123
124
  - workspace.popups
124
125
  - workspace.default
125
126
  - screen.rules
127
+ - screen.autotrade
126
128
  tools:
127
129
  - narrative_board
128
130
  confidence: high
@@ -188,5 +190,6 @@ Keys on this screen:
188
190
  `^W o` — open workspace popups
189
191
  `^W d` — default workspace
190
192
  `^R` — rules
193
+ `Q` — autotrade (paper)
191
194
  `c` — calm mode (effects off)
192
195
  `?` — this help
@@ -68,6 +68,7 @@ keys:
68
68
  - ctrl+w o
69
69
  - ctrl+w d
70
70
  - ctrl+r
71
+ - Q
71
72
  actions:
72
73
  - quit
73
74
  - screen.screener
@@ -116,6 +117,7 @@ actions:
116
117
  - workspace.popups
117
118
  - workspace.default
118
119
  - screen.rules
120
+ - screen.autotrade
119
121
  confidence: high
120
122
  owner: maintainers
121
123
  origin: app-help-generated
@@ -177,5 +179,6 @@ Keys on this screen:
177
179
  `^W o` — open workspace popups
178
180
  `^W d` — default workspace
179
181
  `^R` — rules
182
+ `Q` — autotrade (paper)
180
183
  `c` — calm mode (effects off)
181
184
  `?` — this help
@@ -28,6 +28,6 @@ sources:
28
28
  date: 2026-10-16
29
29
  ---
30
30
 
31
- `dexterm mandate list|add|remove|arm|disarm` sets a standing mandate — a longer-lived conditional rule bounded by a budget. As with plans, a model may only PROPOSE; arming needs your physical keypress and the signer-side caps bound it. The analyst can never arm a mandate or change its caps.
31
+ `dexterm mandate list|add|remove|arm|disarm` sets a standing mandate — a longer-lived conditional rule bounded by a budget. As with plans, a model may only PROPOSE; arming needs your physical keypress and its caps bound it; fills are PAPER. The analyst can never arm a mandate or change its caps.
32
32
 
33
33
  CLI: `dexterm mandate`.
@@ -0,0 +1,54 @@
1
+ ---
2
+ id: trade-ledger
3
+ title: See every trade in one ledger: win rate, profiles, exit reasons, strategy versions (dexterm ledger)
4
+ kind: app-help
5
+ screen: all
6
+ feature: trade-ledger
7
+ tags:
8
+ - app-help
9
+ - ledger
10
+ - journal
11
+ - trades
12
+ - history
13
+ - results
14
+ - stats
15
+ - win
16
+ - rate
17
+ - drawdown
18
+ - profile
19
+ - exit
20
+ - reason
21
+ - compare
22
+ - export
23
+ - csv
24
+ - equity
25
+ - mfe
26
+ - mae
27
+ commands:
28
+ - ledger
29
+ tools:
30
+ - ledger_trades
31
+ - ledger_positions
32
+ - ledger_summary
33
+ - ledger_equity
34
+ - ledger_compare
35
+ - candidate_dossier
36
+ - outcomes_lookup
37
+ - trading_status
38
+ - telegram_status
39
+ - backtest_requests
40
+ confidence: high
41
+ owner: maintainers
42
+ origin: app-help-generated
43
+ reviewed_by: generated@2026-10-16
44
+ generated_from: dexterm/app keymap + overlay + mcp tools + cli (task-1413)
45
+ sources:
46
+ - packages/tui/src/keymap.ts
47
+ - packages/cli/src/main.ts
48
+ - packages/mcp/src/server.ts
49
+ date: 2026-10-16
50
+ ---
51
+
52
+ `dexterm ledger trades` lists every round trip dexterm booked, from the paper ticket, the agent paper desk and autotrade runs, newest first: strategy version, the exit profile and entry reason it was opened with (marked * when not declared with the fill), the exit reason, size and % of book, entry and exit market cap, P/L, hold and MFE/MAE. `positions` shows the open ones. `summary` gives the win rate with its 95% interval, P/L, profit factor, drawdown and rug rate by profile, exit reason, strategy, source and mode; `equity` the realized equity curve; `compare` strategy versions side by side (for strategies run in parallel); `export csv|json|parquet-lite [--out FILE]`; `card <tradeId>` a PnL card from a row. Filters: --source, --mode paper|devnet|live|real (real = a real-mode run: dexterm's model of the trades it signalled), --strategy id[@version], --profile, --exit, --mint, --run, --days, --status. Reads never write; `dexterm ledger sync` appends to ~/.dexterm/ledger/trades.jsonl (sha256-chained) and `dexterm ledger verify` names the first edited line. Agents read the same rows with the read-only ledger_* tools; `trading_status` and `telegram_status` show settings and state, never a key, address, exact balance, bot token or chat id. A backtest an agent asks for (backtest_request) only runs when you run it: `dexterm autotrade requests`. PAPER rows are simulated; filter by --mode before comparing. Not financial advice. Full docs: https://dexterm.xyz/docs/paper-trading/#the-trade-ledger
53
+
54
+ CLI: `dexterm ledger`.
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: use-local-model
3
+ title: Run dexterm's AI on a free local model (Ollama)
4
+ kind: app-help
5
+ screen: all
6
+ feature: analyst
7
+ tags:
8
+ - app-help
9
+ - ollama
10
+ - local
11
+ - model
12
+ - free
13
+ - offline
14
+ - engine
15
+ - llama
16
+ - qwen
17
+ - restrictions
18
+ - privacy
19
+ commands:
20
+ - ai
21
+ - ask
22
+ flags:
23
+ - --analyst-engine
24
+ confidence: high
25
+ owner: maintainers
26
+ origin: app-help-generated
27
+ reviewed_by: generated@2026-10-16
28
+ generated_from: dexterm/app keymap + overlay + mcp tools + cli (task-1413)
29
+ sources:
30
+ - packages/tui/src/keymap.ts
31
+ - packages/cli/src/main.ts
32
+ - packages/mcp/src/server.ts
33
+ date: 2026-10-16
34
+ ---
35
+
36
+ dexterm's AI can run on a free model on your own machine through Ollama: no login, no key, $0 per answer, and it talks only to http://127.0.0.1:11434 by default. Set it up in two minutes: install Ollama (https://ollama.com/download), `ollama pull qwen3:8b`, `dexterm ai engine ollama`, `dexterm ai model qwen3:8b`, then `dexterm doctor` (the Ollama line should pass). In the chat box `/engine ollama` switches new conversations, `/engine claude` switches back; `--analyst-engine ollama` and `DEXTERM_ANALYST_ENGINE=ollama` work too, and `dexterm ai engine ollama --surface autotrade` picks one surface. The local engine uses the same dexterm tools and the same firewalled context as Claude. What it may do is your restriction profile: `observe` (analyse only), `propose` (the default for a new setup: UI actions, a PAPER ticket you confirm, strategy proposals you apply), `paper` (adds paper autotrade sessions and agent paper trading in a mandate you armed: `dexterm ai restrictions paper`), `full` (only after `dexterm ai engine ollama --full` and typing ENABLE FULL, for one model). Caps, the kill switch, mandate tiers, live gating and Telegram buttons are enforced outside the model for every engine. `dexterm ai probe --json` checks tool calling, context and decision formatting; a model without tools answers from the dossier dexterm fetches and says so. Paper autotrade on it: `dexterm autotrade run <strategy> --paper --engine ollama`. Headless: `dexterm ask "question"`, `dexterm ai agent "goal"`. Docs: https://dexterm.xyz/docs/ollama/
37
+
38
+ CLI: `dexterm ai`, `dexterm ask`.
@@ -32,13 +32,16 @@ Two steps, both yours:
32
32
  1. Draft and arm a mandate (`dexterm mandate draft` / `arm`, or the plans screen). Its caps are per-trade, per-coin and total size, a loss limit, open positions, price impact, allowed sides and an optional mint allow-list, and arming needs a physical keypress. For bigger simulated sizes, draft a **paper-only** mandate with `dexterm mandate draft --paper` (see paper-only mandates (https://dexterm.xyz/docs/paper-trading#paper-only-mandates)): only the agent paper desk can use it.
33
33
  2. Start the terminal with the agent activity view and name that mandate: `dexterm --spectate-mcp --agent-paper <mandate-id>`. Quitting turns it off again.
34
34
 
35
- While it is on, the agent can use six tools:
35
+ While it is on, the agent can use seven tools:
36
36
 
37
37
  - `paper_open_ticket` opens a simulated ticket for a mint and side. It stays inert until confirmed.
38
38
  - `paper_size_ticket` sets the simulated size. A buy over any cap is **refused**, never clamped up.
39
39
  - `paper_confirm` re-checks the caps and your controls, fetches a fresh keyless quote and books the simulated fill.
40
40
  - `paper_close` closes a fraction of a held simulated position. If the keyless quote for that close is rate-limited, the desk waits briefly and asks for a fresh quote by itself (up to 4 tries in about 25 seconds, each retry shown in the agent activity) and books the fill on that later quote, never on an old one.
41
41
  - `paper_positions` and `paper_pnl` read the simulated positions and PnL. They are read-only.
42
+ - `paper_tag` records a declaration apart from a fill: a REPROFILE while it holds a coin, or a PROFILE / EXIT it did not pass with the fill (marked as declared late). It books nothing.
43
+
44
+ `paper_confirm` takes the exit profile and the entry reason (`profile`, `reason`) and `paper_close` the exit reason (`exit_reason`, `reason`) as typed fields, or the verbatim PROFILE / EXIT line in `tag_line`. They go to the trade ledger (https://dexterm.xyz/docs/paper-trading#the-trade-ledger) with the fill, so your results can be read by profile and by exit reason.
42
45
 
43
46
  The guarantees, each covered by tests:
44
47
 
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: docs-agents-reading-your-trade-ledger
3
+ title: Bring your own agent › Reading your trade ledger
4
+ kind: docs
5
+ page: agents
6
+ page_title: Bring your own agent
7
+ heading: Reading your trade ledger
8
+ anchor: reading-your-trade-ledger
9
+ url: https://dexterm.xyz/docs/agents#reading-your-trade-ledger
10
+ tags:
11
+ - docs
12
+ - agents
13
+ - reading
14
+ - trade
15
+ - ledger
16
+ - bring
17
+ - own
18
+ - agent
19
+ confidence: high
20
+ owner: maintainers
21
+ origin: docs-generated
22
+ reviewed_by: generated@2026-10-16
23
+ generated_from: dexterm/site content/docs (task-1420)
24
+ sources:
25
+ - site/content/docs/agents.md
26
+ date: 2026-10-16
27
+ ---
28
+
29
+ Any connected agent can read the trade ledger (https://dexterm.xyz/docs/paper-trading#the-trade-ledger) with the same read-only tools as the rest of the data: `ledger_trades`, `ledger_positions`, `ledger_summary`, `ledger_equity` and `ledger_compare`, plus `candidate_dossier` (what an autotrade run saw and decided about one coin) and `outcomes_lookup` (what a coin, or every candidate of a run, turned into). `trading_status` and `telegram_status` describe your live signer and your Telegram bot: settings and state only, never a key, a seed, an address, an exact balance, a bot token or a chat id.
30
+
31
+ `backtest_request` lets an agent ask for a longer backtest than `strategy_backtest` runs. It only files the request: you see it with `dexterm autotrade requests` and run or dismiss it yourself, and the agent reads the one-line result with `backtest_requests`.
@@ -31,6 +31,6 @@ Every agent is treated as potentially compromised or buggy:
31
31
  - **The gate.** One function every call passes on every transport: session open, name not on the never-list, tier sufficient, inside any mandate, arguments valid against a **closed** schema and within a size cap, rate limits and quotas with room, and an idempotency key on every proposal.
32
32
  - **Rate, quota and flood control.** Reads/min, navigation/10s and proposals/hour are per agent; sustained refusals trip a breaker that auto-pauses the agent.
33
33
  - **Prompt firewall.** Every untrusted string an agent receives (token names, bios, tweets, fetched page text) is wrapped and sanitised; terminal-escape, bidi-override and zero-width characters are stripped from every result, event and audit line.
34
- - **Proposals, never actions.** An order-plan proposal is a draft with `armed: false`, full stop; only your physical keypress arms it, and the signer-side caps still apply.
34
+ - **Proposals, never actions.** An order-plan proposal is a draft with `armed: false`, full stop; only your physical keypress arms it, and it fills on paper.
35
35
  - **Roster + audit.** The roster popup lists every connected agent (name, tier, last activity, reads/proposals, rate usage) with per-agent **pause** and **kick**, and the full audit log records every connect, call, refusal, proposal and disconnect.
36
36
  - **Watching adds no power.** The spectator view (https://dexterm.xyz/docs/spectator) only observes calls the gate already allowed or refused; its stream has no inbound command path and its window can send only pause, resume, take over and kill.
@@ -22,4 +22,4 @@ sources:
22
22
  date: 2026-10-16
23
23
  ---
24
24
 
25
- The panel shows a one-line fix (`npm i -g @anthropic-ai/claude-code && claude login`) and the rest of dexterm keeps working. `dexterm doctor` reports the Claude CLI line as a warning, not a failure. With Codex installed, `auto` runs the analyst on Codex instead.
25
+ The panel says to set up an AI backend, with both ways in one line (`npm i -g @anthropic-ai/claude-code && claude login`, or a free local model with Ollama), and the rest of dexterm keeps working. `dexterm doctor` reports the Claude CLI line as a warning, not a failure. With Codex installed, `auto` runs the analyst on Codex instead; with neither but a local model (https://dexterm.xyz/docs/ollama) set up, on the local model.
@@ -0,0 +1,27 @@
1
+ ---
2
+ id: docs-analyst-use-a-local-model-instead
3
+ title: The analyst › Use a local model instead
4
+ kind: docs
5
+ page: analyst
6
+ page_title: The analyst
7
+ heading: Use a local model instead
8
+ anchor: use-a-local-model-instead
9
+ url: https://dexterm.xyz/docs/analyst#use-a-local-model-instead
10
+ tags:
11
+ - docs
12
+ - analyst
13
+ - use
14
+ - local
15
+ - model
16
+ - instead
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/analyst.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ The analyst can also run on **a free model on your own machine** through Ollama: no login, no key, $0 per answer, and with the default host (`127.0.0.1`) nothing leaves the machine. `dexterm ai engine ollama`, `--analyst-engine ollama` or `/engine ollama` in the chat box. Same tools, same firewalled context, same skills; what the local engine may do is set by a restriction profile you choose. See Use a local model with Ollama (https://dexterm.xyz/docs/ollama).
@@ -23,4 +23,6 @@ date: 2026-10-16
23
23
 
24
24
  Every turn carries a firewalled **CONTEXT** block: the screen you are on, the filter and sort, the selected or hovered coin, the visible rows (price, change, liquidity, volume), your watchlist, and any open PAPER ticket or position. So "this coin", "it" and "the highlighted one" resolve without asking. Token names, descriptions, socials, RugCheck text and fetched page text are wrapped as `<untrusted>` data before the model sees them; instruction-like text inside such a block is itself reported as a red flag (`injection_detected`) and never followed.
25
25
 
26
+ **It talks in market cap.** By default the analyst speaks the way traders do: the cap at entry and the cap now, targets and stops as market-cap levels, moves as x-multiples ("in at $69.7K, now $264.9K, 3.8x"); its live snapshot leads with the market cap and reads the price history as caps at the current supply. With the price display mode (https://dexterm.xyz/docs/configuration#price-display-mode) set to price (`$` or `/display price`) it switches to USD price on the next turn. A coin without a known supply is discussed in price, and it says so.
27
+
26
28
  Facts come only from tools. The system prompt forbids token facts from model memory: every number, address, flag and level must come from a tool result in the session, each carrying its source and age. The knowledge base explains mechanics and patterns; it never holds a fact about a live token.
@@ -0,0 +1,56 @@
1
+ ---
2
+ id: docs-autotrade-backtests-and-their-limits
3
+ title: Autotrade (paper) › Backtests and their limits
4
+ kind: docs
5
+ page: autotrade
6
+ page_title: Autotrade (paper)
7
+ heading: Backtests and their limits
8
+ anchor: backtests-and-their-limits
9
+ url: https://dexterm.xyz/docs/autotrade#backtests-and-their-limits
10
+ tags:
11
+ - docs
12
+ - autotrade
13
+ - backtests
14
+ - their
15
+ - limits
16
+ - paper
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/autotrade.md
24
+ date: 2026-10-16
25
+ ---
26
+
27
+ ```
28
+ dexterm autotrade backtest my-swing # over your recorder history (read-only)
29
+ dexterm autotrade backtest moonbag --every-candidate --recall 5,10
30
+ dexterm autotrade sweep scalp # tune on older coins, check on the newest ones
31
+ dexterm backtest --subject strategy --strategy swing
32
+ ```
33
+
34
+ A backtest replays the strategy over the history the recorder (https://dexterm.xyz/docs/data-sources) saved on your machine, with the same entry rules, clamp and exit logic a run would use, and mechanical entries (no agent). It never touches the network or a model. The report gives the trades, wins and losses with a 95% interval on the win rate, the net, the drawdown on marked equity, how many bags could not be sold, and which exit rule, profile and trigger each result came from. Below 20 trades it says to read the counts, not the rates.
35
+
36
+ For strategies that live on a rare tail, like moonbag, it also prints:
37
+
38
+ - the **tail**: trades that ended at -80% or worse or could not be sold, how many took their cost back, the net without the single best trade, the result per dollar staked with a bootstrap 95% interval, and the exit-multiple median, 90th percentile and maximum;
39
+ - `--every-candidate`: every candidate entered at a fixed $20 with the book's caps lifted, so each entry is an independent sample and the result does not depend on which coins arrived first;
40
+ - `--recall 5,10`: of the coins that later ran 5x or 10x, how many the entry rules passed, which rule refused the others, and how each entered one was closed.
41
+
42
+ **The held-out check.** `sweep` tries a grid of parameters (for example the trail width or the first take-profit). It splits the coins by when they were first seen: the newest 30% are held out, and no coin is in both halves. It tunes on the older coins only, then checks the held-out coins exactly twice, with the unchanged strategy and with the tuned one. It only reports a gain when both halves have at least 20 trades **and** the tuned strategy makes money on the held-out coins. A tuned strategy that only loses less is reported as exactly that.
43
+
44
+ **Finer history for the coins that matter.** The recorder's snapshots are written on moves of about 5% at the screen's refresh pace, which hides the path a stop or a take-profit lives on. Run the headless recorder with `dexterm record run --focus-ticks` and it also samples the coins you hold on paper or have open every 5 seconds, and your watchlist and autotrade candidates every 10 seconds, with 1-minute candles built from those samples. A backtest reads those samples in time order next to the snapshots, so for those coins a stop fills at the next 5- or 10-second sample instead of the next snapshot. The slower fields (24-hour volume, holders, top-10 share, authorities) come from the coin's latest earlier snapshot, never a later one. Samples are kept 14 days and candles 90 days. With `--retention-mb N` the recorder removes the oldest history to stay under N MB instead of pausing; what is kept and for how long is in recorded history (https://dexterm.xyz/docs/data-sources#recorded-history-and-retention).
45
+
46
+ **On the history recorded so far, every preset lost money when entered mechanically.** The engine is a way to test your own rules honestly, not a source of profitable ones, and a backtest is not a forecast.
47
+
48
+ The limits are printed with every report:
49
+
50
+ - **Coarse prices.** Most of the history is recorder snapshots (written on moves of about 5% or every 30 minutes while a coin was listed), not trades, so stops and take-profits fill at the next recorded price. Coins sampled with `--focus-ticks` are finer (5 to 10 seconds), but a move between two samples is still invisible, and their candles' highs and lows are of the samples, not of every trade.
51
+ - **Modelled fills.** Price impact on the recorded pool, plus fee, slippage and network fee; not real quotes.
52
+ - **Survivorship.** Only coins the app recorded are in the history; coins nobody saw are absent.
53
+ - **Rugs.** A bag below the exit-liquidity floor cannot be sold and counts as zero, and a rug between two snapshots fills at whatever the next snapshot says.
54
+ - **Early entries look later than they are.** A young pair enters the history only once a feed lists it, and pairs that rugged before any feed saw them are missing, so the measured rug rate is a floor.
55
+ - **Missing signals.** Narrative, followed-wallet, social and dev-sell signals are not in the history, so those triggers and exits never fire in a backtest.
56
+ - **No agent.** A backtest has no agent latency and no agent judgement; agent backtests cost Claude usage and stay small.