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.
- package/dist/packages/cli/assets/claude/analyst-system.md +2 -1
- package/dist/packages/cli/src/agent-paper.js +60 -0
- package/dist/packages/cli/src/analyst/backend.js +183 -0
- package/dist/packages/cli/src/analyst/codex.js +301 -0
- package/dist/packages/cli/src/analyst/session.js +9 -2
- package/dist/packages/cli/src/app-help-gen.js +18 -9
- package/dist/packages/cli/src/docs-kb-gen.js +228 -0
- package/dist/packages/cli/src/doctor.js +80 -9
- package/dist/packages/cli/src/index.js +1 -1
- package/dist/packages/cli/src/kb-skill-cmd.js +3 -0
- package/dist/packages/cli/src/larp-detected.js +209 -0
- package/dist/packages/cli/src/live/dev-history.js +99 -0
- package/dist/packages/cli/src/live/newpairs.js +12 -0
- package/dist/packages/cli/src/live/screens/token-live.js +11 -1
- package/dist/packages/cli/src/live/token.js +39 -1
- package/dist/packages/cli/src/main.js +260 -7
- package/dist/packages/cli/src/mcp-follow.js +255 -0
- package/dist/packages/cli/src/record-cmd.js +2 -0
- package/dist/packages/cli/src/rules.js +25 -2
- package/dist/packages/cli/src/screens/analyst-session.js +5 -3
- package/dist/packages/cli/src/screens/analyst.js +4 -3
- package/dist/packages/cli/src/spectate-cmd.js +14 -3
- package/dist/packages/cli/src/version.js +1 -1
- package/dist/packages/cli/src/x-cmd.js +11 -5
- package/dist/packages/custom/src/rules.js +2 -2
- package/dist/packages/custom/src/schema.js +5 -1
- package/dist/packages/data/src/fixtures.js +28 -6
- package/dist/packages/data/src/index.js +3 -0
- package/dist/packages/data/src/sources/jupiter.js +1 -0
- package/dist/packages/data/src/trade/agent/paper-desk.js +336 -0
- package/dist/packages/data/src/trade/agent/rendezvous.js +161 -0
- package/dist/packages/mcp/assets/kb/app-help/agent-paper-trade.md +38 -0
- package/dist/packages/mcp/assets/kb/app-help/ask-the-analyst.md +1 -1
- package/dist/packages/mcp/assets/kb/app-help/connect-an-agent.md +1 -1
- package/dist/packages/mcp/assets/kb/app-help/dev-history.md +32 -0
- package/dist/packages/mcp/assets/kb/app-help/paper-trade.md +1 -1
- package/dist/packages/mcp/assets/kb/app-help/screen-positions.md +4 -1
- package/dist/packages/mcp/assets/kb/app-help/screen-token.md +1 -0
- package/dist/packages/mcp/assets/kb/app-help/spectate-an-agent.md +4 -1
- package/dist/packages/mcp/assets/kb/app-help/use-codex-analyst.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-agent-paper-trading.md +50 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-capability-tiers-enforced-server-side.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-directory-metadata-prepared-not-submitted.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-install-in-one-command.md +51 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-per-agent-mandates.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-recipes.md +43 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-red-team-coverage.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-two-ways-to-connect.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-untrusted-by-default.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents-watch-an-agent-work-spectator-view.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-agents.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-answer-style.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-if-claude-is-missing.md +25 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-it-knows-the-app.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-mcp-tools.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-plain-language-filters.md +25 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-skills.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-starting-a-run.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-use-codex-instead-of-claude.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-it-can-change-three-tiers.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-it-sees.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst-what-the-analyst-can-never-do.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-analyst.md +23 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-1-start-dexterm.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-2-open-a-real-coin-by-contract-address.md +43 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-3-read-the-safety-panel.md +40 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-4-read-the-holder-panel.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-5-optionally-ask-the-analyst.md +39 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-6-export-or-share-what-you-see.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-7-quit-safely.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-before-any-experimental-trading.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-check-the-installation-with-doctor.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-choose-a-setup-path.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-common-mistakes-and-recovery.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-copy-and-paste-without-surprises.md +39 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-data-says-unavailable-stale-or-rate-limited.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-dexterm-says-command-not-found.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-optional-help-is-unavailable.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-paste-does-nothing-or-pastes-twice.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-the-screen-looks-broken.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-if-you-typed-the-wrong-thing.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-install-node-js-first.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-linux.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-macos-homebrew.md +46 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-macos-or-linux-npm.md +39 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-macos.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-open-the-terminal.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-reopen-dexterm-later.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-ten-minute-first-win.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-terminal-shell-prompt-command-output-and-path.md +40 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-where-to-go-next.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows-expectations.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows-powershell-experimental.md +39 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners-windows.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-beginners.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli-dexterm-help.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli-filter-grammar.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli-flags.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli-invocations.md +43 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli-presets.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli-scan-commands.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli-sort-keys.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli-subcommands.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-cli.md +25 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-environment-variables.md +47 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-files-on-disk.md +41 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-headless-recorder-dexterm-record.md +44 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-history-recorder.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-packs.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-price-display-mode.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-push-alerts-and-dexterm-watch.md +45 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-rules-engine.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-the-analyst-s-launch.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-the-optional-free-rpc-key.md +42 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-themes-and-keymaps.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-themes-and-look.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-widgets.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-workspaces.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration.md +25 -0
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-1-follow-a-wallet-see-what-it-does.md +51 -0
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-2-the-one-key-mirror-ticket-a-proposal.md +56 -0
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-stage-3-capped-auto-mirror-default-off-less.md +47 -0
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading-what-is-proven-what-is-not.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-copy-trading.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources-cache.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources-health-registry.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources-rate-limits-and-pacing.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources-request-budget-meter.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources-sources.md +47 -0
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources-the-helius-credit-meter.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-data-sources.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-dexterm-doctor.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-first-run.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-install.md +81 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-next.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-requirements.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-running-the-tests.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-supported-platforms.md +44 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started-updating.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-getting-started.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-keyboard-global-keys.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-keyboard-keys-handled-by-the-loop.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-keyboard-per-screen-keys.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-keyboard-what-shows.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-keyboard.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-larp-measured-accuracy.md +53 -0
- package/dist/packages/mcp/assets/kb/docs/docs-larp-open-link-keys.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-larp-paste-a-coin-on-the-web.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-larp-the-verdict.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-larp-timestamped-follow-up-drafts.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-larp-what-it-looks-at.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-larp.md +24 -0
- package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-degraded-states-you-will-see.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-free-vs-paid-x-api-tiers-your-bill-your-limits.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-kol-lists-and-the-per-handle-filter.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-tests.md +25 -0
- package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-what-is-read-and-when.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-what-you-set-up-once.md +40 -0
- package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-where-the-tokens-live.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-login-with-x.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-a-live-ticket.md +42 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-before-you-press-size-vs-caps.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-devnet-signer-mainnet-token.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-jupiter-rate-limits.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-letting-an-agent-paper-trade-experimental.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-link-a-wallet.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-live-trading-devnet-first.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-mainnet.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-order-plans-and-standing-mandates.md +44 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-panic.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-pnl-cards.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-live-fire-path-devnet-the-fast-wallet.md +41 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-signer-process.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-ticket.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-the-wallet.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-trade-moments.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-what-the-live-path-keeps.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading-your-first-live-trade.md +41 -0
- package/dist/packages/mcp/assets/kb/docs/docs-paper-trading.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-bubble-map-popup.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-build-the-native-window.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-config-dexterm-popup-json.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-docking-macos.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-keys-in-the-popup.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-market-cap-axis.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-security-model.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-token-and-feeds-popups.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart-what-it-shows.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-popup-chart.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scan-cost-control.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scan-keys-flag-command.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scan-safety-four-layers.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scan-states.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scan-the-read.md +25 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scan-triggers-and-score.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scan.md +24 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scorecard-frozen-canary.md +30 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scorecard-frozen-task-1401-evaluation.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scorecard-latest-skill-care-run.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scorecard-links-only-larp-baseline-where-it-is-weak.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scorecard-not-measured.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scorecard-rug-verdict-rules.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scorecard-source-and-rebuild.md +31 -0
- package/dist/packages/mcp/assets/kb/docs/docs-scorecard.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-1-screener.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-2-new-pairs.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-3-watchlist.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-4-analyst-tab.md +28 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-bubble-map.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-coin-images.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-dev-history.md +44 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-how-well-it-predicts-measured-held-out.md +46 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-live-holder-and-rug-signals.md +51 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-order-plans.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-paper-ticket-and-positions.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-the-look.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-token-screen.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens-trending-social-and-kol-lists.md +34 -0
- package/dist/packages/mcp/assets/kb/docs/docs-screens.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-1-the-agent-activity-window-follow-mode.md +56 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-2-the-read-only-stream-spectate.md +42 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-3-save-and-replay-record-file-dexterm-spectate.md +41 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-follow-over-mcp-in-the-running-terminal.md +39 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-limits.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-quick-start.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-security-model.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-see-also.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-streaming-it.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-the-three-surfaces.md +37 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator-what-is-redacted.md +35 -0
- package/dist/packages/mcp/assets/kb/docs/docs-spectator.md +29 -0
- package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-common-questions.md +33 -0
- package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-doctor-lines.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-in-app-messages.md +42 -0
- package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting-reporting-a-problem.md +25 -0
- package/dist/packages/mcp/assets/kb/docs/docs-troubleshooting.md +23 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-doctor.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-it-clarifies-it-never-guesses.md +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-latency.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-linux-and-windows.md +32 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-privacy.md +26 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-still-unverified.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-the-voice-neural-by-default.md +48 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-what-it-can-never-do.md +27 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice-what-you-can-say.md +38 -0
- package/dist/packages/mcp/assets/kb/docs/docs-voice.md +25 -0
- package/dist/packages/mcp/src/app-help.js +123 -0
- package/dist/packages/mcp/src/firewall.js +2 -2
- package/dist/packages/mcp/src/index.js +8 -4
- package/dist/packages/mcp/src/paper-agent.js +92 -0
- package/dist/packages/mcp/src/server.js +261 -29
- package/dist/packages/mcp/src/spectator-sink.js +146 -5
- package/dist/packages/mcp/src/user-content.js +1 -0
- package/dist/packages/recorder/src/dev-history.js +129 -0
- package/dist/packages/recorder/src/index.js +1 -0
- package/dist/packages/recorder/src/recorder.js +23 -0
- package/dist/packages/recorder/src/schema.js +11 -0
- package/dist/packages/voice/src/stt/whisper.js +4 -2
- package/package.json +6 -5
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-larp-the-verdict
|
|
3
|
+
title: LARP detector › The verdict
|
|
4
|
+
kind: docs
|
|
5
|
+
page: larp
|
|
6
|
+
page_title: LARP detector
|
|
7
|
+
heading: The verdict
|
|
8
|
+
anchor: the-verdict
|
|
9
|
+
url: https://dexterm.xyz/docs/larp#the-verdict
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- larp
|
|
13
|
+
- verdict
|
|
14
|
+
- detector
|
|
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/larp.md
|
|
22
|
+
date: 2026-10-16
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
The `larp-check` skill returns a structured assessment: `REAL_PRODUCT` · `EARLY_BUT_REAL` · `LARP` · `UNVERIFIABLE` · `AMBIGUOUS`, with a confidence, a status per claim (supported, contradicted, unverifiable), `missing_data`, the facts and flags it used, `injection_detected` and a short summary. It is separate from the dossier's risk verdict and does not replace it.
|
|
26
|
+
|
|
27
|
+
Once computed, a badge appears in the screener's FLAGS column and in the token screen's title strip for that mint only: **LARP** (red), **REAL** (green), **REAL?** (mixed), **UNKNOWN** for unverifiable or ambiguous. Nothing shows before you vet a coin. A `LARP` verdict also vetoes an AI scan (https://dexterm.xyz/docs/scan) lock on that coin.
|
|
28
|
+
|
|
29
|
+
> warn: a LARP verdict is a risk flag, not a certificate. Public HTML cannot prove a working product, a team's identity or who owns an account; domain age, a clean script scan and a GitHub with commits are evidence, not proof, and a real product can still go to zero.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-larp-timestamped-follow-up-drafts
|
|
3
|
+
title: LARP detector › Timestamped follow-up drafts
|
|
4
|
+
kind: docs
|
|
5
|
+
page: larp
|
|
6
|
+
page_title: LARP detector
|
|
7
|
+
heading: Timestamped follow-up drafts
|
|
8
|
+
anchor: timestamped-follow-up-drafts
|
|
9
|
+
url: https://dexterm.xyz/docs/larp#timestamped-follow-up-drafts
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- larp
|
|
13
|
+
- timestamped
|
|
14
|
+
- follow-up
|
|
15
|
+
- drafts
|
|
16
|
+
- detector
|
|
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/larp.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
`dexterm larp-detected --out DIR` is a local, offline review pipeline over your recorder history. The cron-ready equivalent is `node scripts/larp-detected.mjs --out DIR`; dexterm does not install a schedule. It does not connect to X, open a composer, upload, schedule or post.
|
|
28
|
+
|
|
29
|
+
For each coin, the command scores only the point-in-time recorder row with the named `H1-v0.1` heuristic, then joins it only to a later recorder outcome at the chosen horizon (72 hours by default). It keeps one flag per short-mint identifier. Every PNG and text report carries the original UTC timestamp, model label, source, evidence age, outcome tier and follow-up horizon. The batch line states both sides of the same dataset: how many flagged coins met the follow-up condition and how many did not. Below 50 unique flags, the sample is thin and the command writes no drafts.
|
|
30
|
+
|
|
31
|
+
By default it writes at most three Markdown drafts and three cards. Coin names, tickers and full addresses are omitted; the identifier is first four plus last four mint characters. The copy says “recorder label” rather than asserting what a project or person did. `node scripts/scan-larp-detected.mjs DIR` scans every draft and report for full addresses, handles, cashtags, identity/path leaks, trading language, accusations and market claims.
|
|
32
|
+
|
|
33
|
+
`dexterm larp-detected --live MINT --out DIR` performs one read-only, keyless market lookup and writes a **graded now** card. It explicitly says there is no later outcome yet. This path does not touch a wallet, trading, the signer, arming, voice or agents.
|
|
34
|
+
|
|
35
|
+
> warn: H1 is a heuristic model output and a risk flag, not a certificate. The files are drafts for human review. Nothing is posted automatically.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-larp-what-it-looks-at
|
|
3
|
+
title: LARP detector › What it looks at
|
|
4
|
+
kind: docs
|
|
5
|
+
page: larp
|
|
6
|
+
page_title: LARP detector
|
|
7
|
+
heading: What it looks at
|
|
8
|
+
anchor: what-it-looks-at
|
|
9
|
+
url: https://dexterm.xyz/docs/larp#what-it-looks-at
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- larp
|
|
13
|
+
- looks
|
|
14
|
+
- detector
|
|
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/larp.md
|
|
22
|
+
date: 2026-10-16
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
| evidence | source | what counts |
|
|
26
|
+
|---|---|---|
|
|
27
|
+
| the advertised links | DexScreener info + Jupiter metadata (`get_links`), de-duplicated and classified; a note when the two sources disagree | a mismatch across sources is a flag in itself |
|
|
28
|
+
| the website | one SSRF-safe, read-only GET (`fetch_page`): no JavaScript, no cookies, no downloads, 512 KiB and 8 s caps, `robots.txt` honoured on every redirect hop, private and loopback addresses refused, DNS re-validated at connect time | site-builder or default-page signals, a live app or demo, docs, wallet-connect patterns, drainer and approval signatures in scripts, external script hosts, whether the symbol and name appear, team-claim and stock-placeholder text |
|
|
29
|
+
| the domain | RDAP lookup of the exact advertised domain (`check_domain`) | registration age, registrar, registrant privacy. A days-old domain behind privacy is a mild signal, not proof. Novelty TLDs without an RDAP server come back as unverifiable. |
|
|
30
|
+
| GitHub | the keyless GitHub API (`check_github`) for a `github.com/owner/repo` link | created and last-push dates, stars, open issues, archived or fork, up to five real commit hashes with dates |
|
|
31
|
+
| pump.fun metadata | the metadata URI GoPlus reports, through the same safe fetch | the advertised description and links, when they exist |
|
|
32
|
+
|
|
33
|
+
X is usually login-walled keyless, so account age and follower counts are reported as unverifiable rather than guessed. Every fetched string reaches the model through the prompt firewall: normalised, control and bidi characters stripped, URLs and addresses masked, wrapped as untrusted data, tags stripped so a planted closing tag cannot break out.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-larp
|
|
3
|
+
title: LARP detector
|
|
4
|
+
kind: docs
|
|
5
|
+
page: larp
|
|
6
|
+
page_title: LARP detector
|
|
7
|
+
url: https://dexterm.xyz/docs/larp
|
|
8
|
+
tags:
|
|
9
|
+
- docs
|
|
10
|
+
- larp
|
|
11
|
+
- detector
|
|
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/larp.md
|
|
19
|
+
date: 2026-10-16
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
Vet the product behind a coin: its website, domain registration and GitHub, read-only, only when you ask.
|
|
23
|
+
|
|
24
|
+
A memecoin's advertised website, X and Telegram are claims. The LARP detector fetches what it can, reads it mechanically, and lets the analyst grade the claims against what it found. It runs only when you press `V` on a live token; nothing is fetched automatically.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-login-with-x-degraded-states-you-will-see
|
|
3
|
+
title: Login with X › Degraded states you will see
|
|
4
|
+
kind: docs
|
|
5
|
+
page: login-with-x
|
|
6
|
+
page_title: Login with X
|
|
7
|
+
heading: Degraded states you will see
|
|
8
|
+
anchor: degraded-states-you-will-see
|
|
9
|
+
url: https://dexterm.xyz/docs/login-with-x#degraded-states-you-will-see
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- login-with-x
|
|
13
|
+
- degraded
|
|
14
|
+
- states
|
|
15
|
+
- will
|
|
16
|
+
- login
|
|
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/login-with-x.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
| header | meaning | what happens |
|
|
28
|
+
|---|---|---|
|
|
29
|
+
| `x-stream ○ logged out` | no login | keyless venues, news and on-chain rows only |
|
|
30
|
+
| `x-stream ●4s @you` | reading | the age is the last successful read |
|
|
31
|
+
| `x-stream ◐ rate limited 5m` | X answered 429 or the window is exhausted | reads resume after X's reset time |
|
|
32
|
+
| `x-stream ◐ daily budget 3h` | your dexterm budget is spent | reads resume at the next UTC day |
|
|
33
|
+
| `x-stream ◐ app tier (no search)` | the app is on the Free tier | identity only; upgrade the app in the X console |
|
|
34
|
+
| `x-stream ◐ error` | transport or 5xx | retried with backoff, up to 10 minutes |
|
|
35
|
+
|
|
36
|
+
Nothing is ever shown as fresh when it is not, and nothing is invented to fill a gap.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-login-with-x-free-vs-paid-x-api-tiers-your-bill-your-limits
|
|
3
|
+
title: Login with X › Free vs paid X API tiers (your bill, your limits)
|
|
4
|
+
kind: docs
|
|
5
|
+
page: login-with-x
|
|
6
|
+
page_title: Login with X
|
|
7
|
+
heading: Free vs paid X API tiers (your bill, your limits)
|
|
8
|
+
anchor: free-vs-paid-x-api-tiers-your-bill-your-limits
|
|
9
|
+
url: https://dexterm.xyz/docs/login-with-x#free-vs-paid-x-api-tiers-your-bill-your-limits
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- login-with-x
|
|
13
|
+
- free
|
|
14
|
+
- paid
|
|
15
|
+
- api
|
|
16
|
+
- tiers
|
|
17
|
+
- bill
|
|
18
|
+
- limits
|
|
19
|
+
- login
|
|
20
|
+
confidence: high
|
|
21
|
+
owner: maintainers
|
|
22
|
+
origin: docs-generated
|
|
23
|
+
reviewed_by: generated@2026-10-16
|
|
24
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
25
|
+
sources:
|
|
26
|
+
- site/content/docs/login-with-x.md
|
|
27
|
+
date: 2026-10-16
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
Login with X gives dexterm **your** per-user rate windows and compliant user-authorized access. It does **not** move cost anywhere: X's pay-per-use pricing bills the developer account that owns the app, and with this design that account is yours. Facts as published by X (check the console; they change):
|
|
31
|
+
|
|
32
|
+
| tier | what it means for dexterm |
|
|
33
|
+
|---|---|
|
|
34
|
+
| **Free** | login and identity work (`/2/users/me`), but **search and list timelines are not included**: the app's tier answers `403 client-not-enrolled`, dexterm shows `x-stream ◐ app tier (no search)` and reads nothing. KOL list *import* (`owned_lists`, `members`) is also tier-gated; expect it to fail on Free. |
|
|
35
|
+
| **Pay-per-use / Basic and up** | search/recent (300 requests per 15 minutes per user, last 7 days) and list timelines (900 per 15 minutes) work. X bills about **$0.005 per post read** and **$0.01 per user read**, deduplicated per UTC day. |
|
|
36
|
+
|
|
37
|
+
dexterm keeps its own estimate and a hard stop: the SOURCES panel (`s` on the trending board) shows `@handle · 12/300 search · $0.12 of $10 today`. The default daily budget is **$10** (`DEXTERM_X_DAILY_USD=5` lowers it; `0` means "never read X"); when it is reached the header says `x-stream ◐ daily budget` and reads resume at the next UTC day. The estimate uses X's list prices and counts a post only the first time its id is seen in a day; the X console is the actual bill, so **set a spending limit there too**. At the design cadence a watched coin costs roughly $6 a day and KOL list polling roughly $7 a day on Basic; the 15-minute cache, `since_id` and the 24-hour dedupe table are what keep it there.
|
package/dist/packages/mcp/assets/kb/docs/docs-login-with-x-kol-lists-and-the-per-handle-filter.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-login-with-x-kol-lists-and-the-per-handle-filter
|
|
3
|
+
title: Login with X › KOL lists and the per-handle filter
|
|
4
|
+
kind: docs
|
|
5
|
+
page: login-with-x
|
|
6
|
+
page_title: Login with X
|
|
7
|
+
heading: KOL lists and the per-handle filter
|
|
8
|
+
anchor: kol-lists-and-the-per-handle-filter
|
|
9
|
+
url: https://dexterm.xyz/docs/login-with-x#kol-lists-and-the-per-handle-filter
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- login-with-x
|
|
13
|
+
- kol
|
|
14
|
+
- lists
|
|
15
|
+
- per-handle
|
|
16
|
+
- filter
|
|
17
|
+
- login
|
|
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/login-with-x.md
|
|
25
|
+
date: 2026-10-16
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
`K` opens your lists. `X` there (or `dexterm kol import-x`) imports the lists your X account **owns** as `X LIST` entries: handles only, never posts, and they count as tier A for credibility like your own manual lists. `o` on a handle narrows the trending board and the SOCIAL panel to that handle's posts (press `o` again, or `f`, to clear). Muting a handle (`m`) drops its posts before they are stored.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-login-with-x-tests
|
|
3
|
+
title: Login with X › Tests
|
|
4
|
+
kind: docs
|
|
5
|
+
page: login-with-x
|
|
6
|
+
page_title: Login with X
|
|
7
|
+
heading: Tests
|
|
8
|
+
anchor: tests
|
|
9
|
+
url: https://dexterm.xyz/docs/login-with-x#tests
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- login-with-x
|
|
13
|
+
- tests
|
|
14
|
+
- login
|
|
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/login-with-x.md
|
|
22
|
+
date: 2026-10-16
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
The whole flow runs in the test suite against a **mock X server on 127.0.0.1**: PKCE and state checks, single-use 30-second codes, refresh rotation, revoke, 401/429/403 and budget stops, list import, and the firewall on an injection tweet. No test ever contacts x.com, and the default suite blocks `fetch` entirely.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-login-with-x-what-is-read-and-when
|
|
3
|
+
title: Login with X › What is read, and when
|
|
4
|
+
kind: docs
|
|
5
|
+
page: login-with-x
|
|
6
|
+
page_title: Login with X
|
|
7
|
+
heading: What is read, and when
|
|
8
|
+
anchor: what-is-read-and-when
|
|
9
|
+
url: https://dexterm.xyz/docs/login-with-x#what-is-read-and-when
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- login-with-x
|
|
13
|
+
- read
|
|
14
|
+
- login
|
|
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/login-with-x.md
|
|
22
|
+
date: 2026-10-16
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
| what | endpoint (user context) | when | cached |
|
|
26
|
+
|---|---|---|---|
|
|
27
|
+
| posts about the open coin | `GET /2/tweets/search/recent` with `$SYMBOL OR <mint>` (`-is:retweet -is:reply`) | every 60 s while the token screen is open, only newer posts after the first page | 15 min per query |
|
|
28
|
+
| your own X lists as KOL feeds | `GET /2/lists/:id/tweets` | every 5 min per enabled list | 15 min |
|
|
29
|
+
| manual KOL lists and packs | `GET /2/tweets/search/recent` with `from:` handles, 20 per query | every 5 min | 15 min |
|
|
30
|
+
| importing your lists | `GET /2/users/:id/owned_lists` + `GET /2/lists/:id/members` | only when you press `X` on the KOL screen or run `dexterm kol import-x` | – |
|
|
31
|
+
| who you are | `GET /2/users/me` | once at login | – |
|
|
32
|
+
|
|
33
|
+
Never: a filtered stream (economically unbounded), cashtag firehoses, search for every coin on the board, x.com pages, third-party mirrors. `⏎` on a post opens its URL in your browser; dexterm itself never fetches it.
|
|
34
|
+
|
|
35
|
+
Every response goes through the rate limiter (one bucket for X, and every `x-rate-limit-*` header updates a per-endpoint window) and the health registry; a `429` pauses reads until X's reset time and the header shows `x-stream ◐ rate limited 5m`. Posts then flow through the social layer exactly like news and on-chain rows: near-duplicates collapse, account bursts are marked spam, cashtag squats are hidden, instruction-like posts are withheld from the model and flagged `INJ` for you.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-login-with-x-what-you-set-up-once
|
|
3
|
+
title: Login with X › What you set up, once
|
|
4
|
+
kind: docs
|
|
5
|
+
page: login-with-x
|
|
6
|
+
page_title: Login with X
|
|
7
|
+
heading: What you set up, once
|
|
8
|
+
anchor: what-you-set-up-once
|
|
9
|
+
url: https://dexterm.xyz/docs/login-with-x#what-you-set-up-once
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- login-with-x
|
|
13
|
+
- set
|
|
14
|
+
- once
|
|
15
|
+
- login
|
|
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/login-with-x.md
|
|
23
|
+
date: 2026-10-16
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
1. **An X developer account** at developer.x.com (https://developer.x.com) (log in with the X account you want to read as).
|
|
27
|
+
2. **A Project with an App** of type **Native App** (a *public* client: PKCE only, no client secret ever exists, so nothing secret ships with dexterm).
|
|
28
|
+
3. In the app's **User authentication settings**: OAuth 2.0 on, type *Native App*, callback URL **exactly** `http://127.0.0.1:41287/callback` (X requires `127.0.0.1`, not `localhost`, and an exact match), any website URL, and a name/description for the consent screen.
|
|
29
|
+
4. Copy the app's **Client ID** and store it (prompted on your terminal; never on the command line):
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
$ dexterm x set-client-id # paste the Client ID when prompted
|
|
33
|
+
$ dexterm x login # opens your browser on x.com; approve; the tab says "linked"
|
|
34
|
+
$ dexterm x status # @handle, scopes, token age, file modes
|
|
35
|
+
$ dexterm x logout # revokes both tokens at X and deletes the local record
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`dexterm doctor` has a **Login with X** line that tells you which of these is missing.
|
|
39
|
+
|
|
40
|
+
Scopes requested: `tweet.read users.read list.read offline.access`. Nothing with `write` or `dm` is ever requested, and the app refuses to build an authorize URL with such a scope.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-login-with-x-where-the-tokens-live
|
|
3
|
+
title: Login with X › Where the tokens live
|
|
4
|
+
kind: docs
|
|
5
|
+
page: login-with-x
|
|
6
|
+
page_title: Login with X
|
|
7
|
+
heading: Where the tokens live
|
|
8
|
+
anchor: where-the-tokens-live
|
|
9
|
+
url: https://dexterm.xyz/docs/login-with-x#where-the-tokens-live
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- login-with-x
|
|
13
|
+
- where
|
|
14
|
+
- tokens
|
|
15
|
+
- live
|
|
16
|
+
- login
|
|
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/login-with-x.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
`~/.dexterm/x/tokens.json` (mode `600`, directory `700`; `DEXTERM_HOME` moves it) next to `client-id`. The access token lasts two hours and is refreshed with the refresh token when needed; X may rotate the refresh token, so the record is rewritten. Tokens are never printed, never written to any log or recording, never put on a command line, and never part of what the analyst sees (the analyst gets firewalled post text inside `<untrusted>` blocks, nothing else). If X answers `401`, the header says `login revoked or expired at X · dexterm x login` and nothing is read until you log in again. You can also revoke at `x.com/settings/connected_apps`.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-login-with-x
|
|
3
|
+
title: Login with X
|
|
4
|
+
kind: docs
|
|
5
|
+
page: login-with-x
|
|
6
|
+
page_title: Login with X
|
|
7
|
+
url: https://dexterm.xyz/docs/login-with-x
|
|
8
|
+
tags:
|
|
9
|
+
- docs
|
|
10
|
+
- login-with-x
|
|
11
|
+
- login
|
|
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/login-with-x.md
|
|
19
|
+
date: 2026-10-16
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
Read X posts in the SOCIAL panel and on the trending board with your own X app and your own login; what to set up, what the free and paid API tiers allow, and what dexterm never does.
|
|
23
|
+
|
|
24
|
+
dexterm can read X (Twitter) posts about the open coin and from the people you follow as KOLs. It does this **only through your own X developer app and your own X login** (OAuth 2.0 with PKCE, user context). There is no shared key, no dexterm account in the loop, no scraping, and dexterm never posts, likes, follows or reads DMs. Every tweet passes the same prompt firewall (https://dexterm.xyz/docs/analyst) as every other untrusted text before it is stored, shown or summarised.
|
|
25
|
+
|
|
26
|
+
Without a login nothing breaks: the trending board runs on the keyless venues, the SOCIAL panel shows on-chain rows and news, and the header says `x-stream ○ logged out`.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-paper-trading-a-live-ticket
|
|
3
|
+
title: Paper trading, live trading and the safety model › Live trading (devnet first) › A LIVE ticket
|
|
4
|
+
kind: docs
|
|
5
|
+
page: paper-trading
|
|
6
|
+
page_title: Paper trading, live trading and the safety model
|
|
7
|
+
heading: A LIVE ticket
|
|
8
|
+
anchor: a-live-ticket
|
|
9
|
+
url: https://dexterm.xyz/docs/paper-trading#a-live-ticket
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- paper-trading
|
|
13
|
+
- live
|
|
14
|
+
- ticket
|
|
15
|
+
- trading
|
|
16
|
+
- devnet
|
|
17
|
+
- first
|
|
18
|
+
- paper
|
|
19
|
+
- safety
|
|
20
|
+
- model
|
|
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/paper-trading.md
|
|
28
|
+
date: 2026-10-16
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
`L` on a ticket flips it LIVE when a wallet is linked and the signer is alive (otherwise the ticket says why and stays PAPER). The header shows `◉ LIVE · DEVNET`, or `⚠ LIVE · MAINNET — REAL FUNDS` in red with the caps. `⏎` asks the signer for a **PLAN**:
|
|
32
|
+
|
|
33
|
+
1. **Quote** from Jupiter, bound to your order: the input and output mints, the mode and the exact input amount must match or the plan is refused (`quote-mismatch`).
|
|
34
|
+
2. **Build** the unsigned transaction; **decode** it with dexterm's own wire decoder (legacy and v0, lookup tables included).
|
|
35
|
+
3. **Policy**: every top-level instruction must fit the shape of a Jupiter swap: exactly one route-family instruction (by Anchor discriminator), token operations limited to SyncNative, InitializeAccount for your wallet and CloseAccount back to your wallet, a System transfer only into your own wrapped-SOL account that is synced and closed in the same transaction, associated-token creation only for your wallet. Transfers, burns, approvals, authority changes, direct DEX calls and unknown programs are refused by name.
|
|
36
|
+
4. **Binding**: the route's `in_amount`, `quoted_out_amount` and `slippage_bps` must equal the quote; the platform fee must be zero with the "none" sentinel account (dexterm takes no fee); the transfer authority must be your wallet; the source and destination must be your own associated token accounts for the two mints.
|
|
37
|
+
5. **Simulation** against the RPC, with your wallet **and your token accounts** in the requested post-state: the SOL leaving your wallet must not exceed the plan plus a fee allowance nor the SOL cap; a buy may not decrease any of your token balances; a sell may spend only the order mint's account and only up to the order amount (an address a lookup table loads counts as part of the transaction). If the balances cannot be read, the plan is refused rather than guessed.
|
|
38
|
+
6. **Price**: the SOL leg times the signer's own SOL/USD, never Jupiter's `swapUsdValue`; on mainnet an unknown or $0 price refuses.
|
|
39
|
+
|
|
40
|
+
The PLAN screen lists what will be signed instruction by instruction, what you pay and receive, the minimum received, the impact as a percent, the fee including any priority fee, the route, the simulation result, the SOL/USD price and its sources, the policy verdict and the caps verdict ("will be refused: …" when it would be).
|
|
41
|
+
|
|
42
|
+
`Y` (or `⏎`) is the keypress gate. The signer re-checks the caps, **reserves** the USD against the daily ledger (atomically, so two trades cannot both pass), opens the sign page, and hands the bytes to Phantom. What comes back must be the **same message** with a valid Ed25519 signature by the linked wallet; the only tolerated difference is a Lighthouse assertion tail appended by Phantom. The signed bytes are decoded, policy-checked and bound again, **re-simulated** with fresh token balances, and only then submitted. A transport error after the send keeps the charge and shows the signature with "do not resend"; a definite rejection before broadcast refunds. Plans are single-use and expire after 90 s.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-paper-trading-before-you-press-size-vs-caps
|
|
3
|
+
title: Paper trading, live trading and the safety model › Live trading (devnet first) › Before you press ⏎: size vs caps
|
|
4
|
+
kind: docs
|
|
5
|
+
page: paper-trading
|
|
6
|
+
page_title: Paper trading, live trading and the safety model
|
|
7
|
+
heading: Before you press ⏎: size vs caps
|
|
8
|
+
anchor: before-you-press-size-vs-caps
|
|
9
|
+
url: https://dexterm.xyz/docs/paper-trading#before-you-press-size-vs-caps
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- paper-trading
|
|
13
|
+
- before
|
|
14
|
+
- press
|
|
15
|
+
- size
|
|
16
|
+
- caps
|
|
17
|
+
- live
|
|
18
|
+
- trading
|
|
19
|
+
- devnet
|
|
20
|
+
- first
|
|
21
|
+
- paper
|
|
22
|
+
- safety
|
|
23
|
+
- model
|
|
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/paper-trading.md
|
|
31
|
+
date: 2026-10-16
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
Since 2026-10-12 (`task-1368`) a LIVE buy ticket prices your size **at the signer's own SOL/USD** (the price its caps are enforced with) while you type, and shows it against the per-trade cap and what is left of the daily cap: `0.04 SOL ≈ $4.32 at SOL $108 · cap $5/trade · $20 left of $20 today`. When the size is over, the line turns red before you build anything: `0.05 SOL = $5.40 > $5 cap: use ≤ 0.043 SOL (f fits it; fees + token-account rent counted)`. `f` sets that size. The fit is the cap divided by the price minus 0.0025 SOL, rounded down to three decimals: the signer prices the *larger* of your planned SOL leg and the SOL the simulation actually moves out of the wallet, and a first buy of a token adds a token-account rent (0.00204 SOL) plus the fees on top of the size, so a size that is exactly the cap in USD would be refused at precheck. The daily remainder binds when it is smaller than the per-trade cap; with no SOL/USD from the signer the line says `$?` and the signer will refuse an unpriced trade on mainnet. The ticket's verdict is a preview; the signer still decides at precheck and again at confirm.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-paper-trading-devnet-signer-mainnet-token
|
|
3
|
+
title: Paper trading, live trading and the safety model › Live trading (devnet first) › Devnet signer, mainnet token
|
|
4
|
+
kind: docs
|
|
5
|
+
page: paper-trading
|
|
6
|
+
page_title: Paper trading, live trading and the safety model
|
|
7
|
+
heading: Devnet signer, mainnet token
|
|
8
|
+
anchor: devnet-signer-mainnet-token
|
|
9
|
+
url: https://dexterm.xyz/docs/paper-trading#devnet-signer-mainnet-token
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- paper-trading
|
|
13
|
+
- devnet
|
|
14
|
+
- signer
|
|
15
|
+
- mainnet
|
|
16
|
+
- token
|
|
17
|
+
- live
|
|
18
|
+
- trading
|
|
19
|
+
- first
|
|
20
|
+
- paper
|
|
21
|
+
- safety
|
|
22
|
+
- model
|
|
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/paper-trading.md
|
|
30
|
+
date: 2026-10-16
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
Jupiter has no devnet. A Jupiter route is built on **mainnet state** (its accounts, address-lookup tables and blockhash), so a devnet signer can never simulate or fill a swap of a real token: the simulation fails with an RPC error such as `invalid transaction: Transaction loads an address table account that doesn't exist`, and the caps refuse it (`simulation-failed`). The ticket now says this **before** you press ⏎ on any token while the signer is on devnet (`DEVNET cannot fill mainnet tokens: paper trade (L) or restart with --mainnet (real funds, caps $5/$20)`), and when a simulation does fail the PLAN shows the **full** RPC error over several lines (it used to be cut to `invalid transaction: Tr…`) with a plain-English hint when the pattern is this mismatch; the signer also writes the full error to the app log. Your two options are exactly those: paper trade the token with `L`, or run `dexterm --mainnet` with a funded mainnet wallet inside the caps (next section). The devnet signing path itself is proven by the probe, which is built for devnet on purpose.
|
|
34
|
+
|
|
35
|
+
On **devnet** a Jupiter swap is refused at the caps step (`mainnet-not-enabled`): Jupiter has no devnet, so a real swap is a mainnet action. The signing path is proven on devnet instead by **`dexterm wallet probe`** (or `/wallet probe`): a transaction dexterm builds itself that wraps 0.001 SOL into your own wrapped-SOL account and closes it back, fees only, through exactly the same keypress → Phantom → verify → re-simulate → submit → confirm path, with its own policy (no route allowed) and never on mainnet.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-paper-trading-jupiter-rate-limits
|
|
3
|
+
title: Paper trading, live trading and the safety model › Live trading (devnet first) › Jupiter rate limits
|
|
4
|
+
kind: docs
|
|
5
|
+
page: paper-trading
|
|
6
|
+
page_title: Paper trading, live trading and the safety model
|
|
7
|
+
heading: Jupiter rate limits
|
|
8
|
+
anchor: jupiter-rate-limits
|
|
9
|
+
url: https://dexterm.xyz/docs/paper-trading#jupiter-rate-limits
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- paper-trading
|
|
13
|
+
- jupiter
|
|
14
|
+
- rate
|
|
15
|
+
- limits
|
|
16
|
+
- live
|
|
17
|
+
- trading
|
|
18
|
+
- devnet
|
|
19
|
+
- first
|
|
20
|
+
- paper
|
|
21
|
+
- safety
|
|
22
|
+
- model
|
|
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/paper-trading.md
|
|
30
|
+
date: 2026-10-16
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
Jupiter's keyless API allows about five requests per ten seconds per IP, answers `429` with no `Retry-After` but with a reset time, and its alternate host (`lite-api.jup.ag`) can answer `503` (both recorded on 2026-10-12 and kept as fixtures). A limit used to kill the plan (`build-failed: HTTP 429`) and park the preview on "fetching…" for half a minute. Now every keyless Jupiter call on the trade path is retried on the **other host** after the server's own reset (or `Retry-After`, with a jittered backoff), at most three attempts inside ten seconds; a `5xx` or a dropped connection alternates the same way; the LIVE preview, the signer's re-quote and the build go through the signer's **one** rate limiter and a quote fetched for the preview is reused by the build a moment later (two calls, not three). When the budget is spent, or the data layer's health gate is cooling the source down after two 429s in a minute, the ticket **keeps the plan**: it shows `Jupiter is rate limiting this IP (429 from api.jup.ag), retrying in Ns`, retries by itself when the wait ends, `r` retries now and `esc` cancels. Nothing is built or signed while it waits.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-paper-trading-letting-an-agent-paper-trade-experimental
|
|
3
|
+
title: Paper trading, live trading and the safety model › Letting an agent paper trade (experimental)
|
|
4
|
+
kind: docs
|
|
5
|
+
page: paper-trading
|
|
6
|
+
page_title: Paper trading, live trading and the safety model
|
|
7
|
+
heading: Letting an agent paper trade (experimental)
|
|
8
|
+
anchor: letting-an-agent-paper-trade-experimental
|
|
9
|
+
url: https://dexterm.xyz/docs/paper-trading#letting-an-agent-paper-trade-experimental
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- paper-trading
|
|
13
|
+
- letting
|
|
14
|
+
- agent
|
|
15
|
+
- paper
|
|
16
|
+
- trade
|
|
17
|
+
- experimental
|
|
18
|
+
- trading
|
|
19
|
+
- live
|
|
20
|
+
- safety
|
|
21
|
+
- model
|
|
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/paper-trading.md
|
|
29
|
+
date: 2026-10-16
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
If you want to, you can let an agent connected over `dexterm mcp` run the whole PAPER loop (open, size, confirm and close) inside a **trading mandate** you armed, by starting `dexterm --spectate-mcp --agent-paper <mandate-id>`. It is paper only. The agent can never sign, send a real transaction, touch keys or raise a cap, a size over your caps is refused, and you can pause, take over or stop it at any time. See Agent paper trading (https://dexterm.xyz/docs/agents#agent-paper-trading). It is experimental and off by default, and simulated figures are not a result.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-paper-trading-link-a-wallet
|
|
3
|
+
title: Paper trading, live trading and the safety model › Live trading (devnet first) › Link a wallet
|
|
4
|
+
kind: docs
|
|
5
|
+
page: paper-trading
|
|
6
|
+
page_title: Paper trading, live trading and the safety model
|
|
7
|
+
heading: Link a wallet
|
|
8
|
+
anchor: link-a-wallet
|
|
9
|
+
url: https://dexterm.xyz/docs/paper-trading#link-a-wallet
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- paper-trading
|
|
13
|
+
- link
|
|
14
|
+
- wallet
|
|
15
|
+
- live
|
|
16
|
+
- trading
|
|
17
|
+
- devnet
|
|
18
|
+
- first
|
|
19
|
+
- paper
|
|
20
|
+
- safety
|
|
21
|
+
- model
|
|
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/paper-trading.md
|
|
29
|
+
date: 2026-10-16
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
`dexterm wallet link` (or `/wallet link` typed on the screener's `/` line or in the chat box) starts a one-shot server on `127.0.0.1:41291` (a fixed loopback port since `task-1368`; a random one only if it is busy, and the page then says so) with a single-use token, and opens your browser to it. The page asks Phantom to **connect** and **sign a message** (a dexterm nonce): no transaction, no approval of funds. The port is fixed because Phantom remembers which **origins** it trusts: link and every later sign page share `http://127.0.0.1:41291`, so after the first Connect prompt Phantom connects silently. dexterm verifies the Ed25519 proof and stores **only your public key** in `~/.dexterm/wallet-link.json`. `dexterm wallet status`, `unlink`, `/wallet`, `/wallet unlink` show or remove it. No private key, seed or password ever reaches dexterm; it has no code that could hold one.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-paper-trading-live-trading-devnet-first
|
|
3
|
+
title: Paper trading, live trading and the safety model › Live trading (devnet first)
|
|
4
|
+
kind: docs
|
|
5
|
+
page: paper-trading
|
|
6
|
+
page_title: Paper trading, live trading and the safety model
|
|
7
|
+
heading: Live trading (devnet first)
|
|
8
|
+
anchor: live-trading-devnet-first
|
|
9
|
+
url: https://dexterm.xyz/docs/paper-trading#live-trading-devnet-first
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- paper-trading
|
|
13
|
+
- live
|
|
14
|
+
- trading
|
|
15
|
+
- devnet
|
|
16
|
+
- first
|
|
17
|
+
- paper
|
|
18
|
+
- safety
|
|
19
|
+
- model
|
|
20
|
+
confidence: high
|
|
21
|
+
owner: maintainers
|
|
22
|
+
origin: docs-generated
|
|
23
|
+
reviewed_by: generated@2026-10-16
|
|
24
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
25
|
+
sources:
|
|
26
|
+
- site/content/docs/paper-trading.md
|
|
27
|
+
date: 2026-10-16
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
**Status: in progress.** The code is on main and verified against fakes, a hand-built attack suite and a real recorded Jupiter transaction; the one thing not yet observed is a transaction signed by the real Phantom extension on devnet, which the maintainers' probe run will settle. Nothing here has touched mainnet.
|