vibe-cli 0.2.2__tar.gz → 0.2.5__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: vibe-cli
3
- Version: 0.2.2
3
+ Version: 0.2.5
4
4
  Summary: VIBE Airforce CLI — Web3 trading and data at your fingertips
5
5
  License: MIT
6
6
  Requires-Python: >=3.10
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vibe-cli"
7
- version = "0.2.2"
7
+ version = "0.2.5"
8
8
  description = "VIBE Airforce CLI — Web3 trading and data at your fingertips"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -1,3 +1,3 @@
1
1
  """VIBE Airforce CLI — Web3 trading and data at your fingertips."""
2
2
 
3
- __version__ = "0.2.2"
3
+ __version__ = "0.2.5"
@@ -136,12 +136,45 @@ class VibeClient:
136
136
  body = {"name": name, "symbol": symbol, "description": description, "image_url": image_url, **kwargs}
137
137
  return self.request_sync("POST", "/vibe-tools/bags/launch-token", body)
138
138
 
139
- def bags_claim_fees(self, token_mint: str) -> dict:
140
- return self.request_sync("POST", "/vibe-tools/bags/claim-fees", {"token_mint": token_mint})
139
+ def bags_claim_fees(self, token_mint: str, **kwargs) -> dict:
140
+ body = {"token_mint": token_mint, **kwargs}
141
+ return self.request_sync("POST", "/vibe-tools/bags/claim-fees", body)
141
142
 
142
143
  def bags_positions(self) -> dict:
143
144
  return self.request_sync("GET", "/vibe-tools/bags/positions")
144
145
 
146
+ # --- pump.fun ---
147
+
148
+ def pump_create_coin(self, name: str, symbol: str, description: str, image_url: str, **kwargs) -> dict:
149
+ body = {"name": name, "symbol": symbol, "description": description, "image_url": image_url, **kwargs}
150
+ return self.request_sync("POST", "/vibe-tools/pump/create-coin", body)
151
+
152
+ def pump_swap(self, input_mint: str, output_mint: str, amount: int, **kwargs) -> dict:
153
+ body = {"input_mint": input_mint, "output_mint": output_mint, "amount": amount, **kwargs}
154
+ return self.request_sync("POST", "/vibe-tools/pump/swap", body)
155
+
156
+ def pump_coin_info(self, mint: str) -> dict:
157
+ return self.request_sync("GET", f"/vibe-tools/pump/coin/{mint}")
158
+
159
+ def pump_claim_fees(self, mint: str, **kwargs) -> dict:
160
+ body = {"mint": mint, **kwargs}
161
+ return self.request_sync("POST", "/vibe-tools/pump/claim-fees", body)
162
+
163
+ def pump_fee_sharing(self, mint: str, shareholders: list, **kwargs) -> dict:
164
+ body = {"mint": mint, "shareholders": shareholders, **kwargs}
165
+ return self.request_sync("POST", "/vibe-tools/pump/fee-sharing", body)
166
+
167
+ def pump_positions(self) -> dict:
168
+ return self.request_sync("GET", "/vibe-tools/pump/positions")
169
+
170
+ def pump_accept_payment(self, token_mint: str, currency_mint: str, amount: int, **kwargs) -> dict:
171
+ body = {"token_mint": token_mint, "currency_mint": currency_mint, "amount": amount, **kwargs}
172
+ return self.request_sync("POST", "/vibe-tools/pump/accept-payment", body)
173
+
174
+ def pump_verify_payment(self, mint: str, currency_mint: str, amount: int, **kwargs) -> dict:
175
+ body = {"mint": mint, "currency_mint": currency_mint, "amount": amount, **kwargs}
176
+ return self.request_sync("POST", "/vibe-tools/pump/verify-payment", body)
177
+
145
178
  # --- Token Leaderboard (public, no auth needed) ---
146
179
 
147
180
  def tokens_list(
@@ -314,22 +314,28 @@ def bags_launch_token(
314
314
  symbol: str = typer.Option(..., "--symbol", help="Token symbol"),
315
315
  description: str = typer.Option(..., "--description", help="Token description"),
316
316
  image_url: str = typer.Option(..., "--image-url", help="Token image URL (https)"),
317
+ no_auto_sign: bool = typer.Option(False, "--no-auto-sign", help="Return unsigned tx instead of auto-signing"),
317
318
  output: str = typer.Option("table", "-o", "--output", help="Output format: table, json, raw"),
318
319
  field: Optional[str] = typer.Option(None, "-f", "--field", help="Extract nested field"),
319
320
  ):
320
321
  """Launch a token on bags.fm."""
321
322
  params: dict = {"name": name, "symbol": symbol, "description": description, "image_url": image_url}
323
+ if no_auto_sign:
324
+ params["auto_sign"] = False
322
325
  execute_operation("POST /vibe-tools/bags/launch-token", params, output, field)
323
326
 
324
327
 
325
328
  @app.command(name="bags-claim-fees")
326
329
  def bags_claim_fees(
327
330
  token_mint: str = typer.Option(..., "--token-mint", help="Token mint address"),
331
+ no_auto_sign: bool = typer.Option(False, "--no-auto-sign", help="Return unsigned tx instead of auto-signing"),
328
332
  output: str = typer.Option("table", "-o", "--output", help="Output format: table, json, raw"),
329
333
  field: Optional[str] = typer.Option(None, "-f", "--field", help="Extract nested field"),
330
334
  ):
331
335
  """Claim bags.fm trading fees."""
332
336
  params: dict = {"token_mint": token_mint}
337
+ if no_auto_sign:
338
+ params["auto_sign"] = False
333
339
  execute_operation("POST /vibe-tools/bags/claim-fees", params, output, field)
334
340
 
335
341
 
@@ -342,6 +348,102 @@ def bags_positions(
342
348
  execute_operation("GET /vibe-tools/bags/positions", {}, output, field)
343
349
 
344
350
 
351
+ # --- pump.fun ---
352
+
353
+ @app.command(name="pump-create-coin")
354
+ def pump_create_coin(
355
+ name: str = typer.Option(..., "--name", help="Coin name"),
356
+ symbol: str = typer.Option(..., "--symbol", help="Coin symbol"),
357
+ description: str = typer.Option(..., "--description", help="Coin description"),
358
+ image_url: str = typer.Option(..., "--image-url", help="Coin image URL"),
359
+ no_auto_sign: bool = typer.Option(False, "--no-auto-sign", help="Return unsigned tx instead of auto-signing"),
360
+ output: str = typer.Option("table", "-o", "--output", help="Output format: table, json, raw"),
361
+ field: Optional[str] = typer.Option(None, "-f", "--field", help="Extract nested field"),
362
+ ):
363
+ """Create a coin on pump.fun."""
364
+ params: dict = {"name": name, "symbol": symbol, "description": description, "image_url": image_url}
365
+ if no_auto_sign:
366
+ params["auto_sign"] = False
367
+ execute_operation("POST /vibe-tools/pump/create-coin", params, output, field)
368
+
369
+
370
+ @app.command(name="pump-swap")
371
+ def pump_swap(
372
+ input_mint: str = typer.Option(..., "--input-mint", help="Input token mint"),
373
+ output_mint: str = typer.Option(..., "--output-mint", help="Output token mint"),
374
+ amount: int = typer.Option(..., "--amount", help="Amount in smallest units"),
375
+ slippage_pct: Optional[float] = typer.Option(None, "--slippage-pct", help="Slippage in percent"),
376
+ no_auto_sign: bool = typer.Option(False, "--no-auto-sign", help="Return unsigned tx instead of auto-signing"),
377
+ output: str = typer.Option("table", "-o", "--output", help="Output format: table, json, raw"),
378
+ field: Optional[str] = typer.Option(None, "-f", "--field", help="Extract nested field"),
379
+ ):
380
+ """Swap tokens on pump.fun."""
381
+ params: dict = {"input_mint": input_mint, "output_mint": output_mint, "amount": amount}
382
+ if slippage_pct is not None:
383
+ params["slippage_pct"] = slippage_pct
384
+ if no_auto_sign:
385
+ params["auto_sign"] = False
386
+ execute_operation("POST /vibe-tools/pump/swap", params, output, field)
387
+
388
+
389
+ @app.command(name="pump-coin-info")
390
+ def pump_coin_info(
391
+ mint: str = typer.Argument(..., help="Token mint address"),
392
+ output: str = typer.Option("table", "-o", "--output", help="Output format: table, json, raw"),
393
+ field: Optional[str] = typer.Option(None, "-f", "--field", help="Extract nested field"),
394
+ ):
395
+ """Get pump.fun coin info."""
396
+ client = VibeClient()
397
+ response = client.pump_coin_info(mint)
398
+ if "error" in response:
399
+ print_error(response["error"])
400
+ format_output(response.get("data", response), output, field)
401
+
402
+
403
+ @app.command(name="pump-claim-fees")
404
+ def pump_claim_fees(
405
+ mint: str = typer.Option(..., "--mint", help="Token mint address"),
406
+ no_auto_sign: bool = typer.Option(False, "--no-auto-sign", help="Return unsigned tx instead of auto-signing"),
407
+ output: str = typer.Option("table", "-o", "--output", help="Output format: table, json, raw"),
408
+ field: Optional[str] = typer.Option(None, "-f", "--field", help="Extract nested field"),
409
+ ):
410
+ """Claim pump.fun trading fees."""
411
+ params: dict = {"mint": mint}
412
+ if no_auto_sign:
413
+ params["auto_sign"] = False
414
+ execute_operation("POST /vibe-tools/pump/claim-fees", params, output, field)
415
+
416
+
417
+ @app.command(name="pump-fee-sharing")
418
+ def pump_fee_sharing_cmd(
419
+ mint: str = typer.Option(..., "--mint", help="Token mint address"),
420
+ shareholders: str = typer.Option(..., "--shareholders", help="JSON array of shareholders"),
421
+ no_auto_sign: bool = typer.Option(False, "--no-auto-sign", help="Return unsigned tx instead of auto-signing"),
422
+ output: str = typer.Option("table", "-o", "--output", help="Output format: table, json, raw"),
423
+ field: Optional[str] = typer.Option(None, "-f", "--field", help="Extract nested field"),
424
+ ):
425
+ """Configure pump.fun fee sharing."""
426
+ import json
427
+ try:
428
+ shareholders_list = json.loads(shareholders)
429
+ except json.JSONDecodeError:
430
+ console.print("[red]Invalid JSON for shareholders[/red]")
431
+ raise typer.Exit(1)
432
+ params: dict = {"mint": mint, "shareholders": shareholders_list}
433
+ if no_auto_sign:
434
+ params["auto_sign"] = False
435
+ execute_operation("POST /vibe-tools/pump/fee-sharing", params, output, field)
436
+
437
+
438
+ @app.command(name="pump-positions")
439
+ def pump_positions(
440
+ output: str = typer.Option("table", "-o", "--output", help="Output format: table, json, raw"),
441
+ field: Optional[str] = typer.Option(None, "-f", "--field", help="Extract nested field"),
442
+ ):
443
+ """View pump.fun positions."""
444
+ execute_operation("GET /vibe-tools/pump/positions", {}, output, field)
445
+
446
+
345
447
  # ---------------------------------------------------------------------------
346
448
  # Token Leaderboard (public — no auth needed)
347
449
  # ---------------------------------------------------------------------------
@@ -25,6 +25,13 @@ _ROUTE_TO_METHOD = {
25
25
  "POST /vibe-tools/bags/launch-token": "bags_launch_token",
26
26
  "POST /vibe-tools/bags/claim-fees": "bags_claim_fees",
27
27
  "GET /vibe-tools/bags/positions": "bags_positions",
28
+ "POST /vibe-tools/pump/create-coin": "pump_create_coin",
29
+ "POST /vibe-tools/pump/swap": "pump_swap",
30
+ "POST /vibe-tools/pump/claim-fees": "pump_claim_fees",
31
+ "POST /vibe-tools/pump/fee-sharing": "pump_fee_sharing",
32
+ "GET /vibe-tools/pump/positions": "pump_positions",
33
+ "POST /vibe-tools/pump/accept-payment": "pump_accept_payment",
34
+ "POST /vibe-tools/pump/verify-payment": "pump_verify_payment",
28
35
  }
29
36
 
30
37
  # Parameter definitions for each route (maps CLI flag → request body field)
@@ -81,11 +88,51 @@ _ROUTE_PARAMS = {
81
88
  ("--symbol", "symbol", str, "Token symbol"),
82
89
  ("--description", "description", str, "Token description"),
83
90
  ("--image-url", "image_url", str, "Token image URL"),
91
+ ("--no-auto-sign", "auto_sign", Optional[bool], "Return unsigned tx instead of auto-signing"),
84
92
  ],
85
93
  "POST /vibe-tools/bags/claim-fees": [
86
94
  ("--token-mint", "token_mint", str, "Token mint address"),
95
+ ("--no-auto-sign", "auto_sign", Optional[bool], "Return unsigned tx instead of auto-signing"),
87
96
  ],
88
97
  "GET /vibe-tools/bags/positions": [],
98
+ "POST /vibe-tools/pump/create-coin": [
99
+ ("--name", "name", str, "Coin name"),
100
+ ("--symbol", "symbol", str, "Coin symbol"),
101
+ ("--description", "description", str, "Coin description"),
102
+ ("--image-url", "image_url", str, "Coin image URL"),
103
+ ("--initial-buy-lamports", "initial_buy_lamports", Optional[int], "Initial buy in lamports (default 100000000)"),
104
+ ("--no-auto-sign", "auto_sign", Optional[bool], "Return unsigned tx instead of auto-signing"),
105
+ ],
106
+ "POST /vibe-tools/pump/swap": [
107
+ ("--input-mint", "input_mint", str, "Input token mint"),
108
+ ("--output-mint", "output_mint", str, "Output token mint"),
109
+ ("--amount", "amount", int, "Amount in smallest units"),
110
+ ("--slippage-pct", "slippage_pct", Optional[float], "Slippage in percent (not bps!)"),
111
+ ("--no-auto-sign", "auto_sign", Optional[bool], "Return unsigned tx instead of auto-signing"),
112
+ ],
113
+ "POST /vibe-tools/pump/claim-fees": [
114
+ ("--mint", "mint", str, "Token mint address"),
115
+ ("--no-auto-sign", "auto_sign", Optional[bool], "Return unsigned tx instead of auto-signing"),
116
+ ],
117
+ "POST /vibe-tools/pump/fee-sharing": [
118
+ ("--mint", "mint", str, "Token mint address"),
119
+ ("--shareholders", "shareholders", str, "JSON array of shareholders"),
120
+ ("--no-auto-sign", "auto_sign", Optional[bool], "Return unsigned tx instead of auto-signing"),
121
+ ],
122
+ "GET /vibe-tools/pump/positions": [],
123
+ "POST /vibe-tools/pump/accept-payment": [
124
+ ("--token-mint", "token_mint", str, "Agent token mint"),
125
+ ("--currency-mint", "currency_mint", str, "Currency mint (USDC or wSOL)"),
126
+ ("--amount", "amount", int, "Payment amount in smallest units"),
127
+ ("--memo", "memo", Optional[str], "Payment memo"),
128
+ ("--no-auto-sign", "auto_sign", Optional[bool], "Return unsigned tx instead of auto-signing"),
129
+ ],
130
+ "POST /vibe-tools/pump/verify-payment": [
131
+ ("--mint", "mint", str, "Agent token mint"),
132
+ ("--currency-mint", "currency_mint", str, "Currency mint"),
133
+ ("--amount", "amount", int, "Payment amount in smallest units"),
134
+ ("--memo", "memo", Optional[str], "Payment memo"),
135
+ ],
89
136
  }
90
137
 
91
138
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: vibe-cli
3
- Version: 0.2.2
3
+ Version: 0.2.5
4
4
  Summary: VIBE Airforce CLI — Web3 trading and data at your fingertips
5
5
  License: MIT
6
6
  Requires-Python: >=3.10
File without changes
File without changes
File without changes
File without changes
File without changes