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.
- package/README.md +475 -0
- package/dist/__tests__/config.test.d.ts +20 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +155 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/commands/buy.d.ts +10 -0
- package/dist/commands/buy.d.ts.map +1 -0
- package/dist/commands/buy.js +126 -0
- package/dist/commands/buy.js.map +1 -0
- package/dist/commands/comments.d.ts +15 -0
- package/dist/commands/comments.d.ts.map +1 -0
- package/dist/commands/comments.js +137 -0
- package/dist/commands/comments.js.map +1 -0
- package/dist/commands/config.d.ts +10 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +63 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/create.d.ts +33 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +1177 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deploy.d.ts +18 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +178 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/holders.d.ts +13 -0
- package/dist/commands/holders.d.ts.map +1 -0
- package/dist/commands/holders.js +114 -0
- package/dist/commands/holders.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +506 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +10 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +135 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/optimize.d.ts +12 -0
- package/dist/commands/optimize.d.ts.map +1 -0
- package/dist/commands/optimize.js +134 -0
- package/dist/commands/optimize.js.map +1 -0
- package/dist/commands/scaffold.d.ts +25 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +123 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/sell.d.ts +10 -0
- package/dist/commands/sell.d.ts.map +1 -0
- package/dist/commands/sell.js +109 -0
- package/dist/commands/sell.js.map +1 -0
- package/dist/commands/status.d.ts +10 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +124 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/tokenize.d.ts +16 -0
- package/dist/commands/tokenize.d.ts.map +1 -0
- package/dist/commands/tokenize.js +207 -0
- package/dist/commands/tokenize.js.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +137 -0
- package/dist/config.js.map +1 -0
- package/dist/http.d.ts +24 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +53 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +86 -0
- package/dist/index.js.map +1 -0
- 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"}
|