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
package/README.md ADDED
@@ -0,0 +1,150 @@
1
+ # duskware
2
+
3
+ CLI for Duskware - Sovereign Onchain Runtime for AI Agents on Base.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install -g duskware
9
+ # or
10
+ npx duskware
11
+ ```
12
+
13
+ ## Quick Start
14
+
15
+ ```bash
16
+ # Initialize a new agent
17
+ duskware init
18
+
19
+ # Check agent status
20
+ duskware status
21
+ ```
22
+
23
+ ## Commands
24
+
25
+ ### Agent Identity
26
+
27
+ ```bash
28
+ # Deploy new AgentIdentity contract
29
+ duskware init --network sepolia --name "MyAgent" --capabilities "research,coding"
30
+
31
+ # Show agent status
32
+ duskware status
33
+ ```
34
+
35
+ ### Skills
36
+
37
+ ```bash
38
+ # Mint a new skill
39
+ duskware skill mint
40
+
41
+ # List skills in marketplace
42
+ duskware skill list
43
+ duskware skill list --capability research
44
+
45
+ # License a skill
46
+ duskware skill buy <skillId>
47
+ ```
48
+
49
+ ### Spawn
50
+
51
+ ```bash
52
+ # Spawn a child agent
53
+ duskware spawn
54
+
55
+ # List children
56
+ duskware spawn children
57
+
58
+ # Revoke a child
59
+ duskware spawn revoke <childAddress>
60
+ ```
61
+
62
+ ### Trust
63
+
64
+ ```bash
65
+ # Submit attestation
66
+ duskware trust attest <agentAddress> <score> --context "Great work"
67
+
68
+ # Get trust score
69
+ duskware trust score
70
+ duskware trust score <agentAddress>
71
+
72
+ # List attestations
73
+ duskware trust attestations
74
+
75
+ # Dispute an attestation
76
+ duskware trust dispute <attestationId>
77
+ ```
78
+
79
+ ### Memory
80
+
81
+ ```bash
82
+ # Sync memory to IPFS + onchain
83
+ duskware memory sync
84
+
85
+ # Read current memory
86
+ duskware memory read
87
+
88
+ # Get memory version
89
+ duskware memory version
90
+ ```
91
+
92
+ ### Inference
93
+
94
+ ```bash
95
+ # Send inference request
96
+ duskware inference prompt "What is the meaning of life?" --model claude-sonnet
97
+
98
+ # List available models
99
+ duskware inference models
100
+
101
+ # Check prepaid balance
102
+ duskware inference balance
103
+
104
+ # Prepay USDC for inference
105
+ duskware inference prepay 10
106
+ ```
107
+
108
+ ## Configuration
109
+
110
+ Config files are stored in `~/.duskware/`:
111
+
112
+ ```
113
+ ~/.duskware/
114
+ ├── wallet.json # Agent wallet (private key) - 0600 permissions
115
+ ├── config.json # Agent config (address, network, etc.)
116
+ └── memory/ # Local memory cache
117
+ ```
118
+
119
+ ## Networks
120
+
121
+ - **Base Sepolia** (testnet): `--network sepolia`
122
+ - **Base Mainnet**: `--network mainnet`
123
+
124
+ ## Contract Addresses
125
+
126
+ ### Base Sepolia
127
+ - USDC: `0x036CbD53842c5426634e7929541eC2318f3dCF7e`
128
+
129
+ ### Base Mainnet
130
+ - USDC: `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`
131
+
132
+ ## Development
133
+
134
+ ```bash
135
+ # Install dependencies
136
+ npm install
137
+
138
+ # Build
139
+ npm run build
140
+
141
+ # Watch mode
142
+ npm run dev
143
+
144
+ # Run tests
145
+ npm test
146
+ ```
147
+
148
+ ## License
149
+
150
+ MIT
@@ -0,0 +1,7 @@
1
+ /**
2
+ * duskware credits
3
+ * Manage Duskware Credits balance for inference, compute, and sandboxes
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare const creditsCommand: Command;
7
+ //# sourceMappingURL=credits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credits.d.ts","sourceRoot":"","sources":["../../src/commands/credits.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDpC,eAAO,MAAM,cAAc,SACoD,CAAC"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * duskware credits
3
+ * Manage Duskware Credits balance for inference, compute, and sandboxes
4
+ */
5
+ import { Command } from 'commander';
6
+ import ora from 'ora';
7
+ import { wrapFetchWithPayment, createSigner } from 'x402-fetch';
8
+ import * as output from '../utils/output.js';
9
+ import { loadConfig, loadWallet } from '../utils/config.js';
10
+ // Credits API URL
11
+ const CREDITS_API = process.env.CREDITS_API || 'https://duskware-credits-api.fly.dev';
12
+ // x402 network identifier for Base Mainnet
13
+ const X402_NETWORK = 'eip155:8453';
14
+ // Valid topup amounts
15
+ const VALID_AMOUNTS = ['5', '10', '25', '50', '100'];
16
+ export const creditsCommand = new Command('credits')
17
+ .description('Manage Duskware Credits for inference, compute, and sandboxes');
18
+ // Check balance
19
+ creditsCommand
20
+ .command('balance')
21
+ .description('Check your Duskware Credits balance')
22
+ .action(async () => {
23
+ const config = loadConfig();
24
+ const walletConfig = loadWallet();
25
+ if (!config || !walletConfig) {
26
+ output.error('Agent not initialized. Run `duskware init` first.');
27
+ process.exit(1);
28
+ }
29
+ output.header('Duskware Credits Balance');
30
+ output.keyValue('Agent', config.agentAddress);
31
+ const spinner = ora('Fetching balance...').start();
32
+ try {
33
+ const response = await fetch(`${CREDITS_API}/balance/${walletConfig.address}`);
34
+ if (!response.ok) {
35
+ throw new Error(`Failed to fetch balance: ${response.status}`);
36
+ }
37
+ const data = await response.json();
38
+ spinner.stop();
39
+ console.log();
40
+ output.keyValue('Balance', output.colors.success(data.balance));
41
+ output.keyValue('Total Deposited', data.totalDeposited);
42
+ output.keyValue('Total Spent', data.totalSpent);
43
+ console.log();
44
+ output.info(`Credits can be used for inference, sandboxes, and compute.`);
45
+ output.info(`Top up with: duskware credits topup <5|10|25|50|100>`);
46
+ }
47
+ catch (err) {
48
+ spinner.fail('Failed to fetch balance');
49
+ if (err instanceof Error) {
50
+ output.error(err.message);
51
+ }
52
+ process.exit(1);
53
+ }
54
+ });
55
+ // Top up credits
56
+ creditsCommand
57
+ .command('topup <amount>')
58
+ .description('Top up credits via x402 USDC payment ($5, $10, $25, $50, or $100)')
59
+ .action(async (amount) => {
60
+ const config = loadConfig();
61
+ const walletConfig = loadWallet();
62
+ if (!config || !walletConfig) {
63
+ output.error('Agent not initialized. Run `duskware init` first.');
64
+ process.exit(1);
65
+ }
66
+ // Validate amount
67
+ if (!VALID_AMOUNTS.includes(amount)) {
68
+ output.error(`Invalid amount: $${amount}`);
69
+ output.info(`Valid amounts: $5, $10, $25, $50, $100`);
70
+ process.exit(1);
71
+ }
72
+ output.header('Top Up Duskware Credits');
73
+ output.keyValue('Amount', `$${amount}.00`);
74
+ output.keyValue('Agent', walletConfig.address);
75
+ output.keyValue('Network', 'Base Mainnet');
76
+ const spinner = ora('Initializing x402 payment...').start();
77
+ try {
78
+ // Create x402 signer from private key
79
+ const signer = await createSigner(X402_NETWORK, walletConfig.privateKey);
80
+ // Create x402-wrapped fetch - handles 402 -> sign -> pay automatically
81
+ // Max payment is amount + 10% buffer (in micro USDC)
82
+ const maxPayment = BigInt(parseInt(amount) * 1_100_000);
83
+ const x402Fetch = wrapFetchWithPayment(fetch, signer, maxPayment);
84
+ spinner.text = `Processing $${amount} USDC payment via x402...`;
85
+ // Make topup request - x402Fetch handles payment automatically
86
+ const response = await x402Fetch(`${CREDITS_API}/topup/${amount}`, {
87
+ method: 'POST',
88
+ headers: { 'Content-Type': 'application/json' },
89
+ body: JSON.stringify({}),
90
+ });
91
+ if (!response.ok) {
92
+ const errorData = await response.json().catch(() => ({}));
93
+ throw new Error(errorData.error || `Topup failed: ${response.status}`);
94
+ }
95
+ const result = await response.json();
96
+ spinner.succeed('Credits added successfully!');
97
+ console.log();
98
+ output.keyValue('Amount Added', output.colors.success(`$${amount}.00`));
99
+ output.keyValue('New Balance', output.colors.success(result.newBalance));
100
+ console.log();
101
+ output.success(result.message);
102
+ }
103
+ catch (err) {
104
+ spinner.fail('Topup failed');
105
+ if (err instanceof Error) {
106
+ if (err.message.includes('fetch') || err.message.includes('ECONNREFUSED')) {
107
+ output.warning('Credits API not available.');
108
+ output.info(`Make sure the API is running at ${CREDITS_API}`);
109
+ }
110
+ else if (err.message.includes('insufficient') || err.message.includes('balance')) {
111
+ output.error('Insufficient USDC balance for payment.');
112
+ output.info('You need USDC on Base Mainnet to top up credits.');
113
+ output.info('Bridge USDC from another chain or purchase on Base.');
114
+ }
115
+ else {
116
+ output.error(err.message);
117
+ }
118
+ }
119
+ process.exit(1);
120
+ }
121
+ });
122
+ // View transaction history
123
+ creditsCommand
124
+ .command('transactions')
125
+ .description('View your credits transaction history')
126
+ .option('-l, --limit <n>', 'Number of transactions to show', '20')
127
+ .action(async (options) => {
128
+ const config = loadConfig();
129
+ const walletConfig = loadWallet();
130
+ if (!config || !walletConfig) {
131
+ output.error('Agent not initialized. Run `duskware init` first.');
132
+ process.exit(1);
133
+ }
134
+ output.header('Credits Transaction History');
135
+ output.keyValue('Agent', walletConfig.address);
136
+ const spinner = ora('Fetching transactions...').start();
137
+ try {
138
+ const limit = parseInt(options.limit) || 20;
139
+ const response = await fetch(`${CREDITS_API}/transactions/${walletConfig.address}?limit=${limit}`);
140
+ if (!response.ok) {
141
+ throw new Error(`Failed to fetch transactions: ${response.status}`);
142
+ }
143
+ const data = await response.json();
144
+ spinner.stop();
145
+ if (data.transactions.length === 0) {
146
+ console.log();
147
+ output.info('No transactions yet.');
148
+ output.info('Top up credits with: duskware credits topup <5|10|25|50|100>');
149
+ return;
150
+ }
151
+ console.log();
152
+ // Format and display transactions
153
+ const rows = data.transactions.map(tx => {
154
+ const typeColor = tx.type === 'deposit' ? output.colors.success : output.colors.warning;
155
+ const amountDisplay = tx.type === 'deposit'
156
+ ? output.colors.success(`+${tx.amount}`)
157
+ : output.colors.warning(`-${tx.amount.replace('-', '')}`);
158
+ const date = new Date(tx.createdAt);
159
+ const dateStr = date.toLocaleDateString('en-US', {
160
+ month: 'short',
161
+ day: 'numeric',
162
+ hour: '2-digit',
163
+ minute: '2-digit'
164
+ });
165
+ return [
166
+ typeColor(tx.type.padEnd(10)),
167
+ amountDisplay.padEnd(12),
168
+ tx.description.slice(0, 40),
169
+ dateStr
170
+ ];
171
+ });
172
+ output.printTable(['Type', 'Amount', 'Description', 'Date'], rows.map(r => r.map(String)));
173
+ console.log();
174
+ output.info(`Showing ${data.transactions.length} most recent transactions`);
175
+ }
176
+ catch (err) {
177
+ spinner.fail('Failed to fetch transactions');
178
+ if (err instanceof Error) {
179
+ output.error(err.message);
180
+ }
181
+ process.exit(1);
182
+ }
183
+ });
184
+ // Usage breakdown
185
+ creditsCommand
186
+ .command('usage')
187
+ .description('View credits usage breakdown by service')
188
+ .action(async () => {
189
+ const config = loadConfig();
190
+ const walletConfig = loadWallet();
191
+ if (!config || !walletConfig) {
192
+ output.error('Agent not initialized. Run `duskware init` first.');
193
+ process.exit(1);
194
+ }
195
+ output.header('Credits Usage Breakdown');
196
+ output.keyValue('Agent', walletConfig.address);
197
+ const spinner = ora('Fetching usage data...').start();
198
+ try {
199
+ const response = await fetch(`${CREDITS_API}/usage/${walletConfig.address}`);
200
+ if (!response.ok) {
201
+ throw new Error(`Failed to fetch usage: ${response.status}`);
202
+ }
203
+ const data = await response.json();
204
+ spinner.stop();
205
+ console.log();
206
+ output.keyValue('Inference', data.inference);
207
+ output.keyValue('Sandboxes', data.sandbox);
208
+ output.keyValue('Compute', data.compute);
209
+ console.log(output.colors.muted('─'.repeat(30)));
210
+ output.keyValue('Total Spent', output.colors.accent(data.total));
211
+ }
212
+ catch (err) {
213
+ spinner.fail('Failed to fetch usage data');
214
+ if (err instanceof Error) {
215
+ output.error(err.message);
216
+ }
217
+ process.exit(1);
218
+ }
219
+ });
220
+ //# sourceMappingURL=credits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credits.js","sourceRoot":"","sources":["../../src/commands/credits.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * duskware inference
3
+ * AI inference via x402 USDC payments
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare const inferenceCommand: Command;
7
+ //# sourceMappingURL=inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.d.ts","sourceRoot":"","sources":["../../src/commands/inference.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCpC,eAAO,MAAM,gBAAgB,SACwB,CAAC"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * duskware inference
3
+ * AI inference via x402 USDC payments
4
+ */
5
+ import { Command } from 'commander';
6
+ import ora from 'ora';
7
+ import { wrapFetchWithPayment, createSigner } from 'x402-fetch';
8
+ import * as output from '../utils/output.js';
9
+ import { loadConfig, loadWallet } from '../utils/config.js';
10
+ // Inference proxy URL
11
+ const INFERENCE_URL = process.env.INFERENCE_URL || 'https://duskware-inference.fly.dev';
12
+ // x402 network identifier for Base Sepolia
13
+ const X402_NETWORK = 'eip155:84532';
14
+ // Max payment amount (0.50 USDC in base units - 6 decimals)
15
+ const MAX_PAYMENT = BigInt(500000);
16
+ export const inferenceCommand = new Command('inference')
17
+ .description('AI inference via x402 USDC payments');
18
+ // Send inference request
19
+ inferenceCommand
20
+ .command('prompt <text>')
21
+ .description('Send a prompt to the inference proxy (pays USDC via x402)')
22
+ .option('-m, --model <model>', 'Model to use', 'claude-3.5-sonnet')
23
+ .option('--max-tokens <n>', 'Maximum tokens', '1000')
24
+ .option('--system <text>', 'System prompt')
25
+ .action(async (text, options) => {
26
+ const config = loadConfig();
27
+ const walletConfig = loadWallet();
28
+ if (!config || !walletConfig) {
29
+ output.error('Agent not initialized. Run `duskware init` first.');
30
+ process.exit(1);
31
+ }
32
+ output.header('Inference Request');
33
+ output.keyValue('Model', options.model);
34
+ output.keyValue('Max Tokens', options.maxTokens);
35
+ output.keyValue('Agent', config.agentAddress);
36
+ const spinner = ora('Initializing x402 signer...').start();
37
+ try {
38
+ // Create x402 signer from private key
39
+ const signer = await createSigner(X402_NETWORK, walletConfig.privateKey);
40
+ // Create x402-wrapped fetch - automatically handles 402 → sign → pay
41
+ const x402Fetch = wrapFetchWithPayment(fetch, signer, MAX_PAYMENT);
42
+ // Build messages array
43
+ const messages = [];
44
+ if (options.system) {
45
+ messages.push({ role: 'system', content: options.system });
46
+ }
47
+ messages.push({ role: 'user', content: text });
48
+ spinner.text = 'Sending request with x402 payment...';
49
+ // Make request - x402Fetch handles payment automatically
50
+ const response = await x402Fetch(`${INFERENCE_URL}/inference/${options.model}`, {
51
+ method: 'POST',
52
+ headers: { 'Content-Type': 'application/json' },
53
+ body: JSON.stringify({
54
+ messages,
55
+ maxTokens: parseInt(options.maxTokens),
56
+ }),
57
+ });
58
+ if (!response.ok) {
59
+ const errorData = await response.json().catch(() => ({}));
60
+ throw new Error(errorData.error || `Request failed: ${response.status}`);
61
+ }
62
+ const result = await response.json();
63
+ spinner.succeed('Inference complete');
64
+ console.log();
65
+ output.header('Response');
66
+ console.log(result.content);
67
+ console.log();
68
+ output.keyValue('Model', result.model);
69
+ output.keyValue('Tokens', `${result.usage.totalTokens} (${result.usage.promptTokens} prompt + ${result.usage.completionTokens} completion)`);
70
+ if (result.payment) {
71
+ output.keyValue('Payment', `${result.payment.amount} via ${result.payment.method}`);
72
+ output.keyValue('Network', result.payment.network);
73
+ }
74
+ }
75
+ catch (err) {
76
+ spinner.fail('Inference failed');
77
+ if (err instanceof Error) {
78
+ if (err.message.includes('fetch') || err.message.includes('ECONNREFUSED')) {
79
+ output.warning('Inference proxy not available.');
80
+ output.info(`Make sure the proxy is running at ${INFERENCE_URL}`);
81
+ output.info('Run: cd inference-proxy && npm run dev');
82
+ }
83
+ else if (err.message.includes('insufficient') || err.message.includes('balance')) {
84
+ output.error('Insufficient USDC balance for payment.');
85
+ output.info('Get testnet USDC from: https://faucet.circle.com/');
86
+ }
87
+ else {
88
+ output.error(err.message);
89
+ }
90
+ }
91
+ process.exit(1);
92
+ }
93
+ });
94
+ // List available models
95
+ inferenceCommand
96
+ .command('models')
97
+ .description('List available models and pricing')
98
+ .action(async () => {
99
+ output.header('Available Models');
100
+ const spinner = ora('Fetching models...').start();
101
+ try {
102
+ const response = await fetch(`${INFERENCE_URL}/models`);
103
+ if (!response.ok) {
104
+ throw new Error('Failed to fetch models');
105
+ }
106
+ const models = await response.json();
107
+ spinner.stop();
108
+ output.printTable(['Model ID', 'Name', 'Provider', 'Price'], models.map(m => [m.id, m.name, m.provider, m.pricePerRequest]));
109
+ console.log();
110
+ output.info(`Endpoint: POST ${INFERENCE_URL}/inference/{model}`);
111
+ output.info('Payment: Automatic via x402 (USDC on Base Sepolia)');
112
+ }
113
+ catch {
114
+ spinner.stop();
115
+ output.warning('Inference proxy not available. Showing default models:');
116
+ console.log();
117
+ const defaultModels = [
118
+ { id: 'claude-3-haiku', name: 'Claude 3 Haiku', provider: 'anthropic', price: '$0.01' },
119
+ { id: 'claude-3.5-sonnet', name: 'Claude 3.5 Sonnet', provider: 'anthropic', price: '$0.05' },
120
+ { id: 'claude-3-opus', name: 'Claude 3 Opus', provider: 'anthropic', price: '$0.20' },
121
+ { id: 'gpt-4o', name: 'GPT-4o', provider: 'openai', price: '$0.05' },
122
+ { id: 'gpt-4o-mini', name: 'GPT-4o Mini', provider: 'openai', price: '$0.01' },
123
+ ];
124
+ output.printTable(['Model ID', 'Name', 'Provider', 'Price'], defaultModels.map(m => [m.id, m.name, m.provider, m.price]));
125
+ }
126
+ });
127
+ // Health check
128
+ inferenceCommand
129
+ .command('health')
130
+ .description('Check inference proxy health')
131
+ .action(async () => {
132
+ output.header('Inference Proxy Health');
133
+ try {
134
+ const response = await fetch(`${INFERENCE_URL}/health`);
135
+ const data = await response.json();
136
+ output.keyValue('Status', data.status === 'ok' ? '✓ Healthy' : '✗ Unhealthy');
137
+ output.keyValue('Version', data.version);
138
+ output.keyValue('Facilitator', data.facilitator);
139
+ output.keyValue('Network', data.network);
140
+ output.keyValue('Timestamp', data.timestamp);
141
+ }
142
+ catch {
143
+ output.error('Inference proxy not reachable');
144
+ output.info(`URL: ${INFERENCE_URL}`);
145
+ process.exit(1);
146
+ }
147
+ });
148
+ //# sourceMappingURL=inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference.js","sourceRoot":"","sources":["../../src/commands/inference.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * duskware init
3
+ * Deploys new AgentIdentity contract on Base for this agent
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare const initCommand: Command;
7
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,eAAO,MAAM,WAAW,SAkKpB,CAAC"}