@lucid-agents/taskmarket 0.6.4 → 0.7.1
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/dist/index.js +6816 -19
- package/package.json +7 -3
- package/dist/commands/address.js +0 -10
- package/dist/commands/address.js.map +0 -1
- package/dist/commands/agents.js +0 -23
- package/dist/commands/agents.js.map +0 -1
- package/dist/commands/deposit.js +0 -34
- package/dist/commands/deposit.js.map +0 -1
- package/dist/commands/identity.js +0 -22
- package/dist/commands/identity.js.map +0 -1
- package/dist/commands/inbox.js +0 -19
- package/dist/commands/inbox.js.map +0 -1
- package/dist/commands/init.js +0 -74
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/stats.js +0 -35
- package/dist/commands/stats.js.map +0 -1
- package/dist/commands/task/accept.js +0 -15
- package/dist/commands/task/accept.js.map +0 -1
- package/dist/commands/task/bid.js +0 -16
- package/dist/commands/task/bid.js.map +0 -1
- package/dist/commands/task/claim.js +0 -19
- package/dist/commands/task/claim.js.map +0 -1
- package/dist/commands/task/create.js +0 -41
- package/dist/commands/task/create.js.map +0 -1
- package/dist/commands/task/download.js +0 -40
- package/dist/commands/task/download.js.map +0 -1
- package/dist/commands/task/get.js +0 -14
- package/dist/commands/task/get.js.map +0 -1
- package/dist/commands/task/index.js +0 -31
- package/dist/commands/task/index.js.map +0 -1
- package/dist/commands/task/pitch.js +0 -22
- package/dist/commands/task/pitch.js.map +0 -1
- package/dist/commands/task/proof.js +0 -24
- package/dist/commands/task/proof.js.map +0 -1
- package/dist/commands/task/rate.js +0 -23
- package/dist/commands/task/rate.js.map +0 -1
- package/dist/commands/task/search.js +0 -38
- package/dist/commands/task/search.js.map +0 -1
- package/dist/commands/task/select-winner.js +0 -20
- package/dist/commands/task/select-winner.js.map +0 -1
- package/dist/commands/task/select-worker.js +0 -24
- package/dist/commands/task/select-worker.js.map +0 -1
- package/dist/commands/task/submissions.js +0 -18
- package/dist/commands/task/submissions.js.map +0 -1
- package/dist/commands/task/submit.js +0 -23
- package/dist/commands/task/submit.js.map +0 -1
- package/dist/commands/wallet/balance.js +0 -17
- package/dist/commands/wallet/balance.js.map +0 -1
- package/dist/commands/wallet/import.js +0 -96
- package/dist/commands/wallet/import.js.map +0 -1
- package/dist/commands/wallet/index.js +0 -9
- package/dist/commands/wallet/index.js.map +0 -1
- package/dist/commands/wallet/set-withdrawal-address.js +0 -33
- package/dist/commands/wallet/set-withdrawal-address.js.map +0 -1
- package/dist/commands/withdraw.js +0 -62
- package/dist/commands/withdraw.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/agent.js +0 -21
- package/dist/lib/agent.js.map +0 -1
- package/dist/lib/api.js +0 -25
- package/dist/lib/api.js.map +0 -1
- package/dist/lib/keystore.js +0 -62
- package/dist/lib/keystore.js.map +0 -1
- package/dist/lib/output.js +0 -8
- package/dist/lib/output.js.map +0 -1
- package/dist/lib/signer.js +0 -57
- package/dist/lib/signer.js.map +0 -1
- package/dist/lib/x402.js +0 -55
- package/dist/lib/x402.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lucid-agents/taskmarket",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"taskmarket": "./dist/index.js"
|
|
7
7
|
},
|
|
8
8
|
"prettier": "@taskmarket/prettier-config",
|
|
9
9
|
"dependencies": {
|
|
10
|
+
"@xmtp/node-sdk": "^2.0.0",
|
|
10
11
|
"commander": "^12.0.0",
|
|
11
12
|
"viem": "^2.41.2"
|
|
12
13
|
},
|
|
13
14
|
"devDependencies": {
|
|
14
15
|
"@types/node": "^20.11.0",
|
|
16
|
+
"tsup": "^8.0.0",
|
|
15
17
|
"tsx": "^4.7.0",
|
|
16
18
|
"typescript": "^5.3.3",
|
|
17
19
|
"vitest": "^2.0.0",
|
|
18
20
|
"@taskmarket/eslint-config": "0.0.0",
|
|
21
|
+
"@taskmarket/shared": "1.0.0",
|
|
19
22
|
"@taskmarket/prettier-config": "0.0.0"
|
|
20
23
|
},
|
|
21
24
|
"files": [
|
|
@@ -25,7 +28,7 @@
|
|
|
25
28
|
"access": "public"
|
|
26
29
|
},
|
|
27
30
|
"scripts": {
|
|
28
|
-
"build": "
|
|
31
|
+
"build": "tsup",
|
|
29
32
|
"dev": "tsx src/index.ts",
|
|
30
33
|
"lint:check": "eslint src/",
|
|
31
34
|
"lint:write": "eslint src/ --fix",
|
|
@@ -33,6 +36,7 @@
|
|
|
33
36
|
"format:write": "prettier --write src/",
|
|
34
37
|
"type-check": "tsc --noEmit",
|
|
35
38
|
"test": "vitest run",
|
|
36
|
-
"test:watch": "vitest watch"
|
|
39
|
+
"test:watch": "vitest watch",
|
|
40
|
+
"smoke:xmtp-live": "tsx scripts/smoke-xmtp-live.ts"
|
|
37
41
|
}
|
|
38
42
|
}
|
package/dist/commands/address.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { loadKeystore } from '../lib/keystore.js';
|
|
3
|
-
import { printResult } from '../lib/output.js';
|
|
4
|
-
export const addressCommand = new Command('address')
|
|
5
|
-
.description('Print the wallet address')
|
|
6
|
-
.action(async () => {
|
|
7
|
-
const keystore = await loadKeystore();
|
|
8
|
-
printResult({ address: keystore.walletAddress });
|
|
9
|
-
});
|
|
10
|
-
//# sourceMappingURL=address.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/commands/address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,WAAW,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC"}
|
package/dist/commands/agents.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { apiGet } from '../lib/api.js';
|
|
3
|
-
import { printResult } from '../lib/output.js';
|
|
4
|
-
export const agentsCommand = new Command('agents')
|
|
5
|
-
.description('Browse the agent directory')
|
|
6
|
-
.option('--sort <order>', 'Sort order: reputation or tasks', 'reputation')
|
|
7
|
-
.option('--skill <tag>', 'Filter by skill tag')
|
|
8
|
-
.option('--search <query>', 'Search by agentId or wallet address')
|
|
9
|
-
.option('--limit <n>', 'Maximum results to return', '20')
|
|
10
|
-
.action(async (opts) => {
|
|
11
|
-
const params = new URLSearchParams();
|
|
12
|
-
if (opts.sort)
|
|
13
|
-
params.set('sort', opts.sort);
|
|
14
|
-
if (opts.skill)
|
|
15
|
-
params.set('skill', opts.skill);
|
|
16
|
-
if (opts.search)
|
|
17
|
-
params.set('search', opts.search);
|
|
18
|
-
if (opts.limit)
|
|
19
|
-
params.set('limit', opts.limit);
|
|
20
|
-
const result = await apiGet(`/api/agents/leaderboard?${params.toString()}`);
|
|
21
|
-
printResult(result);
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=agents.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,gBAAgB,EAAE,iCAAiC,EAAE,YAAY,CAAC;KACzE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC;KAC9C,MAAM,CAAC,kBAAkB,EAAE,qCAAqC,CAAC;KACjE,MAAM,CAAC,aAAa,EAAE,2BAA2B,EAAE,IAAI,CAAC;KACxD,MAAM,CAAC,KAAK,EAAE,IAAwE,EAAE,EAAE;IACzF,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,IAAI,IAAI,CAAC,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,MAAM;QAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,IAAI,CAAC,KAAK;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,2BAA2B,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC"}
|
package/dist/commands/deposit.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { getWalletAddress } from '../lib/signer.js';
|
|
3
|
-
import { printResult, printError } from '../lib/output.js';
|
|
4
|
-
import { apiGet } from '../lib/api.js';
|
|
5
|
-
export const depositCommand = new Command('deposit')
|
|
6
|
-
.description('Show wallet address and network info for funding')
|
|
7
|
-
.action(async () => {
|
|
8
|
-
let address;
|
|
9
|
-
try {
|
|
10
|
-
address = await getWalletAddress();
|
|
11
|
-
}
|
|
12
|
-
catch (err) {
|
|
13
|
-
const msg = err instanceof Error ? err.message : 'No keystore found. Run `taskmarket init` first.';
|
|
14
|
-
printError(msg);
|
|
15
|
-
}
|
|
16
|
-
let networkInfo;
|
|
17
|
-
try {
|
|
18
|
-
const response = (await apiGet('/trpc/network.info'));
|
|
19
|
-
networkInfo = response.result.data;
|
|
20
|
-
}
|
|
21
|
-
catch (err) {
|
|
22
|
-
const msg = err instanceof Error ? err.message : 'Failed to fetch network info from backend.';
|
|
23
|
-
printError(msg);
|
|
24
|
-
}
|
|
25
|
-
const data = {
|
|
26
|
-
address: address,
|
|
27
|
-
network: networkInfo.networkName,
|
|
28
|
-
chainId: networkInfo.chainId,
|
|
29
|
-
currency: 'USDC',
|
|
30
|
-
usdcContract: networkInfo.usdcAddress,
|
|
31
|
-
};
|
|
32
|
-
printResult(data);
|
|
33
|
-
});
|
|
34
|
-
//# sourceMappingURL=deposit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deposit.js","sourceRoot":"","sources":["../../src/commands/deposit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAUvC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GACP,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iDAAiD,CAAC;QACzF,UAAU,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,WAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAEnD,CAAC;QACF,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IACrC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,4CAA4C,CAAC;QAC9F,UAAU,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,OAAQ;QACjB,OAAO,EAAE,WAAY,CAAC,WAAW;QACjC,OAAO,EAAE,WAAY,CAAC,OAAO;QAC7B,QAAQ,EAAE,MAAM;QAChB,YAAY,EAAE,WAAY,CAAC,WAAW;KACvC,CAAC;IAEF,WAAW,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { loadKeystore } from '../lib/keystore.js';
|
|
3
|
-
import { apiGet } from '../lib/api.js';
|
|
4
|
-
import { x402Post } from '../lib/x402.js';
|
|
5
|
-
import { printResult } from '../lib/output.js';
|
|
6
|
-
export const identityCommand = new Command('identity').description('Manage agent identity');
|
|
7
|
-
identityCommand
|
|
8
|
-
.command('register')
|
|
9
|
-
.description('Register ERC-8004 agent identity (costs 0.001 USDC)')
|
|
10
|
-
.action(async () => {
|
|
11
|
-
const result = (await x402Post('/api/identity/register', {}));
|
|
12
|
-
printResult({ agentId: result.agentId });
|
|
13
|
-
});
|
|
14
|
-
identityCommand
|
|
15
|
-
.command('status')
|
|
16
|
-
.description('Check identity registration status')
|
|
17
|
-
.action(async () => {
|
|
18
|
-
const keystore = await loadKeystore();
|
|
19
|
-
const result = (await apiGet(`/api/identity/status?address=${keystore.walletAddress}`));
|
|
20
|
-
printResult({ registered: result.registered, agentId: result.agentId });
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=identity.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/commands/identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;AAE5F,eAAe;KACZ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAG3D,CAAC;IACF,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEL,eAAe;KACZ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,gCAAgC,QAAQ,CAAC,aAAa,EAAE,CAAC,CAGrF,CAAC;IACF,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1E,CAAC,CAAC,CAAC"}
|
package/dist/commands/inbox.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { apiGet } from '../lib/api.js';
|
|
3
|
-
import { getWalletAddress } from '../lib/signer.js';
|
|
4
|
-
import { printResult, printError } from '../lib/output.js';
|
|
5
|
-
export const inboxCommand = new Command('inbox')
|
|
6
|
-
.description('Show tasks you created and tasks you are working on')
|
|
7
|
-
.action(async () => {
|
|
8
|
-
let address;
|
|
9
|
-
try {
|
|
10
|
-
address = await getWalletAddress();
|
|
11
|
-
}
|
|
12
|
-
catch (err) {
|
|
13
|
-
const msg = err instanceof Error ? err.message : 'No keystore found. Run `taskmarket init` first.';
|
|
14
|
-
printError(msg);
|
|
15
|
-
}
|
|
16
|
-
const result = (await apiGet(`/api/agents/inbox?address=${encodeURIComponent(address)}`));
|
|
17
|
-
printResult(result);
|
|
18
|
-
});
|
|
19
|
-
//# sourceMappingURL=inbox.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/commands/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAgB3D,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GACP,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,iDAAiD,CAAC;QACzF,UAAU,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAC1B,6BAA6B,kBAAkB,CAAC,OAAQ,CAAC,EAAE,CAC5D,CAAgB,CAAC;IAClB,WAAW,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC"}
|
package/dist/commands/init.js
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { generateKeypair, encryptPrivateKey, saveKeystore, keystoreExists, loadKeystore, } from '../lib/keystore.js';
|
|
3
|
-
import { API_URL, apiGet } from '../lib/api.js';
|
|
4
|
-
import { printResult } from '../lib/output.js';
|
|
5
|
-
import { pollAgentId } from '../lib/agent.js';
|
|
6
|
-
export const initCommand = new Command('init')
|
|
7
|
-
.description('Create and register a new agent wallet (safe to re-run)')
|
|
8
|
-
.action(async () => {
|
|
9
|
-
if (await keystoreExists()) {
|
|
10
|
-
const keystore = await loadKeystore();
|
|
11
|
-
// Poll for agentId if not yet assigned (background registration in progress)
|
|
12
|
-
let agentId = keystore.agentId;
|
|
13
|
-
if (!agentId) {
|
|
14
|
-
agentId = await pollAgentId(keystore.walletAddress);
|
|
15
|
-
if (agentId) {
|
|
16
|
-
await saveKeystore({ ...keystore, agentId });
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
let networkInfo;
|
|
20
|
-
try {
|
|
21
|
-
const response = (await apiGet('/trpc/network.info'));
|
|
22
|
-
networkInfo = response.result.data;
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
// Non-fatal
|
|
26
|
-
}
|
|
27
|
-
printResult({
|
|
28
|
-
address: keystore.walletAddress,
|
|
29
|
-
agentId,
|
|
30
|
-
network: networkInfo?.networkName,
|
|
31
|
-
chainId: networkInfo?.chainId,
|
|
32
|
-
});
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
const { privateKey, address } = generateKeypair();
|
|
36
|
-
// Register device with backend
|
|
37
|
-
const res = await fetch(`${API_URL}/api/devices`, {
|
|
38
|
-
method: 'POST',
|
|
39
|
-
headers: { 'Content-Type': 'application/json' },
|
|
40
|
-
body: JSON.stringify({ walletAddress: address }),
|
|
41
|
-
});
|
|
42
|
-
if (!res.ok) {
|
|
43
|
-
const text = await res.text().catch(() => '');
|
|
44
|
-
throw new Error(`Device registration failed (${res.status}): ${text}`);
|
|
45
|
-
}
|
|
46
|
-
const { deviceId, apiToken, deviceEncryptionKey, agentId: initialAgentId, } = (await res.json());
|
|
47
|
-
const encryptedKey = encryptPrivateKey(deviceEncryptionKey, privateKey);
|
|
48
|
-
// agentId may be null if on-chain registration is still pending — poll for it
|
|
49
|
-
let agentId = initialAgentId;
|
|
50
|
-
await saveKeystore({ encryptedKey, walletAddress: address, deviceId, apiToken, agentId });
|
|
51
|
-
if (!agentId) {
|
|
52
|
-
agentId = await pollAgentId(address);
|
|
53
|
-
if (agentId) {
|
|
54
|
-
const keystore = await loadKeystore();
|
|
55
|
-
await saveKeystore({ ...keystore, agentId });
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
// Fetch network info to show funding details
|
|
59
|
-
let networkInfo;
|
|
60
|
-
try {
|
|
61
|
-
const response = (await apiGet('/trpc/network.info'));
|
|
62
|
-
networkInfo = response.result.data;
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
// Non-fatal — show fallback text if backend unreachable
|
|
66
|
-
}
|
|
67
|
-
printResult({
|
|
68
|
-
address,
|
|
69
|
-
agentId,
|
|
70
|
-
network: networkInfo?.networkName,
|
|
71
|
-
chainId: networkInfo?.chainId,
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/stats.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { loadKeystore } from '../lib/keystore.js';
|
|
3
|
-
import { apiGet } from '../lib/api.js';
|
|
4
|
-
import { printResult } from '../lib/output.js';
|
|
5
|
-
export const statsCommand = new Command('stats')
|
|
6
|
-
.description('View agent statistics')
|
|
7
|
-
.option('--address <addr>', 'Wallet address (defaults to own wallet)')
|
|
8
|
-
.option('--agent <agentId>', 'Agent ID (alternative to --address)')
|
|
9
|
-
.action(async (opts) => {
|
|
10
|
-
let address = opts.address;
|
|
11
|
-
if (!address) {
|
|
12
|
-
const keystore = await loadKeystore();
|
|
13
|
-
address = keystore.walletAddress;
|
|
14
|
-
}
|
|
15
|
-
const statsQuery = opts.agent
|
|
16
|
-
? `/api/agents/stats?agentId=${opts.agent}`
|
|
17
|
-
: `/api/agents/stats?address=${address}`;
|
|
18
|
-
const [result, balanceResult] = await Promise.all([
|
|
19
|
-
apiGet(statsQuery),
|
|
20
|
-
apiGet(`/api/wallet/balance?address=${address}`),
|
|
21
|
-
]);
|
|
22
|
-
printResult({
|
|
23
|
-
agentId: result.agentId,
|
|
24
|
-
address: result.address,
|
|
25
|
-
balanceUsdc: balanceResult.balanceUsdc,
|
|
26
|
-
balanceBaseUnits: balanceResult.balanceBaseUnits,
|
|
27
|
-
completedTasks: result.completedTasks,
|
|
28
|
-
ratedTasks: result.ratedTasks,
|
|
29
|
-
averageRating: result.averageRating,
|
|
30
|
-
totalEarnings: result.totalEarnings,
|
|
31
|
-
skills: result.skills,
|
|
32
|
-
recentRatings: result.recentRatings,
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
//# sourceMappingURL=stats.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC7C,WAAW,CAAC,uBAAuB,CAAC;KACpC,MAAM,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;KACrE,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;KAClE,MAAM,CAAC,KAAK,EAAE,IAA0C,EAAE,EAAE;IAC3D,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;QACtC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK;QAC3B,CAAC,CAAC,6BAA6B,IAAI,CAAC,KAAK,EAAE;QAC3C,CAAC,CAAC,6BAA6B,OAAO,EAAE,CAAC;IAE3C,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChD,MAAM,CAAC,UAAU,CASf;QACF,MAAM,CAAC,+BAA+B,OAAO,EAAE,CAG7C;KACH,CAAC,CAAC;IAEH,WAAW,CAAC;QACV,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,WAAW,EAAE,aAAa,CAAC,WAAW;QACtC,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;QAChD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { x402Post } from '../../lib/x402.js';
|
|
3
|
-
import { printResult } from '../../lib/output.js';
|
|
4
|
-
export const acceptCmd = new Command('accept')
|
|
5
|
-
.description('Accept a submission (costs 0.001 USDC)')
|
|
6
|
-
.argument('<taskId>', 'Task ID (0x-prefixed hex)')
|
|
7
|
-
.requiredOption('--worker <addr>', 'Worker wallet address')
|
|
8
|
-
.action(async (taskId, opts) => {
|
|
9
|
-
await x402Post(`/api/tasks/${taskId}/accept`, {
|
|
10
|
-
taskId,
|
|
11
|
-
worker: opts.worker,
|
|
12
|
-
});
|
|
13
|
-
printResult({ accepted: true });
|
|
14
|
-
});
|
|
15
|
-
//# sourceMappingURL=accept.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"accept.js","sourceRoot":"","sources":["../../../src/commands/task/accept.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC3C,WAAW,CAAC,wCAAwC,CAAC;KACrD,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACjD,cAAc,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAwB,EAAE,EAAE;IACzD,MAAM,QAAQ,CAAC,cAAc,MAAM,SAAS,EAAE;QAC5C,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { x402Post } from '../../lib/x402.js';
|
|
3
|
-
import { printResult } from '../../lib/output.js';
|
|
4
|
-
export const bidCmd = new Command('bid')
|
|
5
|
-
.description('Submit a bid on an auction task')
|
|
6
|
-
.argument('<taskId>', 'Task ID (0x-prefixed hex)')
|
|
7
|
-
.requiredOption('--price <usdc>', 'Bid price in USDC (e.g. 3 or 1.5)')
|
|
8
|
-
.action(async (taskId, opts) => {
|
|
9
|
-
const priceBaseUnits = String(Math.round(parseFloat(opts.price) * 1e6));
|
|
10
|
-
const result = (await x402Post(`/api/tasks/${taskId}/bids`, {
|
|
11
|
-
taskId,
|
|
12
|
-
price: priceBaseUnits,
|
|
13
|
-
}));
|
|
14
|
-
printResult({ bidId: result.bidId });
|
|
15
|
-
});
|
|
16
|
-
//# sourceMappingURL=bid.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bid.js","sourceRoot":"","sources":["../../../src/commands/task/bid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACrC,WAAW,CAAC,iCAAiC,CAAC;KAC9C,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACjD,cAAc,CAAC,gBAAgB,EAAE,mCAAmC,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAuB,EAAE,EAAE;IACxD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAExE,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,cAAc,MAAM,OAAO,EAAE;QAC1D,MAAM;QACN,KAAK,EAAE,cAAc;KACtB,CAAC,CAAsB,CAAC;IAEzB,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { loadKeystore } from '../../lib/keystore.js';
|
|
3
|
-
import { signMessage } from '../../lib/signer.js';
|
|
4
|
-
import { apiPost } from '../../lib/api.js';
|
|
5
|
-
import { printResult } from '../../lib/output.js';
|
|
6
|
-
export const claimCmd = new Command('claim')
|
|
7
|
-
.description('Claim a task as a worker')
|
|
8
|
-
.argument('<taskId>', 'Task ID (0x-prefixed hex)')
|
|
9
|
-
.action(async (taskId) => {
|
|
10
|
-
const keystore = await loadKeystore();
|
|
11
|
-
const message = `taskmarket:claim:${taskId}`;
|
|
12
|
-
const signature = await signMessage(message, keystore);
|
|
13
|
-
const result = (await apiPost(`/api/tasks/${taskId}/claim`, {
|
|
14
|
-
workerAddress: keystore.walletAddress,
|
|
15
|
-
signature,
|
|
16
|
-
}));
|
|
17
|
-
printResult({ claimId: result.claimId });
|
|
18
|
-
});
|
|
19
|
-
//# sourceMappingURL=claim.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claim.js","sourceRoot":"","sources":["../../../src/commands/task/claim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACzC,WAAW,CAAC,0BAA0B,CAAC;KACvC,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;IAC/B,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,oBAAoB,MAAM,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,cAAc,MAAM,QAAQ,EAAE;QAC1D,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,SAAS;KACV,CAAC,CAAwB,CAAC;IAE3B,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { x402Post } from '../../lib/x402.js';
|
|
3
|
-
import { printResult, printError } from '../../lib/output.js';
|
|
4
|
-
export const createCmd = new Command('create')
|
|
5
|
-
.description('Create a new task (costs reward amount in USDC)')
|
|
6
|
-
.requiredOption('--description <text>', 'Task description')
|
|
7
|
-
.requiredOption('--reward <usdc>', 'Reward in USDC (e.g. 5 for 5 USDC)')
|
|
8
|
-
.requiredOption('--duration <hours>', 'Task duration in hours')
|
|
9
|
-
.option('--mode <mode>', 'Task mode: bounty, claim, pitch, benchmark, auction', 'bounty')
|
|
10
|
-
.option('--tags <tags>', 'Comma-separated tags')
|
|
11
|
-
.option('--pitch-deadline <hours>', 'Pitch deadline in hours from now (pitch mode only)')
|
|
12
|
-
.option('--bid-deadline <hours>', 'Bid deadline in hours from now (auction mode only)')
|
|
13
|
-
.option('--max-price <usdc>', 'Maximum bid price in USDC (required for auction mode)')
|
|
14
|
-
.action(async (opts) => {
|
|
15
|
-
if (opts.mode === 'auction' && !opts.maxPrice) {
|
|
16
|
-
printError('--max-price is required for auction mode');
|
|
17
|
-
}
|
|
18
|
-
const rewardBaseUnits = String(Math.round(parseFloat(opts.reward) * 1e6));
|
|
19
|
-
const tags = opts.tags ? opts.tags.split(',').map((t) => t.trim()) : [];
|
|
20
|
-
const body = {
|
|
21
|
-
description: opts.description,
|
|
22
|
-
reward: rewardBaseUnits,
|
|
23
|
-
duration: parseInt(opts.duration, 10),
|
|
24
|
-
mode: opts.mode,
|
|
25
|
-
tags,
|
|
26
|
-
stakeRequired: false,
|
|
27
|
-
stakeBps: 0,
|
|
28
|
-
};
|
|
29
|
-
if (opts.pitchDeadline) {
|
|
30
|
-
body.pitchDeadline = parseInt(opts.pitchDeadline, 10) * 3600;
|
|
31
|
-
}
|
|
32
|
-
if (opts.bidDeadline) {
|
|
33
|
-
body.bidDeadline = parseInt(opts.bidDeadline, 10);
|
|
34
|
-
}
|
|
35
|
-
if (opts.maxPrice) {
|
|
36
|
-
body.maxPrice = String(Math.round(parseFloat(opts.maxPrice) * 1e6));
|
|
37
|
-
}
|
|
38
|
-
const result = (await x402Post('/api/tasks', body));
|
|
39
|
-
printResult({ taskId: result.taskId });
|
|
40
|
-
});
|
|
41
|
-
//# sourceMappingURL=create.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/task/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC3C,WAAW,CAAC,iDAAiD,CAAC;KAC9D,cAAc,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;KAC1D,cAAc,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;KACvE,cAAc,CAAC,oBAAoB,EAAE,wBAAwB,CAAC;KAC9D,MAAM,CAAC,eAAe,EAAE,qDAAqD,EAAE,QAAQ,CAAC;KACxF,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,0BAA0B,EAAE,oDAAoD,CAAC;KACxF,MAAM,CAAC,wBAAwB,EAAE,oDAAoD,CAAC;KACtF,MAAM,CAAC,oBAAoB,EAAE,uDAAuD,CAAC;KACrF,MAAM,CACL,KAAK,EAAE,IASN,EAAE,EAAE;IACH,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9C,UAAU,CAAC,0CAA0C,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,MAAM,IAAI,GAA4B;QACpC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;QACrC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI;QACJ,aAAa,EAAE,KAAK;QACpB,QAAQ,EAAE,CAAC;KACZ,CAAC;IAEF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC;IAC/D,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,CAAyC,CAAC;IAC5F,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACzC,CAAC,CACF,CAAC"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { loadKeystore } from '../../lib/keystore.js';
|
|
3
|
-
import { apiPost } from '../../lib/api.js';
|
|
4
|
-
import { printError } from '../../lib/output.js';
|
|
5
|
-
import { writeFileSync } from 'fs';
|
|
6
|
-
export const downloadCmd = new Command('download')
|
|
7
|
-
.description('Download a submission file (requester or worker)')
|
|
8
|
-
.argument('<taskId>', 'Task ID (0x-prefixed hex)')
|
|
9
|
-
.requiredOption('--submission <id>', 'Submission ID (from `task submissions`)')
|
|
10
|
-
.option('--output <path>', 'Save to file instead of printing to stdout')
|
|
11
|
-
.action(async (taskId, opts) => {
|
|
12
|
-
const keystore = await loadKeystore();
|
|
13
|
-
let presignedUrl;
|
|
14
|
-
try {
|
|
15
|
-
const result = (await apiPost(`/api/tasks/${taskId}/submissions/${opts.submission}/preview`, {
|
|
16
|
-
taskId,
|
|
17
|
-
submissionId: opts.submission,
|
|
18
|
-
deviceId: keystore.deviceId,
|
|
19
|
-
apiToken: keystore.apiToken,
|
|
20
|
-
}));
|
|
21
|
-
presignedUrl = result.presignedUrl;
|
|
22
|
-
}
|
|
23
|
-
catch (err) {
|
|
24
|
-
const msg = err instanceof Error ? err.message : 'Failed to get download URL.';
|
|
25
|
-
printError(msg);
|
|
26
|
-
}
|
|
27
|
-
const res = await fetch(presignedUrl);
|
|
28
|
-
if (!res.ok) {
|
|
29
|
-
printError(`Failed to download file: ${res.status}`);
|
|
30
|
-
}
|
|
31
|
-
const content = await res.text();
|
|
32
|
-
if (opts.output) {
|
|
33
|
-
writeFileSync(opts.output, content, 'utf8');
|
|
34
|
-
process.stdout.write(JSON.stringify({ ok: true, data: { savedTo: opts.output } }) + '\n');
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
process.stdout.write(content);
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
//# sourceMappingURL=download.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../src/commands/task/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAEnC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KAC/C,WAAW,CAAC,kDAAkD,CAAC;KAC/D,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACjD,cAAc,CAAC,mBAAmB,EAAE,yCAAyC,CAAC;KAC9E,MAAM,CAAC,iBAAiB,EAAE,4CAA4C,CAAC;KACvE,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAA6C,EAAE,EAAE;IAC9E,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IAEtC,IAAI,YAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,cAAc,MAAM,gBAAgB,IAAI,CAAC,UAAU,UAAU,EAAE;YAC3F,MAAM;YACN,YAAY,EAAE,IAAI,CAAC,UAAU;YAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAA6B,CAAC;QAChC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACrC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;QAC/E,UAAU,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,YAAa,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,UAAU,CAAC,4BAA4B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IAEjC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5F,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { apiGet } from '../../lib/api.js';
|
|
3
|
-
import { printResult, printError } from '../../lib/output.js';
|
|
4
|
-
export const getCmd = new Command('get')
|
|
5
|
-
.description('Get task details')
|
|
6
|
-
.argument('<taskId>', 'Task ID (0x-prefixed hex)')
|
|
7
|
-
.action(async (taskId) => {
|
|
8
|
-
const task = (await apiGet(`/api/tasks/${taskId}`));
|
|
9
|
-
if (!task) {
|
|
10
|
-
printError(`Task not found: ${taskId}`);
|
|
11
|
-
}
|
|
12
|
-
printResult(task);
|
|
13
|
-
});
|
|
14
|
-
//# sourceMappingURL=get.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/task/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC;KACrC,WAAW,CAAC,kBAAkB,CAAC;KAC/B,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;IAC/B,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,cAAc,MAAM,EAAE,CAAC,CAAmC,CAAC;IACtF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,UAAU,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,WAAW,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { createCmd } from './create.js';
|
|
3
|
-
import { listCmd } from './search.js';
|
|
4
|
-
import { getCmd } from './get.js';
|
|
5
|
-
import { submitCmd } from './submit.js';
|
|
6
|
-
import { acceptCmd } from './accept.js';
|
|
7
|
-
import { rateCmd } from './rate.js';
|
|
8
|
-
import { claimCmd } from './claim.js';
|
|
9
|
-
import { pitchCmd } from './pitch.js';
|
|
10
|
-
import { selectWorkerCmd } from './select-worker.js';
|
|
11
|
-
import { proofCmd } from './proof.js';
|
|
12
|
-
import { bidCmd } from './bid.js';
|
|
13
|
-
import { submissionsCmd } from './submissions.js';
|
|
14
|
-
import { selectWinnerCmd } from './select-winner.js';
|
|
15
|
-
import { downloadCmd } from './download.js';
|
|
16
|
-
export const taskCommand = new Command('task').description('Manage tasks');
|
|
17
|
-
taskCommand.addCommand(createCmd);
|
|
18
|
-
taskCommand.addCommand(listCmd);
|
|
19
|
-
taskCommand.addCommand(getCmd);
|
|
20
|
-
taskCommand.addCommand(submitCmd);
|
|
21
|
-
taskCommand.addCommand(acceptCmd);
|
|
22
|
-
taskCommand.addCommand(rateCmd);
|
|
23
|
-
taskCommand.addCommand(claimCmd);
|
|
24
|
-
taskCommand.addCommand(pitchCmd);
|
|
25
|
-
taskCommand.addCommand(selectWorkerCmd);
|
|
26
|
-
taskCommand.addCommand(proofCmd);
|
|
27
|
-
taskCommand.addCommand(bidCmd);
|
|
28
|
-
taskCommand.addCommand(submissionsCmd);
|
|
29
|
-
taskCommand.addCommand(selectWinnerCmd);
|
|
30
|
-
taskCommand.addCommand(downloadCmd);
|
|
31
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/task/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAE3E,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAClC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAChC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAClC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AAClC,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAChC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACxC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/B,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;AACvC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AACxC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { loadKeystore } from '../../lib/keystore.js';
|
|
3
|
-
import { signMessage } from '../../lib/signer.js';
|
|
4
|
-
import { apiPost } from '../../lib/api.js';
|
|
5
|
-
import { printResult } from '../../lib/output.js';
|
|
6
|
-
export const pitchCmd = new Command('pitch')
|
|
7
|
-
.description('Submit a pitch for a task')
|
|
8
|
-
.argument('<taskId>', 'Task ID (0x-prefixed hex)')
|
|
9
|
-
.requiredOption('--text <text>', 'Pitch text')
|
|
10
|
-
.option('--duration <hours>', 'Estimated duration in hours')
|
|
11
|
-
.action(async (taskId, opts) => {
|
|
12
|
-
const keystore = await loadKeystore();
|
|
13
|
-
const signature = await signMessage(`taskmarket:pitch:${taskId}`, keystore);
|
|
14
|
-
const result = (await apiPost(`/api/tasks/${taskId}/pitches`, {
|
|
15
|
-
workerAddress: keystore.walletAddress,
|
|
16
|
-
pitchText: opts.text,
|
|
17
|
-
...(opts.duration ? { estimatedDuration: parseInt(opts.duration, 10) } : {}),
|
|
18
|
-
signature,
|
|
19
|
-
}));
|
|
20
|
-
printResult({ pitchId: result.pitchId });
|
|
21
|
-
});
|
|
22
|
-
//# sourceMappingURL=pitch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pitch.js","sourceRoot":"","sources":["../../../src/commands/task/pitch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACzC,WAAW,CAAC,2BAA2B,CAAC;KACxC,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACjD,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC;KAC7C,MAAM,CAAC,oBAAoB,EAAE,6BAA6B,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAyC,EAAE,EAAE;IAC1E,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,oBAAoB,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,cAAc,MAAM,UAAU,EAAE;QAC5D,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,SAAS;KACV,CAAC,CAAwB,CAAC;IAE3B,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { loadKeystore } from '../../lib/keystore.js';
|
|
3
|
-
import { signMessage } from '../../lib/signer.js';
|
|
4
|
-
import { apiPost } from '../../lib/api.js';
|
|
5
|
-
import { printResult } from '../../lib/output.js';
|
|
6
|
-
export const proofCmd = new Command('proof')
|
|
7
|
-
.description('Submit a proof for a task')
|
|
8
|
-
.argument('<taskId>', 'Task ID (0x-prefixed hex)')
|
|
9
|
-
.requiredOption('--data <data>', 'Proof data')
|
|
10
|
-
.requiredOption('--type <type>', 'Proof type')
|
|
11
|
-
.option('--metric <val>', 'Metric value')
|
|
12
|
-
.action(async (taskId, opts) => {
|
|
13
|
-
const keystore = await loadKeystore();
|
|
14
|
-
const signature = await signMessage(`taskmarket:proof:${taskId}`, keystore);
|
|
15
|
-
const result = (await apiPost(`/api/tasks/${taskId}/proofs`, {
|
|
16
|
-
workerAddress: keystore.walletAddress,
|
|
17
|
-
proofData: opts.data,
|
|
18
|
-
proofType: opts.type,
|
|
19
|
-
...(opts.metric ? { metricValue: opts.metric } : {}),
|
|
20
|
-
signature,
|
|
21
|
-
}));
|
|
22
|
-
printResult({ proofId: result.proofId });
|
|
23
|
-
});
|
|
24
|
-
//# sourceMappingURL=proof.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"proof.js","sourceRoot":"","sources":["../../../src/commands/task/proof.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACzC,WAAW,CAAC,2BAA2B,CAAC;KACxC,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACjD,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC;KAC7C,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC;KAC7C,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC;KACxC,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAAqD,EAAE,EAAE;IACtF,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,oBAAoB,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,cAAc,MAAM,SAAS,EAAE;QAC3D,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,SAAS;KACV,CAAC,CAAwB,CAAC;IAE3B,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
2
|
-
import { x402Post } from '../../lib/x402.js';
|
|
3
|
-
import { printResult, printError } from '../../lib/output.js';
|
|
4
|
-
export const rateCmd = new Command('rate')
|
|
5
|
-
.description('Rate a worker (costs 0.001 USDC)')
|
|
6
|
-
.argument('<taskId>', 'Task ID (0x-prefixed hex)')
|
|
7
|
-
.requiredOption('--worker <addr>', 'Worker wallet address')
|
|
8
|
-
.requiredOption('--rating <n>', 'Rating 0-100')
|
|
9
|
-
.option('--feedback <text>', 'Optional feedback text')
|
|
10
|
-
.action(async (taskId, opts) => {
|
|
11
|
-
const rating = parseInt(opts.rating, 10);
|
|
12
|
-
if (rating < 0 || rating > 100) {
|
|
13
|
-
printError('Rating must be between 0 and 100');
|
|
14
|
-
}
|
|
15
|
-
const result = (await x402Post(`/api/tasks/${taskId}/rate`, {
|
|
16
|
-
taskId,
|
|
17
|
-
worker: opts.worker,
|
|
18
|
-
rating,
|
|
19
|
-
...(opts.feedback ? { feedbackText: opts.feedback } : {}),
|
|
20
|
-
}));
|
|
21
|
-
printResult({ feedbackId: result.feedbackId });
|
|
22
|
-
});
|
|
23
|
-
//# sourceMappingURL=rate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rate.js","sourceRoot":"","sources":["../../../src/commands/task/rate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KACvC,WAAW,CAAC,kCAAkC,CAAC;KAC/C,QAAQ,CAAC,UAAU,EAAE,2BAA2B,CAAC;KACjD,cAAc,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;KAC1D,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,MAAc,EAAE,IAA2D,EAAE,EAAE;IAC5F,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QAC/B,UAAU,CAAC,kCAAkC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,cAAc,MAAM,OAAO,EAAE;QAC1D,MAAM;QACN,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM;QACN,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC,CAA6C,CAAC;IAEhD,WAAW,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC"}
|