@solrouter/sdk 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -22,6 +22,78 @@ const response = await client.chat('Explain quantum computing');
22
22
  console.log(response.message);
23
23
  ```
24
24
 
25
+ ## Testing Your Setup
26
+
27
+ ### Verify API Key
28
+
29
+ Check if your API key is valid by fetching your balance:
30
+
31
+ ```typescript
32
+ import { SolRouter } from '@solrouter/sdk';
33
+
34
+ const client = new SolRouter({
35
+ apiKey: 'sk_solrouter_your_key_here',
36
+ });
37
+
38
+ async function main() {
39
+ try {
40
+ const balance = await client.getBalance();
41
+ console.log('API key valid! Balance:', balance.balanceFormatted);
42
+ } catch (error) {
43
+ console.error('Invalid API key');
44
+ }
45
+ }
46
+ main();
47
+ ```
48
+
49
+ ### Test Script
50
+
51
+ The SDK includes a connection test script. After installing, copy it from `node_modules`:
52
+
53
+ ```bash
54
+ # Copy the test script
55
+ cp node_modules/@solrouter/sdk/examples/test-connection.ts ./
56
+
57
+ # Run with your API key
58
+ SOLROUTER_API_KEY=sk_solrouter_xxx npx ts-node test-connection.ts
59
+ ```
60
+
61
+ The test script will verify:
62
+ 1. API key validity
63
+ 2. Encrypted chat functionality
64
+ 3. Live web search
65
+
66
+ Example output:
67
+ ```
68
+ ==================================================
69
+ SolRouter SDK Connection Test
70
+ ==================================================
71
+ Base URL: https://solrouter-obb4.onrender.com
72
+ API Key: sk_solrouter_xxx****
73
+
74
+ [1/3] Testing API Key...
75
+ ✓ API key is valid
76
+ Balance: $10.5000 USDC
77
+
78
+ [2/3] Testing Encrypted Chat...
79
+ ✓ Encrypted chat working
80
+ Response: "4"
81
+ Encrypted: true
82
+
83
+ [3/3] Testing Live Search...
84
+ ✓ Live search working
85
+ Response: "Bitcoin is currently trading at $95,084 USD."
86
+
87
+ ==================================================
88
+ Results
89
+ ==================================================
90
+ API Key: ✓
91
+ Encrypted Chat: ✓
92
+ Live Search: ✓
93
+
94
+ 3/3 tests passed
95
+ ```
96
+
25
97
  ## How It Works
26
98
 
27
99
  1. **Client-side Encryption**: Your prompt is encrypted using Arcium's RescueCipher before leaving your device
package/dist/client.d.ts CHANGED
@@ -17,6 +17,10 @@ export declare class SolRouter {
17
17
  * @returns The AI response
18
18
  */
19
19
  chat(prompt: string, options?: ChatOptions): Promise<ChatResponse>;
20
+ /**
21
+ * BRAID-guided chat — routes to the agent endpoint with reasoning: 'braid'
22
+ */
23
+ private braidChat;
20
24
  /**
21
25
  * Encrypted chat - prompt is encrypted client-side
22
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,EAChB,MAAM,YAAY,CAAC;AAcpB,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAU;gBAEf,MAAM,EAAE,eAAe;IASnC;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAW5E;;OAEG;YACW,aAAa;IAgE3B;;OAEG;YACW,SAAS;IAqDvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAmB5C;;OAEG;IACH,YAAY,IAAI,IAAI;CAGrB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EACX,YAAY,EACZ,eAAe,EAChB,MAAM,YAAY,CAAC;AAcpB,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAU;gBAEf,MAAM,EAAE,eAAe;IASnC;;;;;;OAMG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,YAAY,CAAC;IAgB5E;;OAEG;YACW,SAAS;IAwCvB;;OAEG;YACW,aAAa;IAgE3B;;OAEG;YACW,SAAS;IAqDvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAQ3B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAmB5C;;OAEG;IACH,YAAY,IAAI,IAAI;CAGrB"}
package/dist/client.js CHANGED
@@ -9,9 +9,9 @@ const DEFAULT_MODEL = 'gpt-oss-20b';
9
9
  // Model mapping for API
10
10
  const MODEL_MAP = {
11
11
  'gpt-oss-20b': 'nosana:gpt-oss:20b',
12
- 'qwen3-8b': 'nosana:qwen3:8b',
13
12
  'gemini-flash': 'gemini:gemini-2.0-flash-exp',
14
13
  'claude-sonnet': 'claude:claude-3-5-sonnet-20241022',
14
+ 'claude-sonnet-4': 'claude:claude-sonnet-4-20250514',
15
15
  'gpt-4o-mini': 'openai:gpt-4o-mini',
16
16
  };
17
17
  export class SolRouter {
@@ -34,6 +34,10 @@ export class SolRouter {
34
34
  * @returns The AI response
35
35
  */
36
36
  async chat(prompt, options = {}) {
37
+ // BRAID reasoning path — routes through the agent endpoint
38
+ if (options.reasoning === 'braid') {
39
+ return this.braidChat(prompt, options);
40
+ }
37
41
  const useEncryption = options.encrypted ?? this.encrypted;
38
42
  const model = MODEL_MAP[options.model || DEFAULT_MODEL] || options.model || MODEL_MAP[DEFAULT_MODEL];
39
43
  if (useEncryption) {
@@ -43,6 +47,38 @@ export class SolRouter {
43
47
  return this.plainChat(prompt, model, options);
44
48
  }
45
49
  }
50
+ /**
51
+ * BRAID-guided chat — routes to the agent endpoint with reasoning: 'braid'
52
+ */
53
+ async braidChat(prompt, options) {
54
+ const model = MODEL_MAP[options.model || DEFAULT_MODEL] || options.model || MODEL_MAP[DEFAULT_MODEL];
55
+ const response = await fetch(`${this.baseUrl}/agent`, {
56
+ method: 'POST',
57
+ headers: {
58
+ 'Content-Type': 'application/json',
59
+ 'Authorization': `Bearer ${this.apiKey}`,
60
+ },
61
+ body: JSON.stringify({
62
+ prompt,
63
+ model,
64
+ chatId: options.chatId,
65
+ reasoning: 'braid',
66
+ braidOptions: options.braidOptions,
67
+ }),
68
+ });
69
+ if (!response.ok) {
70
+ const error = await response.json().catch(() => ({ error: 'Unknown error' }));
71
+ throw new Error(`SolRouter API error: ${error.error || error.message || response.statusText}`);
72
+ }
73
+ const data = await response.json();
74
+ return {
75
+ message: data.reply,
76
+ model: data.model || model,
77
+ usage: data.usage,
78
+ encrypted: false,
79
+ braidTrace: data.braidTrace,
80
+ };
81
+ }
46
82
  /**
47
83
  * Encrypted chat - prompt is encrypted client-side
48
84
  */
@@ -144,7 +180,7 @@ export class SolRouter {
144
180
  * Get account balance
145
181
  */
146
182
  async getBalance() {
147
- const response = await fetch(`${this.baseUrl}/payments/balance`, {
183
+ const response = await fetch(`${this.baseUrl}/api/v1/balance`, {
148
184
  headers: {
149
185
  'Authorization': `Bearer ${this.apiKey}`,
150
186
  },
@@ -154,8 +190,8 @@ export class SolRouter {
154
190
  }
155
191
  const data = await response.json();
156
192
  return {
157
- balance: data.balance,
158
- balanceFormatted: `$${data.balance.toFixed(4)}`,
193
+ balance: data.balance_usdc,
194
+ balanceFormatted: data.balance_formatted,
159
195
  };
160
196
  }
161
197
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -11,7 +11,7 @@ export interface SolRouterConfig {
11
11
  }
12
12
  export interface ChatOptions {
13
13
  /** Model to use (defaults to gpt-oss-20b) */
14
- model?: 'gpt-oss-20b' | 'qwen3-8b' | 'gemini-flash' | 'claude-sonnet' | 'gpt-4o-mini';
14
+ model?: 'gpt-oss-20b' | 'gemini-flash' | 'claude-sonnet' | 'claude-sonnet-4' | 'gpt-4o-mini';
15
15
  /** System prompt */
16
16
  systemPrompt?: string;
17
17
  /** Enable encryption for this request (overrides client setting) */
@@ -24,6 +24,15 @@ export interface ChatOptions {
24
24
  ragCollection?: string;
25
25
  /** Enable live web search */
26
26
  useLiveSearch?: boolean;
27
+ /** Reasoning mode: 'default' for standard, 'braid' for BRAID-guided reasoning */
28
+ reasoning?: 'default' | 'braid';
29
+ /** BRAID-specific options (only used when reasoning is 'braid') */
30
+ braidOptions?: {
31
+ /** Include GRD execution trace in the response */
32
+ includeTrace?: boolean;
33
+ /** Force a specific GRD by ID */
34
+ forceGrdId?: string;
35
+ };
27
36
  }
28
37
  export interface ChatResponse {
29
38
  /** The AI response message */
@@ -42,6 +51,23 @@ export interface ChatResponse {
42
51
  encrypted: boolean;
43
52
  /** Privacy attestation ID (if encrypted) */
44
53
  privacyAttestationId?: string;
54
+ /** BRAID execution trace (when reasoning: 'braid' and braidOptions.includeTrace: true) */
55
+ braidTrace?: {
56
+ grdId: string;
57
+ grdMermaid: string;
58
+ intent: string;
59
+ nodes: Array<{
60
+ nodeId: string;
61
+ label: string;
62
+ type: string;
63
+ status: string;
64
+ durationMs?: number;
65
+ tokensUsed?: number;
66
+ }>;
67
+ totalDurationMs: number;
68
+ totalTokens: number;
69
+ ppd?: number;
70
+ };
45
71
  }
46
72
  export interface EncryptedData {
47
73
  ciphertext: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,CAAC;IACtF,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,iBAAiB,GAAG,aAAa,CAAC;IAC7F,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iFAAiF;IACjF,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAChC,mEAAmE;IACnE,YAAY,CAAC,EAAE;QACb,kDAAkD;QAClD,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,iCAAiC;QACjC,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,mCAAmC;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,KAAK,CAAC;YACX,MAAM,EAAE,MAAM,CAAC;YACf,KAAK,EAAE,MAAM,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,MAAM,CAAC;YACf,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;QACH,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1,135 @@
1
+ /**
2
+ * SolRouter SDK Connection Test
3
+ *
4
+ * Use this script to verify your API key and test SDK functionality.
5
+ *
6
+ * Usage:
7
+ * SOLROUTER_API_KEY=sk_solrouter_xxx npx ts-node examples/test-connection.ts
8
+ *
9
+ * Or set environment variables:
10
+ * export SOLROUTER_API_KEY=sk_solrouter_xxx
11
+ * export SOLROUTER_BASE_URL=https://your-server.com (optional)
12
+ */
13
+
14
+ import { SolRouter } from '@solrouter/sdk';
15
+
16
+ // Configuration from environment
17
+ const API_KEY = process.env.SOLROUTER_API_KEY;
18
+ const BASE_URL = process.env.SOLROUTER_BASE_URL || 'https://solrouter-obb4.onrender.com';
19
+
20
+ if (!API_KEY) {
21
+ console.error('Error: SOLROUTER_API_KEY environment variable is required');
22
+ console.error('Usage: SOLROUTER_API_KEY=sk_solrouter_xxx npx ts-node examples/test-connection.ts');
23
+ process.exit(1);
24
+ }
25
+
26
+ const client = new SolRouter({
27
+ apiKey: API_KEY,
28
+ baseUrl: BASE_URL,
29
+ encrypted: true,
30
+ });
31
+
32
+ // Terminal colors
33
+ const colors = {
34
+ reset: '\x1b[0m',
35
+ green: '\x1b[32m',
36
+ red: '\x1b[31m',
37
+ yellow: '\x1b[33m',
38
+ cyan: '\x1b[36m',
39
+ dim: '\x1b[2m',
40
+ };
41
+
42
+ async function testApiKey(): Promise<boolean> {
43
+ console.log(colors.cyan + '\n[1/3] Testing API Key...' + colors.reset);
44
+
45
+ try {
46
+ const balance = await client.getBalance();
47
+ console.log(colors.green + ' ✓ API key is valid' + colors.reset);
48
+ console.log(colors.dim + ` Balance: ${balance.balanceFormatted}` + colors.reset);
49
+ return true;
50
+ } catch (error: any) {
51
+ console.log(colors.red + ' ✗ API key is invalid or expired' + colors.reset);
52
+ console.log(colors.dim + ` Error: ${error.message}` + colors.reset);
53
+ return false;
54
+ }
55
+ }
56
+
57
+ async function testEncryptedChat(): Promise<boolean> {
58
+ console.log(colors.cyan + '\n[2/3] Testing Encrypted Chat...' + colors.reset);
59
+
60
+ try {
61
+ const response = await client.chat('What is 2 + 2? Reply with just the number.', {
62
+ model: 'gpt-oss-20b',
63
+ encrypted: true,
64
+ });
65
+ console.log(colors.green + ' ✓ Encrypted chat working' + colors.reset);
66
+ console.log(colors.dim + ` Response: "${response.message}"` + colors.reset);
67
+ console.log(colors.dim + ` Encrypted: ${response.encrypted}` + colors.reset);
68
+ return true;
69
+ } catch (error: any) {
70
+ console.log(colors.red + ' ✗ Encrypted chat failed' + colors.reset);
71
+ console.log(colors.dim + ` Error: ${error.message}` + colors.reset);
72
+ return false;
73
+ }
74
+ }
75
+
76
+ async function testLiveSearch(): Promise<boolean> {
77
+ console.log(colors.cyan + '\n[3/3] Testing Live Search...' + colors.reset);
78
+
79
+ try {
80
+ const response = await client.chat('What is the current price of Bitcoin? Be brief.', {
81
+ model: 'gpt-oss-20b',
82
+ encrypted: true,
83
+ useLiveSearch: true,
84
+ });
85
+ console.log(colors.green + ' ✓ Live search working' + colors.reset);
86
+ console.log(colors.dim + ` Response: "${response.message}"` + colors.reset);
87
+ return true;
88
+ } catch (error: any) {
89
+ console.log(colors.red + ' ✗ Live search failed' + colors.reset);
90
+ console.log(colors.dim + ` Error: ${error.message}` + colors.reset);
91
+ return false;
92
+ }
93
+ }
94
+
95
+ async function main() {
96
+ console.log('\n' + '='.repeat(50));
97
+ console.log(colors.cyan + ' SolRouter SDK Connection Test' + colors.reset);
98
+ console.log('='.repeat(50));
99
+ console.log(colors.dim + `Base URL: ${BASE_URL}` + colors.reset);
100
+ console.log(colors.dim + `API Key: ${API_KEY.substring(0, 20)}****` + colors.reset);
101
+
102
+ const results = {
103
+ apiKey: await testApiKey(),
104
+ encryptedChat: false,
105
+ liveSearch: false,
106
+ };
107
+
108
+ // Only continue if API key is valid
109
+ if (results.apiKey) {
110
+ results.encryptedChat = await testEncryptedChat();
111
+ results.liveSearch = await testLiveSearch();
112
+ }
113
+
114
+ // Summary
115
+ console.log('\n' + '='.repeat(50));
116
+ console.log(colors.cyan + ' Results' + colors.reset);
117
+ console.log('='.repeat(50));
118
+
119
+ const passed = Object.values(results).filter(Boolean).length;
120
+ const total = Object.keys(results).length;
121
+
122
+ console.log(` API Key: ${results.apiKey ? colors.green + '✓' : colors.red + '✗'}` + colors.reset);
123
+ console.log(` Encrypted Chat: ${results.encryptedChat ? colors.green + '✓' : colors.red + '✗'}` + colors.reset);
124
+ console.log(` Live Search: ${results.liveSearch ? colors.green + '✓' : colors.red + '✗'}` + colors.reset);
125
+ console.log();
126
+ console.log(` ${passed}/${total} tests passed`);
127
+ console.log();
128
+
129
+ // Cleanup
130
+ client.clearSession();
131
+
132
+ process.exit(passed === total ? 0 : 1);
133
+ }
134
+
135
+ main().catch(console.error);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solrouter/sdk",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "SolRouter Privacy SDK - End-to-end encrypted AI API calls",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,11 +14,15 @@
14
14
  },
15
15
  "files": [
16
16
  "dist",
17
+ "examples",
17
18
  "README.md"
18
19
  ],
19
20
  "scripts": {
20
21
  "build": "tsc",
21
22
  "dev": "tsc --watch",
23
+ "test": "vitest run",
24
+ "test:watch": "vitest",
25
+ "test:coverage": "vitest run --coverage",
22
26
  "prepublishOnly": "npm run build"
23
27
  },
24
28
  "keywords": [
@@ -36,11 +40,13 @@
36
40
  "url": "https://github.com/solrouter/sdk"
37
41
  },
38
42
  "dependencies": {
39
- "@arcium-hq/client": "^0.1.0"
43
+ "@arcium-hq/client": "^0.9.2"
40
44
  },
41
45
  "devDependencies": {
46
+ "@types/node": "^20.0.0",
47
+ "@vitest/coverage-v8": "^2.0.0",
42
48
  "typescript": "^5.4.0",
43
- "@types/node": "^20.0.0"
49
+ "vitest": "^2.0.0"
44
50
  },
45
51
  "engines": {
46
52
  "node": ">=18.0.0"