@skillzmarket/sdk 0.1.2 → 0.1.4

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 CHANGED
@@ -10,6 +10,7 @@ SDK for discovering and calling paid AI skills with automatic x402 crypto paymen
10
10
  - **Discover skills** - Search and explore the Skillz Market registry
11
11
  - **Automatic payments** - x402 protocol handles USDC payments seamlessly
12
12
  - **Create skills** - Monetize your AI services with zero crypto knowledge
13
+ - **Simple auth** - API key authentication (no wallet signing on each start)
13
14
  - **Type-safe** - Full TypeScript support with comprehensive types
14
15
  - **Base network** - Fast, low-cost transactions on Base mainnet
15
16
 
@@ -23,22 +24,44 @@ pnpm add @skillzmarket/sdk viem
23
24
 
24
25
  ## Quick Start
25
26
 
26
- ### Consumer: Call Paid Skills
27
+ ### Creator: Monetize Your Skills
27
28
 
28
- ```typescript
29
- import { SkillzMarket } from '@skillzmarket/sdk';
29
+ The fastest way to get started is with the interactive setup:
30
30
 
31
- const market = new SkillzMarket({ wallet: '0x...' });
32
- const result = await market.call('text-to-image', { prompt: 'A sunset' });
31
+ ```bash
32
+ npx @skillzmarket/sdk init
33
33
  ```
34
34
 
35
- ### Creator: Monetize Your Skills
35
+ This will:
36
+ 1. Guide you through getting an API key from the dashboard
37
+ 2. Set up your wallet (use existing or generate a new one)
38
+ 3. Save configuration to `.env`
39
+
40
+ Then create your skills:
36
41
 
37
42
  ```typescript
38
43
  import { skill, serve } from '@skillzmarket/sdk/creator';
39
44
 
40
- const echo = skill({ price: '$0.001' }, async (input) => ({ echo: input }));
41
- serve({ echo }); // Run: SKILLZ_WALLET_KEY=0x... npx tsx index.ts
45
+ const echo = skill({
46
+ price: '$0.001',
47
+ description: 'Echoes input back',
48
+ }, async (input) => ({ echo: input }));
49
+
50
+ serve({ echo }, {
51
+ register: {
52
+ endpoint: 'https://your-server.com',
53
+ enabled: true,
54
+ },
55
+ });
56
+ ```
57
+
58
+ ### Consumer: Call Paid Skills
59
+
60
+ ```typescript
61
+ import { SkillzMarket } from '@skillzmarket/sdk';
62
+
63
+ const market = new SkillzMarket({ wallet: '0x...' });
64
+ const result = await market.call('text-to-image', { prompt: 'A sunset' });
42
65
  ```
43
66
 
44
67
  ## Documentation
@@ -145,6 +168,37 @@ Payments use the [x402 protocol](https://x402.org):
145
168
 
146
169
  The creator API lets you monetize your AI skills.
147
170
 
171
+ ### Getting Started
172
+
173
+ #### 1. Interactive Setup (Recommended)
174
+
175
+ ```bash
176
+ npx @skillzmarket/sdk init
177
+ ```
178
+
179
+ This guides you through:
180
+ - Getting an API key from [skillz.market/dashboard](https://skillz.market/dashboard)
181
+ - Setting up your wallet (enter existing address or generate a new one)
182
+ - Saving to `.env`
183
+
184
+ #### 2. Manual Setup
185
+
186
+ Set environment variables:
187
+
188
+ ```bash
189
+ export SKILLZ_API_KEY="sk_..." # API key from dashboard
190
+ export SKILLZ_WALLET_ADDRESS="0x..." # Your wallet address
191
+ ```
192
+
193
+ Or pass them directly:
194
+
195
+ ```typescript
196
+ serve({ echo }, {
197
+ apiKey: 'sk_...',
198
+ wallet: '0x...',
199
+ });
200
+ ```
201
+
148
202
  ### Functions
149
203
 
150
204
  | Function | Description |
@@ -152,6 +206,8 @@ The creator API lets you monetize your AI skills.
152
206
  | `skill(options, handler)` | Define a monetized skill |
153
207
  | `serve(skills, options?)` | Start the skill server |
154
208
  | `register(skills, options)` | Register skills with marketplace |
209
+ | `init()` | Interactive CLI setup |
210
+ | `checkConfig()` | Validate SDK configuration |
155
211
 
156
212
  ### Example
157
213
 
@@ -189,6 +245,55 @@ serve({ summarize, translate }, {
189
245
  });
190
246
  ```
191
247
 
248
+ ### Configuration Helpers
249
+
250
+ #### init()
251
+
252
+ Interactive CLI setup that guides you through configuration:
253
+
254
+ ```bash
255
+ npx @skillzmarket/sdk init
256
+ ```
257
+
258
+ The wizard will:
259
+
260
+ 1. **API Key Setup**: Guide you to get an API key from the dashboard
261
+ 2. **Wallet Setup**: Ask if you have an existing wallet
262
+ - **Yes**: Enter your wallet address (0x...)
263
+ - **No**: Option to generate a new wallet
264
+ - Generates a secure private key and address
265
+ - Displays the private key with a security warning
266
+ - Saves both `SKILLZ_WALLET_ADDRESS` and `SKILLZ_WALLET_KEY` to `.env`
267
+ 3. **Save Configuration**: Write to `.env` file or show shell export commands
268
+
269
+ You can also call it programmatically:
270
+
271
+ ```typescript
272
+ import { init } from '@skillzmarket/sdk/creator';
273
+
274
+ await init();
275
+ ```
276
+
277
+ #### checkConfig()
278
+
279
+ Validate that required configuration is present:
280
+
281
+ ```typescript
282
+ import { checkConfig } from '@skillzmarket/sdk/creator';
283
+
284
+ const config = checkConfig();
285
+
286
+ if (!config.configured) {
287
+ console.error('Configuration issues:');
288
+ config.issues.forEach(issue => console.error(` - ${issue}`));
289
+ process.exit(1);
290
+ }
291
+
292
+ // config.apiKey - boolean, true if SKILLZ_API_KEY is valid
293
+ // config.walletAddress - boolean, true if wallet is configured
294
+ // config.issues - string[], list of configuration problems
295
+ ```
296
+
192
297
  ### Price Formats
193
298
 
194
299
  Creators can specify prices in multiple formats:
@@ -216,7 +321,10 @@ interface SkillOptions {
216
321
  ```typescript
217
322
  interface ServeOptions {
218
323
  port?: number; // Port to listen on (default: 3002)
219
- wallet?: Hex; // Private key (or use SKILLZ_WALLET_KEY env)
324
+ wallet?: string; // Wallet address (42-char) or private key (66-char)
325
+ // Falls back to SKILLZ_WALLET_ADDRESS or SKILLZ_WALLET_KEY env
326
+ apiKey?: string; // API key for registration
327
+ // Falls back to SKILLZ_API_KEY env
220
328
  network?: string; // Network (default: 'eip155:8453')
221
329
  register?: {
222
330
  endpoint: string; // Your public server URL
@@ -230,13 +338,30 @@ interface ServeOptions {
230
338
 
231
339
  ---
232
340
 
341
+ ## Authentication Flow
342
+
343
+ The SDK uses API key authentication for skill registration:
344
+
345
+ 1. **One-time setup**: Sign with your wallet on [skillz.market/dashboard](https://skillz.market/dashboard) to create your account
346
+ 2. **Get API key**: Create an API key in the dashboard's "API Keys" section
347
+ 3. **Use in SDK**: The API key authenticates registration requests - no signing required
348
+
349
+ Benefits over wallet signing on every start:
350
+ - No private key needed in your skill server
351
+ - Can rotate/revoke keys without changing wallet
352
+ - Same security (wallet verified at account creation)
353
+
354
+ ---
355
+
233
356
  ## Environment Variables
234
357
 
235
358
  | Variable | Description | Required |
236
359
  |----------|-------------|----------|
237
- | `SKILLZ_WALLET_KEY` | Private key for payments (Creator) | Yes* |
360
+ | `SKILLZ_API_KEY` | API key for registration | Yes (creator) |
361
+ | `SKILLZ_WALLET_ADDRESS` | Wallet address for receiving payments | Yes (creator) |
362
+ | `SKILLZ_WALLET_KEY` | Private key (saved when wallet is generated via `init`) | No* |
238
363
 
239
- *Required for `serve()` if not passed in options.
364
+ *`SKILLZ_WALLET_KEY` is automatically saved when you generate a new wallet via `npx @skillzmarket/sdk init`. For serving skills, only the address is needed. The private key is useful for consumers making payments or if you need to access the generated wallet elsewhere.
240
365
 
241
366
  ## Security Considerations
242
367
 
@@ -246,9 +371,22 @@ All API URLs must use HTTPS. The SDK rejects HTTP URLs (except localhost for dev
246
371
 
247
372
  ### Wallet Security
248
373
 
249
- - Never hardcode private keys in source code
250
- - Use environment variables or secure key management
251
- - Consider hardware wallets for production
374
+ With API key authentication, your skill server only needs a wallet **address** (not private key) for receiving payments. The private key is only used when:
375
+ - Creating your account (one-time signature in dashboard)
376
+ - Making payments as a consumer
377
+
378
+ **If you generate a wallet via `init`:**
379
+ - The private key is displayed once and saved to `.env`
380
+ - Store it securely (password manager, hardware wallet backup)
381
+ - Never commit `.env` to source control
382
+ - You cannot retrieve the private key later if lost
383
+
384
+ ### API Key Security
385
+
386
+ - Store API keys securely (environment variables, secrets manager)
387
+ - Never commit API keys to source control
388
+ - Rotate keys if compromised via the dashboard
389
+ - Use separate keys for development/production
252
390
 
253
391
  ### Error Handling
254
392
 
@@ -299,6 +437,13 @@ interface ParsedPrice {
299
437
  amount: string;
300
438
  currency: 'USDC';
301
439
  }
440
+
441
+ interface RegistrationResult {
442
+ name: string;
443
+ success: boolean;
444
+ slug?: string;
445
+ error?: string;
446
+ }
302
447
  ```
303
448
 
304
449
  ---
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export {};
2
+ import 'dotenv/config';
3
3
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":";AAGA,OAAO,eAAe,CAAC"}
package/dist/bin/init.js CHANGED
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env node
2
+ // Load environment variables from .env file
3
+ import 'dotenv/config';
2
4
  import { init } from '../creator/init.js';
3
5
  init().catch((error) => {
4
6
  console.error('Error during setup:', error.message);
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/bin/init.ts"],"names":[],"mappings":";AAEA,4CAA4C;AAC5C,OAAO,eAAe,CAAC;AAEvB,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import 'dotenv/config';
1
2
  /**
2
3
  * @skillzmarket/sdk/creator - Create monetized skills with zero x402 knowledge
3
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/creator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC7D,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG3D,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC7G,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/creator/index.ts"],"names":[],"mappings":"AACA,OAAO,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC7D,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAG3D,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,SAAS,EACT,YAAY,EACZ,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC7G,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,5 @@
1
+ // Load environment variables from .env file
2
+ import 'dotenv/config';
1
3
  /**
2
4
  * @skillzmarket/sdk/creator - Create monetized skills with zero x402 knowledge
3
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/creator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAgB7D,yCAAyC;AACzC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/creator/index.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,OAAO,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAgB7D,yCAAyC;AACzC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/creator/init.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;;GAWG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6J1C;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAwBA"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/creator/init.ts"],"names":[],"mappings":"AAQA;;;;;;;;;;;GAWG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAqL1C;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI;IAC7B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAwBA"}
@@ -1,6 +1,8 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import * as readline from 'readline';
4
+ import pc from 'picocolors';
5
+ import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';
4
6
  const DASHBOARD_URL = 'https://skillz.market/dashboard';
5
7
  /**
6
8
  * Interactive setup for Skillz Market SDK.
@@ -27,20 +29,20 @@ export async function init() {
27
29
  });
28
30
  };
29
31
  console.log('');
30
- console.log('='.repeat(60));
31
- console.log(' Skillz Market SDK - Setup');
32
- console.log('='.repeat(60));
32
+ console.log(pc.dim('='.repeat(60)));
33
+ console.log(pc.bold(' Skillz Market SDK - Setup'));
34
+ console.log(pc.dim('='.repeat(60)));
33
35
  console.log('');
34
36
  // Check for existing API key
35
37
  const existingKey = process.env.SKILLZ_API_KEY;
36
38
  if (existingKey) {
37
- console.log('✓ Found existing API key in environment: SKILLZ_API_KEY');
38
- console.log(` Key prefix: ${existingKey.slice(0, 11)}...`);
39
+ console.log(pc.green('✓') + ' Found existing API key in environment: ' + pc.cyan('SKILLZ_API_KEY'));
40
+ console.log(pc.dim(` Key prefix: ${existingKey.slice(0, 11)}...`));
39
41
  console.log('');
40
42
  const overwrite = await question('Do you want to set up a new key? (y/N): ');
41
43
  if (overwrite.toLowerCase() !== 'y') {
42
44
  console.log('');
43
- console.log('Setup complete! Your existing API key will be used.');
45
+ console.log(pc.green('Setup complete!') + ' Your existing API key will be used.');
44
46
  rl.close();
45
47
  return;
46
48
  }
@@ -49,106 +51,122 @@ export async function init() {
49
51
  // Instructions for getting an API key
50
52
  console.log('To register skills, you need an API key from Skillz Market.');
51
53
  console.log('');
52
- console.log('Steps to get your API key:');
54
+ console.log(pc.bold('Steps to get your API key:'));
53
55
  console.log('');
54
- console.log(' 1. Go to: ' + DASHBOARD_URL);
55
- console.log(' 2. Connect your wallet');
56
- console.log(' 3. Sign to authenticate (one-time)');
57
- console.log(' 4. Find the "API Keys" section');
58
- console.log(' 5. Click "Create Key" and copy the key');
56
+ console.log(pc.dim(' 1.') + ' Go to: ' + pc.cyan(DASHBOARD_URL));
57
+ console.log(pc.dim(' 2.') + ' Connect your wallet');
58
+ console.log(pc.dim(' 3.') + ' Sign to authenticate (one-time)');
59
+ console.log(pc.dim(' 4.') + ' Find the "API Keys" section');
60
+ console.log(pc.dim(' 5.') + ' Click "Create Key" and copy the key');
59
61
  console.log('');
60
62
  // Wait for user to get the key
61
63
  const apiKey = await question('Paste your API key here (sk_...): ');
62
64
  if (!apiKey) {
63
65
  console.log('');
64
- console.log('No API key provided. Setup cancelled.');
66
+ console.log(pc.red('No API key provided. Setup cancelled.'));
65
67
  rl.close();
66
68
  return;
67
69
  }
68
70
  if (!apiKey.startsWith('sk_')) {
69
71
  console.log('');
70
- console.log('⚠️ Warning: API keys should start with "sk_"');
71
- console.log(' The key you entered might be invalid.');
72
+ console.log(pc.yellow('⚠️ Warning:') + ' API keys should start with "sk_"');
73
+ console.log(pc.dim(' The key you entered might be invalid.'));
72
74
  console.log('');
73
75
  }
74
- // Ask for wallet address
75
- console.log('');
76
- const walletAddress = await question('Your wallet address for receiving payments (0x...): ');
77
- if (!walletAddress) {
78
- console.log('');
79
- console.log('No wallet address provided. Setup cancelled.');
80
- rl.close();
81
- return;
76
+ // Ask about wallet setup
77
+ console.log('');
78
+ let walletAddress;
79
+ let generatedPrivateKey = null;
80
+ const hasWallet = await question('Do you have a wallet set up to receive payments? (y/N): ');
81
+ if (hasWallet.toLowerCase() === 'y') {
82
+ // User has existing wallet
83
+ const inputAddress = await question('Enter your wallet address (0x...): ');
84
+ if (!inputAddress) {
85
+ console.log('');
86
+ console.log(pc.red('No wallet address provided. Setup cancelled.'));
87
+ rl.close();
88
+ return;
89
+ }
90
+ if (!inputAddress.startsWith('0x') || inputAddress.length !== 42) {
91
+ console.log('');
92
+ console.log(pc.yellow('⚠️ Warning:') + ' Wallet address should be 42 characters starting with "0x"');
93
+ console.log('');
94
+ }
95
+ walletAddress = inputAddress;
82
96
  }
83
- if (!walletAddress.startsWith('0x') || walletAddress.length !== 42) {
84
- console.log('');
85
- console.log('⚠️ Warning: Wallet address should be 42 characters starting with "0x"');
97
+ else {
98
+ // User doesn't have a wallet
86
99
  console.log('');
87
- }
88
- // Ask where to save
89
- console.log('');
90
- console.log('Where would you like to save the configuration?');
91
- console.log('');
92
- console.log(' 1. Create/update .env file (recommended)');
93
- console.log(' 2. Show commands to set environment variables');
94
- console.log(' 3. Cancel');
95
- console.log('');
96
- const choice = await question('Choose an option (1/2/3): ');
97
- console.log('');
98
- if (choice === '1') {
99
- // Write to .env file
100
- const envPath = path.resolve(process.cwd(), '.env');
101
- let envContent = '';
102
- // Read existing .env if it exists
103
- if (fs.existsSync(envPath)) {
104
- envContent = fs.readFileSync(envPath, 'utf-8');
105
- // Remove existing SKILLZ_ variables
106
- envContent = envContent
107
- .split('\n')
108
- .filter((line) => !line.startsWith('SKILLZ_API_KEY=') && !line.startsWith('SKILLZ_WALLET_ADDRESS='))
109
- .join('\n');
110
- if (envContent && !envContent.endsWith('\n')) {
111
- envContent += '\n';
112
- }
100
+ const generateWallet = await question('Would you like to generate a new wallet? (y/N): ');
101
+ if (generateWallet.toLowerCase() !== 'y') {
102
+ console.log('');
103
+ console.log(pc.dim('You need a wallet to receive payments for your skills.'));
104
+ console.log(pc.dim('Run this setup again when you have a wallet ready.'));
105
+ rl.close();
106
+ return;
113
107
  }
114
- // Add new variables
115
- envContent += `\n# Skillz Market SDK Configuration\n`;
116
- envContent += `SKILLZ_API_KEY=${apiKey}\n`;
117
- envContent += `SKILLZ_WALLET_ADDRESS=${walletAddress}\n`;
118
- fs.writeFileSync(envPath, envContent);
119
- console.log('✓ Configuration saved to .env');
108
+ // Generate new wallet
109
+ generatedPrivateKey = generatePrivateKey();
110
+ const account = privateKeyToAccount(generatedPrivateKey);
111
+ walletAddress = account.address;
120
112
  console.log('');
121
- console.log('Make sure .env is in your .gitignore!');
122
- }
123
- else if (choice === '2') {
124
- console.log('Add these to your environment:');
113
+ console.log(pc.yellow('╔════════════════════════════════════════════════════════════════╗'));
114
+ console.log(pc.yellow('║') + pc.bold(pc.red(' ⚠️ IMPORTANT: SAVE YOUR PRIVATE KEY NOW! ')) + pc.yellow(' ║'));
115
+ console.log(pc.yellow('║ ║'));
116
+ console.log(pc.yellow('║') + ' You will ' + pc.bold('NOT') + ' be able to retrieve it later. ' + pc.yellow(' ║'));
117
+ console.log(pc.yellow('║') + ' Store it securely (password manager, hardware wallet). ' + pc.yellow(' ║'));
118
+ console.log(pc.yellow('╚════════════════════════════════════════════════════════════════╝'));
125
119
  console.log('');
126
- console.log(` export SKILLZ_API_KEY="${apiKey}"`);
127
- console.log(` export SKILLZ_WALLET_ADDRESS="${walletAddress}"`);
120
+ console.log(' Private Key: ' + pc.magenta(generatedPrivateKey));
121
+ console.log(' Wallet Address: ' + pc.cyan(walletAddress));
128
122
  console.log('');
129
- console.log('Or add to your shell profile (~/.bashrc, ~/.zshrc, etc.)');
123
+ await question('Press Enter once you have saved your private key...');
130
124
  }
131
- else {
132
- console.log('Setup cancelled.');
133
- rl.close();
134
- return;
125
+ // Write directly to .env
126
+ const envPath = path.resolve(process.cwd(), '.env');
127
+ let envContent = '';
128
+ // Read existing .env if it exists
129
+ if (fs.existsSync(envPath)) {
130
+ envContent = fs.readFileSync(envPath, 'utf-8');
131
+ // Remove existing SKILLZ_ variables
132
+ envContent = envContent
133
+ .split('\n')
134
+ .filter((line) => !line.startsWith('SKILLZ_API_KEY=') &&
135
+ !line.startsWith('SKILLZ_WALLET_ADDRESS=') &&
136
+ !line.startsWith('SKILLZ_WALLET_KEY='))
137
+ .join('\n');
138
+ if (envContent && !envContent.endsWith('\n')) {
139
+ envContent += '\n';
140
+ }
135
141
  }
142
+ // Add new variables
143
+ envContent += `\n# Skillz Market SDK Configuration\n`;
144
+ envContent += `SKILLZ_API_KEY=${apiKey}\n`;
145
+ envContent += `SKILLZ_WALLET_ADDRESS=${walletAddress}\n`;
146
+ if (generatedPrivateKey) {
147
+ envContent += `SKILLZ_WALLET_KEY=${generatedPrivateKey}\n`;
148
+ }
149
+ fs.writeFileSync(envPath, envContent);
150
+ console.log('');
151
+ console.log(pc.green('✓') + ' Configuration saved to ' + pc.cyan('.env'));
152
+ console.log('');
153
+ console.log(pc.yellow('Make sure .env is in your .gitignore!'));
136
154
  console.log('');
137
- console.log('='.repeat(60));
138
- console.log(' Setup Complete!');
139
- console.log('='.repeat(60));
155
+ console.log(pc.dim('='.repeat(60)));
156
+ console.log(pc.bold(pc.green(' Setup Complete!')));
157
+ console.log(pc.dim('='.repeat(60)));
140
158
  console.log('');
141
159
  console.log('You can now use the SDK:');
142
160
  console.log('');
143
- console.log(' import { skill, serve } from "@skillzmarket/sdk/creator";');
161
+ console.log(pc.dim(' import { skill, serve } from "@skillzmarket/sdk/creator";'));
144
162
  console.log('');
145
- console.log(' const mySkill = skill({ price: "$0.001" }, async (input) => {');
146
- console.log(' return { result: "Hello!" };');
147
- console.log(' });');
163
+ console.log(pc.dim(' const mySkill = skill({ price: "$0.001" }, async (input) => {'));
164
+ console.log(pc.dim(' return { result: "Hello!" };'));
165
+ console.log(pc.dim(' });'));
148
166
  console.log('');
149
- console.log(' serve({ mySkill }, {');
150
- console.log(' register: { endpoint: "https://your-server.com", enabled: true }');
151
- console.log(' });');
167
+ console.log(pc.dim(' serve({ mySkill }, {'));
168
+ console.log(pc.dim(' register: { endpoint: "https://your-server.com", enabled: true }'));
169
+ console.log(pc.dim(' });'));
152
170
  console.log('');
153
171
  rl.close();
154
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/creator/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/creator/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillzmarket/sdk",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "SDK for discovering and calling paid AI skills with automatic x402 payments",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -61,12 +61,14 @@
61
61
  "node": ">=18.0.0"
62
62
  },
63
63
  "dependencies": {
64
+ "dotenv": "^16.0.0",
64
65
  "@hono/node-server": "^1.19.9",
65
66
  "@x402/core": "^2.2.0",
66
67
  "@x402/evm": "^2.2.0",
67
68
  "@x402/fetch": "^2.2.0",
68
69
  "@x402/hono": "^2.2.0",
69
70
  "hono": "^4.0.0",
71
+ "picocolors": "^1.1.1",
70
72
  "user": "^0.0.0",
71
73
  "viem": "^2.0.0"
72
74
  },