@trading-boy/cli 1.2.17 → 1.2.18

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.
@@ -3711,9 +3711,9 @@ var init_source = __esm({
3711
3711
  init_supports_color();
3712
3712
  init_utilities();
3713
3713
  ({ stdout: stdoutColor, stderr: stderrColor } = supports_color_default);
3714
- GENERATOR = Symbol("GENERATOR");
3715
- STYLER = Symbol("STYLER");
3716
- IS_EMPTY = Symbol("IS_EMPTY");
3714
+ GENERATOR = /* @__PURE__ */ Symbol("GENERATOR");
3715
+ STYLER = /* @__PURE__ */ Symbol("STYLER");
3716
+ IS_EMPTY = /* @__PURE__ */ Symbol("IS_EMPTY");
3717
3717
  levelMapping = [
3718
3718
  "ansi",
3719
3719
  "ansi",
@@ -4310,8 +4310,8 @@ var require_err_helpers = __commonJS({
4310
4310
  var require_err_proto = __commonJS({
4311
4311
  "../../node_modules/.pnpm/pino-std-serializers@7.1.0/node_modules/pino-std-serializers/lib/err-proto.js"(exports, module) {
4312
4312
  "use strict";
4313
- var seen = Symbol("circular-ref-tag");
4314
- var rawSymbol = Symbol("pino-raw-err-ref");
4313
+ var seen = /* @__PURE__ */ Symbol("circular-ref-tag");
4314
+ var rawSymbol = /* @__PURE__ */ Symbol("pino-raw-err-ref");
4315
4315
  var pinoErrProto = Object.create({}, {
4316
4316
  type: {
4317
4317
  enumerable: true,
@@ -4448,7 +4448,7 @@ var require_req = __commonJS({
4448
4448
  mapHttpRequest,
4449
4449
  reqSerializer
4450
4450
  };
4451
- var rawSymbol = Symbol("pino-raw-req-ref");
4451
+ var rawSymbol = /* @__PURE__ */ Symbol("pino-raw-req-ref");
4452
4452
  var pinoReqProto = Object.create({}, {
4453
4453
  id: {
4454
4454
  enumerable: true,
@@ -4543,7 +4543,7 @@ var require_res = __commonJS({
4543
4543
  mapHttpResponse,
4544
4544
  resSerializer
4545
4545
  };
4546
- var rawSymbol = Symbol("pino-raw-res-ref");
4546
+ var rawSymbol = /* @__PURE__ */ Symbol("pino-raw-res-ref");
4547
4547
  var pinoResProto = Object.create({}, {
4548
4548
  statusCode: {
4549
4549
  enumerable: true,
@@ -4785,7 +4785,7 @@ var require_redact = __commonJS({
4785
4785
  }
4786
4786
  return true;
4787
4787
  }
4788
- var PATH_NOT_FOUND = Symbol("PATH_NOT_FOUND");
4788
+ var PATH_NOT_FOUND = /* @__PURE__ */ Symbol("PATH_NOT_FOUND");
4789
4789
  function getValueIfExists(obj, parts) {
4790
4790
  let current = obj;
4791
4791
  for (const part of parts) {
@@ -5086,37 +5086,37 @@ var require_redact = __commonJS({
5086
5086
  var require_symbols = __commonJS({
5087
5087
  "../../node_modules/.pnpm/pino@10.3.1/node_modules/pino/lib/symbols.js"(exports, module) {
5088
5088
  "use strict";
5089
- var setLevelSym = Symbol("pino.setLevel");
5090
- var getLevelSym = Symbol("pino.getLevel");
5091
- var levelValSym = Symbol("pino.levelVal");
5092
- var levelCompSym = Symbol("pino.levelComp");
5093
- var useLevelLabelsSym = Symbol("pino.useLevelLabels");
5094
- var useOnlyCustomLevelsSym = Symbol("pino.useOnlyCustomLevels");
5095
- var mixinSym = Symbol("pino.mixin");
5096
- var lsCacheSym = Symbol("pino.lsCache");
5097
- var chindingsSym = Symbol("pino.chindings");
5098
- var asJsonSym = Symbol("pino.asJson");
5099
- var writeSym = Symbol("pino.write");
5100
- var redactFmtSym = Symbol("pino.redactFmt");
5101
- var timeSym = Symbol("pino.time");
5102
- var timeSliceIndexSym = Symbol("pino.timeSliceIndex");
5103
- var streamSym = Symbol("pino.stream");
5104
- var stringifySym = Symbol("pino.stringify");
5105
- var stringifySafeSym = Symbol("pino.stringifySafe");
5106
- var stringifiersSym = Symbol("pino.stringifiers");
5107
- var endSym = Symbol("pino.end");
5108
- var formatOptsSym = Symbol("pino.formatOpts");
5109
- var messageKeySym = Symbol("pino.messageKey");
5110
- var errorKeySym = Symbol("pino.errorKey");
5111
- var nestedKeySym = Symbol("pino.nestedKey");
5112
- var nestedKeyStrSym = Symbol("pino.nestedKeyStr");
5113
- var mixinMergeStrategySym = Symbol("pino.mixinMergeStrategy");
5114
- var msgPrefixSym = Symbol("pino.msgPrefix");
5115
- var wildcardFirstSym = Symbol("pino.wildcardFirst");
5116
- var serializersSym = Symbol.for("pino.serializers");
5117
- var formattersSym = Symbol.for("pino.formatters");
5118
- var hooksSym = Symbol.for("pino.hooks");
5119
- var needsMetadataGsym = Symbol.for("pino.metadata");
5089
+ var setLevelSym = /* @__PURE__ */ Symbol("pino.setLevel");
5090
+ var getLevelSym = /* @__PURE__ */ Symbol("pino.getLevel");
5091
+ var levelValSym = /* @__PURE__ */ Symbol("pino.levelVal");
5092
+ var levelCompSym = /* @__PURE__ */ Symbol("pino.levelComp");
5093
+ var useLevelLabelsSym = /* @__PURE__ */ Symbol("pino.useLevelLabels");
5094
+ var useOnlyCustomLevelsSym = /* @__PURE__ */ Symbol("pino.useOnlyCustomLevels");
5095
+ var mixinSym = /* @__PURE__ */ Symbol("pino.mixin");
5096
+ var lsCacheSym = /* @__PURE__ */ Symbol("pino.lsCache");
5097
+ var chindingsSym = /* @__PURE__ */ Symbol("pino.chindings");
5098
+ var asJsonSym = /* @__PURE__ */ Symbol("pino.asJson");
5099
+ var writeSym = /* @__PURE__ */ Symbol("pino.write");
5100
+ var redactFmtSym = /* @__PURE__ */ Symbol("pino.redactFmt");
5101
+ var timeSym = /* @__PURE__ */ Symbol("pino.time");
5102
+ var timeSliceIndexSym = /* @__PURE__ */ Symbol("pino.timeSliceIndex");
5103
+ var streamSym = /* @__PURE__ */ Symbol("pino.stream");
5104
+ var stringifySym = /* @__PURE__ */ Symbol("pino.stringify");
5105
+ var stringifySafeSym = /* @__PURE__ */ Symbol("pino.stringifySafe");
5106
+ var stringifiersSym = /* @__PURE__ */ Symbol("pino.stringifiers");
5107
+ var endSym = /* @__PURE__ */ Symbol("pino.end");
5108
+ var formatOptsSym = /* @__PURE__ */ Symbol("pino.formatOpts");
5109
+ var messageKeySym = /* @__PURE__ */ Symbol("pino.messageKey");
5110
+ var errorKeySym = /* @__PURE__ */ Symbol("pino.errorKey");
5111
+ var nestedKeySym = /* @__PURE__ */ Symbol("pino.nestedKey");
5112
+ var nestedKeyStrSym = /* @__PURE__ */ Symbol("pino.nestedKeyStr");
5113
+ var mixinMergeStrategySym = /* @__PURE__ */ Symbol("pino.mixinMergeStrategy");
5114
+ var msgPrefixSym = /* @__PURE__ */ Symbol("pino.msgPrefix");
5115
+ var wildcardFirstSym = /* @__PURE__ */ Symbol("pino.wildcardFirst");
5116
+ var serializersSym = /* @__PURE__ */ Symbol.for("pino.serializers");
5117
+ var formattersSym = /* @__PURE__ */ Symbol.for("pino.formatters");
5118
+ var hooksSym = /* @__PURE__ */ Symbol.for("pino.hooks");
5119
+ var needsMetadataGsym = /* @__PURE__ */ Symbol.for("pino.metadata");
5120
5120
  module.exports = {
5121
5121
  setLevelSym,
5122
5122
  getLevelSym,
@@ -6241,7 +6241,7 @@ var require_thread_stream = __commonJS({
6241
6241
  } = require_indexes();
6242
6242
  var buffer = __require("buffer");
6243
6243
  var assert2 = __require("assert");
6244
- var kImpl = Symbol("kImpl");
6244
+ var kImpl = /* @__PURE__ */ Symbol("kImpl");
6245
6245
  var MAX_STRING = buffer.constants.MAX_STRING_LENGTH;
6246
6246
  var FakeWeakRef = class {
6247
6247
  constructor(value) {
@@ -8257,7 +8257,7 @@ ${originalIndentation}`;
8257
8257
  var require_multistream = __commonJS({
8258
8258
  "../../node_modules/.pnpm/pino@10.3.1/node_modules/pino/lib/multistream.js"(exports, module) {
8259
8259
  "use strict";
8260
- var metadata = Symbol.for("pino.metadata");
8260
+ var metadata = /* @__PURE__ */ Symbol.for("pino.metadata");
8261
8261
  var { DEFAULT_LEVELS } = require_constants();
8262
8262
  var DEFAULT_INFO_LEVEL = DEFAULT_LEVELS.info;
8263
8263
  function multistream(streamsArray, opts) {
@@ -8754,7 +8754,7 @@ var init_mjs = __esm({
8754
8754
  "../../node_modules/.pnpm/signal-exit@4.1.0/node_modules/signal-exit/dist/mjs/index.js"() {
8755
8755
  init_signals();
8756
8756
  processOk = (process17) => !!process17 && typeof process17 === "object" && typeof process17.removeListener === "function" && typeof process17.emit === "function" && typeof process17.reallyExit === "function" && typeof process17.listeners === "function" && typeof process17.kill === "function" && typeof process17.pid === "number" && typeof process17.on === "function";
8757
- kExitEmitter = Symbol.for("signal-exit emitter");
8757
+ kExitEmitter = /* @__PURE__ */ Symbol.for("signal-exit emitter");
8758
8758
  global2 = globalThis;
8759
8759
  ObjectDefineProperty = Object.defineProperty.bind(Object);
8760
8760
  Emitter = class {
@@ -19921,7 +19921,7 @@ var require_utils = __commonJS({
19921
19921
  var require_lib2 = __commonJS({
19922
19922
  "../../node_modules/.pnpm/chardet@2.1.1/node_modules/chardet/lib/index.js"(exports) {
19923
19923
  "use strict";
19924
- var __createBinding = exports && exports.__createBinding || (Object.create ? function(o, m, k, k2) {
19924
+ var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) {
19925
19925
  if (k2 === void 0) k2 = k;
19926
19926
  var desc = Object.getOwnPropertyDescriptor(m, k);
19927
19927
  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
@@ -19930,16 +19930,16 @@ var require_lib2 = __commonJS({
19930
19930
  } };
19931
19931
  }
19932
19932
  Object.defineProperty(o, k2, desc);
19933
- } : function(o, m, k, k2) {
19933
+ }) : (function(o, m, k, k2) {
19934
19934
  if (k2 === void 0) k2 = k;
19935
19935
  o[k2] = m[k];
19936
- });
19937
- var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? function(o, v) {
19936
+ }));
19937
+ var __setModuleDefault = exports && exports.__setModuleDefault || (Object.create ? (function(o, v) {
19938
19938
  Object.defineProperty(o, "default", { enumerable: true, value: v });
19939
- } : function(o, v) {
19939
+ }) : function(o, v) {
19940
19940
  o["default"] = v;
19941
19941
  });
19942
- var __importStar = exports && exports.__importStar || /* @__PURE__ */ function() {
19942
+ var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() {
19943
19943
  var ownKeys = function(o) {
19944
19944
  ownKeys = Object.getOwnPropertyNames || function(o2) {
19945
19945
  var ar = [];
@@ -19957,7 +19957,7 @@ var require_lib2 = __commonJS({
19957
19957
  __setModuleDefault(result, mod);
19958
19958
  return result;
19959
19959
  };
19960
- }();
19960
+ })();
19961
19961
  var __importDefault = exports && exports.__importDefault || function(mod) {
19962
19962
  return mod && mod.__esModule ? mod : { "default": mod };
19963
19963
  };
@@ -26541,7 +26541,7 @@ function $constructor(name, initializer3, params) {
26541
26541
  Object.defineProperty(_, "name", { value: name });
26542
26542
  return _;
26543
26543
  }
26544
- var $brand = Symbol("zod_brand");
26544
+ var $brand = /* @__PURE__ */ Symbol("zod_brand");
26545
26545
  var $ZodAsyncError = class extends Error {
26546
26546
  constructor() {
26547
26547
  super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);
@@ -26688,7 +26688,7 @@ function floatSafeRemainder(val, step) {
26688
26688
  const stepInt = Number.parseInt(step.toFixed(decCount).replace(".", ""));
26689
26689
  return valInt % stepInt / 10 ** decCount;
26690
26690
  }
26691
- var EVALUATING = Symbol("evaluating");
26691
+ var EVALUATING = /* @__PURE__ */ Symbol("evaluating");
26692
26692
  function defineLazy(object2, key, getter) {
26693
26693
  let value = void 0;
26694
26694
  Object.defineProperty(object2, key, {
@@ -35761,8 +35761,8 @@ function yo_default() {
35761
35761
 
35762
35762
  // ../../node_modules/.pnpm/zod@4.3.6/node_modules/zod/v4/core/registries.js
35763
35763
  var _a;
35764
- var $output = Symbol("ZodOutput");
35765
- var $input = Symbol("ZodInput");
35764
+ var $output = /* @__PURE__ */ Symbol("ZodOutput");
35765
+ var $input = /* @__PURE__ */ Symbol("ZodInput");
35766
35766
  var $ZodRegistry = class {
35767
35767
  constructor() {
35768
35768
  this._map = /* @__PURE__ */ new WeakMap();
@@ -36799,7 +36799,7 @@ function _stringbool(Classes, _params) {
36799
36799
  type: "pipe",
36800
36800
  in: stringSchema,
36801
36801
  out: booleanSchema,
36802
- transform: (input, payload) => {
36802
+ transform: ((input, payload) => {
36803
36803
  let data = input;
36804
36804
  if (params.case !== "sensitive")
36805
36805
  data = data.toLowerCase();
@@ -36818,14 +36818,14 @@ function _stringbool(Classes, _params) {
36818
36818
  });
36819
36819
  return {};
36820
36820
  }
36821
- },
36822
- reverseTransform: (input, _payload) => {
36821
+ }),
36822
+ reverseTransform: ((input, _payload) => {
36823
36823
  if (input === true) {
36824
36824
  return truthyArray[0] || "true";
36825
36825
  } else {
36826
36826
  return falsyArray[0] || "false";
36827
36827
  }
36828
- },
36828
+ }),
36829
36829
  error: params.error
36830
36830
  });
36831
36831
  return codec2;
@@ -38153,10 +38153,10 @@ var ZodType = /* @__PURE__ */ $constructor("ZodType", (inst, def) => {
38153
38153
  inst.with = inst.check;
38154
38154
  inst.clone = (def2, params) => clone(inst, def2, params);
38155
38155
  inst.brand = () => inst;
38156
- inst.register = (reg, meta3) => {
38156
+ inst.register = ((reg, meta3) => {
38157
38157
  reg.add(inst, meta3);
38158
38158
  return inst;
38159
- };
38159
+ });
38160
38160
  inst.parse = (data, params) => parse2(inst, data, params, { callee: inst.parse });
38161
38161
  inst.safeParse = (data, params) => safeParse2(inst, data, params);
38162
38162
  inst.parseAsync = async (data, params) => parseAsync2(inst, data, params, { callee: inst.parseAsync });
@@ -39785,6 +39785,8 @@ var envSchema = external_exports.object({
39785
39785
  BELIEF_DISCOUNT_FACTOR: external_exports.coerce.number().min(0).max(1).default(0.995),
39786
39786
  // Cold-start maturity threshold (number of trades before a trader is "established")
39787
39787
  COLD_START_MATURITY_THRESHOLD: external_exports.coerce.number().int().nonnegative().default(50),
39788
+ // Politician trading data
39789
+ FINNHUB_API_KEY: external_exports.string().default(""),
39788
39790
  // Feature flags
39789
39791
  ENABLE_LLM: external_exports.enum(["true", "false"]).default("false").transform((v) => v === "true"),
39790
39792
  ENABLE_LEARNING: external_exports.enum(["true", "false"]).default("false").transform((v) => v === "true"),
@@ -39806,6 +39808,8 @@ var envSchema = external_exports.object({
39806
39808
  NOTIFICATION_FROM_EMAIL: external_exports.string().default("alerts@tradingboy.dev"),
39807
39809
  // Solana (crypto payments)
39808
39810
  SOLANA_MERCHANT_WALLET: external_exports.string().default(""),
39811
+ // Resend Email
39812
+ RESEND_WEBHOOK_SECRET: external_exports.string().default(""),
39809
39813
  // Stripe Billing
39810
39814
  STRIPE_SECRET_KEY: external_exports.string().default(""),
39811
39815
  STRIPE_WEBHOOK_SECRET: external_exports.string().default(""),
@@ -50571,7 +50575,7 @@ async function runOnboarding() {
50571
50575
  });
50572
50576
  if (wantsTrader) {
50573
50577
  const name = await input({
50574
- message: "Trader name (your alias)",
50578
+ message: "Trader name (this will appear on the public leaderboard \u2014 use a pseudonym to stay anonymous)",
50575
50579
  default: "default",
50576
50580
  validate: (v) => v.trim().length > 0 ? true : "Name cannot be empty"
50577
50581
  });
@@ -50592,6 +50596,11 @@ async function runOnboarding() {
50592
50596
  body: { name: name.trim(), riskToleranceMax: parseFloat(maxDrawdown) }
50593
50597
  });
50594
50598
  console.log(source_default.green(` \u2713 Trader "${result.name}" registered (id: ${result.id})`));
50599
+ if (result.publicAlias) {
50600
+ console.log(source_default.dim(` Leaderboard alias: ${result.publicAlias}`));
50601
+ console.log(source_default.dim(" This alias is public on the leaderboard. Change it anytime:"));
50602
+ console.log(source_default.dim(" trading-boy trader set-alias <name> <new-alias>"));
50603
+ }
50595
50604
  traderRegistered = true;
50596
50605
  } else {
50597
50606
  console.log(source_default.yellow(" Skipped \u2014 not connected to API. Run: trading-boy trader register"));
@@ -28,7 +28,7 @@ export async function runOnboarding() {
28
28
  });
29
29
  if (wantsTrader) {
30
30
  const name = await input({
31
- message: 'Trader name (your alias)',
31
+ message: 'Trader name (this will appear on the public leaderboard — use a pseudonym to stay anonymous)',
32
32
  default: 'default',
33
33
  validate: (v) => (v.trim().length > 0 ? true : 'Name cannot be empty'),
34
34
  });
@@ -49,6 +49,11 @@ export async function runOnboarding() {
49
49
  body: { name: name.trim(), riskToleranceMax: parseFloat(maxDrawdown) },
50
50
  });
51
51
  console.log(chalk.green(` \u2713 Trader "${result.name}" registered (id: ${result.id})`));
52
+ if (result.publicAlias) {
53
+ console.log(chalk.dim(` Leaderboard alias: ${result.publicAlias}`));
54
+ console.log(chalk.dim(' This alias is public on the leaderboard. Change it anytime:'));
55
+ console.log(chalk.dim(' trading-boy trader set-alias <name> <new-alias>'));
56
+ }
52
57
  traderRegistered = true;
53
58
  }
54
59
  else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trading-boy/cli",
3
- "version": "1.2.17",
3
+ "version": "1.2.18",
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": {