dexterm-cli 0.1.2 → 0.1.4
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/agents/src/bus.js +37 -1
- package/dist/packages/agents/src/follow.js +105 -0
- package/dist/packages/agents/src/index.js +5 -0
- package/dist/packages/agents/src/spectator-server.js +153 -0
- package/dist/packages/agents/src/spectator.js +212 -0
- package/dist/packages/cli/assets/claude/analyst-system.md +7 -1
- package/dist/packages/cli/src/agent-cmd.js +71 -7
- package/dist/packages/cli/src/agent-spectator.js +37 -0
- package/dist/packages/cli/src/alerts/format.js +25 -0
- package/dist/packages/cli/src/app-help-gen.js +365 -0
- package/dist/packages/cli/src/docs-kb-gen.js +228 -0
- package/dist/packages/cli/src/doctor.js +28 -12
- package/dist/packages/cli/src/follow-cmd.js +107 -1
- package/dist/packages/cli/src/help-cmd.js +48 -0
- 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/index.js +64 -3
- package/dist/packages/cli/src/live/screens/token-live.js +24 -0
- package/dist/packages/cli/src/live/signals.js +109 -0
- package/dist/packages/cli/src/live/token.js +38 -1
- package/dist/packages/cli/src/live/trade.js +24 -1
- package/dist/packages/cli/src/main.js +495 -11
- package/dist/packages/cli/src/mcp-cmd.js +2 -7
- package/dist/packages/cli/src/mcp-follow.js +225 -0
- package/dist/packages/cli/src/pnl-app.js +221 -0
- package/dist/packages/cli/src/pnl-card.js +615 -0
- package/dist/packages/cli/src/record-cmd.js +455 -0
- package/dist/packages/cli/src/rules.js +50 -2
- package/dist/packages/cli/src/screens/follows.js +91 -2
- package/dist/packages/cli/src/screens/overlay.js +3 -0
- package/dist/packages/cli/src/screens/positions.js +1 -1
- package/dist/packages/cli/src/screens/rules.js +1 -1
- package/dist/packages/cli/src/spectate-cmd.js +115 -0
- package/dist/packages/cli/src/state.js +1 -1
- package/dist/packages/cli/src/version.js +1 -1
- package/dist/packages/cli/src/voice-cmd.js +86 -11
- package/dist/packages/cli/src/voice-hud.js +1 -1
- package/dist/packages/cli/src/x-cmd.js +11 -5
- package/dist/packages/custom/src/rules.js +2 -1
- package/dist/packages/data/src/analyst-actions.js +130 -3
- package/dist/packages/data/src/fast-lane.js +16 -2
- package/dist/packages/data/src/index.js +1 -0
- package/dist/packages/data/src/intel/live-signals.js +185 -0
- package/dist/packages/data/src/trade/copy/index.js +1 -1
- package/dist/packages/data/src/trade/copy/stats.js +36 -2
- package/dist/packages/data/src/trade/copy/tracker.js +3 -2
- package/dist/packages/mcp/assets/kb/app-help/app-help-command.md +35 -0
- package/dist/packages/mcp/assets/kb/app-help/ask-the-analyst.md +43 -0
- package/dist/packages/mcp/assets/kb/app-help/backtest.md +33 -0
- package/dist/packages/mcp/assets/kb/app-help/bubble-map.md +35 -0
- package/dist/packages/mcp/assets/kb/app-help/calm-mode.md +31 -0
- package/dist/packages/mcp/assets/kb/app-help/change-voice-speed.md +31 -0
- package/dist/packages/mcp/assets/kb/app-help/change-voice.md +30 -0
- package/dist/packages/mcp/assets/kb/app-help/chart-popup-selftest.md +32 -0
- package/dist/packages/mcp/assets/kb/app-help/coin-images.md +29 -0
- package/dist/packages/mcp/assets/kb/app-help/configure-rpc-key.md +28 -0
- package/dist/packages/mcp/assets/kb/app-help/connect-an-agent-registry.md +35 -0
- package/dist/packages/mcp/assets/kb/app-help/connect-an-agent.md +39 -0
- package/dist/packages/mcp/assets/kb/app-help/custom-keymap.md +32 -0
- package/dist/packages/mcp/assets/kb/app-help/edit-kb-or-skill.md +36 -0
- package/dist/packages/mcp/assets/kb/app-help/edit-rules.md +34 -0
- package/dist/packages/mcp/assets/kb/app-help/export-a-view.md +36 -0
- package/dist/packages/mcp/assets/kb/app-help/follow-a-wallet.md +33 -0
- package/dist/packages/mcp/assets/kb/app-help/getting-started.md +37 -0
- package/dist/packages/mcp/assets/kb/app-help/kol-lists.md +34 -0
- package/dist/packages/mcp/assets/kb/app-help/larp-check.md +36 -0
- package/dist/packages/mcp/assets/kb/app-help/link-a-wallet.md +41 -0
- package/dist/packages/mcp/assets/kb/app-help/login-with-x.md +33 -0
- package/dist/packages/mcp/assets/kb/app-help/narrative-board.md +32 -0
- package/dist/packages/mcp/assets/kb/app-help/open-a-coin.md +43 -0
- package/dist/packages/mcp/assets/kb/app-help/open-chart-popup.md +33 -0
- package/dist/packages/mcp/assets/kb/app-help/order-plans.md +33 -0
- package/dist/packages/mcp/assets/kb/app-help/paper-trade.md +36 -0
- package/dist/packages/mcp/assets/kb/app-help/price-or-marketcap.md +38 -0
- package/dist/packages/mcp/assets/kb/app-help/record-headless.md +34 -0
- package/dist/packages/mcp/assets/kb/app-help/recorder-history.md +39 -0
- package/dist/packages/mcp/assets/kb/app-help/rug-check.md +39 -0
- package/dist/packages/mcp/assets/kb/app-help/run-doctor.md +32 -0
- package/dist/packages/mcp/assets/kb/app-help/scan-mode.md +37 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-analyst.md +181 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-kol.md +190 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-newpairs.md +181 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-positions.md +180 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-screener.md +199 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-token.md +240 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-trending.md +192 -0
- package/dist/packages/mcp/assets/kb/app-help/screen-watchlist.md +181 -0
- package/dist/packages/mcp/assets/kb/app-help/set-a-filter.md +36 -0
- package/dist/packages/mcp/assets/kb/app-help/setup-neural-voice.md +36 -0
- package/dist/packages/mcp/assets/kb/app-help/share-packs.md +34 -0
- package/dist/packages/mcp/assets/kb/app-help/sort-the-screener.md +34 -0
- package/dist/packages/mcp/assets/kb/app-help/spectate-an-agent.md +39 -0
- package/dist/packages/mcp/assets/kb/app-help/standing-mandates.md +33 -0
- package/dist/packages/mcp/assets/kb/app-help/switch-theme.md +42 -0
- package/dist/packages/mcp/assets/kb/app-help/turn-on-alerts.md +37 -0
- package/dist/packages/mcp/assets/kb/app-help/update-dexterm.md +30 -0
- package/dist/packages/mcp/assets/kb/app-help/use-presets.md +42 -0
- package/dist/packages/mcp/assets/kb/app-help/use-voice-mode.md +36 -0
- package/dist/packages/mcp/assets/kb/app-help/watch-a-coin.md +34 -0
- package/dist/packages/mcp/assets/kb/app-help/watch-headless.md +35 -0
- package/dist/packages/mcp/assets/kb/app-help/what-dexterm-shows-agents.md +31 -0
- package/dist/packages/mcp/assets/kb/app-help/workspaces.md +38 -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-install-in-one-command.md +49 -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-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 +45 -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 +36 -0
- package/dist/packages/mcp/assets/kb/docs/docs-configuration-the-analyst-s-launch.md +27 -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 +71 -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 +55 -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-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-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 +36 -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 +258 -0
- package/dist/packages/mcp/src/firewall.js +2 -2
- package/dist/packages/mcp/src/index.js +5 -1
- package/dist/packages/mcp/src/server.js +129 -4
- package/dist/packages/mcp/src/spectator-sink.js +144 -0
- package/dist/packages/packs/src/index.js +2 -0
- package/dist/packages/packs/src/skill-care.js +206 -0
- package/dist/packages/popup/src/pages/spectator.css +45 -0
- package/dist/packages/popup/src/pages/spectator.html +25 -0
- package/dist/packages/popup/src/pages/spectator.js +74 -0
- package/dist/packages/popup/src/selftest.js +19 -0
- package/dist/packages/popup/src/server.js +7 -1
- package/dist/packages/tui/src/keymap.js +10 -0
- package/dist/packages/voice/src/controller.js +42 -1
- package/dist/packages/voice/src/doctor.js +25 -8
- package/dist/packages/voice/src/engines.js +8 -1
- package/dist/packages/voice/src/index.js +3 -1
- package/dist/packages/voice/src/speakable.js +111 -0
- package/dist/packages/voice/src/stt/whisper.js +4 -2
- package/dist/packages/voice/src/tts/piper-setup.js +229 -0
- package/dist/packages/voice/src/tts/piper.js +309 -66
- package/dist/packages/voice/src/tts/say.js +3 -2
- package/dist/packages/voice/src/tts/voices.js +8 -5
- package/package.json +6 -5
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-configuration-rules-engine
|
|
3
|
+
title: Configuration and files on disk › Rules engine
|
|
4
|
+
kind: docs
|
|
5
|
+
page: configuration
|
|
6
|
+
page_title: Configuration and files on disk
|
|
7
|
+
heading: Rules engine
|
|
8
|
+
anchor: rules-engine
|
|
9
|
+
url: https://dexterm.xyz/docs/configuration#rules-engine
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- configuration
|
|
13
|
+
- rules
|
|
14
|
+
- engine
|
|
15
|
+
- files
|
|
16
|
+
- disk
|
|
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/configuration.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
A rule is one line: `when <cond> [for <n> ticks | <n>s | <n>m] then <action>+ [cooldown <dur>] [max <n>/h] [scope screener | watchlist | newpairs | positions | mint:<addr>] [window <dur>] [name "<s>"]`. Conditions use the filter grammar (https://dexterm.xyz/docs/cli#filter-grammar)'s fields and tags with `and` / `or` / `not` and parentheses, plus two derived signals over a per-coin history the engine keeps itself: `<field>.velocity` (current ÷ the mean of the earlier samples in the window) and `<field>.delta` (current − oldest in the window); both are false until two earlier samples exist, so a rule never fires on a coin's first paint. Actions: `alert(level, "text")`, `ticket(buy | sell, size ≤ 50, sol | usd | pct)`, `ask(skill)`, `popup(chart | token | bubbles | narrative | plans | feeds)`, `tag("label")`, `sound(name)`, `watch`.
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
vol5m.velocity > 3 and cluster < 20 and liq > 25K for 2 ticks then alert(up, "surge") ask(token-dossier) popup(chart) cooldown 15m max 6/h name "surge-clean"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
- The open token's live holder and rug signals (https://dexterm.xyz/docs/screens#live-holder-and-rug-signals) are rule fields too: `top10`, `dev`, `bundled`, `snipers`, `fresh`, `cluster`, `lplocked`, `bonding`, `mintable`, `freezable`, with `.delta` and `.velocity` (`dexterm rules fields` lists them all).
|
|
34
|
+
- The text is parsed, never evaluated as code. Every rule has a cooldown (default 10 m) and a max per hour (default 12, hard cap 120), so a bad rule is annoying, not dangerous.
|
|
35
|
+
- Rules can **alert**, annotate your own watchlist (`tag`, `watch`), open the read-only windows and ring the bell, or **propose**. `ticket` and `ask` do not act: each fire becomes a proposal card on the rules screen (status proposal, your keypress required, armed by nobody); acting on it opens the PAPER ticket in its editing phase, where you size and confirm, or asks the analyst. Nothing a rule does reaches an order plan, a mandate, the signer or the gate, and a rule argument named like money (`arm`, `auto`, `confirm`, `execute`, `sign`, `send`) is refused at parse time, in text and in JSON.
|
|
36
|
+
- `ctrl+r` opens the RULES screen: the list with enabled / last fired / source, `i` types a new rule with a live "would match N of M rows right now" dry-run, `tab` the proposals pane, `space` toggles, `d` removes. `dexterm rules list | add "<rule>" | remove | enable | disable <id> | check "<rule>" | dry-run "<rule>" | fields`. Rules live in `config.json`, every change through the journal.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-configuration-the-analyst-s-launch
|
|
3
|
+
title: Configuration and files on disk › The analyst's launch
|
|
4
|
+
kind: docs
|
|
5
|
+
page: configuration
|
|
6
|
+
page_title: Configuration and files on disk
|
|
7
|
+
heading: The analyst's launch
|
|
8
|
+
anchor: the-analyst-s-launch
|
|
9
|
+
url: https://dexterm.xyz/docs/configuration#the-analyst-s-launch
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- configuration
|
|
13
|
+
- analyst
|
|
14
|
+
- launch
|
|
15
|
+
- files
|
|
16
|
+
- disk
|
|
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/configuration.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
For the record, the analyst is spawned as `claude -p` with `--output-format stream-json`, `--tools ''` (no built-in tools), `--strict-mcp-config` pointing at the dexterm server only, `--allowedTools mcp__dexterm__*`, `--permission-mode dontAsk`, `--setting-sources ''` (none of your Claude Code settings or other plugins), the dexterm plugin directory for the skills, the analyst system prompt appended, a JSON schema for structured skills, and `--disallowedTools` for the action tools in scan mode. It cannot read files, run commands or reach any other MCP server from inside dexterm.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-configuration-the-optional-free-rpc-key
|
|
3
|
+
title: Configuration and files on disk › The optional free RPC key
|
|
4
|
+
kind: docs
|
|
5
|
+
page: configuration
|
|
6
|
+
page_title: Configuration and files on disk
|
|
7
|
+
heading: The optional free RPC key
|
|
8
|
+
anchor: the-optional-free-rpc-key
|
|
9
|
+
url: https://dexterm.xyz/docs/configuration#the-optional-free-rpc-key
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- configuration
|
|
13
|
+
- optional
|
|
14
|
+
- free
|
|
15
|
+
- rpc
|
|
16
|
+
- key
|
|
17
|
+
- files
|
|
18
|
+
- disk
|
|
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/configuration.md
|
|
26
|
+
date: 2026-10-16
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Keyless, the holders panel shows the holder count and the top-10 share from Jupiter; the ranked top-20 list with owner wallets needs a free RPC key (a 2-minute signup with no card at Helius, Alchemy, QuickNode or Ankr). Configure one of:
|
|
30
|
+
|
|
31
|
+
```sh
|
|
32
|
+
$ mkdir -p ~/.dexterm && printf %s "<your-key>" > ~/.dexterm/helius.key && chmod 600 ~/.dexterm/helius.key
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```sh any read-only RPC URL; the first wins, extras join the rotation pool
|
|
36
|
+
$ export DEXTERM_RPC_URL="https://<provider>/<path>"
|
|
37
|
+
$ export DEXTERM_RPC_URLS="https://rpc-a/...,https://rpc-b/..."
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Resolution order: `DEXTERM_RPC_URL`, else `~/.dexterm/helius.key`, else the public RPC pool. All configured endpoints rotate by health score; a 429 pauses one endpoint (honouring `Retry-After`) and fails over to the next. Every URL in an error, a `--verbose` line or a `--record` file passes a redactor; a recording that still carries a key refuses to save. `dexterm doctor` reports the provider name only, never the key.
|
|
41
|
+
|
|
42
|
+
> warn: never paste a key into a command line argument, a shell history, a chat or a repository. The file above is the only place dexterm reads it from.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-configuration-themes-and-keymaps
|
|
3
|
+
title: Configuration and files on disk › Themes and keymaps
|
|
4
|
+
kind: docs
|
|
5
|
+
page: configuration
|
|
6
|
+
page_title: Configuration and files on disk
|
|
7
|
+
heading: Themes and keymaps
|
|
8
|
+
anchor: themes-and-keymaps
|
|
9
|
+
url: https://dexterm.xyz/docs/configuration#themes-and-keymaps
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- configuration
|
|
13
|
+
- themes
|
|
14
|
+
- keymaps
|
|
15
|
+
- files
|
|
16
|
+
- disk
|
|
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/configuration.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
`~/.dexterm/themes/<name>.json` is `{ "extends": "cyberspace", "tokens": { "accent": "#ffb02e", … } }`: a built-in base plus hex overrides. At load every value must be a hex colour, ramps exactly four, unknown tokens are refused, and two semantic checks protect you from a shared theme: a **contrast floor** (text on background, muted on panel, the up / down / warn colours) and an **up / down guard** (`up` must read green/cyan and `down` red/pink by hue, both must carry real colour — an HSL saturation floor — and they must sit a minimum perceptual distance apart, so neither an amber pair nor a near-grey pair can make a loss look like a gain). A theme that fails loads as `paper` with a toast naming the token. `config.theme.overrides` is the same for one-off tokens; `dexterm theme list | show | init <name> | check <name>`.
|
|
28
|
+
|
|
29
|
+
`config.keymap` re-binds the app's actions: `"global": { "screen.watchlist": ["3", "W"] }` and `"screens": { "screener": { "preset.next": ["]"] } }`, chords as `"ctrl+w s"`. Refused by name, whatever the file says: assigning `ctrl+c`, `esc`, `enter`, `y` / `Y` or `!` to anything; changing the keys of quit, back, the alert confirm / dismiss, arm, panic or the gate; two actions on one key within one scope; a chord prefix bound on its own; more than four keys per action. Any error keeps the defaults (a half-applied keymap is worse than none) and names the path. `dexterm keymap [screen]` prints the effective keys with overrides marked `·`; the `?` overlay marks them the same way.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-configuration-themes-and-look
|
|
3
|
+
title: Configuration and files on disk › Themes and look
|
|
4
|
+
kind: docs
|
|
5
|
+
page: configuration
|
|
6
|
+
page_title: Configuration and files on disk
|
|
7
|
+
heading: Themes and look
|
|
8
|
+
anchor: themes-and-look
|
|
9
|
+
url: https://dexterm.xyz/docs/configuration#themes-and-look
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- configuration
|
|
13
|
+
- themes
|
|
14
|
+
- look
|
|
15
|
+
- files
|
|
16
|
+
- disk
|
|
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/configuration.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
`--theme cyberspace|midnight|ember|paper` or `t` at runtime. `--intensity off|normal|fever`, `--fps N`, `--no-boot`, `--ascii-rain`, `--tz ZONE` for the header clock (default America/New_York; `local` for the machine zone). Details in the CLI reference (https://dexterm.xyz/docs/cli#flags). User themes join the `t` cycle: see themes and keymaps (https://dexterm.xyz/docs/configuration#themes-and-keymaps).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-configuration-widgets
|
|
3
|
+
title: Configuration and files on disk › Widgets
|
|
4
|
+
kind: docs
|
|
5
|
+
page: configuration
|
|
6
|
+
page_title: Configuration and files on disk
|
|
7
|
+
heading: Widgets
|
|
8
|
+
anchor: widgets
|
|
9
|
+
url: https://dexterm.xyz/docs/configuration#widgets
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- configuration
|
|
13
|
+
- widgets
|
|
14
|
+
- files
|
|
15
|
+
- disk
|
|
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/configuration.md
|
|
23
|
+
date: 2026-10-16
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
A pack widget is an html page the popup host serves in a loopback HUD window, the same window technology as the popup chart (https://dexterm.xyz/docs/popup-chart). It is the only way third-party UI gets into dexterm, and it is small on purpose: a widget can **receive and render**; it cannot fetch, import, run anything in the terminal process, or send anything but close / focus / drag.
|
|
27
|
+
|
|
28
|
+
- `widgets/<name>/widget.json` declares pages and their topics, a subset of `rows · token · narrative · positions · alerts · theme`: the screener's public columns, the open coin, the narrative board, your positions (symbol, size, PnL), the alert log, the theme. Nothing in a view model names a key, a signer, a cap, a mandate or the gate; pair / source ids and provenance internals are not sent.
|
|
29
|
+
- The window is two documents: the host's own wrapper page (it owns the connection to the terminal, the title strip and the close button) and, inside it, the pack page in a sandboxed frame. The pack page runs under a hash-only CSP: the html is served exactly as installed (nothing is substituted into it, there is no nonce), and every inline `<script>` and `<style>` block runs because its sha256 is in the header — only the text you read before enabling the widget. It has no network of its own at all (no fetch, no socket, no remote scripts, styles, images or fonts), no cookies or storage (an opaque origin), no inline handlers, no eval, no runtime script injection where the engine supports Trusted Types, and no way to navigate anywhere: a document may always navigate itself, which a sandbox alone cannot stop, so the wrapper's `frame-src` names the one document the frame may show and the engine refuses any other before a request exists — the wrapper then closes the widget and logs why. Verified in headless Chromium and WebKit. One kind of connection no content-security directive covers — a `<link rel=preconnect>` built at run time makes WebKit open a bare TCP connection to a host and port the page chose — so the SDK, which runs first in the frame, seals the DOM: the insertion methods, every HTML-parsing entry point (the static `Document.parseHTMLUnsafe` included), `adoptNode` / `importNode`, the element-taking setters and WebRTC are locked on the prototypes before any pack script runs, a click on a link that targets another window (and any form submit) is cancelled before the engine can open a connection for it, a MutationObserver closes the widget if a loader element ever appears anyway, and none of it depends on Trusted Types, which the system WebKit of macOS 14 and 15 lacks (verified inside the real native shell on that WebKit, and in headless Chromium and WebKit with Trusted Types stripped, with a raw TCP sink). Widgets open only in the native popup shell (macOS 14 or newer), whose windows are routed through a loopback sink proxy of the host's as a further backstop for named hosts. A page that carries a loader (`<script src>`, `<link>`, a frame, `<meta http-equiv>`, `@import`, or a `__NONCE__` placeholder) is refused at install, again at open and again when the host issues the window's ticket. A frozen `dexterm` object is injected ahead of the pack markup: `dexterm.on(topic, fn)`, `dexterm.theme` (also CSS variables), `dexterm.close()`, `dexterm.log()`; the frame can say only ready / log / close back, and the terminal's socket accepts nothing but the generic events from a widget.
|
|
30
|
+
- Consent is yours and re-checked: a widget installs disabled; `dexterm pack widget <pack> <name> --enable` after you read the page; at every open the app re-hashes the installed pack and refuses a page edited since. A workspace can list a widget popup (`{ "kind": "widget", "widget": "<pack>/<name>" }`) but cannot enable it.
|
|
31
|
+
- **Beta.** One example widget (`packs/example-widgets`, the MOVERS tiles), a popup window only. The in-process plugin sandbox from the design (terminal columns and panels, host-mediated fetch, per-plugin storage) is not built. API and limits: `packages/popup/WIDGETS.md` in the repo.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-configuration-workspaces
|
|
3
|
+
title: Configuration and files on disk › Workspaces
|
|
4
|
+
kind: docs
|
|
5
|
+
page: configuration
|
|
6
|
+
page_title: Configuration and files on disk
|
|
7
|
+
heading: Workspaces
|
|
8
|
+
anchor: workspaces
|
|
9
|
+
url: https://dexterm.xyz/docs/configuration#workspaces
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- configuration
|
|
13
|
+
- workspaces
|
|
14
|
+
- files
|
|
15
|
+
- disk
|
|
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/configuration.md
|
|
23
|
+
date: 2026-10-16
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
A workspace is one JSON file, `~/.dexterm/workspaces/<name>.json`: the screen to land on, the theme and intensity, the screener preset / filter / sort, the token-screen panel toggles, optional per-screen pane trees for the layout solver (weights, fixed widths, priorities, what collapses at which width), and the HUD popups to open together. The shipped `default` reproduces the five screens exactly; `morning-hud` is "show me everything": the narrative board, the feeds, order plans and the chart of the selected coin as windows beside the terminal.
|
|
27
|
+
|
|
28
|
+
- In the app: `ctrl+w` then `w` list · `n` / `N` next / previous · `s` save the current layout under a typed name · `m` the morning HUD · `o` open the active workspace's popups · `d` default · `1`–`9` pick a slot. `--workspace <name>` starts in one. The footer shows the active workspace.
|
|
29
|
+
- On the command line: `dexterm workspace list | show <name> | remove <name> | init` (`init` writes `default` as an editable file with the shipped trees).
|
|
30
|
+
- A switch is a UI action and nothing more. It can navigate, re-theme and open the same read-only windows the keys open; it cannot open a ticket, confirm, arm or sign, and a workspace file has no field for any of that (the schema refuses unknown keys by name). Jarvis proposes workspace switches through the same proposal card as everything else.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-configuration
|
|
3
|
+
title: Configuration and files on disk
|
|
4
|
+
kind: docs
|
|
5
|
+
page: configuration
|
|
6
|
+
page_title: Configuration and files on disk
|
|
7
|
+
url: https://dexterm.xyz/docs/configuration
|
|
8
|
+
tags:
|
|
9
|
+
- docs
|
|
10
|
+
- configuration
|
|
11
|
+
- files
|
|
12
|
+
- disk
|
|
13
|
+
confidence: high
|
|
14
|
+
owner: maintainers
|
|
15
|
+
origin: docs-generated
|
|
16
|
+
reviewed_by: generated@2026-10-16
|
|
17
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
18
|
+
sources:
|
|
19
|
+
- site/content/docs/configuration.md
|
|
20
|
+
date: 2026-10-16
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
Environment variables, the files dexterm writes, the optional free RPC key, and how to delete everything.
|
|
24
|
+
|
|
25
|
+
dexterm has no config server, no account and no telemetry. Everything it remembers is in a handful of local files you can read and delete.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-copy-trading-stage-1-follow-a-wallet-see-what-it-does
|
|
3
|
+
title: Copy trading (staged, personal, paper by default) › Stage 1: follow a wallet, see what it does
|
|
4
|
+
kind: docs
|
|
5
|
+
page: copy-trading
|
|
6
|
+
page_title: Copy trading (staged, personal, paper by default)
|
|
7
|
+
heading: Stage 1: follow a wallet, see what it does
|
|
8
|
+
anchor: stage-1-follow-a-wallet-see-what-it-does
|
|
9
|
+
url: https://dexterm.xyz/docs/copy-trading#stage-1-follow-a-wallet-see-what-it-does
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- copy-trading
|
|
13
|
+
- stage
|
|
14
|
+
- follow
|
|
15
|
+
- wallet
|
|
16
|
+
- does
|
|
17
|
+
- copy
|
|
18
|
+
- trading
|
|
19
|
+
- staged
|
|
20
|
+
- personal
|
|
21
|
+
- paper
|
|
22
|
+
- default
|
|
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/copy-trading.md
|
|
30
|
+
date: 2026-10-16
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
Press `U` anywhere for the **FOLLOWED WALLETS** screen, or use the shell:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
dexterm follow add <addr> --name "my label"
|
|
37
|
+
dexterm follow list | stats <addr> | trades <addr> | remove <addr> | purge --yes
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
- **Your list, your labels.** A label is whatever you type, passed through the prompt firewall (an instruction-shaped label is refused, control characters are stripped, 24 characters at most). dexterm never infers who a wallet is, never scrapes X or Telegram to attribute one, and never exports the list. `purge` deletes every follow and label; the file is `~/.dexterm/follows.json` (mode 600).
|
|
41
|
+
- **Decoded swaps.** The tracker reads the wallet's own recent history (Helius `getTransactionsForAddress`, 10 credits a call, newest first, through the data layer's limiter and credit meter) and classifies each transaction from the wallet's own balances: tokens up and SOL down is a **buy**, tokens down and SOL up a **sell**, tokens moved without a SOL leg a **transfer** (an airdrop is flagged as cost 0), tokens and SOL moving the *same* way is **lp-like** (an LP add or removal, never a swap), and two mints in one transaction is a **token-swap** with no SOL split, so nothing unpriceable is priced. Wrapped SOL is never a mint. The POPCAT recording from the wallet-intel spike is the regression case for the lp-like rule: its busiest launch signer *receives* tokens and SOL together.
|
|
42
|
+
- **Numbers with their sample.** Realised PnL is FIFO by token amount over the history fetched, in SOL exactly and in USD at today's rate (the rate is printed). Fees and tips are inside the SOL leg. Win rate is wins over closed positions and stays hidden under n = 10 (the row shows `n<10 (2/4)`). The early-entry score needs the token's launch-window buyer ranks (a bubble-map scan) and shows `—` with the reason otherwise; it has no "reached 3×" filter yet and says so. Every figure carries `all N txs` or `last N txs only · older history not fetched`.
|
|
43
|
+
- **Alerts, not news.** The first look at a wallet backfills history silently. Only transactions that appear *after* that raise an alert, as a toast anywhere in the app and on the screen's ALERTS tape with the lag between the block and the moment dexterm saw it. Keyless, the tracker is honestly **unavailable** and says how to get the free Helius key; a failed poll shows on the row and the next poll retries.
|
|
44
|
+
|
|
45
|
+
- **Hold time.** The median time from first buy to last sell over the wallet's **closed** positions. A position counts only when both of those trades carry a real block time. Otherwise hold time shows `—` with the reason. It appears in `dexterm follow stats` and the detail view.
|
|
46
|
+
- **Buy and sell alerts, pushed if you want.** A new trade by a followed wallet raises the in-app alert as before. If you have enabled a push channel (https://dexterm.xyz/docs/configuration#push-alerts-and-dexterm-watch) (desktop, your own Telegram bot or Discord webhook), the alert is delivered there too, marked buy or sell and "not a recommendation". This happens only while the dexterm terminal is running: `dexterm watch` runs your rules headless but does not follow wallets. Delivery is read-only: an alert cannot open, arm or sign anything.
|
|
47
|
+
- **Per-wallet detail.** `⏎` on a followed wallet opens its detail view: recent decoded trades, positions, realised PnL, win rate with its n, hold time, early-entry score and open positions. Each figure is labelled with its source (Helius history) and data age. `↑`/`↓` scroll, `⏎` or `esc` close.
|
|
48
|
+
|
|
49
|
+
Nothing on this stage trades. A wallet's past fills say nothing about its next one, and the screen says so.
|
|
50
|
+
|
|
51
|
+
`H` on this screen makes a PnL card (https://dexterm.xyz/docs/paper-trading#pnl-cards) for the selected wallet's coins, stamped **TRACKED WALLET** (read-only observation), with the wallet address hidden unless you show it. To mark an open position it looks up the coin's public decimals and price (the same keyless lookup the mirror ticket uses).
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-copy-trading-stage-2-the-one-key-mirror-ticket-a-proposal
|
|
3
|
+
title: Copy trading (staged, personal, paper by default) › Stage 2: the one-key mirror ticket (a proposal)
|
|
4
|
+
kind: docs
|
|
5
|
+
page: copy-trading
|
|
6
|
+
page_title: Copy trading (staged, personal, paper by default)
|
|
7
|
+
heading: Stage 2: the one-key mirror ticket (a proposal)
|
|
8
|
+
anchor: stage-2-the-one-key-mirror-ticket-a-proposal
|
|
9
|
+
url: https://dexterm.xyz/docs/copy-trading#stage-2-the-one-key-mirror-ticket-a-proposal
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- copy-trading
|
|
13
|
+
- stage
|
|
14
|
+
- one-key
|
|
15
|
+
- mirror
|
|
16
|
+
- ticket
|
|
17
|
+
- proposal
|
|
18
|
+
- copy
|
|
19
|
+
- trading
|
|
20
|
+
- staged
|
|
21
|
+
- personal
|
|
22
|
+
- paper
|
|
23
|
+
- default
|
|
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/copy-trading.md
|
|
31
|
+
date: 2026-10-16
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
On a followed wallet, `m` previews a **MIRROR TICKET** for that wallet's latest buy. The preview shows every check and its number:
|
|
35
|
+
|
|
36
|
+
| check | refuses when | why |
|
|
37
|
+
|---|---|---|
|
|
38
|
+
| lag | more than 30 s since the leader's block | you are late |
|
|
39
|
+
| drift | the price is more than 5 % above the leader's fill | you are chasing |
|
|
40
|
+
| liquidity | under $25k | you cannot get out |
|
|
41
|
+
| age | the pair is under 60 s old | launch noise |
|
|
42
|
+
| leader sold | the leader has already sold this mint since the buy | they left |
|
|
43
|
+
| leader dev / leader holds | the leader is linked to the dev cluster, or holds more than 5 % of supply (from a bubble-map scan) | they may be distributing to you |
|
|
44
|
+
|
|
45
|
+
Unknown facts are shown as unknown (`?`), never guessed, except decimals: without them the drift cannot be computed and the mirror is refused until the token is open. The size is `min(your cap, k × the leader's size, 1 % of liquidity)`; the cap is $20 per mirror today (the mandate's per-trade cap applies again at arming). `m` again **proposes**: an order plan, buy now, no ladder, 3 % slippage, expiring in 10 minutes, labelled `copy`, that lands on the `O` screen exactly like a typed or spoken plan. It is inert until you hold `a` to arm it into an armed mandate, or approve it in Phantom; nothing on the follows screen can arm.
|
|
46
|
+
|
|
47
|
+
The same mirror ticket works from a shell, for scripts and replays, with the same checks and the same size rule:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
$ dexterm follow mirror <addr> # preview the latest buy's mirror ticket; writes nothing
|
|
51
|
+
$ dexterm follow mirror <addr> --cap 10 --k 1 # preview with your own cap and size factor
|
|
52
|
+
$ dexterm follow mirror <addr> --propose # write it as an INERT proposed order plan on the O screen
|
|
53
|
+
$ dexterm follow mirror <addr> --json # machine-readable preview
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
A refused mirror prints every failed check and exits non-zero. `--propose` writes a plan with status `proposed` and no mandate. The command has no arm, sign or execute path, so the plan can only be armed in the app through the keypress or Phantom gate. A replay test drives a followed wallet's buy through `--propose` and checks that the plan exists, is not armed and that no execute path was reached. This is the copy-trade mirror ticket of the 0.1.3 release (its first copy-trading step in the release notes): **a proposal only. Nothing arms or fires on its own.**
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-copy-trading-stage-3-capped-auto-mirror-default-off-less
|
|
3
|
+
title: Copy trading (staged, personal, paper by default) › Stage 3: capped auto-mirror (default off, less safe)
|
|
4
|
+
kind: docs
|
|
5
|
+
page: copy-trading
|
|
6
|
+
page_title: Copy trading (staged, personal, paper by default)
|
|
7
|
+
heading: Stage 3: capped auto-mirror (default off, less safe)
|
|
8
|
+
anchor: stage-3-capped-auto-mirror-default-off-less-safe
|
|
9
|
+
url: https://dexterm.xyz/docs/copy-trading#stage-3-capped-auto-mirror-default-off-less-safe
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- copy-trading
|
|
13
|
+
- stage
|
|
14
|
+
- capped
|
|
15
|
+
- auto-mirror
|
|
16
|
+
- default
|
|
17
|
+
- off
|
|
18
|
+
- less
|
|
19
|
+
- safe
|
|
20
|
+
- copy
|
|
21
|
+
- trading
|
|
22
|
+
- staged
|
|
23
|
+
- personal
|
|
24
|
+
- paper
|
|
25
|
+
confidence: high
|
|
26
|
+
owner: maintainers
|
|
27
|
+
origin: docs-generated
|
|
28
|
+
reviewed_by: generated@2026-10-16
|
|
29
|
+
generated_from: dexterm/site content/docs (task-1420)
|
|
30
|
+
sources:
|
|
31
|
+
- site/content/docs/copy-trading.md
|
|
32
|
+
date: 2026-10-16
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
`A` on a followed wallet raises the **AUTO-MIRROR** prompt. Turning it on is a held physical keypress, and it is refused unless the plan engine's own "this is less safe" popup (`G` on the `O` screen, keypress-only, 24 h expiry) is active. That one gesture drafts and arms a **copy mandate** in the plan engine, the signer trust domain: buy-only, `maxTier: hands-free`, with exactly the policy's caps, clamped to the engine's hard ceilings.
|
|
36
|
+
|
|
37
|
+
Every later buy by that wallet then runs the Stage 2 checks and, if they pass, is proposed and armed automatically with the **weakest confirmation tier**. The engine therefore sizes it at **¼ of the per-trade cap** (the same rule a spoken confirmation gets) and re-checks the per-trade, per-coin, total and daily-loss caps, the allow-list and the panic state at arming and on every fill. On top, the policy keeps a per-wallet **daily cap** (the mandate's total), **max open mirrors**, a **cooldown** between mirrors, a **size factor** against the leader, and an **auto-disarm streak**: that many refused or failed mirrors in a row turn it off.
|
|
38
|
+
|
|
39
|
+
What turns it off, always without a gesture: `A` again; the `!` panic key or `dexterm wallet panic`; restoring the keypress gate; the copy mandate expiring or being revoked; the refusal streak; unfollowing the wallet; and **every restart**, after which a copy mandate the engine recovered as armed is revoked on load. Caps can only be changed while it is off, from the shell:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
dexterm follow auto <addr> --per-trade 20 --daily 100 --max-open 3 --cooldown 60 --k 1 --disarm 3
|
|
43
|
+
dexterm follow auto # list policies and their state
|
|
44
|
+
dexterm follow auto <addr> --off
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Ceilings: $100 per trade, $500 per day, 10 open, a 10 s minimum cooldown, k ≤ 2. Every policy change, enable, disable, proposal, arm and refusal is appended to a hash-chained journal at `~/.dexterm/copy.journal`, next to the plans journal.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-copy-trading-what-is-proven-what-is-not
|
|
3
|
+
title: Copy trading (staged, personal, paper by default) › What is proven, what is not
|
|
4
|
+
kind: docs
|
|
5
|
+
page: copy-trading
|
|
6
|
+
page_title: Copy trading (staged, personal, paper by default)
|
|
7
|
+
heading: What is proven, what is not
|
|
8
|
+
anchor: what-is-proven-what-is-not
|
|
9
|
+
url: https://dexterm.xyz/docs/copy-trading#what-is-proven-what-is-not
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- copy-trading
|
|
13
|
+
- proven
|
|
14
|
+
- copy
|
|
15
|
+
- trading
|
|
16
|
+
- staged
|
|
17
|
+
- personal
|
|
18
|
+
- paper
|
|
19
|
+
- default
|
|
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/copy-trading.md
|
|
27
|
+
date: 2026-10-16
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
Proven on fixtures and a fake clock: the decoder on synthetic histories and the three spike recordings; the tracker's backfill-then-alert replay; every mirror refusal and the size rule; the proposal's inertness; the auto path end to end on the paper executor (enable, ¼-size arming, fill, cooldown, max-open, daily cap, the engine's own refusal of a hand-armed extra plan); the kill paths; the restart rule; and a compromised-model suite in which spoken, agent and forged gestures, a spoofed alert, a widened policy and a plan the service did not create all fail to enable, widen or auto-arm anything.
|
|
31
|
+
|
|
32
|
+
Not built or not proven: **mirror-sell** (you close every mirror yourself, so auto-disarm counts refusals and failed fills, not realised losses); an early-entry score with the "reached 3×" filter; a live run against real Helius history on this machine; and any mirror on devnet or mainnet.
|
|
33
|
+
|
|
34
|
+
**Confirmation provenance:** the engine rejects fabricated, copied, modified, cross-engine and reused proof objects. Copy automation receives a private operation scoped to its physically armed mandate; it can create new copy buys, never adopt an existing voice or agent proposal. Automation proofs stay inside the engine. The engine re-checks the less-safe opt-in, mandate lifetime, panic and existing caps. These are in-process checks: the trusted terminal captures physical input; this is not isolation against arbitrary code execution inside that trusted process.
|
|
35
|
+
|
|
36
|
+
Legal posture (flags for counsel, not advice): self-directed only, no custody, no third parties, no fees, no curated leaders, no inferred identities. See legal (https://dexterm.xyz/legal/).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-copy-trading
|
|
3
|
+
title: Copy trading (staged, personal, paper by default)
|
|
4
|
+
kind: docs
|
|
5
|
+
page: copy-trading
|
|
6
|
+
page_title: Copy trading (staged, personal, paper by default)
|
|
7
|
+
url: https://dexterm.xyz/docs/copy-trading
|
|
8
|
+
tags:
|
|
9
|
+
- docs
|
|
10
|
+
- copy-trading
|
|
11
|
+
- copy
|
|
12
|
+
- trading
|
|
13
|
+
- staged
|
|
14
|
+
- personal
|
|
15
|
+
- paper
|
|
16
|
+
- default
|
|
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/copy-trading.md
|
|
24
|
+
date: 2026-10-16
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
Follow a wallet and see its decoded swaps and PnL; turn its buys into a mirror PROPOSAL with one key; or let a capped, keypress-armed auto-mirror propose and arm them for you. Your wallet, your caps, your keys.
|
|
28
|
+
|
|
29
|
+
Copy trading in dexterm is a **personal tool for your own wallet**. You pick the wallets, you set the caps, your own keys sign (or the paper wallet simulates). dexterm never holds funds, never copies for anyone else, never offers pooled or hosted copying, never publishes a leader list, and takes no fee on a mirrored trade. The whole feature is labelled **in progress**: it is on main and tested on fixtures and the task-1286 spike recordings, but no mirror has moved real funds, and the auto tier fires through the paper executor unless the plans fire path is switched to the devnet fast wallet (see the live fire path (https://dexterm.xyz/docs/paper-trading#the-live-fire-path-devnet-the-fast-wallet)).
|
|
30
|
+
|
|
31
|
+
It is built in three stages, each behind the previous one's gate.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-data-sources-cache
|
|
3
|
+
title: Data sources and rate limits › Cache
|
|
4
|
+
kind: docs
|
|
5
|
+
page: data-sources
|
|
6
|
+
page_title: Data sources and rate limits
|
|
7
|
+
heading: Cache
|
|
8
|
+
anchor: cache
|
|
9
|
+
url: https://dexterm.xyz/docs/data-sources#cache
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- data-sources
|
|
13
|
+
- cache
|
|
14
|
+
- data
|
|
15
|
+
- sources
|
|
16
|
+
- rate
|
|
17
|
+
- limits
|
|
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/data-sources.md
|
|
25
|
+
date: 2026-10-16
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
A persistent SQLite cache (`node:sqlite`, one table, namespaced) makes a restart or a reopen instant and cheap. The analyst's MCP server reads the same file, so a warm dossier needs no network.
|
|
29
|
+
|
|
30
|
+
(generated from the app: see https://dexterm.xyz/docs/data-sources#cache; app-help has the exact keys and commands)
|
|
31
|
+
|
|
32
|
+
The last rows shown per preset are also snapshotted so a launch paints instantly, marked `cached Nm old · refreshing`.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-data-sources-health-registry
|
|
3
|
+
title: Data sources and rate limits › Health registry
|
|
4
|
+
kind: docs
|
|
5
|
+
page: data-sources
|
|
6
|
+
page_title: Data sources and rate limits
|
|
7
|
+
heading: Health registry
|
|
8
|
+
anchor: health-registry
|
|
9
|
+
url: https://dexterm.xyz/docs/data-sources#health-registry
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- data-sources
|
|
13
|
+
- health
|
|
14
|
+
- registry
|
|
15
|
+
- data
|
|
16
|
+
- sources
|
|
17
|
+
- rate
|
|
18
|
+
- limits
|
|
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/data-sources.md
|
|
26
|
+
date: 2026-10-16
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
Every source goes through a health registry: three consecutive failures or two 429s in a minute mark it degraded for a backoff window (30 s, doubling to 10 min). A panel whose source is down shows `unavailable: <reason>` or `needs key`, the header turns `◐ degraded: <source>`, and the analyst's tool list is built from the healthy sources each session. A screen with no data says why instead of hanging: `connecting to the live feed…`, `offline — can't reach the data feed`, `rate-limited — backing off`. Press `r` to retry. Nothing fabricates a number.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-data-sources-rate-limits-and-pacing
|
|
3
|
+
title: Data sources and rate limits › Rate limits and pacing
|
|
4
|
+
kind: docs
|
|
5
|
+
page: data-sources
|
|
6
|
+
page_title: Data sources and rate limits
|
|
7
|
+
heading: Rate limits and pacing
|
|
8
|
+
anchor: rate-limits-and-pacing
|
|
9
|
+
url: https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- data-sources
|
|
13
|
+
- rate
|
|
14
|
+
- limits
|
|
15
|
+
- pacing
|
|
16
|
+
- data
|
|
17
|
+
- sources
|
|
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/data-sources.md
|
|
25
|
+
date: 2026-10-16
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
One token bucket per host with the documented limit as the ceiling and a safety factor of (generated from the app: see https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing; app-help has the exact keys and commands); over-budget requests queue and the column header shows `⌛` instead of blocking. Identical in-flight requests share one promise. The chart the user is waiting on takes a high-priority slot that background work (tape, prefetch, refresh) can never consume.
|
|
29
|
+
|
|
30
|
+
(generated from the app: see https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing; app-help has the exact keys and commands)
|
|
31
|
+
|
|
32
|
+
Refresh cadence, keyless: screener table (generated from the app: see https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing; app-help has the exact keys and commands) s (one DexScreener batch per 30 rows), token screen (generated from the app: see https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing; app-help has the exact keys and commands) s, watchlist (generated from the app: see https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing; app-help has the exact keys and commands) s, positions (generated from the app: see https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing; app-help has the exact keys and commands) s, new pairs push plus a 15 s Jupiter poll and a 30 s RugCheck poll, PAPER quote (generated from the app: see https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing; app-help has the exact keys and commands) s while editing. The fast lane adds zero HTTP requests: it is push, capped at (generated from the app: see https://dexterm.xyz/docs/data-sources#rate-limits-and-pacing; app-help has the exact keys and commands) simultaneous subscriptions (the open token, your watchlist, a few fresh launches); tokens past the cap stay on the polling lane, never dropped.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: docs-data-sources-request-budget-meter
|
|
3
|
+
title: Data sources and rate limits › Request budget meter
|
|
4
|
+
kind: docs
|
|
5
|
+
page: data-sources
|
|
6
|
+
page_title: Data sources and rate limits
|
|
7
|
+
heading: Request budget meter
|
|
8
|
+
anchor: request-budget-meter
|
|
9
|
+
url: https://dexterm.xyz/docs/data-sources#request-budget-meter
|
|
10
|
+
tags:
|
|
11
|
+
- docs
|
|
12
|
+
- data-sources
|
|
13
|
+
- request
|
|
14
|
+
- budget
|
|
15
|
+
- meter
|
|
16
|
+
- data
|
|
17
|
+
- sources
|
|
18
|
+
- rate
|
|
19
|
+
- limits
|
|
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/data-sources.md
|
|
27
|
+
date: 2026-10-16
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
Every request is counted per source for the session and for the day (persisted), so usage is visible with `--verbose` and in the header. Optional soft daily caps can bound a source.
|