duskware 0.1.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 +150 -0
- package/dist/commands/credits.d.ts +7 -0
- package/dist/commands/credits.d.ts.map +1 -0
- package/dist/commands/credits.js +220 -0
- package/dist/commands/credits.js.map +1 -0
- package/dist/commands/inference.d.ts +7 -0
- package/dist/commands/inference.d.ts.map +1 -0
- package/dist/commands/inference.js +148 -0
- package/dist/commands/inference.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +158 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/memory.d.ts +7 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +170 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/sandbox.d.ts +7 -0
- package/dist/commands/sandbox.d.ts.map +1 -0
- package/dist/commands/sandbox.js +220 -0
- package/dist/commands/sandbox.js.map +1 -0
- package/dist/commands/skill.d.ts +7 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +255 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/spawn.d.ts +7 -0
- package/dist/commands/spawn.d.ts.map +1 -0
- package/dist/commands/spawn.js +225 -0
- package/dist/commands/spawn.js.map +1 -0
- package/dist/commands/specter.d.ts +7 -0
- package/dist/commands/specter.d.ts.map +1 -0
- package/dist/commands/specter.js +287 -0
- package/dist/commands/specter.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +106 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/trust.d.ts +7 -0
- package/dist/commands/trust.d.ts.map +1 -0
- package/dist/commands/trust.js +230 -0
- package/dist/commands/trust.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +61 -0
- package/dist/index.js.map +1 -0
- package/dist/services/contracts.d.ts +40 -0
- package/dist/services/contracts.d.ts.map +1 -0
- package/dist/services/contracts.js +141 -0
- package/dist/services/contracts.js.map +1 -0
- package/dist/services/inference.d.ts +63 -0
- package/dist/services/inference.d.ts.map +1 -0
- package/dist/services/inference.js +118 -0
- package/dist/services/inference.js.map +1 -0
- package/dist/services/wallet.d.ts +35 -0
- package/dist/services/wallet.d.ts.map +1 -0
- package/dist/services/wallet.js +60 -0
- package/dist/services/wallet.js.map +1 -0
- package/dist/services/x402.d.ts +30 -0
- package/dist/services/x402.d.ts.map +1 -0
- package/dist/services/x402.js +92 -0
- package/dist/services/x402.js.map +1 -0
- package/dist/utils/config.d.ts +64 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +93 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/output.d.ts +29 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +100 -0
- package/dist/utils/output.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* x402 Payment Service
|
|
3
|
+
* EIP-3009 transferWithAuthorization for gasless USDC payments
|
|
4
|
+
*/
|
|
5
|
+
import { Contract, keccak256, solidityPacked, toUtf8Bytes, hexlify, randomBytes } from 'ethers';
|
|
6
|
+
import { getContractAddresses, getRpcUrl } from '../utils/config.js';
|
|
7
|
+
import { JsonRpcProvider } from 'ethers';
|
|
8
|
+
// EIP-3009 domain separator components
|
|
9
|
+
const DOMAIN_TYPEHASH = keccak256(toUtf8Bytes('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'));
|
|
10
|
+
const TRANSFER_WITH_AUTHORIZATION_TYPEHASH = keccak256(toUtf8Bytes('TransferWithAuthorization(address from,address to,uint256 value,uint256 validAfter,uint256 validBefore,bytes32 nonce)'));
|
|
11
|
+
// USDC EIP-3009 ABI
|
|
12
|
+
const USDC_TRANSFER_AUTH_ABI = [
|
|
13
|
+
'function transferWithAuthorization(address from, address to, uint256 value, uint256 validAfter, uint256 validBefore, bytes32 nonce, uint8 v, bytes32 r, bytes32 s)',
|
|
14
|
+
'function authorizationState(address authorizer, bytes32 nonce) view returns (bool)',
|
|
15
|
+
'function name() view returns (string)',
|
|
16
|
+
'function version() view returns (string)',
|
|
17
|
+
'function DOMAIN_SEPARATOR() view returns (bytes32)',
|
|
18
|
+
];
|
|
19
|
+
/**
|
|
20
|
+
* Signs a transferWithAuthorization for USDC payment
|
|
21
|
+
*/
|
|
22
|
+
export async function signTransferAuthorization(wallet, to, value, validityDuration = 3600, // 1 hour default
|
|
23
|
+
network = 'sepolia') {
|
|
24
|
+
const addresses = getContractAddresses(network);
|
|
25
|
+
const provider = new JsonRpcProvider(getRpcUrl(network));
|
|
26
|
+
const usdc = new Contract(addresses.usdc, USDC_TRANSFER_AUTH_ABI, provider);
|
|
27
|
+
// Get chain ID
|
|
28
|
+
const { chainId } = await provider.getNetwork();
|
|
29
|
+
// Generate random nonce
|
|
30
|
+
const nonce = hexlify(randomBytes(32));
|
|
31
|
+
// Time bounds
|
|
32
|
+
const now = Math.floor(Date.now() / 1000);
|
|
33
|
+
const validAfter = BigInt(now - 60); // Valid from 1 minute ago
|
|
34
|
+
const validBefore = BigInt(now + validityDuration);
|
|
35
|
+
// Build domain separator
|
|
36
|
+
const name = await usdc.name();
|
|
37
|
+
const version = '2'; // USDC uses version 2
|
|
38
|
+
const domainSeparator = keccak256(solidityPacked(['bytes32', 'bytes32', 'bytes32', 'uint256', 'address'], [
|
|
39
|
+
DOMAIN_TYPEHASH,
|
|
40
|
+
keccak256(toUtf8Bytes(name)),
|
|
41
|
+
keccak256(toUtf8Bytes(version)),
|
|
42
|
+
chainId,
|
|
43
|
+
addresses.usdc,
|
|
44
|
+
]));
|
|
45
|
+
// Build struct hash
|
|
46
|
+
const structHash = keccak256(solidityPacked(['bytes32', 'address', 'address', 'uint256', 'uint256', 'uint256', 'bytes32'], [
|
|
47
|
+
TRANSFER_WITH_AUTHORIZATION_TYPEHASH,
|
|
48
|
+
wallet.address,
|
|
49
|
+
to,
|
|
50
|
+
value,
|
|
51
|
+
validAfter,
|
|
52
|
+
validBefore,
|
|
53
|
+
nonce,
|
|
54
|
+
]));
|
|
55
|
+
// Build digest
|
|
56
|
+
const digest = keccak256(solidityPacked(['string', 'bytes32', 'bytes32'], ['\x19\x01', domainSeparator, structHash]));
|
|
57
|
+
// Sign
|
|
58
|
+
const signature = wallet.signingKey.sign(digest);
|
|
59
|
+
return {
|
|
60
|
+
from: wallet.address,
|
|
61
|
+
to,
|
|
62
|
+
value,
|
|
63
|
+
validAfter,
|
|
64
|
+
validBefore,
|
|
65
|
+
nonce,
|
|
66
|
+
v: signature.v,
|
|
67
|
+
r: signature.r,
|
|
68
|
+
s: signature.s,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Verifies a transferWithAuthorization hasn't been used
|
|
73
|
+
*/
|
|
74
|
+
export async function verifyAuthorizationNotUsed(from, nonce, network = 'sepolia') {
|
|
75
|
+
const addresses = getContractAddresses(network);
|
|
76
|
+
const provider = new JsonRpcProvider(getRpcUrl(network));
|
|
77
|
+
const usdc = new Contract(addresses.usdc, USDC_TRANSFER_AUTH_ABI, provider);
|
|
78
|
+
const used = await usdc.authorizationState(from, nonce);
|
|
79
|
+
return !used;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Executes a transferWithAuthorization
|
|
83
|
+
*/
|
|
84
|
+
export async function executeTransferAuthorization(auth, executor, network = 'sepolia') {
|
|
85
|
+
const addresses = getContractAddresses(network);
|
|
86
|
+
const provider = new JsonRpcProvider(getRpcUrl(network));
|
|
87
|
+
const usdc = new Contract(addresses.usdc, USDC_TRANSFER_AUTH_ABI, executor.connect(provider));
|
|
88
|
+
const tx = await usdc.transferWithAuthorization(auth.from, auth.to, auth.value, auth.validAfter, auth.validBefore, auth.nonce, auth.v, auth.r, auth.s);
|
|
89
|
+
const receipt = await tx.wait();
|
|
90
|
+
return receipt.hash;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=x402.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../../src/services/x402.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Management
|
|
3
|
+
* Stores agent config and wallet in ~/.duskware/
|
|
4
|
+
*/
|
|
5
|
+
export interface DuskwareConfig {
|
|
6
|
+
network: 'sepolia' | 'mainnet';
|
|
7
|
+
agentAddress: string;
|
|
8
|
+
agentName: string;
|
|
9
|
+
rpcUrl: string;
|
|
10
|
+
memoryPointer: string;
|
|
11
|
+
createdAt: number;
|
|
12
|
+
}
|
|
13
|
+
export interface WalletConfig {
|
|
14
|
+
address: string;
|
|
15
|
+
privateKey: string;
|
|
16
|
+
}
|
|
17
|
+
export declare const CONTRACTS: {
|
|
18
|
+
readonly sepolia: {
|
|
19
|
+
readonly feeController: "0x5Eb27D10A23A1766d4D5493f9e98DbF4e59EFeD3";
|
|
20
|
+
readonly agentIdentity: "0x151f3cF76cC38F209304aDa47C2Fd436b6B08c1A";
|
|
21
|
+
readonly skillNFT: "0xC449c8aB3eb663ac32F69dDE8F984011071FDBdA";
|
|
22
|
+
readonly spawnProtocol: "0x647F34850f1CC13F4B5Ce768E26191dA01670B57";
|
|
23
|
+
readonly trustGraph: "0xd47486F8D5c76dB5BEAc888aD50747c338eF4Df8";
|
|
24
|
+
readonly usdc: "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
|
|
25
|
+
};
|
|
26
|
+
readonly mainnet: {
|
|
27
|
+
readonly feeController: "0xB452e082ba744C22D506Dcf2DaaEd21A490d1598";
|
|
28
|
+
readonly agentIdentity: "0xEd14DFd4377F0798E3708cfa92a9fa7D2B515D6B";
|
|
29
|
+
readonly skillNFT: "0x021BA799fEA24C49e5ed95DA7E2836108975467c";
|
|
30
|
+
readonly spawnProtocol: "0x8F5850B579F9D8608DaDF531B67C8AF71F5C1Ee5";
|
|
31
|
+
readonly trustGraph: "0x23b5BF03c7f7Ccc0c4A334aa672a9454542Bf5fC";
|
|
32
|
+
readonly usdc: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export declare const RPC_URLS: {
|
|
36
|
+
readonly sepolia: "https://sepolia.base.org";
|
|
37
|
+
readonly mainnet: "https://base-mainnet.g.alchemy.com/v2/HUivbCvhb8tnqTsIuaRaK";
|
|
38
|
+
};
|
|
39
|
+
export declare function ensureDuskwareDir(): void;
|
|
40
|
+
export declare function configExists(): boolean;
|
|
41
|
+
export declare function walletExists(): boolean;
|
|
42
|
+
export declare function loadConfig(): DuskwareConfig | null;
|
|
43
|
+
export declare function saveConfig(config: DuskwareConfig): void;
|
|
44
|
+
export declare function loadWallet(): WalletConfig | null;
|
|
45
|
+
export declare function saveWallet(wallet: WalletConfig): void;
|
|
46
|
+
export declare function getDuskwareDir(): string;
|
|
47
|
+
export declare function getMemoryDir(): string;
|
|
48
|
+
export declare function getContractAddresses(network: 'sepolia' | 'mainnet'): {
|
|
49
|
+
readonly feeController: "0x5Eb27D10A23A1766d4D5493f9e98DbF4e59EFeD3";
|
|
50
|
+
readonly agentIdentity: "0x151f3cF76cC38F209304aDa47C2Fd436b6B08c1A";
|
|
51
|
+
readonly skillNFT: "0xC449c8aB3eb663ac32F69dDE8F984011071FDBdA";
|
|
52
|
+
readonly spawnProtocol: "0x647F34850f1CC13F4B5Ce768E26191dA01670B57";
|
|
53
|
+
readonly trustGraph: "0xd47486F8D5c76dB5BEAc888aD50747c338eF4Df8";
|
|
54
|
+
readonly usdc: "0x036CbD53842c5426634e7929541eC2318f3dCF7e";
|
|
55
|
+
} | {
|
|
56
|
+
readonly feeController: "0xB452e082ba744C22D506Dcf2DaaEd21A490d1598";
|
|
57
|
+
readonly agentIdentity: "0xEd14DFd4377F0798E3708cfa92a9fa7D2B515D6B";
|
|
58
|
+
readonly skillNFT: "0x021BA799fEA24C49e5ed95DA7E2836108975467c";
|
|
59
|
+
readonly spawnProtocol: "0x8F5850B579F9D8608DaDF531B67C8AF71F5C1Ee5";
|
|
60
|
+
readonly trustGraph: "0x23b5BF03c7f7Ccc0c4A334aa672a9454542Bf5fC";
|
|
61
|
+
readonly usdc: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
62
|
+
};
|
|
63
|
+
export declare function getRpcUrl(network: 'sepolia' | 'mainnet'): string;
|
|
64
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;CAiBZ,CAAC;AAEX,eAAO,MAAM,QAAQ;;;CAGX,CAAC;AAEX,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,UAAU,IAAI,cAAc,GAAG,IAAI,CAQlD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAGvD;AAED,wBAAgB,UAAU,IAAI,YAAY,GAAG,IAAI,CAQhD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAKrD;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS;;;;;;;;;;;;;;EAElE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAEhE"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Management
|
|
3
|
+
* Stores agent config and wallet in ~/.duskware/
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, chmodSync } from 'fs';
|
|
6
|
+
import { homedir } from 'os';
|
|
7
|
+
import { join } from 'path';
|
|
8
|
+
const DUSKWARE_DIR = join(homedir(), '.duskware');
|
|
9
|
+
const CONFIG_FILE = join(DUSKWARE_DIR, 'config.json');
|
|
10
|
+
const WALLET_FILE = join(DUSKWARE_DIR, 'wallet.json');
|
|
11
|
+
const MEMORY_DIR = join(DUSKWARE_DIR, 'memory');
|
|
12
|
+
// Contract addresses by network (Base Sepolia deployed) - v2 with reputation fix
|
|
13
|
+
export const CONTRACTS = {
|
|
14
|
+
sepolia: {
|
|
15
|
+
feeController: '0x5Eb27D10A23A1766d4D5493f9e98DbF4e59EFeD3',
|
|
16
|
+
agentIdentity: '0x151f3cF76cC38F209304aDa47C2Fd436b6B08c1A',
|
|
17
|
+
skillNFT: '0xC449c8aB3eb663ac32F69dDE8F984011071FDBdA',
|
|
18
|
+
spawnProtocol: '0x647F34850f1CC13F4B5Ce768E26191dA01670B57',
|
|
19
|
+
trustGraph: '0xd47486F8D5c76dB5BEAc888aD50747c338eF4Df8',
|
|
20
|
+
usdc: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',
|
|
21
|
+
},
|
|
22
|
+
mainnet: {
|
|
23
|
+
feeController: '0xB452e082ba744C22D506Dcf2DaaEd21A490d1598',
|
|
24
|
+
agentIdentity: '0xEd14DFd4377F0798E3708cfa92a9fa7D2B515D6B',
|
|
25
|
+
skillNFT: '0x021BA799fEA24C49e5ed95DA7E2836108975467c',
|
|
26
|
+
spawnProtocol: '0x8F5850B579F9D8608DaDF531B67C8AF71F5C1Ee5',
|
|
27
|
+
trustGraph: '0x23b5BF03c7f7Ccc0c4A334aa672a9454542Bf5fC',
|
|
28
|
+
usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
export const RPC_URLS = {
|
|
32
|
+
sepolia: 'https://sepolia.base.org',
|
|
33
|
+
mainnet: 'https://base-mainnet.g.alchemy.com/v2/HUivbCvhb8tnqTsIuaRaK',
|
|
34
|
+
};
|
|
35
|
+
export function ensureDuskwareDir() {
|
|
36
|
+
if (!existsSync(DUSKWARE_DIR)) {
|
|
37
|
+
mkdirSync(DUSKWARE_DIR, { recursive: true });
|
|
38
|
+
}
|
|
39
|
+
if (!existsSync(MEMORY_DIR)) {
|
|
40
|
+
mkdirSync(MEMORY_DIR, { recursive: true });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
export function configExists() {
|
|
44
|
+
return existsSync(CONFIG_FILE);
|
|
45
|
+
}
|
|
46
|
+
export function walletExists() {
|
|
47
|
+
return existsSync(WALLET_FILE);
|
|
48
|
+
}
|
|
49
|
+
export function loadConfig() {
|
|
50
|
+
if (!configExists())
|
|
51
|
+
return null;
|
|
52
|
+
try {
|
|
53
|
+
const content = readFileSync(CONFIG_FILE, 'utf-8');
|
|
54
|
+
return JSON.parse(content);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function saveConfig(config) {
|
|
61
|
+
ensureDuskwareDir();
|
|
62
|
+
writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
|
|
63
|
+
}
|
|
64
|
+
export function loadWallet() {
|
|
65
|
+
if (!walletExists())
|
|
66
|
+
return null;
|
|
67
|
+
try {
|
|
68
|
+
const content = readFileSync(WALLET_FILE, 'utf-8');
|
|
69
|
+
return JSON.parse(content);
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export function saveWallet(wallet) {
|
|
76
|
+
ensureDuskwareDir();
|
|
77
|
+
writeFileSync(WALLET_FILE, JSON.stringify(wallet, null, 2));
|
|
78
|
+
// Set restrictive permissions (0600) - owner read/write only
|
|
79
|
+
chmodSync(WALLET_FILE, 0o600);
|
|
80
|
+
}
|
|
81
|
+
export function getDuskwareDir() {
|
|
82
|
+
return DUSKWARE_DIR;
|
|
83
|
+
}
|
|
84
|
+
export function getMemoryDir() {
|
|
85
|
+
return MEMORY_DIR;
|
|
86
|
+
}
|
|
87
|
+
export function getContractAddresses(network) {
|
|
88
|
+
return CONTRACTS[network];
|
|
89
|
+
}
|
|
90
|
+
export function getRpcUrl(network) {
|
|
91
|
+
return RPC_URLS[network];
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Output Utilities
|
|
3
|
+
* Dark terminal aesthetic - minimal, developer-first
|
|
4
|
+
*/
|
|
5
|
+
export declare const colors: {
|
|
6
|
+
success: import("chalk").ChalkInstance;
|
|
7
|
+
error: import("chalk").ChalkInstance;
|
|
8
|
+
warning: import("chalk").ChalkInstance;
|
|
9
|
+
info: import("chalk").ChalkInstance;
|
|
10
|
+
muted: import("chalk").ChalkInstance;
|
|
11
|
+
accent: import("chalk").ChalkInstance;
|
|
12
|
+
address: import("chalk").ChalkInstance;
|
|
13
|
+
};
|
|
14
|
+
export declare function success(message: string): void;
|
|
15
|
+
export declare function error(message: string): void;
|
|
16
|
+
export declare function info(message: string): void;
|
|
17
|
+
export declare function warning(message: string): void;
|
|
18
|
+
export declare function header(title: string): void;
|
|
19
|
+
export declare function keyValue(key: string, value: string): void;
|
|
20
|
+
export declare function address(addr: string): string;
|
|
21
|
+
export declare function txHash(hash: string): string;
|
|
22
|
+
export declare function basescanLink(hash: string, network?: 'sepolia' | 'mainnet'): string;
|
|
23
|
+
export declare function agentLink(address: string, network?: 'sepolia' | 'mainnet'): string;
|
|
24
|
+
export declare function formatUSDC(amount: bigint): string;
|
|
25
|
+
export declare function formatReputation(score: bigint): string;
|
|
26
|
+
export declare function truncateAddress(addr: string): string;
|
|
27
|
+
export declare function printTable(headers: string[], rows: string[][]): void;
|
|
28
|
+
export declare function banner(): void;
|
|
29
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,MAAM;;;;;;;;CAQlB,CAAC;AAEF,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI1C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,SAAS,GAAG,SAAqB,GAAG,MAAM,CAK7F;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,SAAS,GAAG,SAAqB,GAAG,MAAM,CAK7F;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQtD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAiBpE;AAED,wBAAgB,MAAM,IAAI,IAAI,CAO7B"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Output Utilities
|
|
3
|
+
* Dark terminal aesthetic - minimal, developer-first
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
// Colors matching Duskware terminal aesthetic
|
|
7
|
+
export const colors = {
|
|
8
|
+
success: chalk.hex('#00ff87'), // Terminal green
|
|
9
|
+
error: chalk.hex('#ff5555'), // Red
|
|
10
|
+
warning: chalk.hex('#ffb86c'), // Orange
|
|
11
|
+
info: chalk.hex('#8be9fd'), // Cyan
|
|
12
|
+
muted: chalk.hex('#6272a4'), // Gray/purple
|
|
13
|
+
accent: chalk.hex('#bd93f9'), // Purple
|
|
14
|
+
address: chalk.hex('#f1fa8c'), // Yellow for addresses
|
|
15
|
+
};
|
|
16
|
+
export function success(message) {
|
|
17
|
+
console.log(colors.success('✓'), message);
|
|
18
|
+
}
|
|
19
|
+
export function error(message) {
|
|
20
|
+
console.log(colors.error('✗'), message);
|
|
21
|
+
}
|
|
22
|
+
export function info(message) {
|
|
23
|
+
console.log(colors.info('→'), message);
|
|
24
|
+
}
|
|
25
|
+
export function warning(message) {
|
|
26
|
+
console.log(colors.warning('!'), message);
|
|
27
|
+
}
|
|
28
|
+
export function header(title) {
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(colors.accent('▸'), chalk.bold(title));
|
|
31
|
+
console.log(colors.muted('─'.repeat(50)));
|
|
32
|
+
}
|
|
33
|
+
export function keyValue(key, value) {
|
|
34
|
+
console.log(` ${colors.muted(key + ':')} ${value}`);
|
|
35
|
+
}
|
|
36
|
+
export function address(addr) {
|
|
37
|
+
return colors.address(addr);
|
|
38
|
+
}
|
|
39
|
+
export function txHash(hash) {
|
|
40
|
+
return colors.accent(hash);
|
|
41
|
+
}
|
|
42
|
+
export function basescanLink(hash, network = 'sepolia') {
|
|
43
|
+
const baseUrl = network === 'mainnet'
|
|
44
|
+
? 'https://basescan.org'
|
|
45
|
+
: 'https://sepolia.basescan.org';
|
|
46
|
+
return `${baseUrl}/tx/${hash}`;
|
|
47
|
+
}
|
|
48
|
+
export function agentLink(address, network = 'sepolia') {
|
|
49
|
+
const baseUrl = network === 'mainnet'
|
|
50
|
+
? 'https://basescan.org'
|
|
51
|
+
: 'https://sepolia.basescan.org';
|
|
52
|
+
return `${baseUrl}/address/${address}`;
|
|
53
|
+
}
|
|
54
|
+
export function formatUSDC(amount) {
|
|
55
|
+
const dollars = Number(amount) / 1_000_000;
|
|
56
|
+
return `$${dollars.toFixed(2)} USDC`;
|
|
57
|
+
}
|
|
58
|
+
export function formatReputation(score) {
|
|
59
|
+
const value = Number(score);
|
|
60
|
+
let color = colors.muted;
|
|
61
|
+
if (value >= 80)
|
|
62
|
+
color = colors.success;
|
|
63
|
+
else if (value >= 50)
|
|
64
|
+
color = colors.info;
|
|
65
|
+
else if (value >= 20)
|
|
66
|
+
color = colors.warning;
|
|
67
|
+
else
|
|
68
|
+
color = colors.error;
|
|
69
|
+
return color(`${value}/100`);
|
|
70
|
+
}
|
|
71
|
+
export function truncateAddress(addr) {
|
|
72
|
+
if (addr.length <= 10)
|
|
73
|
+
return addr;
|
|
74
|
+
return `${addr.slice(0, 6)}...${addr.slice(-4)}`;
|
|
75
|
+
}
|
|
76
|
+
export function printTable(headers, rows) {
|
|
77
|
+
// Calculate column widths
|
|
78
|
+
const widths = headers.map((h, i) => {
|
|
79
|
+
const maxRow = Math.max(...rows.map(r => (r[i] || '').length));
|
|
80
|
+
return Math.max(h.length, maxRow);
|
|
81
|
+
});
|
|
82
|
+
// Print header
|
|
83
|
+
const headerLine = headers.map((h, i) => h.padEnd(widths[i])).join(' ');
|
|
84
|
+
console.log(colors.muted(headerLine));
|
|
85
|
+
console.log(colors.muted('─'.repeat(headerLine.length)));
|
|
86
|
+
// Print rows
|
|
87
|
+
for (const row of rows) {
|
|
88
|
+
const line = row.map((cell, i) => (cell || '').padEnd(widths[i])).join(' ');
|
|
89
|
+
console.log(line);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export function banner() {
|
|
93
|
+
console.log();
|
|
94
|
+
console.log(colors.accent(' ╔══════════════════════════════════════╗'));
|
|
95
|
+
console.log(colors.accent(' ║') + chalk.bold(' DUSKWARE RUNTIME ') + colors.accent('║'));
|
|
96
|
+
console.log(colors.accent(' ║') + colors.muted(' Sovereign Onchain AI Agents ') + colors.accent('║'));
|
|
97
|
+
console.log(colors.accent(' ╚══════════════════════════════════════╝'));
|
|
98
|
+
console.log();
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,8CAA8C;AAC9C,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAO,iBAAiB;IACrD,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAS,MAAM;IAC1C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAO,SAAS;IAC7C,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAU,OAAO;IAC3C,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAS,cAAc;IAClD,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAQ,SAAS;IAC7C,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAO,uBAAuB;CAC5D,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,KAAa;IAClC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,KAAa;IACjD,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,UAAiC,SAAS;IACnF,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS;QACnC,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,8BAA8B,CAAC;IACnC,OAAO,GAAG,OAAO,OAAO,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,UAAiC,SAAS;IACnF,MAAM,OAAO,GAAG,OAAO,KAAK,SAAS;QACnC,CAAC,CAAC,sBAAsB;QACxB,CAAC,CAAC,8BAA8B,CAAC;IACnC,OAAO,GAAG,OAAO,YAAY,OAAO,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC3C,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IACzB,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;SACnC,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;SACrC,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;;QACxC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC1B,OAAO,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAiB,EAAE,IAAgB;IAC5D,0BAA0B;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEzD,aAAa;IACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,MAAM;IACpB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9G,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChH,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "duskware",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI for Duskware - Sovereign Onchain Runtime for AI Agents",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"duskware": "./dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"dev": "tsc -w",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"lint": "eslint src",
|
|
15
|
+
"test": "vitest",
|
|
16
|
+
"prepublishOnly": "npm run build"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"duskware",
|
|
20
|
+
"ai-agents",
|
|
21
|
+
"blockchain",
|
|
22
|
+
"base",
|
|
23
|
+
"autonomous-agents",
|
|
24
|
+
"onchain-identity"
|
|
25
|
+
],
|
|
26
|
+
"author": "Duskware",
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"chalk": "^5.3.0",
|
|
30
|
+
"commander": "^12.1.0",
|
|
31
|
+
"ethers": "^6.13.4",
|
|
32
|
+
"inquirer": "^9.3.7",
|
|
33
|
+
"ora": "^8.1.1",
|
|
34
|
+
"x402-fetch": "^1.1.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/inquirer": "^9.0.7",
|
|
38
|
+
"@types/node": "^22.10.1",
|
|
39
|
+
"typescript": "^5.7.2",
|
|
40
|
+
"vitest": "^2.1.8"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=18.0.0"
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"dist"
|
|
47
|
+
]
|
|
48
|
+
}
|