@marketmotion/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 (90) hide show
  1. package/README.md +151 -0
  2. package/dist/bin/motion.d.ts +3 -0
  3. package/dist/bin/motion.d.ts.map +1 -0
  4. package/dist/bin/motion.js +42 -0
  5. package/dist/bin/motion.js.map +1 -0
  6. package/dist/src/client/api.d.ts +120 -0
  7. package/dist/src/client/api.d.ts.map +1 -0
  8. package/dist/src/client/api.js +212 -0
  9. package/dist/src/client/api.js.map +1 -0
  10. package/dist/src/commands/alerts.d.ts +3 -0
  11. package/dist/src/commands/alerts.d.ts.map +1 -0
  12. package/dist/src/commands/alerts.js +128 -0
  13. package/dist/src/commands/alerts.js.map +1 -0
  14. package/dist/src/commands/arb.d.ts +3 -0
  15. package/dist/src/commands/arb.d.ts.map +1 -0
  16. package/dist/src/commands/arb.js +61 -0
  17. package/dist/src/commands/arb.js.map +1 -0
  18. package/dist/src/commands/auth.d.ts +3 -0
  19. package/dist/src/commands/auth.d.ts.map +1 -0
  20. package/dist/src/commands/auth.js +116 -0
  21. package/dist/src/commands/auth.js.map +1 -0
  22. package/dist/src/commands/entities.d.ts +3 -0
  23. package/dist/src/commands/entities.d.ts.map +1 -0
  24. package/dist/src/commands/entities.js +56 -0
  25. package/dist/src/commands/entities.js.map +1 -0
  26. package/dist/src/commands/entity.d.ts +3 -0
  27. package/dist/src/commands/entity.d.ts.map +1 -0
  28. package/dist/src/commands/entity.js +58 -0
  29. package/dist/src/commands/entity.js.map +1 -0
  30. package/dist/src/commands/graph.d.ts +3 -0
  31. package/dist/src/commands/graph.d.ts.map +1 -0
  32. package/dist/src/commands/graph.js +48 -0
  33. package/dist/src/commands/graph.js.map +1 -0
  34. package/dist/src/commands/markets.d.ts +3 -0
  35. package/dist/src/commands/markets.d.ts.map +1 -0
  36. package/dist/src/commands/markets.js +132 -0
  37. package/dist/src/commands/markets.js.map +1 -0
  38. package/dist/src/commands/news.d.ts +3 -0
  39. package/dist/src/commands/news.d.ts.map +1 -0
  40. package/dist/src/commands/news.js +88 -0
  41. package/dist/src/commands/news.js.map +1 -0
  42. package/dist/src/commands/webhook.d.ts +3 -0
  43. package/dist/src/commands/webhook.d.ts.map +1 -0
  44. package/dist/src/commands/webhook.js +165 -0
  45. package/dist/src/commands/webhook.js.map +1 -0
  46. package/dist/src/config.d.ts +14 -0
  47. package/dist/src/config.d.ts.map +1 -0
  48. package/dist/src/config.js +27 -0
  49. package/dist/src/config.js.map +1 -0
  50. package/dist/src/formatters/json.d.ts +2 -0
  51. package/dist/src/formatters/json.d.ts.map +1 -0
  52. package/dist/src/formatters/json.js +4 -0
  53. package/dist/src/formatters/json.js.map +1 -0
  54. package/dist/src/formatters/table.d.ts +11 -0
  55. package/dist/src/formatters/table.d.ts.map +1 -0
  56. package/dist/src/formatters/table.js +554 -0
  57. package/dist/src/formatters/table.js.map +1 -0
  58. package/dist/src/types.d.ts +243 -0
  59. package/dist/src/types.d.ts.map +1 -0
  60. package/dist/src/types.js +3 -0
  61. package/dist/src/types.js.map +1 -0
  62. package/dist/src/ui/AlertFeed.d.ts +8 -0
  63. package/dist/src/ui/AlertFeed.d.ts.map +1 -0
  64. package/dist/src/ui/AlertFeed.js +68 -0
  65. package/dist/src/ui/AlertFeed.js.map +1 -0
  66. package/dist/src/ui/ArbPanel.d.ts +8 -0
  67. package/dist/src/ui/ArbPanel.d.ts.map +1 -0
  68. package/dist/src/ui/ArbPanel.js +61 -0
  69. package/dist/src/ui/ArbPanel.js.map +1 -0
  70. package/dist/src/ui/Dashboard.d.ts +2 -0
  71. package/dist/src/ui/Dashboard.d.ts.map +1 -0
  72. package/dist/src/ui/Dashboard.js +127 -0
  73. package/dist/src/ui/Dashboard.js.map +1 -0
  74. package/dist/src/ui/EntityDetail.d.ts +8 -0
  75. package/dist/src/ui/EntityDetail.d.ts.map +1 -0
  76. package/dist/src/ui/EntityDetail.js +152 -0
  77. package/dist/src/ui/EntityDetail.js.map +1 -0
  78. package/dist/src/ui/MarketTable.d.ts +9 -0
  79. package/dist/src/ui/MarketTable.d.ts.map +1 -0
  80. package/dist/src/ui/MarketTable.js +90 -0
  81. package/dist/src/ui/MarketTable.js.map +1 -0
  82. package/dist/src/ui/Spinner.d.ts +7 -0
  83. package/dist/src/ui/Spinner.d.ts.map +1 -0
  84. package/dist/src/ui/Spinner.js +7 -0
  85. package/dist/src/ui/Spinner.js.map +1 -0
  86. package/dist/src/utils/auth.d.ts +4 -0
  87. package/dist/src/utils/auth.d.ts.map +1 -0
  88. package/dist/src/utils/auth.js +17 -0
  89. package/dist/src/utils/auth.js.map +1 -0
  90. package/package.json +70 -0
package/README.md ADDED
@@ -0,0 +1,151 @@
1
+ # @marketmotion/cli
2
+
3
+ Intelligence terminal for prediction markets. Search 17,000+ entities, scan cross-venue arbitrage, monitor real-time alerts, and explore the entity graph — all from your terminal.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@marketmotion/cli)](https://www.npmjs.com/package/@marketmotion/cli)
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g @marketmotion/cli
11
+ ```
12
+
13
+ ## Quick Start
14
+
15
+ 1. Get your API key at [marketmotion.xyz/developer](https://marketmotion.xyz/developer)
16
+ 2. Authenticate:
17
+ ```bash
18
+ motion auth login <your-api-key>
19
+ ```
20
+ 3. Start exploring:
21
+ ```bash
22
+ motion entities search "LeBron James"
23
+ motion markets trending
24
+ motion arb scan --min-spread 3
25
+ ```
26
+
27
+ ## Commands
28
+
29
+ | Command | Description |
30
+ |---------|-------------|
31
+ | `motion auth login <key>` | Authenticate with your API key |
32
+ | `motion auth logout` | Remove stored credentials |
33
+ | `motion auth status` | Show current auth status and usage |
34
+ | `motion auth signup` | Open the developer portal to get an API key |
35
+ | `motion entities search <query>` | Search 17K+ entities (people, teams, orgs, assets) |
36
+ | `motion entity <slug>` | Get detailed entity profile with attributes |
37
+ | `motion markets trending` | Top trending and high-volume markets |
38
+ | `motion markets search <query>` | Search markets across Polymarket, Kalshi, Hyperliquid |
39
+ | `motion markets filter` | Filter markets by category and sort |
40
+ | `motion alerts list` | List recent alerts (injury, arb, political, etc.) |
41
+ | `motion alerts watch` | Live alert feed with polling |
42
+ | `motion arb scan` | Scan for cross-venue mispricings |
43
+ | `motion news trending` | Top market-relevant news |
44
+ | `motion news entity <name>` | News for a specific entity |
45
+ | `motion graph <slug>` | Explore entity relationship graph |
46
+ | `motion webhook list` | List configured webhooks |
47
+ | `motion webhook create <url>` | Create a webhook endpoint |
48
+ | `motion webhook delete <id>` | Delete a webhook |
49
+ | `motion dashboard` | Interactive TUI dashboard |
50
+
51
+ All commands support `--json` for raw JSON output and `--help` for usage details.
52
+
53
+ ## Authentication
54
+
55
+ Market Motion CLI requires an API key for all data commands. Keys are created through the developer portal.
56
+
57
+ 1. Visit [marketmotion.xyz/developer](https://marketmotion.xyz/developer)
58
+ 2. Create a free account and generate an API key
59
+ 3. Run `motion auth login <key>` or set `MOTION_API_KEY` as an environment variable
60
+
61
+ ```bash
62
+ # Store key in config
63
+ motion auth login mt_live_abc123
64
+
65
+ # Or use environment variable
66
+ export MOTION_API_KEY=mt_live_abc123
67
+
68
+ # Or pipe it in
69
+ echo "mt_live_abc123" | motion auth login
70
+ ```
71
+
72
+ ## Configuration
73
+
74
+ | Variable | Description | Default |
75
+ |----------|-------------|---------|
76
+ | `MOTION_API_KEY` | API key (overrides stored config) | — |
77
+ | `MOTION_API_URL` | Base API URL | `https://api.marketmotion.xyz` |
78
+
79
+ Config is stored at `~/.config/motion/config.json` (managed by the `conf` package).
80
+
81
+ ## Examples
82
+
83
+ ### Entity Intelligence
84
+
85
+ ```bash
86
+ # Search entities across categories
87
+ motion entities search "Trump" --category politics
88
+ motion entities search "Bitcoin" --type asset
89
+
90
+ # Get full entity profile
91
+ motion entity donald-trump
92
+ motion entity nba-lal --markets --json
93
+ ```
94
+
95
+ ### Market Discovery
96
+
97
+ ```bash
98
+ # Browse trending markets
99
+ motion markets trending
100
+
101
+ # Search across venues
102
+ motion markets search "election" --venue polymarket
103
+
104
+ # Filter and sort
105
+ motion markets filter --category crypto --sort volume --limit 10
106
+ ```
107
+
108
+ ### Arbitrage Scanning
109
+
110
+ ```bash
111
+ # Find mispricings across Polymarket + Kalshi
112
+ motion arb scan --min-spread 3 --actionable
113
+
114
+ # Filter by category
115
+ motion arb scan --category politics --min-spread 5
116
+ ```
117
+
118
+ ### Real-Time Alerts
119
+
120
+ ```bash
121
+ # Latest alerts
122
+ motion alerts list --type injury
123
+
124
+ # Live feed
125
+ motion alerts watch --type arbitrage,injury --interval 15
126
+ ```
127
+
128
+ ### Entity Graph
129
+
130
+ ```bash
131
+ # Explore relationships
132
+ motion graph donald-trump --depth 2
133
+
134
+ # JSON output for piping
135
+ motion graph nba-lal --json | jq '.nodes | length'
136
+ ```
137
+
138
+ ### Webhooks
139
+
140
+ ```bash
141
+ # Set up real-time event delivery
142
+ motion webhook create https://api.example.com/hooks --events alert.injury,alert.arbitrage
143
+ motion webhook list
144
+ motion webhook deliveries <webhook-id>
145
+ ```
146
+
147
+ ## Links
148
+
149
+ - [API Documentation](https://docs.marketmotion.xyz)
150
+ - [Web App](https://marketmotion.xyz)
151
+ - [Developer Portal](https://marketmotion.xyz/developer)
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=motion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../bin/motion.ts"],"names":[],"mappings":""}
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { registerAuthCommand } from '../src/commands/auth.js';
4
+ import { registerEntitiesCommand } from '../src/commands/entities.js';
5
+ import { registerEntityCommand } from '../src/commands/entity.js';
6
+ import { registerMarketsCommand } from '../src/commands/markets.js';
7
+ import { registerAlertsCommand } from '../src/commands/alerts.js';
8
+ import { registerArbCommand } from '../src/commands/arb.js';
9
+ import { registerNewsCommand } from '../src/commands/news.js';
10
+ import { registerGraphCommand } from '../src/commands/graph.js';
11
+ import { registerWebhookCommand } from '../src/commands/webhook.js';
12
+ import { requireAuth } from '../src/utils/auth.js';
13
+ const program = new Command();
14
+ program
15
+ .name('motion')
16
+ .description('Market Motion CLI — Intelligence terminal for prediction markets')
17
+ .version('0.1.0');
18
+ // Register all commands
19
+ registerAuthCommand(program);
20
+ registerEntitiesCommand(program);
21
+ registerEntityCommand(program);
22
+ registerMarketsCommand(program);
23
+ registerAlertsCommand(program);
24
+ registerArbCommand(program);
25
+ registerNewsCommand(program);
26
+ registerGraphCommand(program);
27
+ registerWebhookCommand(program);
28
+ // Dashboard command (lazy-loaded since it pulls in ink/react)
29
+ program
30
+ .command('dashboard')
31
+ .description('Interactive TUI dashboard')
32
+ .action(async () => {
33
+ requireAuth();
34
+ const { renderDashboard } = await import('../src/ui/Dashboard.js');
35
+ renderDashboard();
36
+ });
37
+ // If no command given, show help
38
+ program.parse(process.argv);
39
+ if (program.args.length === 0 && process.argv.length <= 2) {
40
+ program.help();
41
+ }
42
+ //# sourceMappingURL=motion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.js","sourceRoot":"","sources":["../../bin/motion.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,kEAAkE,CAAC;KAC/E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,wBAAwB;AACxB,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,uBAAuB,CAAC,OAAO,CAAC,CAAC;AACjC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAEhC,8DAA8D;AAC9D,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,WAAW,EAAE,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IACnE,eAAe,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEL,iCAAiC;AACjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;IAC1D,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
@@ -0,0 +1,120 @@
1
+ import type { EntityFullResponse, EntitySearchResult, CuratedMarkets, MarketFilterResult, MarketSearchResult, AlertInbox, NewsItem, GraphResult, MispricingResult, Webhook, WebhookDelivery, MoversResult, ApiKeyInfo } from '../types.js';
2
+ export declare class ApiError extends Error {
3
+ status: number;
4
+ body?: unknown | undefined;
5
+ constructor(status: number, message: string, body?: unknown | undefined);
6
+ }
7
+ export declare class MotionClient {
8
+ private apiKey;
9
+ private baseUrl;
10
+ constructor(apiKey?: string, baseUrl?: string);
11
+ private request;
12
+ validateKey(): Promise<{
13
+ success: boolean;
14
+ key?: ApiKeyInfo;
15
+ }>;
16
+ searchEntities(q: string, opts?: {
17
+ category?: string;
18
+ type?: string;
19
+ limit?: number;
20
+ cursor?: string;
21
+ }): Promise<EntitySearchResult>;
22
+ getEntity(slug: string): Promise<EntityFullResponse>;
23
+ getEntityGraph(slug: string, opts?: {
24
+ depth?: number;
25
+ includeMarkets?: boolean;
26
+ maxNodes?: number;
27
+ }): Promise<GraphResult>;
28
+ getEntityRelated(slug: string, opts?: {
29
+ depth?: number;
30
+ types?: string;
31
+ }): Promise<{
32
+ success: boolean;
33
+ entity: unknown;
34
+ relatedEntities: unknown[];
35
+ }>;
36
+ getCuratedMarkets(): Promise<CuratedMarkets>;
37
+ searchMarkets(q: string, opts?: {
38
+ venue?: string;
39
+ limit?: number;
40
+ }): Promise<MarketSearchResult>;
41
+ filterMarkets(opts?: {
42
+ category?: string;
43
+ sort?: string;
44
+ order?: string;
45
+ search?: string;
46
+ type?: string;
47
+ limit?: number;
48
+ offset?: number;
49
+ }): Promise<MarketFilterResult>;
50
+ getAlerts(opts?: {
51
+ type?: string;
52
+ limit?: number;
53
+ offset?: number;
54
+ }): Promise<{
55
+ success: boolean;
56
+ data: AlertInbox;
57
+ }>;
58
+ getTrendingNews(limit?: number): Promise<{
59
+ success: boolean;
60
+ data: NewsItem[];
61
+ }>;
62
+ getEntityNews(slugOrName: string, opts?: {
63
+ limit?: number;
64
+ }): Promise<{
65
+ success: boolean;
66
+ data: {
67
+ entity: {
68
+ slug: string;
69
+ displayName: string;
70
+ };
71
+ items: NewsItem[];
72
+ total: number;
73
+ };
74
+ }>;
75
+ getMovers(opts?: {
76
+ scope?: string;
77
+ window?: number;
78
+ limit?: number;
79
+ }): Promise<MoversResult>;
80
+ getMispricings(opts?: {
81
+ minSpread?: number;
82
+ category?: string;
83
+ limit?: number;
84
+ actionableOnly?: boolean;
85
+ }): Promise<MispricingResult>;
86
+ getEntityNeighborhood(entityId: string, opts?: {
87
+ depth?: number;
88
+ limit?: number;
89
+ }): Promise<MoversResult>;
90
+ listWebhooks(): Promise<{
91
+ success: boolean;
92
+ data: Webhook[];
93
+ }>;
94
+ createWebhook(url: string, events: string[], description?: string): Promise<{
95
+ success: boolean;
96
+ data: {
97
+ id: string;
98
+ secret: string;
99
+ message: string;
100
+ };
101
+ }>;
102
+ deleteWebhook(id: string): Promise<{
103
+ success: boolean;
104
+ message: string;
105
+ }>;
106
+ getWebhookDeliveries(id: string, opts?: {
107
+ limit?: number;
108
+ offset?: number;
109
+ }): Promise<{
110
+ success: boolean;
111
+ data: WebhookDelivery[];
112
+ pagination: {
113
+ limit: number;
114
+ offset: number;
115
+ total: number;
116
+ };
117
+ }>;
118
+ }
119
+ export declare function createClient(apiKey?: string, baseUrl?: string): MotionClient;
120
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/client/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ import { getApiKey, getBaseUrl } from '../config.js';
2
+ export class ApiError extends Error {
3
+ status;
4
+ body;
5
+ constructor(status, message, body) {
6
+ super(message);
7
+ this.status = status;
8
+ this.body = body;
9
+ this.name = 'ApiError';
10
+ }
11
+ }
12
+ export class MotionClient {
13
+ apiKey;
14
+ baseUrl;
15
+ constructor(apiKey, baseUrl) {
16
+ this.apiKey = apiKey || getApiKey() || '';
17
+ this.baseUrl = baseUrl || getBaseUrl();
18
+ }
19
+ async request(path, options = {}) {
20
+ const url = `${this.baseUrl}${path}`;
21
+ const headers = {
22
+ 'Content-Type': 'application/json',
23
+ ...options.headers,
24
+ };
25
+ if (this.apiKey) {
26
+ headers['X-API-Key'] = this.apiKey;
27
+ }
28
+ const response = await fetch(url, {
29
+ ...options,
30
+ headers,
31
+ });
32
+ if (!response.ok) {
33
+ let body;
34
+ try {
35
+ body = await response.json();
36
+ }
37
+ catch {
38
+ body = await response.text();
39
+ }
40
+ if (response.status === 401) {
41
+ throw new ApiError(401, 'Authentication required. Run: motion auth login');
42
+ }
43
+ if (response.status === 403) {
44
+ throw new ApiError(403, 'Permission denied. Your API key may not have access to this resource.');
45
+ }
46
+ if (response.status === 429) {
47
+ throw new ApiError(429, 'Rate limit exceeded. Please try again later.');
48
+ }
49
+ throw new ApiError(response.status, `API error: ${response.status} ${response.statusText}`, body);
50
+ }
51
+ return response.json();
52
+ }
53
+ // ─── Auth ──────────────────────────────────────────────────────────────
54
+ async validateKey() {
55
+ try {
56
+ const res = await this.request('/api/developer/keys');
57
+ return { success: true, key: res.keys?.[0] };
58
+ }
59
+ catch (err) {
60
+ if (err instanceof ApiError && err.status === 401) {
61
+ return { success: false };
62
+ }
63
+ throw err;
64
+ }
65
+ }
66
+ // ─── Entities ──────────────────────────────────────────────────────────
67
+ async searchEntities(q, opts) {
68
+ const params = new URLSearchParams({ q });
69
+ if (opts?.category)
70
+ params.set('category', opts.category);
71
+ if (opts?.type)
72
+ params.set('type', opts.type);
73
+ if (opts?.limit)
74
+ params.set('limit', String(opts.limit));
75
+ if (opts?.cursor)
76
+ params.set('cursor', opts.cursor);
77
+ return this.request(`/api/entities?${params}`);
78
+ }
79
+ async getEntity(slug) {
80
+ return this.request(`/api/entities/${encodeURIComponent(slug)}/full?marketLimit=100`);
81
+ }
82
+ async getEntityGraph(slug, opts) {
83
+ const params = new URLSearchParams();
84
+ if (opts?.depth)
85
+ params.set('depth', String(opts.depth));
86
+ if (opts?.includeMarkets !== undefined)
87
+ params.set('includeMarkets', String(opts.includeMarkets));
88
+ if (opts?.maxNodes)
89
+ params.set('maxNodes', String(opts.maxNodes));
90
+ return this.request(`/api/entities/${encodeURIComponent(slug)}/graph?${params}`);
91
+ }
92
+ async getEntityRelated(slug, opts) {
93
+ const params = new URLSearchParams();
94
+ if (opts?.depth)
95
+ params.set('depth', String(opts.depth));
96
+ if (opts?.types)
97
+ params.set('types', opts.types);
98
+ return this.request(`/api/entities/${encodeURIComponent(slug)}/related?${params}`);
99
+ }
100
+ // ─── Markets ───────────────────────────────────────────────────────────
101
+ async getCuratedMarkets() {
102
+ return this.request('/api/markets/curated');
103
+ }
104
+ async searchMarkets(q, opts) {
105
+ const params = new URLSearchParams({ q });
106
+ if (opts?.venue)
107
+ params.set('venue', opts.venue);
108
+ if (opts?.limit)
109
+ params.set('limit', String(opts.limit));
110
+ return this.request(`/api/markets/search?${params}`);
111
+ }
112
+ async filterMarkets(opts) {
113
+ const params = new URLSearchParams();
114
+ if (opts?.category)
115
+ params.set('category', opts.category);
116
+ if (opts?.sort)
117
+ params.set('sort', opts.sort);
118
+ if (opts?.order)
119
+ params.set('order', opts.order);
120
+ if (opts?.search)
121
+ params.set('search', opts.search);
122
+ if (opts?.type)
123
+ params.set('type', opts.type);
124
+ if (opts?.limit)
125
+ params.set('limit', String(opts.limit));
126
+ if (opts?.offset)
127
+ params.set('offset', String(opts.offset));
128
+ return this.request(`/api/markets/filter?${params}`);
129
+ }
130
+ // ─── Alerts ────────────────────────────────────────────────────────────
131
+ async getAlerts(opts) {
132
+ const params = new URLSearchParams();
133
+ if (opts?.type)
134
+ params.set('type', opts.type);
135
+ if (opts?.limit)
136
+ params.set('limit', String(opts.limit));
137
+ if (opts?.offset)
138
+ params.set('offset', String(opts.offset));
139
+ return this.request(`/api/alerts/inbox?${params}`);
140
+ }
141
+ // ─── News ──────────────────────────────────────────────────────────────
142
+ async getTrendingNews(limit) {
143
+ const params = new URLSearchParams();
144
+ if (limit)
145
+ params.set('limit', String(limit));
146
+ return this.request(`/api/news/trending?${params}`);
147
+ }
148
+ async getEntityNews(slugOrName, opts) {
149
+ const params = new URLSearchParams();
150
+ if (opts?.limit)
151
+ params.set('limit', String(opts.limit));
152
+ return this.request(`/api/news/entity/${encodeURIComponent(slugOrName)}?${params}`);
153
+ }
154
+ // ─── Graph / Movers / Mispricings ─────────────────────────────────────
155
+ async getMovers(opts) {
156
+ const params = new URLSearchParams();
157
+ if (opts?.scope)
158
+ params.set('scope', opts.scope);
159
+ if (opts?.window)
160
+ params.set('window', String(opts.window));
161
+ if (opts?.limit)
162
+ params.set('limit', String(opts.limit));
163
+ return this.request(`/api/graph/movers?${params}`);
164
+ }
165
+ async getMispricings(opts) {
166
+ const params = new URLSearchParams();
167
+ if (opts?.minSpread)
168
+ params.set('minSpread', String(opts.minSpread));
169
+ if (opts?.category)
170
+ params.set('category', opts.category);
171
+ if (opts?.limit)
172
+ params.set('limit', String(opts.limit));
173
+ if (opts?.actionableOnly)
174
+ params.set('actionableOnly', 'true');
175
+ return this.request(`/api/graph/mispricings?${params}`);
176
+ }
177
+ async getEntityNeighborhood(entityId, opts) {
178
+ const params = new URLSearchParams();
179
+ if (opts?.depth)
180
+ params.set('depth', String(opts.depth));
181
+ if (opts?.limit)
182
+ params.set('limit', String(opts.limit));
183
+ return this.request(`/api/graph/entity/${encodeURIComponent(entityId)}/neighborhood?${params}`);
184
+ }
185
+ // ─── Webhooks (B2B) ───────────────────────────────────────────────────
186
+ async listWebhooks() {
187
+ return this.request('/api/b2b/webhooks');
188
+ }
189
+ async createWebhook(url, events, description) {
190
+ return this.request('/api/b2b/webhooks', {
191
+ method: 'POST',
192
+ body: JSON.stringify({ url, events, description }),
193
+ });
194
+ }
195
+ async deleteWebhook(id) {
196
+ return this.request(`/api/b2b/webhooks/${encodeURIComponent(id)}`, {
197
+ method: 'DELETE',
198
+ });
199
+ }
200
+ async getWebhookDeliveries(id, opts) {
201
+ const params = new URLSearchParams();
202
+ if (opts?.limit)
203
+ params.set('limit', String(opts.limit));
204
+ if (opts?.offset)
205
+ params.set('offset', String(opts.offset));
206
+ return this.request(`/api/b2b/webhooks/${encodeURIComponent(id)}/deliveries?${params}`);
207
+ }
208
+ }
209
+ export function createClient(apiKey, baseUrl) {
210
+ return new MotionClient(apiKey, baseUrl);
211
+ }
212
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/client/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerAlertsCommand(program: Command): void;
3
+ //# sourceMappingURL=alerts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts.d.ts","sourceRoot":"","sources":["../../../src/commands/alerts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqI5D"}