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.
Files changed (70) hide show
  1. package/README.md +150 -0
  2. package/dist/commands/credits.d.ts +7 -0
  3. package/dist/commands/credits.d.ts.map +1 -0
  4. package/dist/commands/credits.js +220 -0
  5. package/dist/commands/credits.js.map +1 -0
  6. package/dist/commands/inference.d.ts +7 -0
  7. package/dist/commands/inference.d.ts.map +1 -0
  8. package/dist/commands/inference.js +148 -0
  9. package/dist/commands/inference.js.map +1 -0
  10. package/dist/commands/init.d.ts +7 -0
  11. package/dist/commands/init.d.ts.map +1 -0
  12. package/dist/commands/init.js +158 -0
  13. package/dist/commands/init.js.map +1 -0
  14. package/dist/commands/memory.d.ts +7 -0
  15. package/dist/commands/memory.d.ts.map +1 -0
  16. package/dist/commands/memory.js +170 -0
  17. package/dist/commands/memory.js.map +1 -0
  18. package/dist/commands/sandbox.d.ts +7 -0
  19. package/dist/commands/sandbox.d.ts.map +1 -0
  20. package/dist/commands/sandbox.js +220 -0
  21. package/dist/commands/sandbox.js.map +1 -0
  22. package/dist/commands/skill.d.ts +7 -0
  23. package/dist/commands/skill.d.ts.map +1 -0
  24. package/dist/commands/skill.js +255 -0
  25. package/dist/commands/skill.js.map +1 -0
  26. package/dist/commands/spawn.d.ts +7 -0
  27. package/dist/commands/spawn.d.ts.map +1 -0
  28. package/dist/commands/spawn.js +225 -0
  29. package/dist/commands/spawn.js.map +1 -0
  30. package/dist/commands/specter.d.ts +7 -0
  31. package/dist/commands/specter.d.ts.map +1 -0
  32. package/dist/commands/specter.js +287 -0
  33. package/dist/commands/specter.js.map +1 -0
  34. package/dist/commands/status.d.ts +7 -0
  35. package/dist/commands/status.d.ts.map +1 -0
  36. package/dist/commands/status.js +106 -0
  37. package/dist/commands/status.js.map +1 -0
  38. package/dist/commands/trust.d.ts +7 -0
  39. package/dist/commands/trust.d.ts.map +1 -0
  40. package/dist/commands/trust.js +230 -0
  41. package/dist/commands/trust.js.map +1 -0
  42. package/dist/index.d.ts +9 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +61 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/services/contracts.d.ts +40 -0
  47. package/dist/services/contracts.d.ts.map +1 -0
  48. package/dist/services/contracts.js +141 -0
  49. package/dist/services/contracts.js.map +1 -0
  50. package/dist/services/inference.d.ts +63 -0
  51. package/dist/services/inference.d.ts.map +1 -0
  52. package/dist/services/inference.js +118 -0
  53. package/dist/services/inference.js.map +1 -0
  54. package/dist/services/wallet.d.ts +35 -0
  55. package/dist/services/wallet.d.ts.map +1 -0
  56. package/dist/services/wallet.js +60 -0
  57. package/dist/services/wallet.js.map +1 -0
  58. package/dist/services/x402.d.ts +30 -0
  59. package/dist/services/x402.d.ts.map +1 -0
  60. package/dist/services/x402.js +92 -0
  61. package/dist/services/x402.js.map +1 -0
  62. package/dist/utils/config.d.ts +64 -0
  63. package/dist/utils/config.d.ts.map +1 -0
  64. package/dist/utils/config.js +93 -0
  65. package/dist/utils/config.js.map +1 -0
  66. package/dist/utils/output.d.ts +29 -0
  67. package/dist/utils/output.d.ts.map +1 -0
  68. package/dist/utils/output.js +100 -0
  69. package/dist/utils/output.js.map +1 -0
  70. 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
+ }