agentlaunch 1.0.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 (70) hide show
  1. package/README.md +475 -0
  2. package/dist/__tests__/config.test.d.ts +20 -0
  3. package/dist/__tests__/config.test.d.ts.map +1 -0
  4. package/dist/__tests__/config.test.js +155 -0
  5. package/dist/__tests__/config.test.js.map +1 -0
  6. package/dist/commands/buy.d.ts +10 -0
  7. package/dist/commands/buy.d.ts.map +1 -0
  8. package/dist/commands/buy.js +126 -0
  9. package/dist/commands/buy.js.map +1 -0
  10. package/dist/commands/comments.d.ts +15 -0
  11. package/dist/commands/comments.d.ts.map +1 -0
  12. package/dist/commands/comments.js +137 -0
  13. package/dist/commands/comments.js.map +1 -0
  14. package/dist/commands/config.d.ts +10 -0
  15. package/dist/commands/config.d.ts.map +1 -0
  16. package/dist/commands/config.js +63 -0
  17. package/dist/commands/config.js.map +1 -0
  18. package/dist/commands/create.d.ts +33 -0
  19. package/dist/commands/create.d.ts.map +1 -0
  20. package/dist/commands/create.js +1177 -0
  21. package/dist/commands/create.js.map +1 -0
  22. package/dist/commands/deploy.d.ts +18 -0
  23. package/dist/commands/deploy.d.ts.map +1 -0
  24. package/dist/commands/deploy.js +178 -0
  25. package/dist/commands/deploy.js.map +1 -0
  26. package/dist/commands/holders.d.ts +13 -0
  27. package/dist/commands/holders.d.ts.map +1 -0
  28. package/dist/commands/holders.js +114 -0
  29. package/dist/commands/holders.js.map +1 -0
  30. package/dist/commands/init.d.ts +3 -0
  31. package/dist/commands/init.d.ts.map +1 -0
  32. package/dist/commands/init.js +506 -0
  33. package/dist/commands/init.js.map +1 -0
  34. package/dist/commands/list.d.ts +10 -0
  35. package/dist/commands/list.d.ts.map +1 -0
  36. package/dist/commands/list.js +135 -0
  37. package/dist/commands/list.js.map +1 -0
  38. package/dist/commands/optimize.d.ts +12 -0
  39. package/dist/commands/optimize.d.ts.map +1 -0
  40. package/dist/commands/optimize.js +134 -0
  41. package/dist/commands/optimize.js.map +1 -0
  42. package/dist/commands/scaffold.d.ts +25 -0
  43. package/dist/commands/scaffold.d.ts.map +1 -0
  44. package/dist/commands/scaffold.js +123 -0
  45. package/dist/commands/scaffold.js.map +1 -0
  46. package/dist/commands/sell.d.ts +10 -0
  47. package/dist/commands/sell.d.ts.map +1 -0
  48. package/dist/commands/sell.js +109 -0
  49. package/dist/commands/sell.js.map +1 -0
  50. package/dist/commands/status.d.ts +10 -0
  51. package/dist/commands/status.d.ts.map +1 -0
  52. package/dist/commands/status.js +124 -0
  53. package/dist/commands/status.js.map +1 -0
  54. package/dist/commands/tokenize.d.ts +16 -0
  55. package/dist/commands/tokenize.d.ts.map +1 -0
  56. package/dist/commands/tokenize.js +207 -0
  57. package/dist/commands/tokenize.js.map +1 -0
  58. package/dist/config.d.ts +44 -0
  59. package/dist/config.d.ts.map +1 -0
  60. package/dist/config.js +137 -0
  61. package/dist/config.js.map +1 -0
  62. package/dist/http.d.ts +24 -0
  63. package/dist/http.d.ts.map +1 -0
  64. package/dist/http.js +53 -0
  65. package/dist/http.js.map +1 -0
  66. package/dist/index.d.ts +19 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +86 -0
  69. package/dist/index.js.map +1 -0
  70. package/package.json +50 -0
@@ -0,0 +1,126 @@
1
+ /**
2
+ * CLI: buy command
3
+ *
4
+ * agentlaunch buy <address> --amount <FET> [--slippage 5] [--chain 97] [--dry-run] [--json]
5
+ *
6
+ * Executes a buy on a bonding curve token contract, or previews the trade with --dry-run.
7
+ */
8
+ import { calculateBuy, buyTokens, DEFAULT_SLIPPAGE_PERCENT } from "agentlaunch-sdk";
9
+ import { getPublicClient } from "../http.js";
10
+ export function registerBuyCommand(program) {
11
+ program
12
+ .command("buy <address>")
13
+ .description("Buy tokens on a bonding curve (on-chain or dry-run preview)")
14
+ .requiredOption("--amount <fet>", "Amount of FET to spend")
15
+ .option("--slippage <percent>", "Slippage tolerance percentage", String(DEFAULT_SLIPPAGE_PERCENT))
16
+ .option("--chain <chainId>", "Chain ID (97=BSC Testnet, 56=BSC Mainnet)", "97")
17
+ .option("--dry-run", "Preview the trade without executing (no wallet needed)")
18
+ .option("--json", "Output raw JSON (machine-readable)")
19
+ .action(async (address, options) => {
20
+ // Validate address
21
+ if (!address.startsWith("0x") || address.length < 10) {
22
+ if (options.json) {
23
+ console.log(JSON.stringify({ error: "Invalid token address. Must start with 0x." }));
24
+ }
25
+ else {
26
+ console.error("Error: Invalid token address. Must start with 0x.");
27
+ }
28
+ process.exit(1);
29
+ }
30
+ // Validate amount
31
+ const amount = parseFloat(options.amount);
32
+ if (isNaN(amount) || amount <= 0) {
33
+ if (options.json) {
34
+ console.log(JSON.stringify({ error: "Amount must be a positive number." }));
35
+ }
36
+ else {
37
+ console.error("Error: Amount must be a positive number.");
38
+ }
39
+ process.exit(1);
40
+ }
41
+ // Validate chain
42
+ const chainId = parseInt(options.chain, 10);
43
+ if (![97, 56].includes(chainId)) {
44
+ if (options.json) {
45
+ console.log(JSON.stringify({ error: "Supported chains: 97 (BSC Testnet), 56 (BSC Mainnet)" }));
46
+ }
47
+ else {
48
+ console.error("Error: Supported chains: 97 (BSC Testnet), 56 (BSC Mainnet)");
49
+ }
50
+ process.exit(1);
51
+ }
52
+ // Validate slippage
53
+ const slippage = parseFloat(options.slippage);
54
+ if (isNaN(slippage) || slippage < 0 || slippage > 100) {
55
+ if (options.json) {
56
+ console.log(JSON.stringify({ error: "Slippage must be between 0 and 100." }));
57
+ }
58
+ else {
59
+ console.error("Error: Slippage must be between 0 and 100.");
60
+ }
61
+ process.exit(1);
62
+ }
63
+ try {
64
+ if (options.dryRun) {
65
+ // Dry run: just calculate
66
+ const client = getPublicClient();
67
+ const result = await calculateBuy(address, options.amount, client);
68
+ if (options.json) {
69
+ console.log(JSON.stringify({ dryRun: true, ...result }));
70
+ return;
71
+ }
72
+ const chainName = chainId === 56 ? "BSC Mainnet" : "BSC Testnet";
73
+ console.log(`\n${"=".repeat(50)}`);
74
+ console.log("BUY PREVIEW (dry run)");
75
+ console.log(`${"=".repeat(50)}`);
76
+ console.log(`Token: ${address}`);
77
+ console.log(`Chain: ${chainName}`);
78
+ console.log(`FET to spend: ${options.amount} FET`);
79
+ console.log(`Tokens to receive: ${result.tokensReceived}`);
80
+ console.log(`Price per token: ${result.pricePerToken} FET`);
81
+ console.log(`Price impact: ${result.priceImpact}%`);
82
+ console.log(`Protocol fee: ${result.fee} FET (2% to treasury)`);
83
+ console.log(`Net FET spent: ${result.netFetSpent} FET`);
84
+ console.log(`Slippage: ${slippage}%`);
85
+ console.log(`${"=".repeat(50)}`);
86
+ console.log("\nRe-run without --dry-run to execute the trade.\n");
87
+ return;
88
+ }
89
+ // Real execution
90
+ const result = await buyTokens(address, options.amount, {
91
+ chainId,
92
+ slippagePercent: slippage,
93
+ });
94
+ if (options.json) {
95
+ console.log(JSON.stringify(result));
96
+ return;
97
+ }
98
+ const chainName = chainId === 56 ? "BSC Mainnet" : "BSC Testnet";
99
+ console.log(`\n${"=".repeat(50)}`);
100
+ console.log("BUY EXECUTED");
101
+ console.log(`${"=".repeat(50)}`);
102
+ console.log(`Token: ${address}`);
103
+ console.log(`Chain: ${chainName}`);
104
+ console.log(`Tx Hash: ${result.txHash}`);
105
+ console.log(`Block: ${result.blockNumber}`);
106
+ console.log(`FET spent: ${result.fetSpent} FET`);
107
+ console.log(`Tokens received: ${result.tokensReceived}`);
108
+ console.log(`Protocol fee: ${result.fee} FET (2% to treasury)`);
109
+ console.log(`Price impact: ${result.priceImpact}%`);
110
+ if (result.approvalTxHash) {
111
+ console.log(`Approval Tx: ${result.approvalTxHash}`);
112
+ }
113
+ console.log(`${"=".repeat(50)}\n`);
114
+ }
115
+ catch (err) {
116
+ if (options.json) {
117
+ console.log(JSON.stringify({ error: err.message }));
118
+ }
119
+ else {
120
+ console.error(`Error: ${err.message}`);
121
+ }
122
+ process.exit(1);
123
+ }
124
+ });
125
+ }
126
+ //# sourceMappingURL=buy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buy.js","sourceRoot":"","sources":["../../src/commands/buy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * CF-049: comments command
3
+ *
4
+ * agentlaunch comments <address> [--post <message>] [--json]
5
+ *
6
+ * Default action: list comments for a token.
7
+ * With --post: post a new comment (requires API key).
8
+ *
9
+ * Endpoints:
10
+ * GET /comments/{address} List comments
11
+ * POST /comments/{address} { message } Post a comment
12
+ */
13
+ import { Command } from "commander";
14
+ export declare function registerCommentsCommand(program: Command): void;
15
+ //# sourceMappingURL=comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/commands/comments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8J9D"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * CF-049: comments command
3
+ *
4
+ * agentlaunch comments <address> [--post <message>] [--json]
5
+ *
6
+ * Default action: list comments for a token.
7
+ * With --post: post a new comment (requires API key).
8
+ *
9
+ * Endpoints:
10
+ * GET /comments/{address} List comments
11
+ * POST /comments/{address} { message } Post a comment
12
+ */
13
+ import { getClient, getPublicClient } from "../http.js";
14
+ export function registerCommentsCommand(program) {
15
+ program
16
+ .command("comments <address>")
17
+ .description("List or post comments for a token by its contract address")
18
+ .option("--post <message>", "Post a new comment (requires API key)")
19
+ .option("--json", "Output raw JSON (machine-readable)")
20
+ .action(async (address, options) => {
21
+ const isJson = options.json === true;
22
+ if (!address || address.trim().length < 10) {
23
+ if (isJson) {
24
+ console.log(JSON.stringify({ error: "Invalid token address" }));
25
+ }
26
+ else {
27
+ console.error("Error: Please provide a valid token contract address.");
28
+ }
29
+ process.exit(1);
30
+ }
31
+ const addr = address.trim();
32
+ // --- POST a new comment ---
33
+ if (options.post !== undefined) {
34
+ const message = options.post.trim();
35
+ if (!message) {
36
+ if (isJson) {
37
+ console.log(JSON.stringify({
38
+ error: "--post message cannot be empty",
39
+ }));
40
+ }
41
+ else {
42
+ console.error("Error: --post message cannot be empty");
43
+ }
44
+ process.exit(1);
45
+ }
46
+ if (message.length > 500) {
47
+ if (isJson) {
48
+ console.log(JSON.stringify({
49
+ error: "--post message must be 500 characters or fewer",
50
+ }));
51
+ }
52
+ else {
53
+ console.error("Error: --post message must be 500 characters or fewer");
54
+ }
55
+ process.exit(1);
56
+ }
57
+ let result;
58
+ try {
59
+ const client = getClient();
60
+ result = await client.post(`/comments/${addr}`, { message });
61
+ }
62
+ catch (err) {
63
+ if (isJson) {
64
+ console.log(JSON.stringify({ error: err.message }));
65
+ }
66
+ else {
67
+ console.error(`Error: ${err.message}`);
68
+ }
69
+ process.exit(1);
70
+ }
71
+ if (isJson) {
72
+ console.log(JSON.stringify({ success: true, comment: result }));
73
+ return;
74
+ }
75
+ console.log("Comment posted successfully.");
76
+ if (result.id !== undefined) {
77
+ console.log(` ID: ${result.id}`);
78
+ }
79
+ console.log(` Message: ${result.message ?? message}`);
80
+ const ts = result.createdAt ?? result.created_at;
81
+ if (ts) {
82
+ console.log(` Posted: ${new Date(ts).toUTCString()}`);
83
+ }
84
+ return;
85
+ }
86
+ // --- LIST comments ---
87
+ let comments;
88
+ try {
89
+ const client = getPublicClient();
90
+ const response = await client.get(`/comments/${addr}`);
91
+ // Handle both array responses and wrapped responses
92
+ if (Array.isArray(response)) {
93
+ comments = response;
94
+ }
95
+ else {
96
+ comments =
97
+ response
98
+ .data ??
99
+ response
100
+ .comments ??
101
+ [];
102
+ }
103
+ }
104
+ catch (err) {
105
+ if (isJson) {
106
+ console.log(JSON.stringify({ error: err.message }));
107
+ }
108
+ else {
109
+ console.error(`Error: ${err.message}`);
110
+ }
111
+ process.exit(1);
112
+ }
113
+ if (isJson) {
114
+ console.log(JSON.stringify({ comments, total: comments.length }));
115
+ return;
116
+ }
117
+ if (comments.length === 0) {
118
+ console.log(`No comments found for ${addr}`);
119
+ return;
120
+ }
121
+ console.log(`\nComments for ${addr}\n`);
122
+ console.log("─".repeat(60));
123
+ for (const c of comments) {
124
+ const author = c.user?.username ??
125
+ c.user?.address?.slice(0, 10) ??
126
+ `user#${c.userId ?? c.user_id ?? "?"}`;
127
+ const ts = c.createdAt ?? c.created_at;
128
+ const dateStr = ts ? new Date(ts).toUTCString() : "";
129
+ console.log(`[${c.id ?? "?"}] ${author}${dateStr ? " " + dateStr : ""}`);
130
+ console.log(` ${c.message ?? ""}`);
131
+ console.log();
132
+ }
133
+ console.log("─".repeat(60));
134
+ console.log(`${comments.length} comment(s). Use --post "<message>" to add one.\n`);
135
+ });
136
+ }
137
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/commands/comments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * CLI-001: config subcommands
3
+ *
4
+ * agentlaunch config set-key <apiKey> Store API key
5
+ * agentlaunch config show Print current config (masked key)
6
+ * agentlaunch config set-url <url> Set custom API base URL
7
+ */
8
+ import { Command } from "commander";
9
+ export declare function registerConfigCommand(program: Command): void;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0D5D"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * CLI-001: config subcommands
3
+ *
4
+ * agentlaunch config set-key <apiKey> Store API key
5
+ * agentlaunch config show Print current config (masked key)
6
+ * agentlaunch config set-url <url> Set custom API base URL
7
+ */
8
+ import { DEFAULT_BASE_URL, getEnvironment, maskKey, readConfig, resolveFrontendUrl, writeConfig, } from "../config.js";
9
+ export function registerConfigCommand(program) {
10
+ const config = program
11
+ .command("config")
12
+ .description("Manage CLI configuration (API key, base URL)");
13
+ // agentlaunch config set-key <apiKey>
14
+ config
15
+ .command("set-key <apiKey>")
16
+ .description("Store your Agentverse API key in ~/.agentlaunch/config.json")
17
+ .action((apiKey) => {
18
+ if (!apiKey || apiKey.trim().length < 10) {
19
+ console.error("Error: API key appears invalid (too short).");
20
+ process.exit(1);
21
+ }
22
+ writeConfig({ apiKey: apiKey.trim() });
23
+ console.log("API key saved to ~/.agentlaunch/config.json");
24
+ console.log(`Key: ${maskKey(apiKey.trim())}`);
25
+ });
26
+ // agentlaunch config show
27
+ config
28
+ .command("show")
29
+ .description("Show resolved environment configuration")
30
+ .action(() => {
31
+ const cfg = readConfig();
32
+ const env = getEnvironment();
33
+ const apiUrl = cfg.baseUrl ?? DEFAULT_BASE_URL;
34
+ const frontendUrl = resolveFrontendUrl();
35
+ const chainId = process.env.CHAIN_ID || '97';
36
+ const keyDisplay = cfg.apiKey ? maskKey(cfg.apiKey) : "(not set)";
37
+ console.log("\n AgentLaunch Configuration\n");
38
+ console.log(` Environment: ${env}`);
39
+ console.log(` API URL: ${apiUrl}`);
40
+ console.log(` Frontend URL: ${frontendUrl}`);
41
+ console.log(` Chain ID: ${chainId}`);
42
+ console.log(` API Key: ${keyDisplay}`);
43
+ console.log(` Config file: ~/.agentlaunch/config.json`);
44
+ console.log();
45
+ });
46
+ // agentlaunch config set-url <url>
47
+ config
48
+ .command("set-url <url>")
49
+ .description("Set a custom API base URL (useful for self-hosted instances)")
50
+ .action((url) => {
51
+ try {
52
+ new URL(url); // validate format
53
+ }
54
+ catch {
55
+ console.error(`Error: "${url}" is not a valid URL.`);
56
+ process.exit(1);
57
+ }
58
+ const normalized = url.replace(/\/+$/, ""); // strip trailing slash
59
+ writeConfig({ baseUrl: normalized });
60
+ console.log(`Base URL set to: ${normalized}`);
61
+ });
62
+ }
63
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * CLI-002 + CLI-006: create command
3
+ *
4
+ * agentlaunch create [--name "My Agent"] [--ticker MYAG] [--template custom]
5
+ * [--description "..."] [--chain 97] [--deploy] [--tokenize] [--json]
6
+ *
7
+ * Flagship one-command flow:
8
+ * 1. Scaffold agent project (always) — via agentlaunch-templates
9
+ * 2. Deploy to Agentverse (if --deploy) — via agentlaunch-sdk deployAgent
10
+ * 3. Tokenize on AgentLaunch (if --tokenize) — via agentlaunch-sdk client
11
+ * 4. Print handoff link
12
+ *
13
+ * When name/ticker are omitted, uses readline for interactive prompts.
14
+ *
15
+ * Platform constants (source of truth: deployed smart contracts):
16
+ * - Deploy fee: 120 FET (read dynamically, can change via multi-sig)
17
+ * - Graduation target: 30,000 FET -> auto DEX listing
18
+ * - Trading fee: 2% -> 100% to protocol treasury (NO creator fee)
19
+ */
20
+ import { Command } from "commander";
21
+ export declare function registerCreateCommand(program: Command): void;
22
+ export interface RunCreateOptions {
23
+ name?: string;
24
+ description?: string;
25
+ skipDeploy?: boolean;
26
+ json?: boolean;
27
+ }
28
+ /**
29
+ * Simplified create flow for the default CLI command.
30
+ * Called by index.ts when running `npx agentlaunch [name]`.
31
+ */
32
+ export declare function runCreate(options: RunCreateOptions): Promise<void>;
33
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmRpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA05B5D;AAMD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+LxE"}