clawclick-sdk 0.1.8 → 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 +3 -3
- package/dist/abi.d.ts +41 -0
- package/dist/abi.d.ts.map +1 -1
- package/dist/abi.js +17 -0
- package/dist/abi.js.map +1 -1
- package/dist/api.d.ts +158 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +118 -0
- package/dist/api.js.map +1 -0
- package/dist/chain.d.ts +119 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +414 -0
- package/dist/chain.js.map +1 -0
- package/dist/cli/commands/agent-info.d.ts +8 -0
- package/dist/cli/commands/agent-info.d.ts.map +1 -0
- package/dist/cli/commands/agent-info.js +97 -0
- package/dist/cli/commands/agent-info.js.map +1 -0
- package/dist/cli/commands/create.d.ts +10 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +53 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +12 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +190 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/funlan.d.ts +8 -0
- package/dist/cli/commands/funlan.d.ts.map +1 -0
- package/dist/cli/commands/funlan.js +129 -0
- package/dist/cli/commands/funlan.js.map +1 -0
- package/dist/cli/commands/immortalize.d.ts +13 -0
- package/dist/cli/commands/immortalize.d.ts.map +1 -0
- package/dist/cli/commands/immortalize.js +165 -0
- package/dist/cli/commands/immortalize.js.map +1 -0
- package/dist/cli/commands/init.d.ts +10 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +177 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/memory.d.ts +11 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +200 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/session.d.ts +14 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +313 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +96 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/index.js +20 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/contracts.d.ts +381 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +213 -0
- package/dist/contracts.js.map +1 -0
- package/dist/funlan.d.ts +18 -0
- package/dist/funlan.d.ts.map +1 -0
- package/dist/funlan.js +85 -0
- package/dist/funlan.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -2
- package/dist/index.js.map +1 -1
- package/dist/wallet.d.ts +61 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +115 -0
- package/dist/wallet.js.map +1 -0
- package/package.json +7 -5
package/dist/chain.js
ADDED
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ClawClick SDK — On-chain operations
|
|
4
|
+
*
|
|
5
|
+
* Deploy token, mint birth certificate, store memory, read agent data.
|
|
6
|
+
* All operations work with viem — no ethers dependency.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createStandaloneLaunch = createStandaloneLaunch;
|
|
10
|
+
exports.mintBirthCertificate = mintBirthCertificate;
|
|
11
|
+
exports.launchAndMint = launchAndMint;
|
|
12
|
+
exports.getAgentByNftId = getAgentByNftId;
|
|
13
|
+
exports.getNftIdByWallet = getNftIdByWallet;
|
|
14
|
+
exports.getTotalAgents = getTotalAgents;
|
|
15
|
+
exports.getAgentByWallet = getAgentByWallet;
|
|
16
|
+
exports.storeMemory = storeMemory;
|
|
17
|
+
exports.getMemoryCount = getMemoryCount;
|
|
18
|
+
exports.getMemory = getMemory;
|
|
19
|
+
exports.updateBirthCertMemory = updateBirthCertMemory;
|
|
20
|
+
exports.immortalizeAgent = immortalizeAgent;
|
|
21
|
+
const viem_1 = require("viem");
|
|
22
|
+
const accounts_1 = require("viem/accounts");
|
|
23
|
+
const contracts_1 = require("./contracts");
|
|
24
|
+
const abi_1 = require("./abi");
|
|
25
|
+
// ── Constants ──
|
|
26
|
+
const MIN_BOOTSTRAP_ETH = '0.001';
|
|
27
|
+
const ZERO = '0x0000000000000000000000000000000000000000';
|
|
28
|
+
// ── Deploy Functions ──────────────────────────────────────────────────────
|
|
29
|
+
/** Standalone: Create token launch via ClawclickFactory */
|
|
30
|
+
async function createStandaloneLaunch(publicClient, walletClient, network, params) {
|
|
31
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
32
|
+
if (!addrs.factory)
|
|
33
|
+
throw new Error(`Factory not deployed on ${network}`);
|
|
34
|
+
// Build fee split arrays — always 5 elements
|
|
35
|
+
const wallets = [];
|
|
36
|
+
const percentages = [];
|
|
37
|
+
if (params.taxWallets && params.taxWallets.length > 0) {
|
|
38
|
+
for (let i = 0; i < 5; i++) {
|
|
39
|
+
wallets.push(params.taxWallets[i] || ZERO);
|
|
40
|
+
percentages.push(((params.taxPercentages?.[i] || 0) * 100)); // % → BPS
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Default: 100% to beneficiary
|
|
45
|
+
wallets.push(params.beneficiary, ZERO, ZERO, ZERO, ZERO);
|
|
46
|
+
percentages.push(10000, 0, 0, 0, 0);
|
|
47
|
+
}
|
|
48
|
+
const walletCount = wallets.filter(w => w !== ZERO).length;
|
|
49
|
+
const devBuyAmount = (params.targetMcapETH * (params.devBuyPercent || 0)) / 100;
|
|
50
|
+
const bootstrapValue = Math.max(devBuyAmount, parseFloat(MIN_BOOTSTRAP_ETH));
|
|
51
|
+
const createParams = {
|
|
52
|
+
name: params.name,
|
|
53
|
+
symbol: params.symbol,
|
|
54
|
+
beneficiary: params.beneficiary,
|
|
55
|
+
agentWallet: params.agentWallet,
|
|
56
|
+
targetMcapETH: (0, viem_1.parseEther)(params.targetMcapETH.toString()),
|
|
57
|
+
feeSplit: {
|
|
58
|
+
wallets: wallets,
|
|
59
|
+
percentages: percentages,
|
|
60
|
+
count: walletCount,
|
|
61
|
+
},
|
|
62
|
+
launchType: 0, // DIRECT
|
|
63
|
+
};
|
|
64
|
+
const chain = walletClient.chain;
|
|
65
|
+
const account = walletClient.account;
|
|
66
|
+
const txHash = await walletClient.writeContract({
|
|
67
|
+
address: addrs.factory,
|
|
68
|
+
abi: abi_1.FACTORY_ABI,
|
|
69
|
+
functionName: 'createLaunch',
|
|
70
|
+
args: [createParams],
|
|
71
|
+
value: (0, viem_1.parseEther)(bootstrapValue.toString()),
|
|
72
|
+
gas: BigInt(8_000_000),
|
|
73
|
+
chain,
|
|
74
|
+
account,
|
|
75
|
+
});
|
|
76
|
+
// Wait for receipt
|
|
77
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
78
|
+
if (receipt.status === 'reverted') {
|
|
79
|
+
throw new Error(`createLaunch reverted. Tx: ${txHash}`);
|
|
80
|
+
}
|
|
81
|
+
// Parse TokenLaunched event
|
|
82
|
+
let tokenAddress = ZERO;
|
|
83
|
+
let poolId = '0x';
|
|
84
|
+
for (const log of receipt.logs) {
|
|
85
|
+
try {
|
|
86
|
+
const decoded = (0, viem_1.decodeEventLog)({ abi: abi_1.FACTORY_ABI, data: log.data, topics: log.topics });
|
|
87
|
+
if (decoded.eventName === 'TokenLaunched') {
|
|
88
|
+
const args = decoded.args;
|
|
89
|
+
tokenAddress = args.token;
|
|
90
|
+
poolId = args.poolId;
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch { /* not our event */ }
|
|
95
|
+
}
|
|
96
|
+
// Fallback: read latest token from factory
|
|
97
|
+
if (tokenAddress === ZERO) {
|
|
98
|
+
const count = await publicClient.readContract({
|
|
99
|
+
address: addrs.factory, abi: abi_1.FACTORY_ABI, functionName: 'getTokenCount',
|
|
100
|
+
});
|
|
101
|
+
tokenAddress = await publicClient.readContract({
|
|
102
|
+
address: addrs.factory, abi: abi_1.FACTORY_ABI, functionName: 'getTokenAtIndex', args: [count - 1n],
|
|
103
|
+
});
|
|
104
|
+
try {
|
|
105
|
+
const info = await publicClient.readContract({
|
|
106
|
+
address: addrs.factory, abi: abi_1.FACTORY_ABI, functionName: 'launchByToken', args: [tokenAddress],
|
|
107
|
+
});
|
|
108
|
+
poolId = info.poolId || '0x';
|
|
109
|
+
}
|
|
110
|
+
catch { /* poolId is optional */ }
|
|
111
|
+
}
|
|
112
|
+
return { txHash, tokenAddress, poolId };
|
|
113
|
+
}
|
|
114
|
+
/** Mint birth certificate NFT */
|
|
115
|
+
async function mintBirthCertificate(publicClient, walletClient, network, params) {
|
|
116
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
117
|
+
const chain = walletClient.chain;
|
|
118
|
+
const account = walletClient.account;
|
|
119
|
+
const txHash = await walletClient.writeContract({
|
|
120
|
+
address: addrs.birthCertificate,
|
|
121
|
+
abi: contracts_1.BIRTH_CERTIFICATE_ABI,
|
|
122
|
+
functionName: 'mintBirthCertificate',
|
|
123
|
+
args: [
|
|
124
|
+
params.agentWallet,
|
|
125
|
+
params.tokenAddress,
|
|
126
|
+
params.creator,
|
|
127
|
+
params.name,
|
|
128
|
+
params.socialHandle || '',
|
|
129
|
+
params.memoryCID || '',
|
|
130
|
+
params.avatarCID || '',
|
|
131
|
+
params.ensName || '',
|
|
132
|
+
],
|
|
133
|
+
value: (0, viem_1.parseEther)(contracts_1.IMMORTALIZATION_FEE),
|
|
134
|
+
gas: 500000n,
|
|
135
|
+
chain,
|
|
136
|
+
account,
|
|
137
|
+
});
|
|
138
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
139
|
+
if (receipt.status === 'reverted') {
|
|
140
|
+
throw new Error(`mintBirthCertificate reverted. Tx: ${txHash}`);
|
|
141
|
+
}
|
|
142
|
+
// Extract nftId from Transfer event
|
|
143
|
+
let nftId = 0n;
|
|
144
|
+
const transferTopic = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
|
|
145
|
+
const transferLog = receipt.logs.find(l => l.topics[0] === transferTopic && l.address.toLowerCase() === addrs.birthCertificate.toLowerCase());
|
|
146
|
+
if (transferLog?.topics[3]) {
|
|
147
|
+
nftId = BigInt(transferLog.topics[3]);
|
|
148
|
+
}
|
|
149
|
+
return { txHash, nftId };
|
|
150
|
+
}
|
|
151
|
+
// ── Bundled Deploy (1-tx) ──────────────────────────────────────────────────
|
|
152
|
+
/**
|
|
153
|
+
* Launch token + mint birth certificate in ONE transaction via AgentLaunchBundler.
|
|
154
|
+
* msg.value = bootstrapETH + 0.005 ETH (immortalization fee)
|
|
155
|
+
*
|
|
156
|
+
* Falls back to error if bundler is not deployed.
|
|
157
|
+
*/
|
|
158
|
+
async function launchAndMint(publicClient, walletClient, network, params) {
|
|
159
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
160
|
+
if (!addrs.bundler) {
|
|
161
|
+
throw new Error(`Bundler not deployed on ${network}. Use createStandaloneLaunch() + mintBirthCertificate() separately.`);
|
|
162
|
+
}
|
|
163
|
+
// Build fee split arrays — always 5 elements
|
|
164
|
+
const wallets = [];
|
|
165
|
+
const percentages = [];
|
|
166
|
+
if (params.taxWallets && params.taxWallets.length > 0) {
|
|
167
|
+
for (let i = 0; i < 5; i++) {
|
|
168
|
+
wallets.push(params.taxWallets[i] || ZERO);
|
|
169
|
+
percentages.push(((params.taxPercentages?.[i] || 0) * 100));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
wallets.push(params.beneficiary, ZERO, ZERO, ZERO, ZERO);
|
|
174
|
+
percentages.push(10000, 0, 0, 0, 0);
|
|
175
|
+
}
|
|
176
|
+
const walletCount = wallets.filter(w => w !== ZERO).length;
|
|
177
|
+
const devBuyAmount = (params.targetMcapETH * (params.devBuyPercent || 0)) / 100;
|
|
178
|
+
const bootstrapValue = Math.max(devBuyAmount, parseFloat(MIN_BOOTSTRAP_ETH));
|
|
179
|
+
const totalValue = bootstrapValue + parseFloat(contracts_1.IMMORTALIZATION_FEE);
|
|
180
|
+
const createParams = {
|
|
181
|
+
name: params.name,
|
|
182
|
+
symbol: params.symbol,
|
|
183
|
+
beneficiary: params.beneficiary,
|
|
184
|
+
agentWallet: params.agentWallet,
|
|
185
|
+
targetMcapETH: (0, viem_1.parseEther)(params.targetMcapETH.toString()),
|
|
186
|
+
feeSplit: {
|
|
187
|
+
wallets: wallets,
|
|
188
|
+
percentages: percentages,
|
|
189
|
+
count: walletCount,
|
|
190
|
+
},
|
|
191
|
+
launchType: 0, // DIRECT
|
|
192
|
+
};
|
|
193
|
+
const chain = walletClient.chain;
|
|
194
|
+
const account = walletClient.account;
|
|
195
|
+
const txHash = await walletClient.writeContract({
|
|
196
|
+
address: addrs.bundler,
|
|
197
|
+
abi: contracts_1.LAUNCH_BUNDLER_ABI,
|
|
198
|
+
functionName: 'launchAndMint',
|
|
199
|
+
args: [
|
|
200
|
+
createParams,
|
|
201
|
+
params.agentWallet,
|
|
202
|
+
params.creator,
|
|
203
|
+
params.name,
|
|
204
|
+
params.socialHandle || '',
|
|
205
|
+
params.memoryCID || '',
|
|
206
|
+
params.avatarCID || '',
|
|
207
|
+
params.ensName || '',
|
|
208
|
+
],
|
|
209
|
+
value: (0, viem_1.parseEther)(totalValue.toString()),
|
|
210
|
+
gas: BigInt(10_000_000),
|
|
211
|
+
chain,
|
|
212
|
+
account,
|
|
213
|
+
});
|
|
214
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
215
|
+
if (receipt.status === 'reverted') {
|
|
216
|
+
throw new Error(`launchAndMint reverted. Tx: ${txHash}`);
|
|
217
|
+
}
|
|
218
|
+
// Parse AgentLaunchBundled event
|
|
219
|
+
let tokenAddress = ZERO;
|
|
220
|
+
let poolId = '0x';
|
|
221
|
+
let nftId = 0n;
|
|
222
|
+
for (const log of receipt.logs) {
|
|
223
|
+
try {
|
|
224
|
+
const decoded = (0, viem_1.decodeEventLog)({ abi: contracts_1.LAUNCH_BUNDLER_ABI, data: log.data, topics: log.topics });
|
|
225
|
+
if (decoded.eventName === 'AgentLaunchBundled') {
|
|
226
|
+
const args = decoded.args;
|
|
227
|
+
tokenAddress = args.token;
|
|
228
|
+
poolId = args.poolId;
|
|
229
|
+
nftId = args.nftId;
|
|
230
|
+
break;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
catch { /* not our event */ }
|
|
234
|
+
}
|
|
235
|
+
// Fallback: parse TokenLaunched if bundled event not found
|
|
236
|
+
if (tokenAddress === ZERO) {
|
|
237
|
+
for (const log of receipt.logs) {
|
|
238
|
+
try {
|
|
239
|
+
const decoded = (0, viem_1.decodeEventLog)({ abi: abi_1.FACTORY_ABI, data: log.data, topics: log.topics });
|
|
240
|
+
if (decoded.eventName === 'TokenLaunched') {
|
|
241
|
+
const args = decoded.args;
|
|
242
|
+
tokenAddress = args.token;
|
|
243
|
+
poolId = args.poolId;
|
|
244
|
+
break;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch { /* not our event */ }
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return { txHash, tokenAddress, poolId, nftId };
|
|
251
|
+
}
|
|
252
|
+
// ── Read Functions ──────────────────────────────────────────────────────────
|
|
253
|
+
/** Get agent data by NFT ID */
|
|
254
|
+
async function getAgentByNftId(client, network, nftId) {
|
|
255
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
256
|
+
const data = await client.readContract({
|
|
257
|
+
address: addrs.birthCertificate,
|
|
258
|
+
abi: contracts_1.BIRTH_CERTIFICATE_ABI,
|
|
259
|
+
functionName: 'agentByNFT',
|
|
260
|
+
args: [nftId],
|
|
261
|
+
});
|
|
262
|
+
// Contract returns flat tuple, map to object
|
|
263
|
+
if (Array.isArray(data)) {
|
|
264
|
+
return {
|
|
265
|
+
nftId: data[0], birthTimestamp: data[1], name: data[2], wallet: data[3],
|
|
266
|
+
tokenAddress: data[4], creator: data[5], socialHandle: data[6], memoryCID: data[7],
|
|
267
|
+
avatarCID: data[8], ensName: data[9], dnaHash: data[10], immortalized: data[11],
|
|
268
|
+
spawnedAgents: data[12],
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
return data;
|
|
272
|
+
}
|
|
273
|
+
/** Get agent NFT ID by wallet address */
|
|
274
|
+
async function getNftIdByWallet(client, network, wallet) {
|
|
275
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
276
|
+
return await client.readContract({
|
|
277
|
+
address: addrs.birthCertificate,
|
|
278
|
+
abi: contracts_1.BIRTH_CERTIFICATE_ABI,
|
|
279
|
+
functionName: 'nftByWallet',
|
|
280
|
+
args: [wallet],
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
/** Get total number of registered agents */
|
|
284
|
+
async function getTotalAgents(client, network) {
|
|
285
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
286
|
+
return await client.readContract({
|
|
287
|
+
address: addrs.birthCertificate,
|
|
288
|
+
abi: contracts_1.BIRTH_CERTIFICATE_ABI,
|
|
289
|
+
functionName: 'totalAgents',
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
/** Get agent by wallet (convenience: nftByWallet → agentByNFT) */
|
|
293
|
+
async function getAgentByWallet(client, network, wallet) {
|
|
294
|
+
const nftId = await getNftIdByWallet(client, network, wallet);
|
|
295
|
+
if (nftId === 0n)
|
|
296
|
+
return null;
|
|
297
|
+
return getAgentByNftId(client, network, nftId);
|
|
298
|
+
}
|
|
299
|
+
// ── Memory Functions ────────────────────────────────────────────────────────
|
|
300
|
+
/**
|
|
301
|
+
* Store memory text directly on-chain via MemoryStorage (signature-based).
|
|
302
|
+
* Agent key signs the content, creator/submitter pays gas.
|
|
303
|
+
*/
|
|
304
|
+
async function storeMemory(publicClient, walletClient, network, agentWallet, agentPrivateKey, text) {
|
|
305
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
306
|
+
const chain = walletClient.chain;
|
|
307
|
+
const account = walletClient.account;
|
|
308
|
+
// Use keccak256 of text as a content-addressed "CID"
|
|
309
|
+
const contentHash = (0, viem_1.keccak256)(new TextEncoder().encode(text));
|
|
310
|
+
// Get current nonce for the agent
|
|
311
|
+
const nonce = await publicClient.readContract({
|
|
312
|
+
address: addrs.memoryStorage,
|
|
313
|
+
abi: contracts_1.MEMORY_STORAGE_ABI,
|
|
314
|
+
functionName: 'getNonce',
|
|
315
|
+
args: [agentWallet],
|
|
316
|
+
});
|
|
317
|
+
// Build the message the contract will verify:
|
|
318
|
+
// keccak256(abi.encodePacked(ipfsCID, nonce, chainid, contractAddress))
|
|
319
|
+
const messageHash = (0, viem_1.keccak256)((0, viem_1.encodePacked)(['string', 'uint256', 'uint256', 'address'], [contentHash, nonce, BigInt(chain.id), addrs.memoryStorage]));
|
|
320
|
+
// Agent signs the raw hash (EIP-191 personal sign)
|
|
321
|
+
const agentAccount = (0, accounts_1.privateKeyToAccount)(agentPrivateKey);
|
|
322
|
+
const signature = await agentAccount.signMessage({ message: { raw: messageHash } });
|
|
323
|
+
// Submit tx — anyone can call, gas paid by walletClient account
|
|
324
|
+
const txHash = await walletClient.writeContract({
|
|
325
|
+
address: addrs.memoryStorage,
|
|
326
|
+
abi: contracts_1.MEMORY_STORAGE_ABI,
|
|
327
|
+
functionName: 'storeMemory',
|
|
328
|
+
args: [contentHash, text, nonce, signature],
|
|
329
|
+
chain,
|
|
330
|
+
account,
|
|
331
|
+
});
|
|
332
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
333
|
+
if (receipt.status === 'reverted')
|
|
334
|
+
throw new Error(`storeMemory reverted. Tx: ${txHash}`);
|
|
335
|
+
return txHash;
|
|
336
|
+
}
|
|
337
|
+
/** Get memory count for an agent (by wallet address) */
|
|
338
|
+
async function getMemoryCount(client, network, agentWallet) {
|
|
339
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
340
|
+
return await client.readContract({
|
|
341
|
+
address: addrs.memoryStorage,
|
|
342
|
+
abi: contracts_1.MEMORY_STORAGE_ABI,
|
|
343
|
+
functionName: 'getMemoryCount',
|
|
344
|
+
args: [agentWallet],
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
/** Get a specific memory entry */
|
|
348
|
+
async function getMemory(client, network, agentWallet, index) {
|
|
349
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
350
|
+
return await client.readContract({
|
|
351
|
+
address: addrs.memoryStorage,
|
|
352
|
+
abi: contracts_1.MEMORY_STORAGE_ABI,
|
|
353
|
+
functionName: 'getMemory',
|
|
354
|
+
args: [agentWallet, index],
|
|
355
|
+
});
|
|
356
|
+
}
|
|
357
|
+
// ── Immortalization ────────────────────────────────────────────────────────
|
|
358
|
+
/**
|
|
359
|
+
* Update the birth certificate memory CID and set immortalized = true.
|
|
360
|
+
*
|
|
361
|
+
* MUST be called by the agent wallet itself (msg.sender = agent wallet).
|
|
362
|
+
* The agent wallet needs ETH for gas.
|
|
363
|
+
*/
|
|
364
|
+
async function updateBirthCertMemory(publicClient, agentWalletClient, network, memoryCID) {
|
|
365
|
+
const addrs = (0, contracts_1.getAddresses)(network);
|
|
366
|
+
const chain = agentWalletClient.chain;
|
|
367
|
+
const account = agentWalletClient.account;
|
|
368
|
+
const txHash = await agentWalletClient.writeContract({
|
|
369
|
+
address: addrs.birthCertificate,
|
|
370
|
+
abi: contracts_1.BIRTH_CERTIFICATE_ABI,
|
|
371
|
+
functionName: 'updateMemory',
|
|
372
|
+
args: [memoryCID],
|
|
373
|
+
chain,
|
|
374
|
+
account,
|
|
375
|
+
});
|
|
376
|
+
const receipt = await publicClient.waitForTransactionReceipt({ hash: txHash });
|
|
377
|
+
if (receipt.status === 'reverted') {
|
|
378
|
+
throw new Error(`updateMemory reverted. Tx: ${txHash}`);
|
|
379
|
+
}
|
|
380
|
+
return txHash;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Immortalize an agent: store memory on-chain + update birth certificate.
|
|
384
|
+
*
|
|
385
|
+
* Convenience function that does both steps:
|
|
386
|
+
* 1. Store memory text in MemoryStorage (creator pays gas, agent signs)
|
|
387
|
+
* 2. Auto-fund agent wallet if needed (creator sends ETH for gas)
|
|
388
|
+
* 3. Update birth certificate memoryCID (agent wallet pays gas, sets immortalized = true)
|
|
389
|
+
*/
|
|
390
|
+
async function immortalizeAgent(publicClient, creatorWalletClient, agentWalletClient, network, agentWallet, agentPrivateKey, text) {
|
|
391
|
+
// Step 1: Store memory in MemoryStorage (creator pays gas)
|
|
392
|
+
const memoryTxHash = await storeMemory(publicClient, creatorWalletClient, network, agentWallet, agentPrivateKey, text);
|
|
393
|
+
// Use keccak256 of text as the CID (same as storeMemory does)
|
|
394
|
+
const memoryCID = (0, viem_1.keccak256)(new TextEncoder().encode(text));
|
|
395
|
+
// Step 2: Auto-fund agent wallet if it doesn't have enough ETH for gas
|
|
396
|
+
const MIN_AGENT_GAS = (0, viem_1.parseEther)('0.0005');
|
|
397
|
+
let fundTxHash;
|
|
398
|
+
const agentBalance = await publicClient.getBalance({ address: agentWallet });
|
|
399
|
+
if (agentBalance < MIN_AGENT_GAS) {
|
|
400
|
+
const chain = creatorWalletClient.chain;
|
|
401
|
+
const account = creatorWalletClient.account;
|
|
402
|
+
fundTxHash = await creatorWalletClient.sendTransaction({
|
|
403
|
+
to: agentWallet,
|
|
404
|
+
value: MIN_AGENT_GAS,
|
|
405
|
+
chain,
|
|
406
|
+
account,
|
|
407
|
+
});
|
|
408
|
+
await publicClient.waitForTransactionReceipt({ hash: fundTxHash });
|
|
409
|
+
}
|
|
410
|
+
// Step 3: Update birth certificate (agent wallet pays gas, sets immortalized = true)
|
|
411
|
+
const immortalizeTxHash = await updateBirthCertMemory(publicClient, agentWalletClient, network, memoryCID);
|
|
412
|
+
return { memoryTxHash, immortalizeTxHash, memoryCID, fundTxHash };
|
|
413
|
+
}
|
|
414
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../src/chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `clawclick agent-info` — Display on-chain agent information
|
|
3
|
+
*
|
|
4
|
+
* Reads birth certificate and token data from chain.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
export declare function agentInfoCommand(): Command;
|
|
8
|
+
//# sourceMappingURL=agent-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-info.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent-info.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,wBAAgB,gBAAgB,IAAI,OAAO,CA4E1C"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `clawclick agent-info` — Display on-chain agent information
|
|
4
|
+
*
|
|
5
|
+
* Reads birth certificate and token data from chain.
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.agentInfoCommand = agentInfoCommand;
|
|
12
|
+
const commander_1 = require("commander");
|
|
13
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
14
|
+
const ora_1 = __importDefault(require("ora"));
|
|
15
|
+
const wallet_1 = require("../../wallet");
|
|
16
|
+
const chain_1 = require("../../chain");
|
|
17
|
+
const api_1 = require("../../api");
|
|
18
|
+
function agentInfoCommand() {
|
|
19
|
+
const cmd = new commander_1.Command('agent-info')
|
|
20
|
+
.description('Display agent information from on-chain birth certificate data')
|
|
21
|
+
.option('--wallet <address>', 'Agent wallet (defaults to config)')
|
|
22
|
+
.option('--rpc <url>', 'Custom RPC URL')
|
|
23
|
+
.action(async (opts) => {
|
|
24
|
+
let wallet;
|
|
25
|
+
let network = 'sepolia';
|
|
26
|
+
if (opts.wallet) {
|
|
27
|
+
wallet = opts.wallet;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
try {
|
|
31
|
+
const config = (0, wallet_1.loadConfig)();
|
|
32
|
+
wallet = config.agentWallet;
|
|
33
|
+
network = config.network;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
console.log(chalk_1.default.red('No wallet specified and no clawclick.json found'));
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const spinner = (0, ora_1.default)('Fetching on-chain data...').start();
|
|
41
|
+
try {
|
|
42
|
+
const client = (0, wallet_1.createReader)(network, opts.rpc);
|
|
43
|
+
const agent = await (0, chain_1.getAgentByWallet)(client, network, wallet);
|
|
44
|
+
if (!agent) {
|
|
45
|
+
spinner.fail('No agent found for this wallet');
|
|
46
|
+
console.log(chalk_1.default.dim(` Wallet: ${wallet}`));
|
|
47
|
+
console.log(chalk_1.default.dim(' Has the birth certificate been minted?'));
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
spinner.succeed('Agent found on-chain');
|
|
51
|
+
console.log('');
|
|
52
|
+
console.log(chalk_1.default.bold(agent.name));
|
|
53
|
+
console.log(` NFT ID: #${agent.nftId.toString()}`);
|
|
54
|
+
console.log(` Wallet: ${chalk_1.default.cyan(agent.wallet)}`);
|
|
55
|
+
console.log(` Creator: ${chalk_1.default.dim(agent.creator)}`);
|
|
56
|
+
console.log(` Token: ${agent.tokenAddress !== '0x0000000000000000000000000000000000000000' ? chalk_1.default.cyan(agent.tokenAddress) : chalk_1.default.dim('none')}`);
|
|
57
|
+
console.log(` Born: ${new Date(Number(agent.birthTimestamp) * 1000).toLocaleString()}`);
|
|
58
|
+
console.log(` Immortalized: ${agent.immortalized ? chalk_1.default.green('yes') : 'no'}`);
|
|
59
|
+
if (agent.memoryCID)
|
|
60
|
+
console.log(` Memory CID: ${chalk_1.default.dim(agent.memoryCID)}`);
|
|
61
|
+
if (agent.socialHandle)
|
|
62
|
+
console.log(` Social: ${agent.socialHandle}`);
|
|
63
|
+
if (agent.ensName)
|
|
64
|
+
console.log(` ENS: ${agent.ensName}`);
|
|
65
|
+
// Memory count
|
|
66
|
+
try {
|
|
67
|
+
const memCount = await (0, chain_1.getMemoryCount)(client, network, agent.wallet);
|
|
68
|
+
console.log(` Memories: ${memCount.toString()}`);
|
|
69
|
+
}
|
|
70
|
+
catch { /* memory storage might not be deployed */ }
|
|
71
|
+
// Token stats from API
|
|
72
|
+
if (agent.tokenAddress && agent.tokenAddress !== '0x0000000000000000000000000000000000000000') {
|
|
73
|
+
try {
|
|
74
|
+
const api = new api_1.ClawClickApiClient();
|
|
75
|
+
const stats = await api.getTokenStats(agent.tokenAddress);
|
|
76
|
+
console.log('');
|
|
77
|
+
console.log(chalk_1.default.bold('Token Stats:'));
|
|
78
|
+
if (stats.token?.current_price)
|
|
79
|
+
console.log(` Price: ${stats.token.current_price} ETH`);
|
|
80
|
+
if (stats.token?.current_mcap)
|
|
81
|
+
console.log(` Market Cap: ${stats.token.current_mcap} ETH`);
|
|
82
|
+
if (stats.token?.volume_24h)
|
|
83
|
+
console.log(` Volume 24h: ${stats.token.volume_24h} ETH`);
|
|
84
|
+
}
|
|
85
|
+
catch { /* API might be down */ }
|
|
86
|
+
}
|
|
87
|
+
console.log('');
|
|
88
|
+
console.log(chalk_1.default.dim(`View: https://claw.click/agent/${wallet}`));
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
spinner.fail('Failed to fetch agent info');
|
|
92
|
+
console.error(chalk_1.default.red(err.message));
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
return cmd;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=agent-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-info.js","sourceRoot":"","sources":["../../../src/cli/commands/agent-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `clawclick create` — One-liner: init + deploy
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* clawclick create --name "MyAgent" --symbol "AGNT" --creator-key 0x...
|
|
6
|
+
*/
|
|
7
|
+
import { Command } from 'commander';
|
|
8
|
+
export declare function createCommand(): Command;
|
|
9
|
+
export declare function runCreate(opts: any): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKnC,wBAAgB,aAAa,IAAI,OAAO,CAevC;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBxD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `clawclick create` — One-liner: init + deploy
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* clawclick create --name "MyAgent" --symbol "AGNT" --creator-key 0x...
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createCommand = createCommand;
|
|
13
|
+
exports.runCreate = runCreate;
|
|
14
|
+
const commander_1 = require("commander");
|
|
15
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
16
|
+
const init_1 = require("./init");
|
|
17
|
+
const deploy_1 = require("./deploy");
|
|
18
|
+
function createCommand() {
|
|
19
|
+
const cmd = new commander_1.Command('create')
|
|
20
|
+
.description('Create and deploy an agent in one step (init + deploy)')
|
|
21
|
+
.requiredOption('-n, --name <name>', 'Agent / token name')
|
|
22
|
+
.requiredOption('-s, --symbol <symbol>', 'Token symbol')
|
|
23
|
+
.option('--network <network>', 'Network: mainnet | sepolia', 'sepolia')
|
|
24
|
+
.option('--mcap <eth>', 'Starting MCAP in ETH', '5')
|
|
25
|
+
.option('--dev-buy <percent>', 'Dev buy percent', '0')
|
|
26
|
+
.option('--creator-key <key>', 'Creator private key (or env CLAWCLICK_CREATOR_KEY)')
|
|
27
|
+
.option('--rpc <url>', 'RPC URL override')
|
|
28
|
+
.action(async (opts) => {
|
|
29
|
+
await runCreate(opts);
|
|
30
|
+
});
|
|
31
|
+
return cmd;
|
|
32
|
+
}
|
|
33
|
+
async function runCreate(opts) {
|
|
34
|
+
console.log(chalk_1.default.bold('Creating and deploying agent in one step...\n'));
|
|
35
|
+
// Step 1: Init
|
|
36
|
+
await (0, init_1.runInit)({
|
|
37
|
+
name: opts.name,
|
|
38
|
+
symbol: opts.symbol,
|
|
39
|
+
network: opts.network || 'sepolia',
|
|
40
|
+
mcap: opts.mcap || '5',
|
|
41
|
+
devBuy: opts.devBuy || '0',
|
|
42
|
+
creatorKey: opts.creatorKey || process.env.CLAWCLICK_CREATOR_KEY,
|
|
43
|
+
funlan: true,
|
|
44
|
+
force: true,
|
|
45
|
+
});
|
|
46
|
+
console.log('');
|
|
47
|
+
// Step 2: Deploy
|
|
48
|
+
await (0, deploy_1.runDeploy)({
|
|
49
|
+
creatorKey: opts.creatorKey || process.env.CLAWCLICK_CREATOR_KEY,
|
|
50
|
+
rpc: opts.rpc,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/cli/commands/create.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAOH,sCAeC;AAED,8BAsBC;AA5CD,yCAAmC;AACnC,kDAAyB;AACzB,iCAAgC;AAChC,qCAAoC;AAEpC,SAAgB,aAAa;IAC3B,MAAM,GAAG,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;SAC9B,WAAW,CAAC,wDAAwD,CAAC;SACrE,cAAc,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;SACzD,cAAc,CAAC,uBAAuB,EAAE,cAAc,CAAC;SACvD,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,SAAS,CAAC;SACtE,MAAM,CAAC,cAAc,EAAE,sBAAsB,EAAE,GAAG,CAAC;SACnD,MAAM,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,GAAG,CAAC;SACrD,MAAM,CAAC,qBAAqB,EAAE,oDAAoD,CAAC;SACnF,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,MAAM,SAAS,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEJ,OAAO,GAAG,CAAA;AACZ,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,IAAS;IACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC,CAAA;IAExE,eAAe;IACf,MAAM,IAAA,cAAO,EAAC;QACZ,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;QAClC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;QACtB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,GAAG;QAC1B,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB;QAChE,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,IAAI;KACZ,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAEf,iBAAiB;IACjB,MAAM,IAAA,kBAAS,EAAC;QACd,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB;QAChE,GAAG,EAAE,IAAI,CAAC,GAAG;KACd,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `clawclick deploy` — Deploy agent token + mint birth certificate on-chain
|
|
3
|
+
*
|
|
4
|
+
* Reads clawclick.json config, executes:
|
|
5
|
+
* 1. factory.createLaunch() → token address
|
|
6
|
+
* 2. birthCertificate.mintBirthCertificate() → NFT ID
|
|
7
|
+
* 3. Updates config with tokenAddress + nftId
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
export declare function deployCommand(): Command;
|
|
11
|
+
export declare function runDeploy(opts: any): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=deploy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQnC,wBAAgB,aAAa,IAAI,OAAO,CAavC;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAgKxD"}
|