@trading-boy/cli 1.7.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.bundle.js +6 -2
- package/dist/commands/agent-cmd.js +6 -0
- package/package.json +1 -1
package/dist/cli.bundle.js
CHANGED
|
@@ -59155,7 +59155,7 @@ function parseHumanInterval(value) {
|
|
|
59155
59155
|
var MIN_SCAN_INTERVAL_MS = 6e4;
|
|
59156
59156
|
function registerAgentCommand(program2) {
|
|
59157
59157
|
const agent = program2.command("agent").description("Manage autonomous trading agents");
|
|
59158
|
-
agent.command("create").description("Create a new agent").option("--trader-id <traderId>", "Trader ID").option("--strategy-id <strategyId>", "Strategy ID").option("--name <name>", "Agent name").option("--autonomy <level>", "Autonomy level: OBSERVE_ONLY, SUGGEST, AUTO_WITH_APPROVAL, FULLY_AUTONOMOUS", "OBSERVE_ONLY").option("--scan-interval <ms>", "Scan interval in ms (min 60000)", "300000").option("--scan-interval-human <duration>", "Scan interval in human-readable format (e.g. 1m, 5m, 15m, 30m, 1h)").option("--watchlist <symbols>", "Comma-separated token symbols").option("--max-daily-trades <n>", "Max daily trades", "10").option("--max-daily-loss <usd>", "Max daily loss in USD", "500").option("--max-position-size <pct>", "Max position size as decimal (0.10 = 10%)", "0.10").option("--min-confidence <n>", "Min confidence threshold (0-1)", "0.60").option("--scan-model <model>", "LLM model for market scanning").option("--analyze-model <model>", "LLM model for deep analysis").option("--decide-model <model>", "LLM model for trade decisions").addOption(new Option("--asset-class <class>", "Asset class for this agent").choices(["crypto", "commodities", "mixed"]).default("crypto")).option("--soul-override <text>", "Custom soul/personality for this agent").option("--purpose-override <text>", "Custom purpose/mission for this agent").option("--soul-file <path>", "Load soul from a file").option("--purpose-file <path>", "Load purpose from a file").addOption(new Option("--format <format>", "Output format").choices(["text", "json"]).default("text")).action(async (options) => {
|
|
59158
|
+
agent.command("create").description("Create a new agent").option("--trader-id <traderId>", "Trader ID").option("--strategy-id <strategyId>", "Strategy ID").option("--name <name>", "Agent name").option("--autonomy <level>", "Autonomy level: OBSERVE_ONLY, SUGGEST, AUTO_WITH_APPROVAL, FULLY_AUTONOMOUS", "OBSERVE_ONLY").option("--scan-interval <ms>", "Scan interval in ms (min 60000)", "300000").option("--scan-interval-human <duration>", "Scan interval in human-readable format (e.g. 1m, 5m, 15m, 30m, 1h)").option("--watchlist <symbols>", "Comma-separated token symbols").option("--max-daily-trades <n>", "Max daily trades", "10").option("--max-daily-loss <usd>", "Max daily loss in USD", "500").option("--max-position-size <pct>", "Max position size as decimal (0.10 = 10%)", "0.10").option("--min-confidence <n>", "Min confidence threshold (0-1)", "0.60").option("--scan-model <model>", "LLM model for market scanning").option("--analyze-model <model>", "LLM model for deep analysis").option("--decide-model <model>", "LLM model for trade decisions").addOption(new Option("--asset-class <class>", "Asset class for this agent").choices(["crypto", "commodities", "mixed"]).default("crypto")).option("--soul-override <text>", "Custom soul/personality for this agent").option("--purpose-override <text>", "Custom purpose/mission for this agent").option("--soul-file <path>", "Load soul from a file").option("--purpose-file <path>", "Load purpose from a file").option("--exit-reasoner", "Enable LLM-powered exit reasoning for this agent").addOption(new Option("--format <format>", "Output format").choices(["text", "json"]).default("text")).action(async (options) => {
|
|
59159
59159
|
if (!await ensureRemote())
|
|
59160
59160
|
return;
|
|
59161
59161
|
if (!options.traderId) {
|
|
@@ -59212,6 +59212,8 @@ function registerAgentCommand(program2) {
|
|
|
59212
59212
|
body.decideModel = options.decideModel;
|
|
59213
59213
|
if (options.assetClass)
|
|
59214
59214
|
body.assetClass = options.assetClass;
|
|
59215
|
+
if (options.exitReasoner)
|
|
59216
|
+
body.exitReasoner = true;
|
|
59215
59217
|
if (options.soulFile) {
|
|
59216
59218
|
const path5 = resolve2(options.soulFile);
|
|
59217
59219
|
if (!existsSync3(path5)) {
|
|
@@ -59440,12 +59442,14 @@ function registerAgentCommand(program2) {
|
|
|
59440
59442
|
handleApiError(error49, "Position exit failed", logger30);
|
|
59441
59443
|
}
|
|
59442
59444
|
});
|
|
59443
|
-
agent.command("update <agentId>").description("Update agent config").option("--name <name>", "Agent name").option("--autonomy <level>", "Autonomy level").option("--scan-interval <ms>", "Scan interval in ms").option("--scan-interval-human <duration>", "Scan interval in human-readable format (e.g. 1m, 5m, 15m, 30m, 1h)").option("--watchlist <symbols>", "Comma-separated token symbols").option("--max-daily-trades <n>", "Max daily trades").option("--max-daily-loss <usd>", "Max daily loss in USD").option("--max-position-size <pct>", "Max position size as decimal").option("--min-confidence <n>", "Min confidence threshold").option("--scan-model <model>", "LLM model for market scanning").option("--analyze-model <model>", "LLM model for deep analysis").option("--decide-model <model>", "LLM model for trade decisions").addOption(new Option("--asset-class <class>", "Asset class for this agent").choices(["crypto", "commodities", "mixed"])).option("--soul-override <text>", "Custom soul/personality for this agent").option("--purpose-override <text>", "Custom purpose/mission for this agent").option("--soul-file <path>", "Load soul from a file").option("--purpose-file <path>", "Load purpose from a file").addOption(new Option("--format <format>", "Output format").choices(["text", "json"]).default("text")).action(async (agentId, options) => {
|
|
59445
|
+
agent.command("update <agentId>").description("Update agent config").option("--name <name>", "Agent name").option("--autonomy <level>", "Autonomy level").option("--scan-interval <ms>", "Scan interval in ms").option("--scan-interval-human <duration>", "Scan interval in human-readable format (e.g. 1m, 5m, 15m, 30m, 1h)").option("--watchlist <symbols>", "Comma-separated token symbols").option("--max-daily-trades <n>", "Max daily trades").option("--max-daily-loss <usd>", "Max daily loss in USD").option("--max-position-size <pct>", "Max position size as decimal").option("--min-confidence <n>", "Min confidence threshold").option("--scan-model <model>", "LLM model for market scanning").option("--analyze-model <model>", "LLM model for deep analysis").option("--decide-model <model>", "LLM model for trade decisions").addOption(new Option("--asset-class <class>", "Asset class for this agent").choices(["crypto", "commodities", "mixed"])).option("--soul-override <text>", "Custom soul/personality for this agent").option("--purpose-override <text>", "Custom purpose/mission for this agent").option("--soul-file <path>", "Load soul from a file").option("--purpose-file <path>", "Load purpose from a file").option("--exit-reasoner", "Enable LLM-powered exit reasoning for this agent").addOption(new Option("--format <format>", "Output format").choices(["text", "json"]).default("text")).action(async (agentId, options) => {
|
|
59444
59446
|
if (!await ensureRemote())
|
|
59445
59447
|
return;
|
|
59446
59448
|
const body = {};
|
|
59447
59449
|
if (options.name)
|
|
59448
59450
|
body.name = options.name;
|
|
59451
|
+
if (options.exitReasoner)
|
|
59452
|
+
body.exitReasoner = true;
|
|
59449
59453
|
if (options.autonomy)
|
|
59450
59454
|
body.autonomyLevel = options.autonomy;
|
|
59451
59455
|
if (options.scanIntervalHuman) {
|
|
@@ -97,6 +97,7 @@ export function registerAgentCommand(program) {
|
|
|
97
97
|
.option('--purpose-override <text>', 'Custom purpose/mission for this agent')
|
|
98
98
|
.option('--soul-file <path>', 'Load soul from a file')
|
|
99
99
|
.option('--purpose-file <path>', 'Load purpose from a file')
|
|
100
|
+
.option('--exit-reasoner', 'Enable LLM-powered exit reasoning for this agent')
|
|
100
101
|
.addOption(new Option('--format <format>', 'Output format').choices(['text', 'json']).default('text'))
|
|
101
102
|
.action(async (options) => {
|
|
102
103
|
if (!(await ensureRemote()))
|
|
@@ -157,6 +158,8 @@ export function registerAgentCommand(program) {
|
|
|
157
158
|
body.decideModel = options.decideModel;
|
|
158
159
|
if (options.assetClass)
|
|
159
160
|
body.assetClass = options.assetClass;
|
|
161
|
+
if (options.exitReasoner)
|
|
162
|
+
body.exitReasoner = true;
|
|
160
163
|
// Soul override — file takes precedence over inline text
|
|
161
164
|
if (options.soulFile) {
|
|
162
165
|
const path = resolve(options.soulFile);
|
|
@@ -470,6 +473,7 @@ export function registerAgentCommand(program) {
|
|
|
470
473
|
.option('--purpose-override <text>', 'Custom purpose/mission for this agent')
|
|
471
474
|
.option('--soul-file <path>', 'Load soul from a file')
|
|
472
475
|
.option('--purpose-file <path>', 'Load purpose from a file')
|
|
476
|
+
.option('--exit-reasoner', 'Enable LLM-powered exit reasoning for this agent')
|
|
473
477
|
.addOption(new Option('--format <format>', 'Output format').choices(['text', 'json']).default('text'))
|
|
474
478
|
.action(async (agentId, options) => {
|
|
475
479
|
if (!(await ensureRemote()))
|
|
@@ -477,6 +481,8 @@ export function registerAgentCommand(program) {
|
|
|
477
481
|
const body = {};
|
|
478
482
|
if (options.name)
|
|
479
483
|
body.name = options.name;
|
|
484
|
+
if (options.exitReasoner)
|
|
485
|
+
body.exitReasoner = true;
|
|
480
486
|
if (options.autonomy)
|
|
481
487
|
body.autonomyLevel = options.autonomy;
|
|
482
488
|
// Resolve scan interval: --scan-interval-human takes precedence
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trading-boy/cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Trading Boy CLI — crypto context intelligence for traders and AI agents. Query real-time prices, funding rates, whale activity, and DeFi risk for 100+ Solana tokens and 229 Hyperliquid perpetuals.",
|
|
5
5
|
"homepage": "https://cabal.ventures",
|
|
6
6
|
"repository": {
|