vegas-chat 2.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/LICENSE +21 -0
- package/dist/autocomplete.d.ts +11 -0
- package/dist/autocomplete.d.ts.map +1 -0
- package/dist/autocomplete.js +215 -0
- package/dist/autocomplete.js.map +1 -0
- package/dist/coding/analyzer.d.ts +14 -0
- package/dist/coding/analyzer.d.ts.map +1 -0
- package/dist/coding/analyzer.js +245 -0
- package/dist/coding/analyzer.js.map +1 -0
- package/dist/coding/linter.d.ts +15 -0
- package/dist/coding/linter.d.ts.map +1 -0
- package/dist/coding/linter.js +118 -0
- package/dist/coding/linter.js.map +1 -0
- package/dist/coding/refactor.d.ts +14 -0
- package/dist/coding/refactor.d.ts.map +1 -0
- package/dist/coding/refactor.js +158 -0
- package/dist/coding/refactor.js.map +1 -0
- package/dist/coding/tester.d.ts +16 -0
- package/dist/coding/tester.d.ts.map +1 -0
- package/dist/coding/tester.js +118 -0
- package/dist/coding/tester.js.map +1 -0
- package/dist/commands/apikey.d.ts +4 -0
- package/dist/commands/apikey.d.ts.map +1 -0
- package/dist/commands/apikey.js +48 -0
- package/dist/commands/apikey.js.map +1 -0
- package/dist/commands/clear.d.ts +3 -0
- package/dist/commands/clear.d.ts.map +1 -0
- package/dist/commands/clear.js +11 -0
- package/dist/commands/clear.js.map +1 -0
- package/dist/commands/coding.d.ts +3 -0
- package/dist/commands/coding.d.ts.map +1 -0
- package/dist/commands/coding.js +106 -0
- package/dist/commands/coding.js.map +1 -0
- package/dist/commands/config.d.ts +4 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +56 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/exit.d.ts +3 -0
- package/dist/commands/exit.d.ts.map +1 -0
- package/dist/commands/exit.js +10 -0
- package/dist/commands/exit.js.map +1 -0
- package/dist/commands/help.d.ts +3 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +46 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +52 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/model.d.ts +4 -0
- package/dist/commands/model.d.ts.map +1 -0
- package/dist/commands/model.js +36 -0
- package/dist/commands/model.js.map +1 -0
- package/dist/commands/models.d.ts +4 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +123 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/provider.d.ts +4 -0
- package/dist/commands/provider.d.ts.map +1 -0
- package/dist/commands/provider.js +118 -0
- package/dist/commands/provider.js.map +1 -0
- package/dist/commands/session.d.ts +5 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +255 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +69 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/tools.d.ts +4 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +59 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/version.d.ts +4 -0
- package/dist/commands/version.d.ts.map +1 -0
- package/dist/commands/version.js +17 -0
- package/dist/commands/version.js.map +1 -0
- package/dist/config.d.ts +21 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +110 -0
- package/dist/config.js.map +1 -0
- package/dist/database.d.ts +59 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +212 -0
- package/dist/database.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/loop/autoFix.d.ts +12 -0
- package/dist/loop/autoFix.d.ts.map +1 -0
- package/dist/loop/autoFix.js +42 -0
- package/dist/loop/autoFix.js.map +1 -0
- package/dist/modelCache.d.ts +3 -0
- package/dist/modelCache.d.ts.map +1 -0
- package/dist/modelCache.js +10 -0
- package/dist/modelCache.js.map +1 -0
- package/dist/provider/anthropic.d.ts +10 -0
- package/dist/provider/anthropic.d.ts.map +1 -0
- package/dist/provider/anthropic.js +106 -0
- package/dist/provider/anthropic.js.map +1 -0
- package/dist/provider/google.d.ts +11 -0
- package/dist/provider/google.d.ts.map +1 -0
- package/dist/provider/google.js +113 -0
- package/dist/provider/google.js.map +1 -0
- package/dist/provider/interface.d.ts +3 -0
- package/dist/provider/interface.d.ts.map +1 -0
- package/dist/provider/interface.js +2 -0
- package/dist/provider/interface.js.map +1 -0
- package/dist/provider/openai-compatible.d.ts +10 -0
- package/dist/provider/openai-compatible.d.ts.map +1 -0
- package/dist/provider/openai-compatible.js +90 -0
- package/dist/provider/openai-compatible.js.map +1 -0
- package/dist/provider/registry.d.ts +9 -0
- package/dist/provider/registry.d.ts.map +1 -0
- package/dist/provider/registry.js +118 -0
- package/dist/provider/registry.js.map +1 -0
- package/dist/provider/zen.d.ts +11 -0
- package/dist/provider/zen.d.ts.map +1 -0
- package/dist/provider/zen.js +120 -0
- package/dist/provider/zen.js.map +1 -0
- package/dist/repl.d.ts +23 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +387 -0
- package/dist/repl.js.map +1 -0
- package/dist/skills/loader.d.ts +14 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +109 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/matcher.d.ts +11 -0
- package/dist/skills/matcher.d.ts.map +1 -0
- package/dist/skills/matcher.js +51 -0
- package/dist/skills/matcher.js.map +1 -0
- package/dist/tools/bash.d.ts +3 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +59 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/edit.d.ts +3 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +75 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools/glob.d.ts +3 -0
- package/dist/tools/glob.d.ts.map +1 -0
- package/dist/tools/glob.js +93 -0
- package/dist/tools/glob.js.map +1 -0
- package/dist/tools/grep.d.ts +3 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +119 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/read.d.ts +3 -0
- package/dist/tools/read.d.ts.map +1 -0
- package/dist/tools/read.js +52 -0
- package/dist/tools/read.js.map +1 -0
- package/dist/tools/registry.d.ts +6 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +48 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/webFetch.d.ts +3 -0
- package/dist/tools/webFetch.d.ts.map +1 -0
- package/dist/tools/webFetch.js +57 -0
- package/dist/tools/webFetch.js.map +1 -0
- package/dist/tools/webSearch.d.ts +5 -0
- package/dist/tools/webSearch.d.ts.map +1 -0
- package/dist/tools/webSearch.js +107 -0
- package/dist/tools/webSearch.js.map +1 -0
- package/dist/tools/write.d.ts +3 -0
- package/dist/tools/write.d.ts.map +1 -0
- package/dist/tools/write.js +41 -0
- package/dist/tools/write.js.map +1 -0
- package/dist/types.d.ts +74 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/ui.d.ts +179 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +481 -0
- package/dist/ui.js.map +1 -0
- package/package.json +52 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
const VERSION = "2.0.0";
|
|
5
|
+
function getConfigDir() {
|
|
6
|
+
return join(homedir(), ".vegas");
|
|
7
|
+
}
|
|
8
|
+
function getConfigPath() {
|
|
9
|
+
return join(getConfigDir(), "config.json");
|
|
10
|
+
}
|
|
11
|
+
function defaultConfig() {
|
|
12
|
+
return {
|
|
13
|
+
provider: "openai",
|
|
14
|
+
apiKeys: {},
|
|
15
|
+
model: "gpt-4o",
|
|
16
|
+
customProviders: {},
|
|
17
|
+
tools: {
|
|
18
|
+
bash: { enabled: true, timeout: 120000 },
|
|
19
|
+
read: { enabled: true },
|
|
20
|
+
write: { enabled: true },
|
|
21
|
+
edit: { enabled: true },
|
|
22
|
+
glob: { enabled: true },
|
|
23
|
+
grep: { enabled: true },
|
|
24
|
+
webFetch: { enabled: false },
|
|
25
|
+
webSearch: { enabled: false, provider: "serper", apiKey: "" },
|
|
26
|
+
},
|
|
27
|
+
loop: { maxRetries: 5, autoFix: true },
|
|
28
|
+
webSearch: { provider: "serper", apiKey: "" },
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export class ConfigManager {
|
|
32
|
+
config;
|
|
33
|
+
dir;
|
|
34
|
+
path;
|
|
35
|
+
constructor() {
|
|
36
|
+
this.dir = getConfigDir();
|
|
37
|
+
this.path = getConfigPath();
|
|
38
|
+
this.config = this.load();
|
|
39
|
+
}
|
|
40
|
+
load() {
|
|
41
|
+
try {
|
|
42
|
+
if (existsSync(this.path)) {
|
|
43
|
+
const raw = readFileSync(this.path, "utf-8");
|
|
44
|
+
return { ...defaultConfig(), ...JSON.parse(raw) };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
console.error("Config corrupt, using defaults");
|
|
49
|
+
}
|
|
50
|
+
return defaultConfig();
|
|
51
|
+
}
|
|
52
|
+
save() {
|
|
53
|
+
try {
|
|
54
|
+
if (!existsSync(this.dir)) {
|
|
55
|
+
mkdirSync(this.dir, { recursive: true });
|
|
56
|
+
}
|
|
57
|
+
writeFileSync(this.path, JSON.stringify(this.config, null, 2), "utf-8");
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
console.error("Failed to save config:", err);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
get() {
|
|
64
|
+
return this.config;
|
|
65
|
+
}
|
|
66
|
+
getProvider() {
|
|
67
|
+
return this.config.provider;
|
|
68
|
+
}
|
|
69
|
+
getModel() {
|
|
70
|
+
return this.config.model;
|
|
71
|
+
}
|
|
72
|
+
getApiKey(provider) {
|
|
73
|
+
return this.config.apiKeys[provider] || this.config.customProviders[provider]?.apiKey;
|
|
74
|
+
}
|
|
75
|
+
setApiKey(provider, key) {
|
|
76
|
+
this.config.apiKeys[provider] = key;
|
|
77
|
+
this.save();
|
|
78
|
+
}
|
|
79
|
+
setProvider(name) {
|
|
80
|
+
this.config.provider = name;
|
|
81
|
+
this.save();
|
|
82
|
+
}
|
|
83
|
+
setModel(name) {
|
|
84
|
+
this.config.model = name;
|
|
85
|
+
this.save();
|
|
86
|
+
}
|
|
87
|
+
setToolConfig(name, key, value) {
|
|
88
|
+
if (!this.config.tools[name]) {
|
|
89
|
+
this.config.tools[name] = { enabled: true };
|
|
90
|
+
}
|
|
91
|
+
this.config.tools[name][key] = value;
|
|
92
|
+
this.save();
|
|
93
|
+
}
|
|
94
|
+
addCustomProvider(name, baseUrl, type = "openai-compatible") {
|
|
95
|
+
this.config.customProviders[name] = { baseUrl, type };
|
|
96
|
+
this.save();
|
|
97
|
+
}
|
|
98
|
+
removeCustomProvider(name) {
|
|
99
|
+
if (this.config.customProviders[name]) {
|
|
100
|
+
delete this.config.customProviders[name];
|
|
101
|
+
this.save();
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
getVersion() {
|
|
107
|
+
return VERSION;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export declare function createSession(id: string, name?: string): boolean;
|
|
2
|
+
export declare function listSessions(): Array<{
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
created_at: string;
|
|
6
|
+
message_count: number;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function getSession(id: string): {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
created_at: string;
|
|
12
|
+
message_count: number;
|
|
13
|
+
} | undefined;
|
|
14
|
+
export declare function deleteSession(id: string): boolean;
|
|
15
|
+
export declare function renameSession(id: string, name: string): boolean;
|
|
16
|
+
export declare function saveMessages(sessionId: string, messages: Array<{
|
|
17
|
+
role: string;
|
|
18
|
+
content?: string;
|
|
19
|
+
tool_calls?: unknown[];
|
|
20
|
+
tool_call_id?: string;
|
|
21
|
+
name?: string;
|
|
22
|
+
}>): boolean;
|
|
23
|
+
export declare function loadMessages(sessionId: string, limit?: number): Array<{
|
|
24
|
+
role: string;
|
|
25
|
+
content: string;
|
|
26
|
+
tool_calls?: unknown[];
|
|
27
|
+
tool_call_id?: string;
|
|
28
|
+
name?: string;
|
|
29
|
+
}>;
|
|
30
|
+
export declare function clearSessionMessages(sessionId: string): boolean;
|
|
31
|
+
export declare function saveMemory(key: string, value: string, category?: string): boolean;
|
|
32
|
+
export declare function getMemory(key: string): {
|
|
33
|
+
key: string;
|
|
34
|
+
value: string;
|
|
35
|
+
category: string;
|
|
36
|
+
updated_at: string;
|
|
37
|
+
} | undefined;
|
|
38
|
+
export declare function searchMemory(query: string, category?: string): Array<{
|
|
39
|
+
key: string;
|
|
40
|
+
value: string;
|
|
41
|
+
category: string;
|
|
42
|
+
}>;
|
|
43
|
+
export declare function listMemory(category?: string): Array<{
|
|
44
|
+
key: string;
|
|
45
|
+
value: string;
|
|
46
|
+
category: string;
|
|
47
|
+
updated_at: string;
|
|
48
|
+
}>;
|
|
49
|
+
export declare function deleteMemory(key: string): boolean;
|
|
50
|
+
export declare function clearAllMemory(): boolean;
|
|
51
|
+
export declare function storeConfig(key: string, value: string): boolean;
|
|
52
|
+
export declare function getConfig(key: string): string | undefined;
|
|
53
|
+
export declare function isAvailable(): boolean;
|
|
54
|
+
export declare function getStats(): {
|
|
55
|
+
sessions: number;
|
|
56
|
+
messages: number;
|
|
57
|
+
memories: number;
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAuFA,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAOhE;AAED,wBAAgB,YAAY,IAAI,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAI7G;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAI1H;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAMjD;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAK/D;AAID,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAwB1K;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAenK;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAM/D;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAY,GAAG,OAAO,CAOpF;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAIvH;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAatH;AAED,wBAAgB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CASzH;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,wBAAgB,cAAc,IAAI,OAAO,CAKxC;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAK/D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzD;AAID,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED,wBAAgB,QAAQ,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CASnF"}
|
package/dist/database.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { existsSync, mkdirSync } from "node:fs";
|
|
4
|
+
import { createRequire } from "node:module";
|
|
5
|
+
const _require = createRequire(import.meta.url);
|
|
6
|
+
const DB_DIR = join(homedir(), ".vegas");
|
|
7
|
+
const DB_PATH = join(DB_DIR, "vegas.db");
|
|
8
|
+
let db = null;
|
|
9
|
+
function getDb() {
|
|
10
|
+
if (db)
|
|
11
|
+
return db;
|
|
12
|
+
if (!existsSync(DB_DIR)) {
|
|
13
|
+
mkdirSync(DB_DIR, { recursive: true });
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const Database = _require("better-sqlite3");
|
|
17
|
+
db = new Database(DB_PATH);
|
|
18
|
+
db.exec("PRAGMA journal_mode=WAL");
|
|
19
|
+
db.exec("PRAGMA foreign_keys=ON");
|
|
20
|
+
migrate(db);
|
|
21
|
+
return db;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function migrate(db) {
|
|
28
|
+
db.exec(`
|
|
29
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
30
|
+
id TEXT PRIMARY KEY,
|
|
31
|
+
name TEXT DEFAULT '',
|
|
32
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
33
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
34
|
+
message_count INTEGER DEFAULT 0,
|
|
35
|
+
provider TEXT DEFAULT '',
|
|
36
|
+
model TEXT DEFAULT ''
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
CREATE TABLE IF NOT EXISTS messages (
|
|
40
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
41
|
+
session_id TEXT NOT NULL,
|
|
42
|
+
role TEXT NOT NULL,
|
|
43
|
+
content TEXT DEFAULT '',
|
|
44
|
+
tool_calls TEXT,
|
|
45
|
+
tool_call_id TEXT,
|
|
46
|
+
name TEXT,
|
|
47
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
48
|
+
FOREIGN KEY (session_id) REFERENCES sessions(id) ON DELETE CASCADE
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
CREATE TABLE IF NOT EXISTS memory (
|
|
52
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
53
|
+
key TEXT UNIQUE NOT NULL,
|
|
54
|
+
value TEXT NOT NULL,
|
|
55
|
+
category TEXT DEFAULT 'general',
|
|
56
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
57
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE TABLE IF NOT EXISTS config_store (
|
|
61
|
+
key TEXT PRIMARY KEY,
|
|
62
|
+
value TEXT NOT NULL
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id);
|
|
66
|
+
CREATE INDEX IF NOT EXISTS idx_memory_category ON memory(category);
|
|
67
|
+
`);
|
|
68
|
+
}
|
|
69
|
+
// ========== SESSIONS ==========
|
|
70
|
+
export function createSession(id, name) {
|
|
71
|
+
const d = getDb();
|
|
72
|
+
if (!d)
|
|
73
|
+
return false;
|
|
74
|
+
d.prepare("INSERT OR IGNORE INTO sessions (id, name, provider, model) VALUES (?, ?, ?, ?)").run(id, name || "", "", "");
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
export function listSessions() {
|
|
78
|
+
const d = getDb();
|
|
79
|
+
if (!d)
|
|
80
|
+
return [];
|
|
81
|
+
return d.prepare("SELECT id, name, created_at, message_count FROM sessions ORDER BY updated_at DESC LIMIT 20").all();
|
|
82
|
+
}
|
|
83
|
+
export function getSession(id) {
|
|
84
|
+
const d = getDb();
|
|
85
|
+
if (!d)
|
|
86
|
+
return undefined;
|
|
87
|
+
return d.prepare("SELECT id, name, created_at, message_count FROM sessions WHERE id = ?").get(id);
|
|
88
|
+
}
|
|
89
|
+
export function deleteSession(id) {
|
|
90
|
+
const d = getDb();
|
|
91
|
+
if (!d)
|
|
92
|
+
return false;
|
|
93
|
+
d.prepare("DELETE FROM messages WHERE session_id = ?").run(id);
|
|
94
|
+
d.prepare("DELETE FROM sessions WHERE id = ?").run(id);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
export function renameSession(id, name) {
|
|
98
|
+
const d = getDb();
|
|
99
|
+
if (!d)
|
|
100
|
+
return false;
|
|
101
|
+
d.prepare("UPDATE sessions SET name = ?, updated_at = datetime('now') WHERE id = ?").run(name, id);
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
// ========== MESSAGES ==========
|
|
105
|
+
export function saveMessages(sessionId, messages) {
|
|
106
|
+
const d = getDb();
|
|
107
|
+
if (!d)
|
|
108
|
+
return false;
|
|
109
|
+
const insert = d.prepare("INSERT INTO messages (session_id, role, content, tool_calls, tool_call_id, name) VALUES (?, ?, ?, ?, ?, ?)");
|
|
110
|
+
for (const m of messages) {
|
|
111
|
+
insert.run(sessionId, m.role, m.content || "", m.tool_calls ? JSON.stringify(m.tool_calls) : null, m.tool_call_id || null, m.name || null);
|
|
112
|
+
}
|
|
113
|
+
d.prepare("UPDATE sessions SET message_count = message_count + ?, updated_at = datetime('now') WHERE id = ?").run(messages.length, sessionId);
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
export function loadMessages(sessionId, limit = 100) {
|
|
117
|
+
const d = getDb();
|
|
118
|
+
if (!d)
|
|
119
|
+
return [];
|
|
120
|
+
const rows = d.prepare("SELECT role, content, tool_calls, tool_call_id, name FROM messages WHERE session_id = ? ORDER BY id ASC LIMIT ?").all(sessionId, limit);
|
|
121
|
+
return rows.map(r => ({
|
|
122
|
+
role: r.role,
|
|
123
|
+
content: r.content,
|
|
124
|
+
tool_calls: r.tool_calls ? JSON.parse(r.tool_calls) : undefined,
|
|
125
|
+
tool_call_id: r.tool_call_id || undefined,
|
|
126
|
+
name: r.name || undefined,
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
export function clearSessionMessages(sessionId) {
|
|
130
|
+
const d = getDb();
|
|
131
|
+
if (!d)
|
|
132
|
+
return false;
|
|
133
|
+
d.prepare("DELETE FROM messages WHERE session_id = ?").run(sessionId);
|
|
134
|
+
d.prepare("UPDATE sessions SET message_count = 0, updated_at = datetime('now') WHERE id = ?").run(sessionId);
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
// ========== LONG-TERM MEMORY ==========
|
|
138
|
+
export function saveMemory(key, value, category = "general") {
|
|
139
|
+
const d = getDb();
|
|
140
|
+
if (!d)
|
|
141
|
+
return false;
|
|
142
|
+
d.prepare("INSERT INTO memory (key, value, category, updated_at) VALUES (?, ?, ?, datetime('now')) ON CONFLICT(key) DO UPDATE SET value = excluded.value, category = excluded.category, updated_at = datetime('now')").run(key, value, category);
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
export function getMemory(key) {
|
|
146
|
+
const d = getDb();
|
|
147
|
+
if (!d)
|
|
148
|
+
return undefined;
|
|
149
|
+
return d.prepare("SELECT key, value, category, updated_at FROM memory WHERE key = ?").get(key);
|
|
150
|
+
}
|
|
151
|
+
export function searchMemory(query, category) {
|
|
152
|
+
const d = getDb();
|
|
153
|
+
if (!d)
|
|
154
|
+
return [];
|
|
155
|
+
if (category) {
|
|
156
|
+
return d.prepare("SELECT key, value, category FROM memory WHERE category = ? AND (key LIKE ? OR value LIKE ?) ORDER BY updated_at DESC LIMIT 20").all(category, `%${query}%`, `%${query}%`);
|
|
157
|
+
}
|
|
158
|
+
return d.prepare("SELECT key, value, category FROM memory WHERE key LIKE ? OR value LIKE ? ORDER BY updated_at DESC LIMIT 20").all(`%${query}%`, `%${query}%`);
|
|
159
|
+
}
|
|
160
|
+
export function listMemory(category) {
|
|
161
|
+
const d = getDb();
|
|
162
|
+
if (!d)
|
|
163
|
+
return [];
|
|
164
|
+
if (category) {
|
|
165
|
+
return d.prepare("SELECT key, value, category, updated_at FROM memory WHERE category = ? ORDER BY updated_at DESC").all(category);
|
|
166
|
+
}
|
|
167
|
+
return d.prepare("SELECT key, value, category, updated_at FROM memory ORDER BY category, updated_at DESC").all();
|
|
168
|
+
}
|
|
169
|
+
export function deleteMemory(key) {
|
|
170
|
+
const d = getDb();
|
|
171
|
+
if (!d)
|
|
172
|
+
return false;
|
|
173
|
+
d.prepare("DELETE FROM memory WHERE key = ?").run(key);
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
export function clearAllMemory() {
|
|
177
|
+
const d = getDb();
|
|
178
|
+
if (!d)
|
|
179
|
+
return false;
|
|
180
|
+
d.prepare("DELETE FROM memory").run();
|
|
181
|
+
return true;
|
|
182
|
+
}
|
|
183
|
+
// ========== CONFIG STORE ==========
|
|
184
|
+
export function storeConfig(key, value) {
|
|
185
|
+
const d = getDb();
|
|
186
|
+
if (!d)
|
|
187
|
+
return false;
|
|
188
|
+
d.prepare("INSERT OR REPLACE INTO config_store (key, value) VALUES (?, ?)").run(key, value);
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
export function getConfig(key) {
|
|
192
|
+
const d = getDb();
|
|
193
|
+
if (!d)
|
|
194
|
+
return undefined;
|
|
195
|
+
const row = d.prepare("SELECT value FROM config_store WHERE key = ?").get(key);
|
|
196
|
+
return row?.value;
|
|
197
|
+
}
|
|
198
|
+
// ========== HEALTH ==========
|
|
199
|
+
export function isAvailable() {
|
|
200
|
+
return getDb() !== null;
|
|
201
|
+
}
|
|
202
|
+
export function getStats() {
|
|
203
|
+
const d = getDb();
|
|
204
|
+
if (!d)
|
|
205
|
+
return { sessions: 0, messages: 0, memories: 0 };
|
|
206
|
+
return {
|
|
207
|
+
sessions: d.prepare("SELECT COUNT(*) as c FROM sessions").get()?.c || 0,
|
|
208
|
+
messages: d.prepare("SELECT COUNT(*) as c FROM messages").get()?.c || 0,
|
|
209
|
+
memories: d.prepare("SELECT COUNT(*) as c FROM memory").get()?.c || 0,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../src/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEhD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACzC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAazC,IAAI,EAAE,GAA4B,IAAI,CAAC;AAEvC,SAAS,KAAK;IACZ,IAAI,EAAE;QAAE,OAAO,EAAE,CAAC;IAElB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAC5C,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAqB,CAAC;QAC/C,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACnC,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClC,OAAO,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,EAAoB;IACnC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCP,CAAC,CAAC;AACL,CAAC;AAED,iCAAiC;AAEjC,MAAM,UAAU,aAAa,CAAC,EAAU,EAAE,IAAa;IACrD,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,gFAAgF,CAAC,CAAC,GAAG,CAC7F,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CACvB,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,OAAO,CAAC,CAAC,OAAO,CAAC,4FAA4F,CAAC,CAAC,GAAG,EAAE,CAAC;AACvH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAU;IACnC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO,CAAC,CAAC,OAAO,CAAC,uEAAuE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU;IACtC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAAU,EAAE,IAAY;IACpD,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,yEAAyE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACnG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iCAAiC;AAEjC,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,QAAiH;IAC/J,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAErB,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CACtB,4GAA4G,CAC7G,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CACR,SAAS,EACT,CAAC,CAAC,IAAI,EACN,CAAC,CAAC,OAAO,IAAI,EAAE,EACf,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAClD,CAAC,CAAC,YAAY,IAAI,IAAI,EACtB,CAAC,CAAC,IAAI,IAAI,IAAI,CACf,CAAC;IACJ,CAAC;IAED,CAAC,CAAC,OAAO,CAAC,kGAAkG,CAAC,CAAC,GAAG,CAC/G,QAAQ,CAAC,MAAM,EAAE,SAAS,CAC3B,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,KAAK,GAAG,GAAG;IACzD,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAElB,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,CACpB,iHAAiH,CAClH,CAAC,GAAG,CAAiH,SAAS,EAAE,KAAK,CAAC,CAAC;IAExI,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,EAAE,CAAC,CAAC,IAAgD;QACxD,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/D,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,SAAS;QACzC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC,CAAC,OAAO,CAAC,kFAAkF,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7G,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yCAAyC;AAEzC,MAAM,UAAU,UAAU,CAAC,GAAW,EAAE,KAAa,EAAE,QAAQ,GAAG,SAAS;IACzE,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CACP,2MAA2M,CAC5M,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO,CAAC,CAAC,OAAO,CAAC,mEAAmE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACjG,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,QAAiB;IAC3D,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAElB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,CAAC,OAAO,CACd,+HAA+H,CAChI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,CAAC,OAAO,CACd,4GAA4G,CAC7G,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAiB;IAC1C,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAElB,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,CAAC,CAAC,OAAO,CAAC,iGAAiG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpI,CAAC;IAED,OAAO,CAAC,CAAC,OAAO,CAAC,wFAAwF,CAAC,CAAC,GAAG,EAAE,CAAC;AACnH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,GAAG,EAAE,CAAC;IACtC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,qCAAqC;AAErC,MAAM,UAAU,WAAW,CAAC,GAAW,EAAE,KAAa;IACpD,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,CAAC,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC5F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAoB,GAAG,CAAC,CAAC;IAClG,OAAO,GAAG,EAAE,KAAK,CAAC;AACpB,CAAC;AAED,+BAA+B;AAE/B,MAAM,UAAU,WAAW;IACzB,OAAO,KAAK,EAAE,KAAK,IAAI,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,CAAC,GAAG,KAAK,EAAE,CAAC;IAClB,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAEzD,OAAO;QACL,QAAQ,EAAG,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAoB,EAAE,CAAC,IAAI,CAAC;QAC1F,QAAQ,EAAG,CAAC,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAoB,EAAE,CAAC,IAAI,CAAC;QAC1F,QAAQ,EAAG,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,EAAoB,EAAE,CAAC,IAAI,CAAC;KACzF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { ConfigManager } from "./config.js";
|
|
3
|
+
import { REPL } from "./repl.js";
|
|
4
|
+
import { printBox } from "./ui.js";
|
|
5
|
+
async function main() {
|
|
6
|
+
const config = new ConfigManager();
|
|
7
|
+
const repl = new REPL(config);
|
|
8
|
+
await repl.run();
|
|
9
|
+
}
|
|
10
|
+
main().catch(err => {
|
|
11
|
+
printBox("Fatal Error", [
|
|
12
|
+
`Something went wrong:`,
|
|
13
|
+
`${err}`,
|
|
14
|
+
``,
|
|
15
|
+
`Please report this issue with the details above.`,
|
|
16
|
+
]);
|
|
17
|
+
process.exit(1);
|
|
18
|
+
});
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAc,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/C,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;AACnB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACjB,QAAQ,CAAC,aAAa,EAAE;QACtB,uBAAuB;QACvB,GAAG,GAAG,EAAE;QACR,EAAE;QACF,kDAAkD;KACnD,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-fix loop: tracks retries per session and provides error context.
|
|
3
|
+
*/
|
|
4
|
+
export declare function resetFixState(): void;
|
|
5
|
+
export declare function getMaxRetries(): number;
|
|
6
|
+
export declare function shouldRetry(errorText: string): boolean;
|
|
7
|
+
export declare function buildAutoFixPrompt(errorText: string, retryNum: number): string;
|
|
8
|
+
export declare function getFixStatus(): {
|
|
9
|
+
retryCount: number;
|
|
10
|
+
maxRetries: number;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=autoFix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoFix.d.ts","sourceRoot":"","sources":["../../src/loop/autoFix.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAYtD;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,wBAAgB,YAAY,IAAI;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAEzE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-fix loop: tracks retries per session and provides error context.
|
|
3
|
+
*/
|
|
4
|
+
const MAX_RETRIES = 5;
|
|
5
|
+
let fixState = {
|
|
6
|
+
retryCount: 0,
|
|
7
|
+
lastErrors: new Map(),
|
|
8
|
+
};
|
|
9
|
+
export function resetFixState() {
|
|
10
|
+
fixState = { retryCount: 0, lastErrors: new Map() };
|
|
11
|
+
}
|
|
12
|
+
export function getMaxRetries() {
|
|
13
|
+
return MAX_RETRIES;
|
|
14
|
+
}
|
|
15
|
+
export function shouldRetry(errorText) {
|
|
16
|
+
if (fixState.retryCount >= MAX_RETRIES)
|
|
17
|
+
return false;
|
|
18
|
+
const hash = simpleHash(errorText);
|
|
19
|
+
const prevHits = fixState.lastErrors.get(hash) || 0;
|
|
20
|
+
if (prevHits >= 2) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
fixState.lastErrors.set(hash, prevHits + 1);
|
|
24
|
+
fixState.retryCount++;
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
export function buildAutoFixPrompt(errorText, retryNum) {
|
|
28
|
+
return `\n\nThe previous command failed with exit code != 0. Error output:\n\`\`\`\n${errorText.substring(0, 2000)}\n\`\`\`\n\nThis is attempt ${retryNum}/${MAX_RETRIES}. Please analyze the error and try a different approach to fix it. Common fixes include:\n- Check if files/directories exist before accessing them\n- Install missing dependencies\n- Fix syntax errors in code\n- Use correct paths and commands\n- Try alternative approaches if a command fails`;
|
|
29
|
+
}
|
|
30
|
+
export function getFixStatus() {
|
|
31
|
+
return { retryCount: fixState.retryCount, maxRetries: MAX_RETRIES };
|
|
32
|
+
}
|
|
33
|
+
function simpleHash(str) {
|
|
34
|
+
let hash = 0;
|
|
35
|
+
for (let i = 0; i < str.length; i++) {
|
|
36
|
+
const char = str.charCodeAt(i);
|
|
37
|
+
hash = ((hash << 5) - hash) + char;
|
|
38
|
+
hash = hash & hash;
|
|
39
|
+
}
|
|
40
|
+
return Math.abs(hash).toString(36);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=autoFix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoFix.js","sourceRoot":"","sources":["../../src/loop/autoFix.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC;AAOtB,IAAI,QAAQ,GAAa;IACvB,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,IAAI,GAAG,EAAE;CACtB,CAAC;AAEF,MAAM,UAAU,aAAa;IAC3B,QAAQ,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,SAAiB;IAC3C,IAAI,QAAQ,CAAC,UAAU,IAAI,WAAW;QAAE,OAAO,KAAK,CAAC;IACrD,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,CAAC;IACtB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,QAAgB;IACpE,OAAO,+EAA+E,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,+BAA+B,QAAQ,IAAI,WAAW,oSAAoS,CAAC;AAC/c,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AACtE,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelCache.d.ts","sourceRoot":"","sources":["../src/modelCache.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAEtE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAGxD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
let cache = null;
|
|
2
|
+
export function setModelCache(provider, models) {
|
|
3
|
+
cache = { provider, models };
|
|
4
|
+
}
|
|
5
|
+
export function getModelCache(provider) {
|
|
6
|
+
if (cache && cache.provider === provider)
|
|
7
|
+
return cache.models;
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=modelCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelCache.js","sourceRoot":"","sources":["../src/modelCache.ts"],"names":[],"mappings":"AAAA,IAAI,KAAK,GAAkD,IAAI,CAAC;AAEhE,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,MAAgB;IAC9D,KAAK,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC;IAC9D,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LLMProvider, LLMMessage, LLMResponse, ToolDefinition } from "../types.js";
|
|
2
|
+
export declare class AnthropicProvider implements LLMProvider {
|
|
3
|
+
name: string;
|
|
4
|
+
private apiKey;
|
|
5
|
+
private model;
|
|
6
|
+
constructor(apiKey: string, model: string);
|
|
7
|
+
chat(messages: LLMMessage[], tools: ToolDefinition[]): Promise<LLMResponse>;
|
|
8
|
+
private convertMessages;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=anthropic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/provider/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAY,MAAM,aAAa,CAAC;AAqBlG,qBAAa,iBAAkB,YAAW,WAAW;IACnD,IAAI,SAAe;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;gBAEV,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAKnC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IAmEjF,OAAO,CAAC,eAAe;CAsCxB"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
export class AnthropicProvider {
|
|
2
|
+
name = "anthropic";
|
|
3
|
+
apiKey;
|
|
4
|
+
model;
|
|
5
|
+
constructor(apiKey, model) {
|
|
6
|
+
this.apiKey = apiKey;
|
|
7
|
+
this.model = model;
|
|
8
|
+
}
|
|
9
|
+
async chat(messages, tools) {
|
|
10
|
+
const systemMessages = messages.filter(m => m.role === "system");
|
|
11
|
+
const nonSystemMessages = messages.filter(m => m.role !== "system");
|
|
12
|
+
const body = {
|
|
13
|
+
model: this.model,
|
|
14
|
+
max_tokens: 8192,
|
|
15
|
+
messages: this.convertMessages(nonSystemMessages),
|
|
16
|
+
};
|
|
17
|
+
if (systemMessages.length > 0) {
|
|
18
|
+
body.system = systemMessages.map(m => ({ type: "text", text: m.content }));
|
|
19
|
+
}
|
|
20
|
+
if (tools.length > 0) {
|
|
21
|
+
body.tools = tools.map(t => ({
|
|
22
|
+
name: t.name,
|
|
23
|
+
description: t.description,
|
|
24
|
+
input_schema: t.parameters,
|
|
25
|
+
}));
|
|
26
|
+
}
|
|
27
|
+
const res = await fetch("https://api.anthropic.com/v1/messages", {
|
|
28
|
+
method: "POST",
|
|
29
|
+
headers: {
|
|
30
|
+
"Content-Type": "application/json",
|
|
31
|
+
"x-api-key": this.apiKey,
|
|
32
|
+
"anthropic-version": "2023-06-01",
|
|
33
|
+
},
|
|
34
|
+
body: JSON.stringify(body),
|
|
35
|
+
});
|
|
36
|
+
if (!res.ok) {
|
|
37
|
+
const err = await res.text();
|
|
38
|
+
throw new Error(`[Anthropic] ${res.status}: ${err}`);
|
|
39
|
+
}
|
|
40
|
+
const data = (await res.json());
|
|
41
|
+
let content = "";
|
|
42
|
+
const toolCalls = [];
|
|
43
|
+
for (const block of data.content) {
|
|
44
|
+
if (block.type === "text" && block.text) {
|
|
45
|
+
content += block.text;
|
|
46
|
+
}
|
|
47
|
+
else if (block.type === "tool_use" && block.id && block.name && block.input) {
|
|
48
|
+
toolCalls.push({
|
|
49
|
+
id: block.id,
|
|
50
|
+
type: "function",
|
|
51
|
+
function: {
|
|
52
|
+
name: block.name,
|
|
53
|
+
arguments: JSON.stringify(block.input),
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
content,
|
|
60
|
+
tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
61
|
+
model: data.model,
|
|
62
|
+
usage: data.usage
|
|
63
|
+
? { input: data.usage.input_tokens, output: data.usage.output_tokens }
|
|
64
|
+
: undefined,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
convertMessages(messages) {
|
|
68
|
+
const result = [];
|
|
69
|
+
for (const msg of messages) {
|
|
70
|
+
if (msg.role === "tool") {
|
|
71
|
+
result.push({
|
|
72
|
+
role: "user",
|
|
73
|
+
content: [
|
|
74
|
+
{
|
|
75
|
+
type: "tool_result",
|
|
76
|
+
tool_use_id: msg.tool_call_id,
|
|
77
|
+
content: msg.content,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else if (msg.role === "assistant") {
|
|
83
|
+
const content = [];
|
|
84
|
+
if (msg.content) {
|
|
85
|
+
content.push({ type: "text", text: msg.content });
|
|
86
|
+
}
|
|
87
|
+
if (msg.tool_calls) {
|
|
88
|
+
for (const tc of msg.tool_calls) {
|
|
89
|
+
content.push({
|
|
90
|
+
type: "tool_use",
|
|
91
|
+
id: tc.id,
|
|
92
|
+
name: tc.function.name,
|
|
93
|
+
input: JSON.parse(tc.function.arguments),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
result.push({ role: "assistant", content });
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
result.push({ role: msg.role, content: msg.content });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../src/provider/anthropic.ts"],"names":[],"mappings":"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"}
|