@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.
Files changed (59) hide show
  1. package/bun.lock +195 -0
  2. package/dist/index.d.ts +92 -4
  3. package/dist/index.js +396 -42
  4. package/package.json +3 -3
  5. package/tsup.config.js +10 -0
  6. package/dist/add.d.ts +0 -2
  7. package/dist/add.d.ts.map +0 -1
  8. package/dist/add.js +0 -27
  9. package/dist/add.js.map +0 -1
  10. package/dist/config.d.ts +0 -3
  11. package/dist/config.d.ts.map +0 -1
  12. package/dist/config.js +0 -15
  13. package/dist/config.js.map +0 -1
  14. package/dist/index.d.ts.map +0 -1
  15. package/dist/index.js.map +0 -1
  16. package/dist/memory.d.ts +0 -12
  17. package/dist/memory.d.ts.map +0 -1
  18. package/dist/memory.js +0 -42
  19. package/dist/memory.js.map +0 -1
  20. package/dist/search.d.ts +0 -2
  21. package/dist/search.d.ts.map +0 -1
  22. package/dist/search.js +0 -27
  23. package/dist/search.js.map +0 -1
  24. package/dist/src/add.d.ts +0 -23
  25. package/dist/src/add.d.ts.map +0 -1
  26. package/dist/src/add.js +0 -46
  27. package/dist/src/add.js.map +0 -1
  28. package/dist/src/config.d.ts +0 -39
  29. package/dist/src/config.d.ts.map +0 -1
  30. package/dist/src/config.js +0 -165
  31. package/dist/src/config.js.map +0 -1
  32. package/dist/src/index.d.ts +0 -15
  33. package/dist/src/index.d.ts.map +0 -1
  34. package/dist/src/index.js +0 -142
  35. package/dist/src/index.js.map +0 -1
  36. package/dist/src/memory.d.ts +0 -52
  37. package/dist/src/memory.d.ts.map +0 -1
  38. package/dist/src/memory.js +0 -98
  39. package/dist/src/memory.js.map +0 -1
  40. package/dist/src/providers.d.ts +0 -34
  41. package/dist/src/providers.d.ts.map +0 -1
  42. package/dist/src/providers.js +0 -107
  43. package/dist/src/providers.js.map +0 -1
  44. package/dist/src/search.d.ts +0 -14
  45. package/dist/src/search.d.ts.map +0 -1
  46. package/dist/src/search.js +0 -39
  47. package/dist/src/search.js.map +0 -1
  48. package/dist/src/types.d.ts +0 -51
  49. package/dist/src/types.d.ts.map +0 -1
  50. package/dist/src/types.js +0 -2
  51. package/dist/src/types.js.map +0 -1
  52. package/dist/tests/index.test.d.ts +0 -2
  53. package/dist/tests/index.test.d.ts.map +0 -1
  54. package/dist/tests/index.test.js +0 -257
  55. package/dist/tests/index.test.js.map +0 -1
  56. package/dist/types.d.ts +0 -19
  57. package/dist/types.d.ts.map +0 -1
  58. package/dist/types.js +0 -2
  59. package/dist/types.js.map +0 -1
@@ -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"}
@@ -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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAexC;;;;;;;GAOG;AACH,KAAK,UAAU,WAAW,CAAC,QAAmB,EAAE,OAAwB;IACtE,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAChC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,GAAG,GAAG,4CAA4C,CAAC;IACzD,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;QACvC,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACrC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;KAChC,CAAC;IAEF,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,eAAe,EAAE,UAAU,MAAM,EAAE;KACpC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;AACzC,CAAC;AAGD;;;;;;;GAOG;AACH,KAAK,UAAU,cAAc,CAAC,QAAmB,EAAE,OAAwB;IACzE,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IAEjC,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,GAAG,GAAG,uCAAuC,CAAC;IACpD,MAAM,IAAI,GAAG;QACX,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;QACvC,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACrC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;KAChC,CAAC;IAEF,MAAM,OAAO,GAA2B;QACtC,cAAc,EAAE,kBAAkB;QAClC,eAAe,EAAE,UAAU,MAAM,EAAE;QACnC,mBAAmB,EAAE,YAAY;KAClC,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9B,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,QAAmB,EAAE,OAAwB,EAAE,QAAgC;IACpH,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
@@ -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
@@ -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"}
@@ -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
@@ -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"}
@@ -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
@@ -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
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../tests/index.test.ts"],"names":[],"mappings":""}
@@ -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
@@ -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
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}