@satori-sh/cli 0.0.3 → 0.0.5
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/bun.lock +195 -0
- package/dist/index.d.ts +92 -4
- package/dist/index.js +396 -42
- package/package.json +3 -3
- package/tsup.config.js +10 -0
- package/dist/add.d.ts +0 -2
- package/dist/add.d.ts.map +0 -1
- package/dist/add.js +0 -27
- package/dist/add.js.map +0 -1
- package/dist/config.d.ts +0 -3
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -15
- package/dist/config.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/memory.d.ts +0 -12
- package/dist/memory.d.ts.map +0 -1
- package/dist/memory.js +0 -42
- package/dist/memory.js.map +0 -1
- package/dist/search.d.ts +0 -2
- package/dist/search.d.ts.map +0 -1
- package/dist/search.js +0 -27
- package/dist/search.js.map +0 -1
- package/dist/src/add.d.ts +0 -23
- package/dist/src/add.d.ts.map +0 -1
- package/dist/src/add.js +0 -46
- package/dist/src/add.js.map +0 -1
- package/dist/src/config.d.ts +0 -39
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -165
- package/dist/src/config.js.map +0 -1
- package/dist/src/index.d.ts +0 -15
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -142
- package/dist/src/index.js.map +0 -1
- package/dist/src/memory.d.ts +0 -52
- package/dist/src/memory.d.ts.map +0 -1
- package/dist/src/memory.js +0 -98
- package/dist/src/memory.js.map +0 -1
- package/dist/src/providers.d.ts +0 -34
- package/dist/src/providers.d.ts.map +0 -1
- package/dist/src/providers.js +0 -107
- package/dist/src/providers.js.map +0 -1
- package/dist/src/search.d.ts +0 -14
- package/dist/src/search.d.ts.map +0 -1
- package/dist/src/search.js +0 -39
- package/dist/src/search.js.map +0 -1
- package/dist/src/types.d.ts +0 -51
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/types.js.map +0 -1
- package/dist/tests/index.test.d.ts +0 -2
- package/dist/tests/index.test.d.ts.map +0 -1
- package/dist/tests/index.test.js +0 -257
- package/dist/tests/index.test.js.map +0 -1
- package/dist/types.d.ts +0 -19
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
package/dist/src/providers.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Message } from './types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Options for LLM provider API calls.
|
|
4
|
-
*/
|
|
5
|
-
type ProviderOptions = {
|
|
6
|
-
/** Temperature for response randomness (0.0 to 1.0) */
|
|
7
|
-
temperature?: number;
|
|
8
|
-
/** Maximum tokens in the response */
|
|
9
|
-
maxTokens?: number;
|
|
10
|
-
/** Whether to enable streaming responses */
|
|
11
|
-
stream?: boolean;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Calls the specified LLM provider API with the given messages and options.
|
|
15
|
-
*
|
|
16
|
-
* @param {Message[]} messages - Array of messages for the conversation
|
|
17
|
-
* @param {ProviderOptions} options - API call options
|
|
18
|
-
* @param {'openai' | 'anthropic'} provider - The LLM provider to use
|
|
19
|
-
* @returns {Promise<string>} The assistant's response text
|
|
20
|
-
* @throws {Error} If the provider is unsupported or API keys are missing
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* const response = await _callProviderAPI(
|
|
25
|
-
* [{ role: 'user', content: 'Hello!' }],
|
|
26
|
-
* { temperature: 0.7, maxTokens: 100 },
|
|
27
|
-
* 'openai'
|
|
28
|
-
* );
|
|
29
|
-
* console.log(response);
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
export declare function _callProviderAPI(messages: Message[], options: ProviderOptions, provider: 'openai' | 'anthropic'): Promise<string>;
|
|
33
|
-
export {};
|
|
34
|
-
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC;;GAEG;AACH,KAAK,eAAe,GAAG;IACrB,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AA4FF;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAQvI"}
|
package/dist/src/providers.js
DELETED
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
import { getConfig } from './config.js';
|
|
2
|
-
/**
|
|
3
|
-
* Calls the OpenAI Chat Completions API.
|
|
4
|
-
*
|
|
5
|
-
* @private
|
|
6
|
-
* @param {Message[]} messages - Array of messages for the conversation
|
|
7
|
-
* @param {ProviderOptions} options - API call options
|
|
8
|
-
* @returns {Promise<string>} The assistant's response text
|
|
9
|
-
*/
|
|
10
|
-
async function _callOpenAI(messages, options) {
|
|
11
|
-
const config = await getConfig();
|
|
12
|
-
const apiKey = config.openaiKey;
|
|
13
|
-
if (!apiKey) {
|
|
14
|
-
throw new Error('Missing API key for OPENAI_API_KEY');
|
|
15
|
-
}
|
|
16
|
-
const url = 'https://api.openai.com/v1/chat/completions';
|
|
17
|
-
const body = {
|
|
18
|
-
model: config.model,
|
|
19
|
-
messages,
|
|
20
|
-
temperature: options.temperature ?? 0.7,
|
|
21
|
-
max_tokens: options.maxTokens ?? 1000,
|
|
22
|
-
stream: options.stream ?? false,
|
|
23
|
-
};
|
|
24
|
-
const headers = {
|
|
25
|
-
'Content-Type': 'application/json',
|
|
26
|
-
'Authorization': `Bearer ${apiKey}`,
|
|
27
|
-
};
|
|
28
|
-
const response = await fetch(url, {
|
|
29
|
-
method: 'POST',
|
|
30
|
-
headers,
|
|
31
|
-
body: JSON.stringify(body),
|
|
32
|
-
});
|
|
33
|
-
if (!response.ok) {
|
|
34
|
-
throw new Error(`OpenAI API error: ${response.status} ${response.statusText}`);
|
|
35
|
-
}
|
|
36
|
-
const data = await response.json();
|
|
37
|
-
return data.choices[0].message.content;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Calls the Anthropic Messages API.
|
|
41
|
-
*
|
|
42
|
-
* @private
|
|
43
|
-
* @param {Message[]} messages - Array of messages for the conversation
|
|
44
|
-
* @param {ProviderOptions} options - API call options
|
|
45
|
-
* @returns {Promise<string>} The assistant's response text
|
|
46
|
-
*/
|
|
47
|
-
async function _callAnthropic(messages, options) {
|
|
48
|
-
const config = await getConfig();
|
|
49
|
-
const apiKey = config.anthropicKey;
|
|
50
|
-
if (!apiKey) {
|
|
51
|
-
throw new Error('Missing API key for ANTHROPIC_API_KEY');
|
|
52
|
-
}
|
|
53
|
-
const url = 'https://api.anthropic.com/v1/messages';
|
|
54
|
-
const body = {
|
|
55
|
-
model: config.model,
|
|
56
|
-
messages,
|
|
57
|
-
temperature: options.temperature ?? 0.7,
|
|
58
|
-
max_tokens: options.maxTokens ?? 1000,
|
|
59
|
-
stream: options.stream ?? false,
|
|
60
|
-
};
|
|
61
|
-
const headers = {
|
|
62
|
-
'Content-Type': 'application/json',
|
|
63
|
-
'Authorization': `Bearer ${apiKey}`,
|
|
64
|
-
'anthropic-version': '2023-06-01',
|
|
65
|
-
};
|
|
66
|
-
const response = await fetch(url, {
|
|
67
|
-
method: 'POST',
|
|
68
|
-
headers,
|
|
69
|
-
body: JSON.stringify(body),
|
|
70
|
-
});
|
|
71
|
-
if (!response.ok) {
|
|
72
|
-
throw new Error(`Anthropic API error: ${response.status} ${response.statusText}`);
|
|
73
|
-
}
|
|
74
|
-
const data = await response.json();
|
|
75
|
-
return data.content[0].text;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Calls the specified LLM provider API with the given messages and options.
|
|
79
|
-
*
|
|
80
|
-
* @param {Message[]} messages - Array of messages for the conversation
|
|
81
|
-
* @param {ProviderOptions} options - API call options
|
|
82
|
-
* @param {'openai' | 'anthropic'} provider - The LLM provider to use
|
|
83
|
-
* @returns {Promise<string>} The assistant's response text
|
|
84
|
-
* @throws {Error} If the provider is unsupported or API keys are missing
|
|
85
|
-
*
|
|
86
|
-
* @example
|
|
87
|
-
* ```typescript
|
|
88
|
-
* const response = await _callProviderAPI(
|
|
89
|
-
* [{ role: 'user', content: 'Hello!' }],
|
|
90
|
-
* { temperature: 0.7, maxTokens: 100 },
|
|
91
|
-
* 'openai'
|
|
92
|
-
* );
|
|
93
|
-
* console.log(response);
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
export async function _callProviderAPI(messages, options, provider) {
|
|
97
|
-
if (provider === 'openai') {
|
|
98
|
-
return _callOpenAI(messages, options);
|
|
99
|
-
}
|
|
100
|
-
else if (provider === 'anthropic') {
|
|
101
|
-
return _callAnthropic(messages, options);
|
|
102
|
-
}
|
|
103
|
-
else {
|
|
104
|
-
throw new Error(`Unsupported provider: ${provider}`);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=providers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/src/search.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Searches for memories matching the given query.
|
|
3
|
-
*
|
|
4
|
-
* @param {string} query - The search query for memories
|
|
5
|
-
* @returns {Promise<void>} Logs the search results to console
|
|
6
|
-
* @throws {Error} If the query is empty or API call fails
|
|
7
|
-
*
|
|
8
|
-
* @example
|
|
9
|
-
* ```bash
|
|
10
|
-
* satori "what is my favorite food?"
|
|
11
|
-
* ```
|
|
12
|
-
*/
|
|
13
|
-
export declare function searchMemories(query: string): Promise<void>;
|
|
14
|
-
//# sourceMappingURL=search.d.ts.map
|
package/dist/src/search.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/search.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BjE"}
|
package/dist/src/search.js
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { getConfig } from './config.js';
|
|
2
|
-
/**
|
|
3
|
-
* Searches for memories matching the given query.
|
|
4
|
-
*
|
|
5
|
-
* @param {string} query - The search query for memories
|
|
6
|
-
* @returns {Promise<void>} Logs the search results to console
|
|
7
|
-
* @throws {Error} If the query is empty or API call fails
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```bash
|
|
11
|
-
* satori "what is my favorite food?"
|
|
12
|
-
* ```
|
|
13
|
-
*/
|
|
14
|
-
export async function searchMemories(query) {
|
|
15
|
-
if (!query || !query.trim()) {
|
|
16
|
-
console.error('Query cannot be empty');
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
try {
|
|
20
|
-
const config = await getConfig();
|
|
21
|
-
const response = await fetch(`${config.baseUrl}/search`, {
|
|
22
|
-
method: 'POST',
|
|
23
|
-
headers: {
|
|
24
|
-
'Content-Type': 'application/json',
|
|
25
|
-
'Authorization': `Bearer ${config.apiKey}`
|
|
26
|
-
},
|
|
27
|
-
body: JSON.stringify({ query })
|
|
28
|
-
});
|
|
29
|
-
if (!response.ok) {
|
|
30
|
-
console.error(`HTTP error: ${response.status} ${response.statusText}`);
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
await response.json();
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
console.error(`Error searching memories: ${error instanceof Error ? error.message : error}`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
//# sourceMappingURL=search.js.map
|
package/dist/src/search.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa;IAChD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,SAAS,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE;aAC3C;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAChC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACvE,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,CAAC,IAAI,EAAoB,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC"}
|
package/dist/src/types.d.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration object for the Satori CLI.
|
|
3
|
-
*/
|
|
4
|
-
export interface Config {
|
|
5
|
-
/** API key for Satori authentication */
|
|
6
|
-
apiKey: string | null;
|
|
7
|
-
/** Base URL for the Satori memory server */
|
|
8
|
-
baseUrl: string;
|
|
9
|
-
/** Default LLM provider ('openai' or 'anthropic') */
|
|
10
|
-
provider: string;
|
|
11
|
-
/** Default LLM model name */
|
|
12
|
-
model: string;
|
|
13
|
-
/** OpenAI API key (required if using OpenAI provider) */
|
|
14
|
-
openaiKey?: string;
|
|
15
|
-
/** Anthropic API key (required if using Anthropic provider) */
|
|
16
|
-
anthropicKey?: string;
|
|
17
|
-
/** Memory ID for scoping conversations */
|
|
18
|
-
memoryId?: string;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Response from the memory search API.
|
|
22
|
-
*/
|
|
23
|
-
export interface SearchResponse {
|
|
24
|
-
/** Array of search results */
|
|
25
|
-
results: Array<{
|
|
26
|
-
id: string;
|
|
27
|
-
memory: string;
|
|
28
|
-
score?: number;
|
|
29
|
-
}>;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Response from the memory add API.
|
|
33
|
-
*/
|
|
34
|
-
export interface AddResponse {
|
|
35
|
-
/** Array of add operation results */
|
|
36
|
-
results: Array<{
|
|
37
|
-
id: string;
|
|
38
|
-
memory: string;
|
|
39
|
-
event: string;
|
|
40
|
-
}>;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Message format for LLM API calls.
|
|
44
|
-
*/
|
|
45
|
-
export type Message = {
|
|
46
|
-
/** Role of the message sender */
|
|
47
|
-
role: 'user' | 'assistant' | 'system';
|
|
48
|
-
/** Content of the message */
|
|
49
|
-
content: string;
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,MAAM;IACpB,wCAAwC;IACxC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,8BAA8B;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,iCAAiC;IACjC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
|
package/dist/src/types.js
DELETED
package/dist/src/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../tests/index.test.ts"],"names":[],"mappings":""}
|
package/dist/tests/index.test.js
DELETED
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
import { test, expect, mock, beforeEach, afterEach } from 'bun:test';
|
|
2
|
-
import { main, searchMemories, addMemories, enhanceMessagesWithMemory } from '../src/index';
|
|
3
|
-
import { getConfig, checkWriteAccess, saveApiKey } from '../src/config.js';
|
|
4
|
-
let originalFetch;
|
|
5
|
-
let originalEnv;
|
|
6
|
-
let originalArgv;
|
|
7
|
-
let originalPlatform;
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
originalFetch = global.fetch;
|
|
10
|
-
originalEnv = { ...process.env };
|
|
11
|
-
originalArgv = [...process.argv];
|
|
12
|
-
originalPlatform = process.platform;
|
|
13
|
-
});
|
|
14
|
-
afterEach(() => {
|
|
15
|
-
global.fetch = originalFetch;
|
|
16
|
-
process.env = originalEnv;
|
|
17
|
-
process.argv = originalArgv;
|
|
18
|
-
process.platform = originalPlatform;
|
|
19
|
-
});
|
|
20
|
-
test('error handling for invalid base URL', async () => {
|
|
21
|
-
process.env.SATORI_BASE_URL = 'invalid-url';
|
|
22
|
-
process.argv = ['node', 'index.js', 'query'];
|
|
23
|
-
const errorSpy = mock(() => { });
|
|
24
|
-
console.error = errorSpy;
|
|
25
|
-
const exitSpy = mock(() => { throw new Error('exit'); });
|
|
26
|
-
process.exit = exitSpy;
|
|
27
|
-
try {
|
|
28
|
-
await main();
|
|
29
|
-
expect(true).toBe(false); // should not reach
|
|
30
|
-
}
|
|
31
|
-
catch (e) {
|
|
32
|
-
expect(e.message).toBe('exit');
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
test('error handling for invalid base URL', async () => {
|
|
36
|
-
process.env.SATORI_API_KEY = 'test-key';
|
|
37
|
-
process.env.SATORI_BASE_URL = 'invalid-url';
|
|
38
|
-
process.argv = ['node', 'index.js', 'query'];
|
|
39
|
-
const errorSpy = mock(() => { });
|
|
40
|
-
console.error = errorSpy;
|
|
41
|
-
const exitSpy = mock(() => { throw new Error('exit'); });
|
|
42
|
-
process.exit = exitSpy;
|
|
43
|
-
try {
|
|
44
|
-
await main();
|
|
45
|
-
expect(true).toBe(false); // should not reach
|
|
46
|
-
}
|
|
47
|
-
catch (e) {
|
|
48
|
-
expect(e.message).toBe('exit');
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
test('search with empty query', async () => {
|
|
52
|
-
process.env.SATORI_API_KEY = 'satori-erQCxG3GYryoXt4JydgEsbRmg5LuJf6p';
|
|
53
|
-
const errorSpy = mock(() => { });
|
|
54
|
-
console.error = errorSpy;
|
|
55
|
-
await searchMemories('');
|
|
56
|
-
expect(errorSpy).toHaveBeenCalledWith('Query cannot be empty');
|
|
57
|
-
});
|
|
58
|
-
test('add with empty text', async () => {
|
|
59
|
-
process.env.SATORI_API_KEY = 'satori-erQCxG3GYryoXt4JydgEsbRmg5LuJf6p';
|
|
60
|
-
const errorSpy = mock(() => { });
|
|
61
|
-
console.error = errorSpy;
|
|
62
|
-
await addMemories('');
|
|
63
|
-
expect(errorSpy).toHaveBeenCalledWith('Text cannot be empty');
|
|
64
|
-
});
|
|
65
|
-
test('HTTP 401 error', async () => {
|
|
66
|
-
process.env.SATORI_API_KEY = 'test-key';
|
|
67
|
-
const fetchMock = Object.assign(mock(() => Promise.resolve(new Response('Unauthorized', { status: 401, statusText: 'Unauthorized' }))), { preconnect: mock(() => { }) });
|
|
68
|
-
globalThis.fetch = fetchMock;
|
|
69
|
-
const errorSpy = mock(() => { });
|
|
70
|
-
console.error = errorSpy;
|
|
71
|
-
await searchMemories('test');
|
|
72
|
-
expect(errorSpy).toHaveBeenCalledWith('HTTP error: 401 Unauthorized');
|
|
73
|
-
});
|
|
74
|
-
test('HTTP 500 error', async () => {
|
|
75
|
-
process.env.SATORI_API_KEY = 'test-key';
|
|
76
|
-
const fetchMock = Object.assign(mock(() => Promise.resolve(new Response('Internal Server Error', { status: 500, statusText: 'Internal Server Error' }))), { preconnect: mock(() => { }) });
|
|
77
|
-
globalThis.fetch = fetchMock;
|
|
78
|
-
const errorSpy = mock(() => { });
|
|
79
|
-
console.error = errorSpy;
|
|
80
|
-
await searchMemories('test');
|
|
81
|
-
expect(errorSpy).toHaveBeenCalledWith('HTTP error: 500 Internal Server Error');
|
|
82
|
-
});
|
|
83
|
-
test('network error', async () => {
|
|
84
|
-
process.env.SATORI_API_KEY = 'test-key';
|
|
85
|
-
const fetchMock = Object.assign(mock(() => { throw new Error('network error'); }), { preconnect: mock(() => { }) });
|
|
86
|
-
globalThis.fetch = fetchMock;
|
|
87
|
-
const errorSpy = mock(() => { });
|
|
88
|
-
console.error = errorSpy;
|
|
89
|
-
await searchMemories('test');
|
|
90
|
-
expect(errorSpy).toHaveBeenCalledWith('Error searching memories: network error');
|
|
91
|
-
});
|
|
92
|
-
test('malformed JSON response', async () => {
|
|
93
|
-
process.env.SATORI_API_KEY = 'test-key';
|
|
94
|
-
const fetchMock = Object.assign(mock(() => Promise.resolve(new Response('invalid json', { status: 200 }))), { preconnect: mock(() => { }) });
|
|
95
|
-
globalThis.fetch = fetchMock;
|
|
96
|
-
const errorSpy = mock(() => { });
|
|
97
|
-
console.error = errorSpy;
|
|
98
|
-
await searchMemories('test');
|
|
99
|
-
expect(errorSpy).toHaveBeenCalledWith(expect.stringContaining('Error searching memories:'));
|
|
100
|
-
});
|
|
101
|
-
test('enhanceMessagesWithMemory adds context', () => {
|
|
102
|
-
const messages = [{ role: 'user', content: 'hello' }];
|
|
103
|
-
const memoryContext = { results: [{ id: '1', memory: 'test memory' }] };
|
|
104
|
-
const enhanced = enhanceMessagesWithMemory(messages, memoryContext);
|
|
105
|
-
expect(enhanced).toHaveLength(2);
|
|
106
|
-
expect(enhanced[0].role).toBe('system');
|
|
107
|
-
expect(enhanced[0].content).toContain('Relevant context from memory:\ntest memory');
|
|
108
|
-
expect(enhanced[1]).toEqual(messages[0]);
|
|
109
|
-
});
|
|
110
|
-
test('enhanceMessagesWithMemory handles empty memories', () => {
|
|
111
|
-
const messages = [{ role: 'user', content: 'hello' }];
|
|
112
|
-
const memoryContext = { results: [] };
|
|
113
|
-
const enhanced = enhanceMessagesWithMemory(messages, memoryContext);
|
|
114
|
-
expect(enhanced).toEqual(messages);
|
|
115
|
-
});
|
|
116
|
-
test('getConfig throws on invalid base URL', async () => {
|
|
117
|
-
process.env.SATORI_BASE_URL = 'invalid-url';
|
|
118
|
-
try {
|
|
119
|
-
await getConfig();
|
|
120
|
-
expect(true).toBe(false); // should throw
|
|
121
|
-
}
|
|
122
|
-
catch (error) {
|
|
123
|
-
expect(error.message).toBe('Invalid SATORI_BASE_URL format');
|
|
124
|
-
}
|
|
125
|
-
finally {
|
|
126
|
-
delete process.env.SATORI_BASE_URL;
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
test('getConfig throws on non-darwin platform', async () => {
|
|
130
|
-
process.platform = 'win32';
|
|
131
|
-
try {
|
|
132
|
-
await getConfig();
|
|
133
|
-
expect(true).toBe(false); // should throw
|
|
134
|
-
}
|
|
135
|
-
catch (error) {
|
|
136
|
-
expect(error.message).toBe('We do not currently support Windows yet, email support@satori.sh to request Windows support');
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
test('getConfig generates apiKey on successful fetch', async () => {
|
|
140
|
-
delete process.env.SATORI_API_KEY;
|
|
141
|
-
const fetchMock = Object.assign(mock(() => Promise.resolve(new Response(JSON.stringify({ api_key: 'generated-key' }), { status: 200 }))), { preconnect: mock(() => { }) });
|
|
142
|
-
globalThis.fetch = fetchMock;
|
|
143
|
-
const config = await getConfig();
|
|
144
|
-
expect(config.apiKey).toBe('generated-key');
|
|
145
|
-
globalThis.fetch = originalFetch;
|
|
146
|
-
});
|
|
147
|
-
test('getConfig throws on network error during generation', async () => {
|
|
148
|
-
delete process.env.SATORI_API_KEY;
|
|
149
|
-
mock.module('node:fs', () => ({
|
|
150
|
-
promises: {
|
|
151
|
-
mkdir: mock(() => Promise.resolve()),
|
|
152
|
-
writeFile: mock(() => Promise.resolve()),
|
|
153
|
-
unlink: mock(() => Promise.resolve())
|
|
154
|
-
}
|
|
155
|
-
}));
|
|
156
|
-
const mockFile = {
|
|
157
|
-
exists: mock(() => Promise.resolve(false))
|
|
158
|
-
};
|
|
159
|
-
const originalBun = globalThis.Bun;
|
|
160
|
-
globalThis.Bun = { file: mock(() => mockFile) };
|
|
161
|
-
const fetchMock = Object.assign(mock(() => Promise.reject(new Error('network error'))), { preconnect: mock(() => { }) });
|
|
162
|
-
globalThis.fetch = fetchMock;
|
|
163
|
-
try {
|
|
164
|
-
await getConfig();
|
|
165
|
-
expect(true).toBe(false); // should throw
|
|
166
|
-
}
|
|
167
|
-
catch (error) {
|
|
168
|
-
expect(error.message).toBe('Failed to generate API key: network error');
|
|
169
|
-
}
|
|
170
|
-
globalThis.fetch = originalFetch;
|
|
171
|
-
globalThis.Bun = originalBun;
|
|
172
|
-
});
|
|
173
|
-
test('getConfig throws on invalid response during generation', async () => {
|
|
174
|
-
delete process.env.SATORI_API_KEY;
|
|
175
|
-
mock.module('node:fs', () => ({
|
|
176
|
-
promises: {
|
|
177
|
-
mkdir: mock(() => Promise.resolve()),
|
|
178
|
-
writeFile: mock(() => Promise.resolve()),
|
|
179
|
-
unlink: mock(() => Promise.resolve())
|
|
180
|
-
}
|
|
181
|
-
}));
|
|
182
|
-
const mockFile = {
|
|
183
|
-
exists: mock(() => Promise.resolve(false))
|
|
184
|
-
};
|
|
185
|
-
const originalBun = globalThis.Bun;
|
|
186
|
-
globalThis.Bun = { file: mock(() => mockFile) };
|
|
187
|
-
const fetchMock = Object.assign(mock(() => Promise.resolve(new Response(JSON.stringify({}), { status: 200 }))), { preconnect: mock(() => { }) });
|
|
188
|
-
globalThis.fetch = fetchMock;
|
|
189
|
-
try {
|
|
190
|
-
await getConfig();
|
|
191
|
-
expect(true).toBe(false); // should throw
|
|
192
|
-
}
|
|
193
|
-
catch (error) {
|
|
194
|
-
expect(error.message).toBe('Failed to generate API key: Invalid response: missing api_key');
|
|
195
|
-
}
|
|
196
|
-
globalThis.fetch = originalFetch;
|
|
197
|
-
globalThis.Bun = originalBun;
|
|
198
|
-
});
|
|
199
|
-
test('checkWriteAccess succeeds on successful write', async () => {
|
|
200
|
-
mock.module('node:fs', () => ({
|
|
201
|
-
promises: {
|
|
202
|
-
mkdir: mock(() => Promise.resolve()),
|
|
203
|
-
writeFile: mock(() => Promise.resolve()),
|
|
204
|
-
unlink: mock(() => Promise.resolve())
|
|
205
|
-
}
|
|
206
|
-
}));
|
|
207
|
-
await checkWriteAccess();
|
|
208
|
-
// No throw means success
|
|
209
|
-
});
|
|
210
|
-
test('checkWriteAccess throws on permission denied', async () => {
|
|
211
|
-
mock.module('node:fs', () => ({
|
|
212
|
-
promises: {
|
|
213
|
-
mkdir: mock(() => Promise.resolve()),
|
|
214
|
-
writeFile: mock(() => { throw new Error('EACCES: permission denied'); }),
|
|
215
|
-
unlink: mock(() => Promise.resolve())
|
|
216
|
-
}
|
|
217
|
-
}));
|
|
218
|
-
try {
|
|
219
|
-
await checkWriteAccess();
|
|
220
|
-
expect(true).toBe(false); // should throw
|
|
221
|
-
}
|
|
222
|
-
catch (error) {
|
|
223
|
-
expect(error.message).toBe('Cannot write to config directory: EACCES: permission denied');
|
|
224
|
-
}
|
|
225
|
-
});
|
|
226
|
-
test('saveApiKey saves successfully', async () => {
|
|
227
|
-
const mockWriteFile = mock(() => Promise.resolve());
|
|
228
|
-
mock.module('node:fs', () => ({
|
|
229
|
-
promises: {
|
|
230
|
-
mkdir: mock(() => Promise.resolve()),
|
|
231
|
-
writeFile: mockWriteFile,
|
|
232
|
-
unlink: mock(() => Promise.resolve())
|
|
233
|
-
}
|
|
234
|
-
}));
|
|
235
|
-
await saveApiKey('test-key');
|
|
236
|
-
expect(mockWriteFile).toHaveBeenCalledWith(expect.stringContaining('satori.json'), JSON.stringify({ api_key: 'test-key' }, null, 2));
|
|
237
|
-
});
|
|
238
|
-
test('saveApiKey throws on write error', async () => {
|
|
239
|
-
const mockWriteFile = mock(() => { throw new Error('write error'); });
|
|
240
|
-
mock.module('node:fs', () => ({
|
|
241
|
-
promises: {
|
|
242
|
-
mkdir: mock(() => Promise.resolve()),
|
|
243
|
-
writeFile: mockWriteFile,
|
|
244
|
-
unlink: mock(() => Promise.resolve())
|
|
245
|
-
}
|
|
246
|
-
}));
|
|
247
|
-
try {
|
|
248
|
-
await saveApiKey('test-key');
|
|
249
|
-
expect(true).toBe(false); // should throw
|
|
250
|
-
}
|
|
251
|
-
catch (error) {
|
|
252
|
-
expect(error.message).toBe('Cannot write to config directory: write error');
|
|
253
|
-
}
|
|
254
|
-
});
|
|
255
|
-
// Note: Additional unit tests for file reading scenarios would require mocking Bun.file,
|
|
256
|
-
// which is readonly. The existing test covers the missing file case.
|
|
257
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../tests/index.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export interface Config {
|
|
2
|
-
apiKey: string;
|
|
3
|
-
baseUrl: string;
|
|
4
|
-
}
|
|
5
|
-
export interface SearchResponse {
|
|
6
|
-
results: Array<{
|
|
7
|
-
id: string;
|
|
8
|
-
memory: string;
|
|
9
|
-
score?: number;
|
|
10
|
-
}>;
|
|
11
|
-
}
|
|
12
|
-
export interface AddResponse {
|
|
13
|
-
results: Array<{
|
|
14
|
-
id: string;
|
|
15
|
-
memory: string;
|
|
16
|
-
event: string;
|
|
17
|
-
}>;
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|