@truenorth-ai/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/README.md +212 -0
  2. package/bin/truenorth.js +2 -0
  3. package/dist/api/client.d.ts +4 -0
  4. package/dist/api/client.d.ts.map +1 -0
  5. package/dist/api/client.js +34 -0
  6. package/dist/api/client.js.map +1 -0
  7. package/dist/api/tools.d.ts +4 -0
  8. package/dist/api/tools.d.ts.map +1 -0
  9. package/dist/api/tools.js +25 -0
  10. package/dist/api/tools.js.map +1 -0
  11. package/dist/commands/call.d.ts +3 -0
  12. package/dist/commands/call.d.ts.map +1 -0
  13. package/dist/commands/call.js +27 -0
  14. package/dist/commands/call.js.map +1 -0
  15. package/dist/commands/defi.d.ts +3 -0
  16. package/dist/commands/defi.d.ts.map +1 -0
  17. package/dist/commands/defi.js +47 -0
  18. package/dist/commands/defi.js.map +1 -0
  19. package/dist/commands/derivatives.d.ts +3 -0
  20. package/dist/commands/derivatives.d.ts.map +1 -0
  21. package/dist/commands/derivatives.js +27 -0
  22. package/dist/commands/derivatives.js.map +1 -0
  23. package/dist/commands/events.d.ts +3 -0
  24. package/dist/commands/events.d.ts.map +1 -0
  25. package/dist/commands/events.js +28 -0
  26. package/dist/commands/events.js.map +1 -0
  27. package/dist/commands/kol.d.ts +3 -0
  28. package/dist/commands/kol.d.ts.map +1 -0
  29. package/dist/commands/kol.js +66 -0
  30. package/dist/commands/kol.js.map +1 -0
  31. package/dist/commands/market-info.d.ts +3 -0
  32. package/dist/commands/market-info.d.ts.map +1 -0
  33. package/dist/commands/market-info.js +27 -0
  34. package/dist/commands/market-info.js.map +1 -0
  35. package/dist/commands/meme.d.ts +3 -0
  36. package/dist/commands/meme.d.ts.map +1 -0
  37. package/dist/commands/meme.js +108 -0
  38. package/dist/commands/meme.js.map +1 -0
  39. package/dist/commands/perps.d.ts +3 -0
  40. package/dist/commands/perps.d.ts.map +1 -0
  41. package/dist/commands/perps.js +36 -0
  42. package/dist/commands/perps.js.map +1 -0
  43. package/dist/commands/polymarket.d.ts +3 -0
  44. package/dist/commands/polymarket.d.ts.map +1 -0
  45. package/dist/commands/polymarket.js +32 -0
  46. package/dist/commands/polymarket.js.map +1 -0
  47. package/dist/commands/scan.d.ts +3 -0
  48. package/dist/commands/scan.d.ts.map +1 -0
  49. package/dist/commands/scan.js +27 -0
  50. package/dist/commands/scan.js.map +1 -0
  51. package/dist/commands/search.d.ts +3 -0
  52. package/dist/commands/search.d.ts.map +1 -0
  53. package/dist/commands/search.js +66 -0
  54. package/dist/commands/search.js.map +1 -0
  55. package/dist/commands/technical.d.ts +3 -0
  56. package/dist/commands/technical.d.ts.map +1 -0
  57. package/dist/commands/technical.js +55 -0
  58. package/dist/commands/technical.js.map +1 -0
  59. package/dist/commands/tools.d.ts +3 -0
  60. package/dist/commands/tools.d.ts.map +1 -0
  61. package/dist/commands/tools.js +68 -0
  62. package/dist/commands/tools.js.map +1 -0
  63. package/dist/commands/trending.d.ts +3 -0
  64. package/dist/commands/trending.d.ts.map +1 -0
  65. package/dist/commands/trending.js +31 -0
  66. package/dist/commands/trending.js.map +1 -0
  67. package/dist/config.d.ts +5 -0
  68. package/dist/config.d.ts.map +1 -0
  69. package/dist/config.js +28 -0
  70. package/dist/config.js.map +1 -0
  71. package/dist/index.d.ts +2 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +71 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/types.d.ts +55 -0
  76. package/dist/types.d.ts.map +1 -0
  77. package/dist/types.js +6 -0
  78. package/dist/types.js.map +1 -0
  79. package/dist/utils.d.ts +20 -0
  80. package/dist/utils.d.ts.map +1 -0
  81. package/dist/utils.js +221 -0
  82. package/dist/utils.js.map +1 -0
  83. package/package.json +48 -0
@@ -0,0 +1,108 @@
1
+ import chalk from "chalk";
2
+ import { executeTool } from "../api/tools.js";
3
+ import { startSpinner, formatResult, formatDuration, printJson, isJsonMode, wrapAction, addJsonOption } from "../utils.js";
4
+ import { loadConfig } from "../config.js";
5
+ export function registerMemeCommand(program) {
6
+ const meme = program
7
+ .command("meme")
8
+ .description("Meme token analysis suite");
9
+ // ── meme discover ──
10
+ const discover = meme.command("discover").description("Discover meme tokens").option("--limit <n>", "Number of results");
11
+ addJsonOption(discover);
12
+ discover.action(wrapAction(async (_opts) => {
13
+ const opts = _opts;
14
+ const config = loadConfig();
15
+ const args = {};
16
+ if (opts.limit)
17
+ args.limit = parseInt(opts.limit, 10);
18
+ else
19
+ args.limit = config.defaultLimit;
20
+ const spinner = startSpinner("Discovering meme tokens…");
21
+ const result = await executeTool("meme_discovery", args);
22
+ spinner.stop();
23
+ if (isJsonMode(opts)) {
24
+ printJson(result);
25
+ return;
26
+ }
27
+ console.log(chalk.bold(`\n Meme Discovery ${formatDuration(result.durationMs)}\n`));
28
+ formatResult(result.result);
29
+ console.log();
30
+ }));
31
+ // ── meme safety ──
32
+ const safety = meme.command("safety <address>").description("Meme project safeguards check").option("--network-id <net>", "Network ID (e.g. solana, ethereum)");
33
+ addJsonOption(safety);
34
+ safety.action(wrapAction(async (address, _opts) => {
35
+ const opts = _opts;
36
+ const args = { token_address: address };
37
+ if (opts.networkId)
38
+ args.network_id = opts.networkId;
39
+ const spinner = startSpinner(`Checking safeguards for ${chalk.cyan(address)}…`);
40
+ const result = await executeTool("meme_project_safeguards", args);
41
+ spinner.stop();
42
+ if (isJsonMode(opts)) {
43
+ printJson(result);
44
+ return;
45
+ }
46
+ console.log(chalk.bold(`\n Meme Safety: ${chalk.cyan(address)} ${formatDuration(result.durationMs)}\n`));
47
+ formatResult(result.result);
48
+ console.log();
49
+ }));
50
+ // ── meme pulse ──
51
+ const pulse = meme.command("pulse <address>").description("Meme market pulse").option("--network-id <net>", "Network ID");
52
+ addJsonOption(pulse);
53
+ pulse.action(wrapAction(async (address, _opts) => {
54
+ const opts = _opts;
55
+ const args = { token_address: address };
56
+ if (opts.networkId)
57
+ args.network_id = opts.networkId;
58
+ const spinner = startSpinner(`Fetching market pulse for ${chalk.cyan(address)}…`);
59
+ const result = await executeTool("meme_market_pulse", args);
60
+ spinner.stop();
61
+ if (isJsonMode(opts)) {
62
+ printJson(result);
63
+ return;
64
+ }
65
+ console.log(chalk.bold(`\n Meme Market Pulse: ${chalk.cyan(address)} ${formatDuration(result.durationMs)}\n`));
66
+ formatResult(result.result);
67
+ console.log();
68
+ }));
69
+ // ── meme social ──
70
+ const social = meme.command("social <address>").description("Meme social momentum").option("--network-id <net>", "Network ID");
71
+ addJsonOption(social);
72
+ social.action(wrapAction(async (address, _opts) => {
73
+ const opts = _opts;
74
+ const args = { token_address: address };
75
+ if (opts.networkId)
76
+ args.network_id = opts.networkId;
77
+ const spinner = startSpinner(`Analyzing social momentum for ${chalk.cyan(address)}…`);
78
+ const result = await executeTool("meme_social_momentum", args);
79
+ spinner.stop();
80
+ if (isJsonMode(opts)) {
81
+ printJson(result);
82
+ return;
83
+ }
84
+ console.log(chalk.bold(`\n Meme Social Momentum: ${chalk.cyan(address)} ${formatDuration(result.durationMs)}\n`));
85
+ formatResult(result.result);
86
+ console.log();
87
+ }));
88
+ // ── meme narrative ──
89
+ const narrative = meme.command("narrative <address>").description("Meme token narrative analysis").option("--network-id <net>", "Network ID");
90
+ addJsonOption(narrative);
91
+ narrative.action(wrapAction(async (address, _opts) => {
92
+ const opts = _opts;
93
+ const args = { token_address: address };
94
+ if (opts.networkId)
95
+ args.network_id = opts.networkId;
96
+ const spinner = startSpinner(`Analyzing narrative for ${chalk.cyan(address)}…`);
97
+ const result = await executeTool("meme_token_narrative", args);
98
+ spinner.stop();
99
+ if (isJsonMode(opts)) {
100
+ printJson(result);
101
+ return;
102
+ }
103
+ console.log(chalk.bold(`\n Meme Token Narrative: ${chalk.cyan(address)} ${formatDuration(result.durationMs)}\n`));
104
+ formatResult(result.result);
105
+ console.log();
106
+ }));
107
+ }
108
+ //# sourceMappingURL=meme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meme.js","sourceRoot":"","sources":["../../src/commands/meme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerPerpsCommand(program: Command): void;
3
+ //# sourceMappingURL=perps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perps.d.ts","sourceRoot":"","sources":["../../src/commands/perps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8B3D"}
@@ -0,0 +1,36 @@
1
+ import chalk from "chalk";
2
+ import { executeTool } from "../api/tools.js";
3
+ import { startSpinner, formatResult, formatDuration, printJson, isJsonMode, wrapAction, addJsonOption } from "../utils.js";
4
+ export function registerPerpsCommand(program) {
5
+ const cmd = program
6
+ .command("risk")
7
+ .description("Liquidation risk analysis")
8
+ .option("--token <token>", "Token name")
9
+ .option("--dir <direction>", "Position direction (long/short)")
10
+ .option("--price <price>", "Entry price")
11
+ .option("--liq <price>", "Liquidation price");
12
+ addJsonOption(cmd);
13
+ cmd.action(wrapAction(async (_opts) => {
14
+ const opts = _opts;
15
+ const args = {};
16
+ if (opts.token)
17
+ args.token = opts.token;
18
+ if (opts.dir)
19
+ args.direction = opts.dir;
20
+ if (opts.price)
21
+ args.entry_price = parseFloat(opts.price);
22
+ if (opts.liq)
23
+ args.liquidation_price = parseFloat(opts.liq);
24
+ const spinner = startSpinner("Analyzing liquidation risk…");
25
+ const result = await executeTool("liquidation_risk", args);
26
+ spinner.stop();
27
+ if (isJsonMode(opts)) {
28
+ printJson(result);
29
+ return;
30
+ }
31
+ console.log(chalk.bold(`\n Liquidation Risk ${formatDuration(result.durationMs)}\n`));
32
+ formatResult(result.result);
33
+ console.log();
34
+ }));
35
+ }
36
+ //# sourceMappingURL=perps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perps.js","sourceRoot":"","sources":["../../src/commands/perps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3H,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,2BAA2B,CAAC;SACxC,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC;SACvC,MAAM,CAAC,mBAAmB,EAAE,iCAAiC,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC;SACxC,MAAM,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAEhD,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnB,GAAG,CAAC,MAAM,CACR,UAAU,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;QACxC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;QACpE,IAAI,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;QAEtE,MAAM,OAAO,GAAG,YAAY,CAAC,6BAA6B,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACvF,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerPolymarketCommand(program: Command): void;
3
+ //# sourceMappingURL=polymarket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polymarket.d.ts","sourceRoot":"","sources":["../../src/commands/polymarket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2BhE"}
@@ -0,0 +1,32 @@
1
+ import chalk from "chalk";
2
+ import { executeTool } from "../api/tools.js";
3
+ import { startSpinner, formatResult, formatDuration, printJson, isJsonMode, wrapAction, addJsonOption } from "../utils.js";
4
+ export function registerPolymarketCommand(program) {
5
+ const cmd = program
6
+ .command("polymarket [query]")
7
+ .description("Polymarket prediction market insights")
8
+ .option("--type <type>", "Market type filter (e.g. crypto)")
9
+ .option("--token <token>", "Token to filter by");
10
+ addJsonOption(cmd);
11
+ cmd.action(wrapAction(async (query, _opts) => {
12
+ const opts = _opts;
13
+ const args = {};
14
+ if (query)
15
+ args.query = query;
16
+ if (opts.type)
17
+ args.type = opts.type;
18
+ if (opts.token)
19
+ args.token = opts.token;
20
+ const spinner = startSpinner("Fetching Polymarket insights…");
21
+ const result = await executeTool("polymarket_insight", args);
22
+ spinner.stop();
23
+ if (isJsonMode(opts)) {
24
+ printJson(result);
25
+ return;
26
+ }
27
+ console.log(chalk.bold(`\n Polymarket Insights ${formatDuration(result.durationMs)}\n`));
28
+ formatResult(result.result);
29
+ console.log();
30
+ }));
31
+ }
32
+ //# sourceMappingURL=polymarket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polymarket.js","sourceRoot":"","sources":["../../src/commands/polymarket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3H,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,uCAAuC,CAAC;SACpD,MAAM,CAAC,eAAe,EAAE,kCAAkC,CAAC;SAC3D,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;IAEnD,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnB,GAAG,CAAC,MAAM,CACR,UAAU,CAAC,KAAK,EAAE,KAAc,EAAE,KAAc,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,KAAe,CAAC;QACxC,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAExC,MAAM,OAAO,GAAG,YAAY,CAAC,+BAA+B,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1F,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerScanCommand(program: Command): void;
3
+ //# sourceMappingURL=scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyB1D"}
@@ -0,0 +1,27 @@
1
+ import chalk from "chalk";
2
+ import { executeTool } from "../api/tools.js";
3
+ import { startSpinner, formatResult, formatDuration, printJson, isJsonMode, wrapAction, addJsonOption } from "../utils.js";
4
+ export function registerScanCommand(program) {
5
+ const cmd = program
6
+ .command("scan <token>")
7
+ .description("Comprehensive token analysis (combo scan)")
8
+ .option("--token-address <addr>", "Token address (overrides positional)");
9
+ addJsonOption(cmd);
10
+ cmd.action(wrapAction(async (token, _opts) => {
11
+ const opts = _opts;
12
+ const args = {
13
+ token_address: opts.tokenAddress ?? token,
14
+ };
15
+ const spinner = startSpinner(`Scanning ${chalk.cyan(args.token_address)}…`);
16
+ const result = await executeTool("combo_token_analysis", args);
17
+ spinner.stop();
18
+ if (isJsonMode(opts)) {
19
+ printJson(result);
20
+ return;
21
+ }
22
+ console.log(chalk.bold(`\n Token Scan: ${chalk.cyan(args.token_address)} ${formatDuration(result.durationMs)}\n`));
23
+ formatResult(result.result);
24
+ console.log();
25
+ }));
26
+ }
27
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3H,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,2CAA2C,CAAC;SACxD,MAAM,CAAC,wBAAwB,EAAE,sCAAsC,CAAC,CAAC;IAE5E,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnB,GAAG,CAAC,MAAM,CACR,UAAU,CAAC,KAAK,EAAE,KAAc,EAAE,KAAc,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,IAAI,GAA4B;YACpC,aAAa,EAAG,IAAI,CAAC,YAAuB,IAAK,KAAgB;SAClE,CAAC;QAEF,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAuB,CAAC,GAAG,CAAC,CAAC;QACtF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAuB,CAAC,IAAI,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9H,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerSearchCommand(program: Command): void;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE5D"}
@@ -0,0 +1,66 @@
1
+ import chalk from "chalk";
2
+ import { executeTool } from "../api/tools.js";
3
+ import { startSpinner, formatResult, formatDuration, printJson, isJsonMode, wrapAction, addJsonOption } from "../utils.js";
4
+ export function registerSearchCommand(program) {
5
+ // ── perf (performance_scanner) ──
6
+ const perf = program
7
+ .command("perf")
8
+ .description("Token performance scanner")
9
+ .option("--top <n>", "Number of top tokens");
10
+ addJsonOption(perf);
11
+ perf.action(wrapAction(async (_opts) => {
12
+ const opts = _opts;
13
+ const args = {};
14
+ if (opts.top)
15
+ args.top = parseInt(opts.top, 10);
16
+ const spinner = startSpinner("Scanning performance…");
17
+ const result = await executeTool("performance_scanner", args);
18
+ spinner.stop();
19
+ if (isJsonMode(opts)) {
20
+ printJson(result);
21
+ return;
22
+ }
23
+ console.log(chalk.bold(`\n Performance Scanner ${formatDuration(result.durationMs)}\n`));
24
+ formatResult(result.result);
25
+ console.log();
26
+ }));
27
+ // ── unlock (token_unlock) ──
28
+ const unlock = program
29
+ .command("unlock <token>")
30
+ .description("Token unlock schedule");
31
+ addJsonOption(unlock);
32
+ unlock.action(wrapAction(async (token, _opts) => {
33
+ const opts = _opts;
34
+ const args = { token: token };
35
+ const spinner = startSpinner(`Fetching unlock schedule for ${chalk.cyan(token)}…`);
36
+ const result = await executeTool("token_unlock", args);
37
+ spinner.stop();
38
+ if (isJsonMode(opts)) {
39
+ printJson(result);
40
+ return;
41
+ }
42
+ console.log(chalk.bold(`\n Token Unlock: ${chalk.cyan(token)} ${formatDuration(result.durationMs)}\n`));
43
+ formatResult(result.result);
44
+ console.log();
45
+ }));
46
+ // ── ner (ner_detection) ──
47
+ const ner = program
48
+ .command("ner <text>")
49
+ .description("Named entity recognition for crypto text");
50
+ addJsonOption(ner);
51
+ ner.action(wrapAction(async (text, _opts) => {
52
+ const opts = _opts;
53
+ const args = { text: text };
54
+ const spinner = startSpinner("Detecting entities…");
55
+ const result = await executeTool("ner_detection", args);
56
+ spinner.stop();
57
+ if (isJsonMode(opts)) {
58
+ printJson(result);
59
+ return;
60
+ }
61
+ console.log(chalk.bold(`\n NER Detection ${formatDuration(result.durationMs)}\n`));
62
+ formatResult(result.result);
63
+ console.log();
64
+ }));
65
+ }
66
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerTechnicalCommand(program: Command): void;
3
+ //# sourceMappingURL=technical.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"technical.d.ts","sourceRoot":"","sources":["../../src/commands/technical.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgE/D"}
@@ -0,0 +1,55 @@
1
+ import chalk from "chalk";
2
+ import { executeTool } from "../api/tools.js";
3
+ import { startSpinner, formatResult, formatDuration, printJson, isJsonMode, wrapAction, addJsonOption } from "../utils.js";
4
+ import { loadConfig } from "../config.js";
5
+ export function registerTechnicalCommand(program) {
6
+ const cmd = program
7
+ .command("ta <token>")
8
+ .description("Technical analysis for a token")
9
+ .option("--timeframe <tf>", "Timeframe (e.g. 1h, 4h, 1d)")
10
+ .option("--token-address <addr>", "Token address (overrides positional)");
11
+ addJsonOption(cmd);
12
+ cmd.action(wrapAction(async (token, _opts) => {
13
+ const opts = _opts;
14
+ const config = loadConfig();
15
+ const args = {
16
+ token_address: opts.tokenAddress ?? token,
17
+ timeframe: opts.timeframe ?? config.defaultTimeframe,
18
+ };
19
+ const spinner = startSpinner(`Analyzing ${chalk.cyan(args.token_address)}…`);
20
+ const result = await executeTool("technical_analysis", args);
21
+ spinner.stop();
22
+ if (isJsonMode(opts)) {
23
+ printJson(result);
24
+ return;
25
+ }
26
+ console.log(chalk.bold(`\n Technical Analysis: ${chalk.cyan(args.token_address)} ${formatDuration(result.durationMs)}\n`));
27
+ formatResult(result.result);
28
+ console.log();
29
+ }));
30
+ // kline command
31
+ const klineCmd = program
32
+ .command("kline <token>")
33
+ .description("Kline/candlestick analysis for a token")
34
+ .option("--timeframe <tf>", "Timeframe (e.g. 1h, 4h, 1d)");
35
+ addJsonOption(klineCmd);
36
+ klineCmd.action(wrapAction(async (token, _opts) => {
37
+ const opts = _opts;
38
+ const config = loadConfig();
39
+ const args = {
40
+ token_address: token,
41
+ timeframe: opts.timeframe ?? config.defaultTimeframe,
42
+ };
43
+ const spinner = startSpinner(`Fetching kline for ${chalk.cyan(token)}…`);
44
+ const result = await executeTool("kline_analysis", args);
45
+ spinner.stop();
46
+ if (isJsonMode(opts)) {
47
+ printJson(result);
48
+ return;
49
+ }
50
+ console.log(chalk.bold(`\n Kline Analysis: ${chalk.cyan(token)} ${formatDuration(result.durationMs)}\n`));
51
+ formatResult(result.result);
52
+ console.log();
53
+ }));
54
+ }
55
+ //# sourceMappingURL=technical.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"technical.js","sourceRoot":"","sources":["../../src/commands/technical.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerToolsCommand(program: Command): void;
3
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsE3D"}
@@ -0,0 +1,68 @@
1
+ import chalk from "chalk";
2
+ import { getToolList } from "../api/tools.js";
3
+ import { startSpinner, makeTable, truncate, printJson, isJsonMode, wrapAction, addJsonOption } from "../utils.js";
4
+ function getParamCount(tool) {
5
+ return Object.keys(tool.inputSchema.properties ?? {}).length;
6
+ }
7
+ export function registerToolsCommand(program) {
8
+ const cmd = program
9
+ .command("tools")
10
+ .description("List all available analysis tools")
11
+ .option("--verbose", "Show full descriptions and input schemas")
12
+ .option("--filter <keyword>", "Filter tools by name or description");
13
+ addJsonOption(cmd);
14
+ cmd.action(wrapAction(async (_opts) => {
15
+ const opts = _opts;
16
+ const spinner = startSpinner("Fetching tools…");
17
+ const tools = await getToolList();
18
+ spinner.stop();
19
+ let filtered = tools;
20
+ if (opts.filter) {
21
+ const kw = String(opts.filter).toLowerCase();
22
+ filtered = tools.filter((t) => t.name.toLowerCase().includes(kw) || t.description.toLowerCase().includes(kw));
23
+ }
24
+ if (isJsonMode(opts)) {
25
+ printJson(filtered);
26
+ return;
27
+ }
28
+ if (filtered.length === 0) {
29
+ console.log(chalk.yellow("No tools found."));
30
+ return;
31
+ }
32
+ console.log(chalk.bold(`\n Available Tools (${filtered.length})\n`));
33
+ if (opts.verbose) {
34
+ for (const tool of filtered) {
35
+ console.log(chalk.cyan.bold(` ${tool.name}`));
36
+ console.log(chalk.white(` ${tool.description}`));
37
+ const props = tool.inputSchema.properties ?? {};
38
+ const required = tool.inputSchema.required ?? [];
39
+ const propKeys = Object.keys(props);
40
+ if (propKeys.length > 0) {
41
+ console.log(chalk.dim(" Parameters:"));
42
+ for (const pName of propKeys) {
43
+ const p = props[pName];
44
+ const isReq = required.includes(pName);
45
+ const req = isReq ? chalk.red("*") : " ";
46
+ const def = p.default !== undefined ? chalk.dim(` (default: ${p.default})`) : "";
47
+ const enums = p.enum ? chalk.dim(` [${p.enum.join(", ")}]`) : "";
48
+ const pType = p.type ?? "any";
49
+ console.log(` ${req} ${chalk.yellow(pName)} ${chalk.dim(pType)}${def}${enums}`);
50
+ if (p.description) {
51
+ console.log(` ${chalk.dim(p.description)}`);
52
+ }
53
+ }
54
+ }
55
+ console.log();
56
+ }
57
+ }
58
+ else {
59
+ const rows = filtered.map((t) => [
60
+ chalk.yellow(t.name),
61
+ truncate(t.description, 60),
62
+ chalk.dim(String(getParamCount(t))),
63
+ ]);
64
+ console.log(makeTable(["Tool", "Description", "Params"], rows));
65
+ }
66
+ }));
67
+ }
68
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAElH,SAAS,aAAa,CAAC,IAAc;IACnC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,WAAW,EAAE,0CAA0C,CAAC;SAC/D,MAAM,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;IAEvE,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnB,GAAG,CAAC,MAAM,CACR,UAAU,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7C,QAAQ,GAAG,KAAK,CAAC,MAAM,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CACrF,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,QAAQ,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAEtE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBACpD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBAC1C,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;wBAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;wBACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACvC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;wBACzC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjF,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACjE,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC;wBAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,CAAC,CAAC;wBACrF,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;4BAClB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wBACrD,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC/B,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gBACpB,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC3B,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;aACpC,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerTrendingCommand(program: Command): void;
3
+ //# sourceMappingURL=trending.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trending.d.ts","sourceRoot":"","sources":["../../src/commands/trending.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8B9D"}
@@ -0,0 +1,31 @@
1
+ import chalk from "chalk";
2
+ import { executeTool } from "../api/tools.js";
3
+ import { startSpinner, formatResult, formatDuration, printJson, isJsonMode, wrapAction, addJsonOption } from "../utils.js";
4
+ import { loadConfig } from "../config.js";
5
+ export function registerTrendingCommand(program) {
6
+ const cmd = program
7
+ .command("trending")
8
+ .description("Discover trending tokens")
9
+ .option("--limit <n>", "Number of results");
10
+ addJsonOption(cmd);
11
+ cmd.action(wrapAction(async (_opts) => {
12
+ const opts = _opts;
13
+ const config = loadConfig();
14
+ const args = {};
15
+ if (opts.limit)
16
+ args.limit = parseInt(opts.limit, 10);
17
+ else
18
+ args.limit = config.defaultLimit;
19
+ const spinner = startSpinner("Discovering trending tokens…");
20
+ const result = await executeTool("trending_discovery", args);
21
+ spinner.stop();
22
+ if (isJsonMode(opts)) {
23
+ printJson(result);
24
+ return;
25
+ }
26
+ console.log(chalk.bold(`\n Trending Tokens ${formatDuration(result.durationMs)}\n`));
27
+ formatResult(result.result);
28
+ console.log();
29
+ }));
30
+ }
31
+ //# sourceMappingURL=trending.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trending.js","sourceRoot":"","sources":["../../src/commands/trending.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3H,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAE9C,aAAa,CAAC,GAAG,CAAC,CAAC;IAEnB,GAAG,CAAC,MAAM,CACR,UAAU,CAAC,KAAK,EAAE,KAAc,EAAE,EAAE;QAClC,MAAM,IAAI,GAAG,KAAgC,CAAC;QAC9C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAe,EAAE,EAAE,CAAC,CAAC;;YAC3D,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC;QAEtC,MAAM,OAAO,GAAG,YAAY,CAAC,8BAA8B,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,SAAS,CAAC,MAAM,CAAC,CAAC;YAClB,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACtF,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type TnConfig } from "./types.js";
2
+ export declare function loadConfig(): TnConfig;
3
+ export declare function saveConfig(config: Partial<TnConfig>): void;
4
+ export declare function getBaseUrl(): string;
5
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAK3D,wBAAgB,UAAU,IAAI,QAAQ,CAUrC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,IAAI,CAK1D;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
package/dist/config.js ADDED
@@ -0,0 +1,28 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { DEFAULT_CONFIG } from "./types.js";
5
+ const CONFIG_DIR = join(homedir(), ".truenorth");
6
+ const CONFIG_FILE = join(CONFIG_DIR, "config.json");
7
+ export function loadConfig() {
8
+ try {
9
+ if (existsSync(CONFIG_FILE)) {
10
+ const raw = readFileSync(CONFIG_FILE, "utf-8");
11
+ return { ...DEFAULT_CONFIG, ...JSON.parse(raw) };
12
+ }
13
+ }
14
+ catch {
15
+ // Fall through to defaults
16
+ }
17
+ return { ...DEFAULT_CONFIG };
18
+ }
19
+ export function saveConfig(config) {
20
+ mkdirSync(CONFIG_DIR, { recursive: true });
21
+ const current = loadConfig();
22
+ const merged = { ...current, ...config };
23
+ writeFileSync(CONFIG_FILE, JSON.stringify(merged, null, 2) + "\n");
24
+ }
25
+ export function getBaseUrl() {
26
+ return process.env.TN_BASE_URL ?? loadConfig().baseUrl;
27
+ }
28
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAE3D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACjD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;IAC7B,CAAC;IACD,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAyB;IAClD,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,EAAE,CAAC;IACzC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC,OAAO,CAAC;AACzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}