@agent-smith/core 0.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.
Files changed (119) hide show
  1. package/README.md +378 -0
  2. package/dist/actions/cmd.d.ts +5 -0
  3. package/dist/actions/cmd.js +135 -0
  4. package/dist/actions/read.d.ts +3 -0
  5. package/dist/actions/read.js +17 -0
  6. package/dist/adaptaters/cmd.d.ts +2 -0
  7. package/dist/adaptaters/cmd.js +39 -0
  8. package/dist/agents/cmd.d.ts +3 -0
  9. package/dist/agents/cmd.js +10 -0
  10. package/dist/agents/conf.d.ts +3 -0
  11. package/dist/agents/conf.js +9 -0
  12. package/dist/agents/files.d.ts +3 -0
  13. package/dist/agents/files.js +40 -0
  14. package/dist/agents/read.d.ts +11 -0
  15. package/dist/agents/read.js +241 -0
  16. package/dist/agents/useagent.d.ts +13 -0
  17. package/dist/agents/useagent.js +395 -0
  18. package/dist/conf.d.ts +14 -0
  19. package/dist/conf.js +160 -0
  20. package/dist/const.d.ts +3 -0
  21. package/dist/const.js +10 -0
  22. package/dist/db/db.d.ts +3 -0
  23. package/dist/db/db.js +24 -0
  24. package/dist/db/read.d.ts +45 -0
  25. package/dist/db/read.js +280 -0
  26. package/dist/db/schemas.d.ts +2 -0
  27. package/dist/db/schemas.js +141 -0
  28. package/dist/db/write.d.ts +23 -0
  29. package/dist/db/write.js +570 -0
  30. package/dist/features/actions/load-skill.d.ts +2 -0
  31. package/dist/features/actions/load-skill.js +37 -0
  32. package/dist/features/actions/notify-user.d.ts +2 -0
  33. package/dist/features/actions/notify-user.js +25 -0
  34. package/dist/features/actions/read-feature.d.ts +2 -0
  35. package/dist/features/actions/read-feature.js +25 -0
  36. package/dist/features/actions/run-agent.d.ts +2 -0
  37. package/dist/features/actions/run-agent.js +34 -0
  38. package/dist/features/actions/run-collaborator.d.ts +1 -0
  39. package/dist/features/actions/run-collaborator.js +42 -0
  40. package/dist/features/actions/run-worker.d.ts +2 -0
  41. package/dist/features/actions/run-worker.js +34 -0
  42. package/dist/features/adaptaters/agent-smith-db-getschema.d.ts +4 -0
  43. package/dist/features/adaptaters/agent-smith-db-getschema.js +62 -0
  44. package/dist/features/adaptaters/imgs2base64.d.ts +1 -0
  45. package/dist/features/adaptaters/imgs2base64.js +13 -0
  46. package/dist/features/adaptaters/prequery.d.ts +4 -0
  47. package/dist/features/adaptaters/prequery.js +5 -0
  48. package/dist/features/agents/agent-smith-colab.yml +37 -0
  49. package/dist/features/agents/agent-smith-doc.yml +50 -0
  50. package/dist/features/agents/agent-smith-help.yml +35 -0
  51. package/dist/features/agents/agent-smith-search.yml +41 -0
  52. package/dist/features/agents/agent-smith-sql.yml +31 -0
  53. package/dist/features/agents/agent-smith.yml +37 -0
  54. package/dist/features/agents/collaborator.yml +15 -0
  55. package/dist/features/agents/infer.yml +12 -0
  56. package/dist/features/fragments/ctx-helper-files.md +4 -0
  57. package/dist/features/fragments/workspace.txt +6 -0
  58. package/dist/features/skills/create-package-readme/SKILL.md +66 -0
  59. package/dist/features/skills/document-package/SKILL.md +83 -0
  60. package/dist/features/skills/t/SKILL.md +26 -0
  61. package/dist/features/skills/update-codebase-summary/SKILL.md +45 -0
  62. package/dist/features/skills/update-doc-map/SKILL.md +8 -0
  63. package/dist/features/skills/update-doc-map/scripts/generate-doc-map.mjs +196 -0
  64. package/dist/features/workflows/agent-smith-db.yml +9 -0
  65. package/dist/features/workflows/q.yml +3 -0
  66. package/dist/features/workflows/vision.yml +3 -0
  67. package/dist/main.d.ts +127 -0
  68. package/dist/main.js +80 -0
  69. package/dist/mcp.d.ts +16 -0
  70. package/dist/mcp.js +110 -0
  71. package/dist/state/backends.d.ts +7 -0
  72. package/dist/state/backends.js +96 -0
  73. package/dist/state/features.d.ts +10 -0
  74. package/dist/state/features.js +42 -0
  75. package/dist/state/plugins.d.ts +6 -0
  76. package/dist/state/plugins.js +27 -0
  77. package/dist/state/state.d.ts +18 -0
  78. package/dist/state/state.js +79 -0
  79. package/dist/state/tasks.d.ts +6 -0
  80. package/dist/state/tasks.js +33 -0
  81. package/dist/tools.d.ts +15 -0
  82. package/dist/tools.js +149 -0
  83. package/dist/updateconf.d.ts +5 -0
  84. package/dist/updateconf.js +124 -0
  85. package/dist/utils/io.d.ts +10 -0
  86. package/dist/utils/io.js +98 -0
  87. package/dist/utils/perf.d.ts +9 -0
  88. package/dist/utils/perf.js +63 -0
  89. package/dist/utils/sys/clipboard.d.ts +3 -0
  90. package/dist/utils/sys/clipboard.js +33 -0
  91. package/dist/utils/sys/delete_file.d.ts +2 -0
  92. package/dist/utils/sys/delete_file.js +10 -0
  93. package/dist/utils/sys/dirs.d.ts +2 -0
  94. package/dist/utils/sys/dirs.js +9 -0
  95. package/dist/utils/sys/execute.d.ts +13 -0
  96. package/dist/utils/sys/execute.js +48 -0
  97. package/dist/utils/sys/read.d.ts +3 -0
  98. package/dist/utils/sys/read.js +21 -0
  99. package/dist/utils/sys/read_agent.d.ts +6 -0
  100. package/dist/utils/sys/read_agent.js +23 -0
  101. package/dist/utils/sys/read_cmds.d.ts +7 -0
  102. package/dist/utils/sys/read_cmds.js +37 -0
  103. package/dist/utils/sys/read_conf.d.ts +6 -0
  104. package/dist/utils/sys/read_conf.js +12 -0
  105. package/dist/utils/sys/read_features.d.ts +3 -0
  106. package/dist/utils/sys/read_features.js +134 -0
  107. package/dist/utils/sys/read_yml_file.d.ts +5 -0
  108. package/dist/utils/sys/read_yml_file.js +11 -0
  109. package/dist/utils/sys/run_python.d.ts +6 -0
  110. package/dist/utils/sys/run_python.js +39 -0
  111. package/dist/utils/text.d.ts +2 -0
  112. package/dist/utils/text.js +28 -0
  113. package/dist/utils/user_msgs.d.ts +5 -0
  114. package/dist/utils/user_msgs.js +19 -0
  115. package/dist/workflows/cmd.d.ts +3 -0
  116. package/dist/workflows/cmd.js +189 -0
  117. package/dist/workflows/read.d.ts +6 -0
  118. package/dist/workflows/read.js +61 -0
  119. package/package.json +45 -0
package/dist/conf.js ADDED
@@ -0,0 +1,160 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { homedir } from 'os';
4
+ import { join } from 'path';
5
+ import yaml from "yaml";
6
+ import { runtimeError } from "./utils/user_msgs.js";
7
+ import { createDirectoryIfNotExists } from "./utils/sys/dirs.js";
8
+ import { readConf } from "./utils/sys/read_conf.js";
9
+ import { deleteAgentSettings, insertFeaturesPathIfNotExists, insertPluginIfNotExists, upsertAndCleanWorkspaces, upsertBackends, upsertAgentSettings } from "./db/write.js";
10
+ import { buildPluginsPaths } from "./state/plugins.js";
11
+ import { initAgentSettings, agentSettings } from "./state/tasks.js";
12
+ function getConfigPath(appName, filename) {
13
+ let confDir;
14
+ let dbPath;
15
+ if (process.platform === 'win32') {
16
+ confDir = join(process.env.APPDATA, appName);
17
+ dbPath = join(process.env.APPDATA, appName, filename);
18
+ }
19
+ else if (process.platform === 'darwin') {
20
+ confDir = join(homedir(), 'Library', 'Application Support', appName);
21
+ dbPath = join(homedir(), 'Library', 'Application Support', appName, filename);
22
+ }
23
+ else { // Linux, BSD, etc.
24
+ confDir = join(homedir(), '.config', appName);
25
+ dbPath = join(homedir(), '.config', appName, filename);
26
+ }
27
+ return { confDir: confDir, dbPath: dbPath };
28
+ }
29
+ const { confDir, dbPath } = getConfigPath("agent-smith", "config.db");
30
+ function updateConfigFile(conf, cfp) {
31
+ const fp = cfp ? cfp : path.join(confDir, "config.yml");
32
+ const txt = yaml.stringify(conf);
33
+ if (!fs.existsSync(fp)) {
34
+ const err = `Config file ${fp} does not exist`;
35
+ throw new Error(err);
36
+ }
37
+ try {
38
+ fs.writeFileSync(fp, txt, { encoding: 'utf8' });
39
+ }
40
+ catch (e) {
41
+ throw new Error(`Error creating config file at ${fp}: ${e}`);
42
+ }
43
+ return fp;
44
+ }
45
+ function createConfigFileIfNotExists(cfp) {
46
+ const fp = cfp ? cfp : path.join(confDir, "config.yml");
47
+ if (fs.existsSync(fp)) {
48
+ return fp;
49
+ }
50
+ createDirectoryIfNotExists(confDir);
51
+ console.log("Creating config file", fp);
52
+ const fc = {
53
+ backends: {
54
+ default: "llamacpp",
55
+ llamacpp: {
56
+ url: "http://localhost:8080/v1"
57
+ }
58
+ },
59
+ promptfile: "",
60
+ };
61
+ const txt = yaml.stringify(fc);
62
+ try {
63
+ fs.writeFileSync(fp, txt, { encoding: 'utf8' });
64
+ }
65
+ catch (e) {
66
+ throw new Error(`Error creating config file at ${fp}: ${e}`);
67
+ }
68
+ return fp;
69
+ }
70
+ async function processConfPath(confPath) {
71
+ //createDirectoryIfNotExists(confDir);
72
+ const { found, data } = readConf(confPath);
73
+ if (!found) {
74
+ runtimeError(`Config file ${confPath} not found`);
75
+ }
76
+ //console.log(data)
77
+ const allPaths = new Array();
78
+ // backends
79
+ const backends = {};
80
+ let defaultBackendName = "";
81
+ if (data?.backends) {
82
+ for (const [name, val] of Object.entries(data.backends)) {
83
+ switch (name) {
84
+ case "default":
85
+ const v1 = val;
86
+ defaultBackendName = v1;
87
+ break;
88
+ default:
89
+ const v3 = val;
90
+ let apiKey = undefined;
91
+ if (v3?.apiKey) {
92
+ apiKey = v3.apiKey;
93
+ }
94
+ const ib = {
95
+ name: name,
96
+ type: v3.type,
97
+ url: v3.url,
98
+ isDefault: false,
99
+ };
100
+ if (apiKey) {
101
+ ib.apiKey = apiKey;
102
+ }
103
+ backends[name] = ib;
104
+ break;
105
+ }
106
+ }
107
+ }
108
+ console.log("Default backend:", defaultBackendName);
109
+ //console.dir(backends, { depth: 4 });
110
+ if (!Object.keys(backends).includes(defaultBackendName)) {
111
+ throw new Error(`Undeclared default backend: ${defaultBackendName}`);
112
+ }
113
+ backends[defaultBackendName].isDefault = true;
114
+ upsertBackends(Object.values(backends));
115
+ // features and plugins from conf
116
+ if (data?.features) {
117
+ allPaths.push(...data.features);
118
+ const fts = new Array();
119
+ data.features.forEach((f) => {
120
+ if (!fts.includes(f)) {
121
+ insertFeaturesPathIfNotExists(f);
122
+ fts.push(f);
123
+ }
124
+ });
125
+ }
126
+ if (data?.plugins) {
127
+ const plugins = await buildPluginsPaths(data.plugins);
128
+ plugins.forEach((_pl) => {
129
+ allPaths.push(_pl.path);
130
+ insertPluginIfNotExists(_pl.name, _pl.path);
131
+ });
132
+ }
133
+ if (data?.agents) {
134
+ initAgentSettings();
135
+ const okAgents = new Array();
136
+ for (const [name, settings] of Object.entries(data.agents)) {
137
+ upsertAgentSettings(name, settings);
138
+ okAgents.push(name);
139
+ }
140
+ const toDel = Object.keys(agentSettings).filter(t => !okAgents.includes(t));
141
+ deleteAgentSettings(toDel);
142
+ }
143
+ if (data?.workspaces) {
144
+ const wsd = new Array();
145
+ for (const [k, v] of Object.entries(data.workspaces)) {
146
+ wsd.push({ name: k, path: v, props: {} });
147
+ }
148
+ upsertAndCleanWorkspaces(wsd);
149
+ }
150
+ let pf = "";
151
+ if (data?.promptfile) {
152
+ pf = data.promptfile;
153
+ }
154
+ let dd = "";
155
+ if (data?.datadir) {
156
+ dd = data.datadir;
157
+ }
158
+ return { paths: allPaths, pf: pf, dd: dd };
159
+ }
160
+ export { confDir, createConfigFileIfNotExists, dbPath, getConfigPath, processConfPath, updateConfigFile };
@@ -0,0 +1,3 @@
1
+ import { InferenceBackend } from "@agent-smith/types";
2
+ declare const localBackends: Record<string, InferenceBackend>;
3
+ export { localBackends };
package/dist/const.js ADDED
@@ -0,0 +1,10 @@
1
+ const localBackends = {
2
+ llamacpp: {
3
+ name: "llamacpp",
4
+ type: "openai",
5
+ url: "http://localhost:8080/v1",
6
+ apiKey: "",
7
+ isDefault: true,
8
+ },
9
+ };
10
+ export { localBackends };
@@ -0,0 +1,3 @@
1
+ declare let db: any;
2
+ declare function initDb(isVerbose: boolean, execSchema: boolean): void;
3
+ export { db, initDb, };
package/dist/db/db.js ADDED
@@ -0,0 +1,24 @@
1
+ // @ts-ignore
2
+ import DatabaseConstructor from "better-sqlite3";
3
+ import { schemas } from "./schemas.js";
4
+ import { createDirectoryIfNotExists } from "../utils/sys/dirs.js";
5
+ import { confDir, dbPath } from "../conf.js";
6
+ let db;
7
+ const debugDb = false;
8
+ function initDb(isVerbose, execSchema) {
9
+ //console.log("DBP", dbPath);
10
+ if (execSchema) {
11
+ createDirectoryIfNotExists(confDir, true);
12
+ db = new DatabaseConstructor(dbPath, { fileMustExist: false, verbose: debugDb ? console.log : undefined });
13
+ schemas.forEach((s) => {
14
+ db.exec(s);
15
+ if (isVerbose) {
16
+ console.log(`Schema executed: ${s}`);
17
+ }
18
+ });
19
+ }
20
+ else {
21
+ db = new DatabaseConstructor(dbPath, { fileMustExist: true });
22
+ }
23
+ }
24
+ export { db, initDb, };
@@ -0,0 +1,45 @@
1
+ import type { AliasType, FeatureSpec, FeatureType, InferenceBackend, SamplingPreset, ToolSpec, Workspace } from "@agent-smith/types";
2
+ declare function readFeaturePaths(): Array<string>;
3
+ declare function readBackends(): Record<string, InferenceBackend>;
4
+ declare function readPlugins(): Array<Record<string, string>>;
5
+ declare function readFeaturesType(type: FeatureType, innerType?: string, names?: Array<string>): Record<string, FeatureSpec>;
6
+ declare function readAllSkills(): Record<string, FeatureSpec>;
7
+ declare function readSkillsFromList(names: Array<string>): Record<string, FeatureSpec>;
8
+ declare function readFeatures(): Record<FeatureType, Record<string, FeatureSpec>>;
9
+ declare function readAliases(): Array<{
10
+ name: string;
11
+ type: AliasType;
12
+ }>;
13
+ declare function readFeature(name: string, type: FeatureType, innerType?: string): {
14
+ found: boolean;
15
+ feature: FeatureSpec;
16
+ };
17
+ declare function readTool(name: string): {
18
+ found: boolean;
19
+ tool: ToolSpec;
20
+ };
21
+ declare function readFilePaths(): Array<{
22
+ name: string;
23
+ path: string;
24
+ }>;
25
+ declare function readFilePath(name: string): {
26
+ found: boolean;
27
+ path: string;
28
+ };
29
+ declare function readAgentSettings(): Array<Record<string, any>>;
30
+ declare function readAgentSetting(name: string): {
31
+ found: boolean;
32
+ settings: Record<string, string>;
33
+ };
34
+ declare function readWorkspaces(): Array<Workspace>;
35
+ declare function readSetting(name: string): {
36
+ found: boolean;
37
+ setting: string;
38
+ };
39
+ declare function readSettings(): Record<string, any>;
40
+ declare function readSamplingPreset(name: string): {
41
+ found: boolean;
42
+ preset: SamplingPreset;
43
+ };
44
+ declare function readSamplingPresets(): Array<SamplingPreset>;
45
+ export { readAgentSettings, readAliases, readBackends, readFeature, readFeaturePaths, readFeatures, readFeaturesType, readFilePath, readFilePaths, readPlugins, readSetting, readSettings, readSkillsFromList, readAgentSetting, readTool, readWorkspaces, readSamplingPreset, readSamplingPresets, readAllSkills, };
@@ -0,0 +1,280 @@
1
+ import { db } from "./db.js";
2
+ function readFeaturePaths() {
3
+ const stmt = db.prepare("SELECT path FROM featurespath");
4
+ const data = stmt.all();
5
+ let f = new Array();
6
+ data.forEach((row) => {
7
+ f.push(row.path);
8
+ });
9
+ return f;
10
+ }
11
+ function readBackends() {
12
+ const stmt = db.prepare("SELECT name, type, url, apiKey, isdefault FROM backend");
13
+ const data = stmt.all();
14
+ const bks = {};
15
+ data.forEach((row) => {
16
+ bks[row.name] = { name: row.name, type: row.type, url: row.url, apiKey: row.apiKey, isDefault: row.isdefault === 1 };
17
+ });
18
+ return bks;
19
+ }
20
+ function readPlugins() {
21
+ const stmt = db.prepare("SELECT name, path FROM plugin");
22
+ const data = stmt.all();
23
+ let f = new Array();
24
+ data.forEach((row) => {
25
+ f.push({ name: row.name, path: row.path });
26
+ });
27
+ return f;
28
+ }
29
+ function readFeaturesType(type, innerType, names) {
30
+ let q = `SELECT name, path, ext, variables FROM ${type}`;
31
+ if (type == "agent") {
32
+ q = `SELECT name, path, ext, variables, type, category FROM ${type}`;
33
+ }
34
+ if (innerType) {
35
+ q += ` WHERE type = '${innerType}'`;
36
+ }
37
+ if (names) {
38
+ if (innerType) {
39
+ q += " AND";
40
+ }
41
+ else {
42
+ q += " WHERE";
43
+ }
44
+ let nqb = new Array();
45
+ names.forEach(n => nqb.push(`'${n}'`));
46
+ q += ` name IN (${nqb.join(",")})`;
47
+ }
48
+ //console.log("Q", q);
49
+ let stmt = db.prepare(q);
50
+ const data = stmt.all();
51
+ const res = {};
52
+ data.forEach((row) => {
53
+ const vars = row?.variables ? JSON.parse(row.variables) : undefined;
54
+ res[row.name] = {
55
+ name: row.name,
56
+ path: row.path,
57
+ ext: row.ext,
58
+ variables: vars,
59
+ };
60
+ if (type) {
61
+ res[row.name].type = row.type;
62
+ res[row.name].category = row.category;
63
+ }
64
+ });
65
+ return res;
66
+ }
67
+ /*function readSkill(name: string): { found: boolean, feature: FeatureSpec } {
68
+ const q = `SELECT name, path, ext, variables FROM skill WHERE name='${name}`;
69
+ const stmt = db.prepare(q);
70
+ const result = stmt.get() as Record<string, string>;
71
+ let res: FeatureSpec;
72
+ if (result?.id) {
73
+ const vars = result?.variables ? JSON.parse(result.variables) as Record<string, any> : {};
74
+ res = {
75
+ name: result.name,
76
+ path: result.path,
77
+ ext: result.ext as FeatureExtension,
78
+ variables: vars,
79
+ };
80
+ return { found: true, feature: res }
81
+ }
82
+ return { found: false, feature: {} as FeatureSpec }
83
+ }*/
84
+ function readAllSkills() {
85
+ const q = `SELECT name, path, ext, variables FROM skill`;
86
+ const stmt = db.prepare(q);
87
+ const data = stmt.all();
88
+ const res = {};
89
+ data.forEach((row) => {
90
+ const vars = row?.variables ? JSON.parse(row.variables) : {};
91
+ res[row.name] = {
92
+ name: row.name,
93
+ path: row.path,
94
+ ext: row.ext,
95
+ variables: vars,
96
+ };
97
+ });
98
+ return res;
99
+ }
100
+ function readSkillsFromList(names) {
101
+ if (names.length === 0)
102
+ return {};
103
+ const placeholders = names.map(() => '?').join(',');
104
+ const q = `SELECT name, path, ext, variables FROM skill WHERE name IN (${placeholders})`;
105
+ const stmt = db.prepare(q);
106
+ const data = stmt.all(...names);
107
+ const res = {};
108
+ data.forEach((row) => {
109
+ const vars = row?.variables ? JSON.parse(row.variables) : {};
110
+ res[row.name] = {
111
+ name: row.name,
112
+ path: row.path,
113
+ ext: row.ext,
114
+ variables: vars,
115
+ };
116
+ });
117
+ return res;
118
+ }
119
+ function readFeatures() {
120
+ const feats = {
121
+ action: {}, cmd: {}, workflow: {}, adaptater: {}, agent: {}, skill: {}
122
+ };
123
+ feats.agent = readFeaturesType("agent");
124
+ feats.action = readFeaturesType("action");
125
+ feats.cmd = readFeaturesType("cmd");
126
+ feats.workflow = readFeaturesType("workflow");
127
+ feats.adaptater = readFeaturesType("adaptater");
128
+ feats.skill = readFeaturesType("skill");
129
+ return feats;
130
+ }
131
+ function readAliases() {
132
+ const stmt = db.prepare("SELECT name, type FROM aliases");
133
+ const data = stmt.all();
134
+ let f = new Array();
135
+ data.forEach((row) => {
136
+ f.push({ name: row.name, type: row.type });
137
+ });
138
+ return f;
139
+ }
140
+ function readFeature(name, type, innerType) {
141
+ let q = `SELECT id, name, path, ext, variables FROM ${type} WHERE name='${name}'`;
142
+ if (innerType) {
143
+ q = q + ` AND type = '${innerType}'`;
144
+ }
145
+ const stmt = db.prepare(q);
146
+ const result = stmt.get();
147
+ if (result?.id) {
148
+ return {
149
+ found: true,
150
+ feature: {
151
+ name: result.name,
152
+ path: result.path,
153
+ ext: result.ext,
154
+ variables: result.variables ? JSON.parse(result.variables) : undefined,
155
+ }
156
+ };
157
+ }
158
+ return { found: false, feature: {} };
159
+ }
160
+ function readTool(name) {
161
+ const q = `SELECT id, name, type, spec FROM tool WHERE name='${name}'`;
162
+ const stmt = db.prepare(q);
163
+ const result = stmt.get();
164
+ //console.log("db tool", result);
165
+ if (result?.id) {
166
+ const tool = JSON.parse(result.spec);
167
+ tool.type = result.type;
168
+ return {
169
+ found: true,
170
+ tool: tool,
171
+ };
172
+ }
173
+ return { found: false, tool: {} };
174
+ }
175
+ function readFilePaths() {
176
+ const stmt1 = db.prepare("SELECT name, path FROM filepath");
177
+ const data = stmt1.all();
178
+ let f = new Array();
179
+ data.forEach((row) => {
180
+ f.push({ name: row.name, path: row.path });
181
+ });
182
+ return f;
183
+ }
184
+ function readFilePath(name) {
185
+ const q = `SELECT id, path FROM filepath WHERE name= ?`;
186
+ const stmt = db.prepare(q);
187
+ const result = stmt.get(name);
188
+ if (result?.id) {
189
+ return { found: true, path: result.path };
190
+ }
191
+ return { found: false, path: "" };
192
+ }
193
+ function readAgentSettings() {
194
+ const stmt1 = db.prepare("SELECT * FROM agentsettings ORDER BY name");
195
+ const data = stmt1.all();
196
+ return data;
197
+ }
198
+ function readAgentSetting(name) {
199
+ const q = "SELECT * FROM agentsettings WHERE name= ?";
200
+ const stmt = db.prepare(q);
201
+ const result = stmt.get(name);
202
+ if (result?.id) {
203
+ return { found: true, settings: result };
204
+ }
205
+ return { found: false, settings: {} };
206
+ }
207
+ function readWorkspaces() {
208
+ const stmt1 = db.prepare("SELECT * FROM workspace ORDER BY name");
209
+ const data = stmt1.all();
210
+ const wss = new Array();
211
+ data.forEach(row => wss.push({ name: row.name, path: row.path, props: row.props }));
212
+ return wss;
213
+ }
214
+ function readSetting(name) {
215
+ const q = "SELECT * FROM setting WHERE name= ?";
216
+ const stmt = db.prepare(q);
217
+ const result = stmt.get(name);
218
+ if (result?.id) {
219
+ return { found: true, setting: result };
220
+ }
221
+ return { found: false, setting: "" };
222
+ }
223
+ function readSettings() {
224
+ const q = "SELECT name, value FROM setting";
225
+ const stmt = db.prepare(q);
226
+ const result = stmt.all();
227
+ const st = {};
228
+ result.forEach(row => st[row.name] = row.value);
229
+ return st;
230
+ }
231
+ function readSamplingPreset(name) {
232
+ const q = "SELECT * FROM modelpreset WHERE name= ?";
233
+ const stmt = db.prepare(q);
234
+ const result = stmt.get(name);
235
+ if (result?.id) {
236
+ return {
237
+ found: true,
238
+ preset: {
239
+ name: result.name,
240
+ model: result.model,
241
+ max_tokens: result.max_tokens,
242
+ top_k: result.top_k,
243
+ top_p: result.top_p,
244
+ min_p: result.min_p,
245
+ temperature: result.temperature,
246
+ repeat_penalty: result.repeat_penalty,
247
+ presence_penalty: result.presence_penalty,
248
+ frequency_penalty: result.frequency_penalty,
249
+ backend: result.backend,
250
+ chat_template_kwargs: JSON.parse(result.chat_template_kwargs),
251
+ props: JSON.parse(result.props)
252
+ }
253
+ };
254
+ }
255
+ return { found: false, preset: {} };
256
+ }
257
+ function readSamplingPresets() {
258
+ const stmt1 = db.prepare("SELECT * FROM modelpreset ORDER BY name");
259
+ const data = stmt1.all();
260
+ const presets = new Array();
261
+ data.forEach(row => presets.push({
262
+ name: row.name,
263
+ model: row.model,
264
+ max_tokens: row.max_tokens,
265
+ top_k: row.top_k,
266
+ top_p: row.top_p,
267
+ min_p: row.min_p,
268
+ temperature: row.temperature,
269
+ repeat_penalty: row.repeat_penalty,
270
+ presence_penalty: row.presence_penalty,
271
+ frequency_penalty: row.frequency_penalty,
272
+ backend: row.backend,
273
+ chat_template_kwargs: JSON.parse(row.chat_template_kwargs),
274
+ props: JSON.parse(row.props)
275
+ }));
276
+ return presets;
277
+ }
278
+ export { readAgentSettings, readAliases, readBackends, readFeature, readFeaturePaths, readFeatures, readFeaturesType, readFilePath, readFilePaths, readPlugins, readSetting, readSettings, readSkillsFromList, readAgentSetting, readTool, readWorkspaces, readSamplingPreset, readSamplingPresets, readAllSkills,
279
+ //readSkill
280
+ };
@@ -0,0 +1,2 @@
1
+ declare const schemas: string[];
2
+ export { schemas };
@@ -0,0 +1,141 @@
1
+ const filepath = `CREATE TABLE IF NOT EXISTS filepath (
2
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
3
+ name TEXT UNIQUE NOT NULL,
4
+ path TEXT NOT NULL
5
+ );`;
6
+ const featurespath = `CREATE TABLE IF NOT EXISTS featurespath (
7
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
8
+ path TEXT NOT NULL
9
+ );`;
10
+ const plugin = `CREATE TABLE IF NOT EXISTS plugin (
11
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
12
+ name TEXT UNIQUE NOT NULL,
13
+ path TEXT NOT NULL
14
+ );`;
15
+ const agents = `CREATE TABLE IF NOT EXISTS agent (
16
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
17
+ name TEXT UNIQUE NOT NULL,
18
+ path TEXT NOT NULL,
19
+ variables TEXT,
20
+ ext TEXT NOT NULL CHECK ( ext IN ('yml') ),
21
+ type TEXT,
22
+ category TEXT
23
+ );`;
24
+ const workflow = `CREATE TABLE IF NOT EXISTS workflow (
25
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
26
+ name TEXT UNIQUE NOT NULL,
27
+ path TEXT NOT NULL,
28
+ variables TEXT,
29
+ ext TEXT NOT NULL CHECK ( ext IN ('yml') ),
30
+ type TEXT,
31
+ category TEXT
32
+ );`;
33
+ const action = `CREATE TABLE IF NOT EXISTS action (
34
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
35
+ name TEXT UNIQUE NOT NULL,
36
+ path TEXT NOT NULL,
37
+ variables TEXT,
38
+ ext TEXT NOT NULL CHECK ( ext IN ('yml', 'js', 'py') )
39
+ );`;
40
+ const adaptater = `CREATE TABLE IF NOT EXISTS adaptater (
41
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
42
+ name TEXT UNIQUE NOT NULL,
43
+ path TEXT NOT NULL,
44
+ variables TEXT,
45
+ ext TEXT NOT NULL CHECK ( ext IN ('yml', 'js', 'py') )
46
+ );`;
47
+ const skill = `CREATE TABLE IF NOT EXISTS skill (
48
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
49
+ name TEXT UNIQUE NOT NULL,
50
+ path TEXT NOT NULL,
51
+ variables TEXT,
52
+ ext TEXT NOT NULL CHECK ( ext IN ('md') )
53
+ );`;
54
+ const cmd = `CREATE TABLE IF NOT EXISTS cmd (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
56
+ name TEXT UNIQUE NOT NULL,
57
+ path TEXT NOT NULL,
58
+ variables TEXT,
59
+ ext TEXT NOT NULL CHECK ( ext IN ('js') )
60
+ );`;
61
+ const tool = `CREATE TABLE IF NOT EXISTS tool (
62
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
63
+ name TEXT UNIQUE NOT NULL,
64
+ spec TEXT NOT NULL,
65
+ type TEXT NOT NULL CHECK ( type IN ('agent', 'task', 'action', 'workflow') )
66
+ );`;
67
+ const alias = `CREATE TABLE IF NOT EXISTS aliases (
68
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
69
+ name TEXT UNIQUE NOT NULL,
70
+ type TEXT NOT NULL CHECK ( type IN ('agent', 'task', 'action', 'workflow') )
71
+ );`;
72
+ const backend = `CREATE TABLE IF NOT EXISTS backend (
73
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
74
+ name TEXT UNIQUE NOT NULL,
75
+ type TEXT CHECK ( type IN ('browser', 'openai') ),
76
+ url TEXT NOT NULL,
77
+ isdefault INTEGER NOT NULL,
78
+ apiKey TEXT
79
+ );`;
80
+ const agentSettings = `CREATE TABLE IF NOT EXISTS agentsettings (
81
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
82
+ name TEXT UNIQUE NOT NULL,
83
+ model TEXT,
84
+ max_tokens INTEGER,
85
+ top_k INTEGER,
86
+ top_p REAL,
87
+ min_p REAL,
88
+ temperature REAL,
89
+ repeat_penalty REAL,
90
+ presence_penalty REAL,
91
+ frequency_penalty REAL,
92
+ backend TEXT,
93
+ chat_template_kwargs TEXT,
94
+ props TEXT
95
+ );`;
96
+ const workspace = `CREATE TABLE IF NOT EXISTS workspace (
97
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
98
+ name TEXT UNIQUE NOT NULL,
99
+ path TEXT NOT NULL,
100
+ props TEXT
101
+ );`;
102
+ const setting = `CREATE TABLE IF NOT EXISTS setting (
103
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
104
+ name TEXT UNIQUE NOT NULL,
105
+ value TEXT NOT NULL
106
+ );`;
107
+ const samplingPresets = `CREATE TABLE IF NOT EXISTS modelpreset (
108
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
109
+ name TEXT UNIQUE NOT NULL,
110
+ model TEXT,
111
+ max_tokens INTEGER,
112
+ top_k INTEGER,
113
+ top_p REAL,
114
+ min_p REAL,
115
+ temperature REAL,
116
+ repeat_penalty REAL,
117
+ presence_penalty REAL,
118
+ frequency_penalty REAL,
119
+ backend TEXT,
120
+ chat_template_kwargs TEXT,
121
+ props TEXT
122
+ );`;
123
+ const schemas = [
124
+ filepath,
125
+ featurespath,
126
+ workflow,
127
+ action,
128
+ tool,
129
+ cmd,
130
+ plugin,
131
+ alias,
132
+ adaptater,
133
+ backend,
134
+ agentSettings,
135
+ agents,
136
+ workspace,
137
+ setting,
138
+ skill,
139
+ samplingPresets,
140
+ ];
141
+ export { schemas };