cf-claw 3.0.0
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/dist/agent.d.ts +15 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +262 -0
- package/dist/agent.js.map +1 -0
- package/dist/agents.d.ts +51 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +478 -0
- package/dist/agents.js.map +1 -0
- package/dist/api/routes.d.ts +3 -0
- package/dist/api/routes.d.ts.map +1 -0
- package/dist/api/routes.js +491 -0
- package/dist/api/routes.js.map +1 -0
- package/dist/bot.d.ts +4 -0
- package/dist/bot.d.ts.map +1 -0
- package/dist/bot.js +295 -0
- package/dist/bot.js.map +1 -0
- package/dist/canvas.d.ts +37 -0
- package/dist/canvas.d.ts.map +1 -0
- package/dist/canvas.js +47 -0
- package/dist/canvas.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +202 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands.d.ts +6 -0
- package/dist/commands.d.ts.map +1 -0
- package/dist/commands.js +384 -0
- package/dist/commands.js.map +1 -0
- package/dist/components/TaskList.d.ts +7 -0
- package/dist/components/TaskList.d.ts.map +1 -0
- package/dist/components/TaskList.js +37 -0
- package/dist/components/TaskList.js.map +1 -0
- package/dist/config/encryption.d.ts +10 -0
- package/dist/config/encryption.d.ts.map +1 -0
- package/dist/config/encryption.js +111 -0
- package/dist/config/encryption.js.map +1 -0
- package/dist/config/json-config.d.ts +114 -0
- package/dist/config/json-config.d.ts.map +1 -0
- package/dist/config/json-config.js +388 -0
- package/dist/config/json-config.js.map +1 -0
- package/dist/config.d.ts +51 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +137 -0
- package/dist/config.js.map +1 -0
- package/dist/context/pruning.d.ts +30 -0
- package/dist/context/pruning.d.ts.map +1 -0
- package/dist/context/pruning.js +132 -0
- package/dist/context/pruning.js.map +1 -0
- package/dist/dashboard/404/index.html +1 -0
- package/dist/dashboard/404.html +1 -0
- package/dist/dashboard/_next/static/chunks/117-c657912d4a6fa056.js +2 -0
- package/dist/dashboard/_next/static/chunks/191-a6922264096cb3ad.js +11 -0
- package/dist/dashboard/_next/static/chunks/343-71498a8257bc1e81.js +1 -0
- package/dist/dashboard/_next/static/chunks/app/_not-found/page-15cbe4395e02a084.js +1 -0
- package/dist/dashboard/_next/static/chunks/app/layout-191efbc962809bb4.js +1 -0
- package/dist/dashboard/_next/static/chunks/app/manual/page-3c401ecf89979cd7.js +1 -0
- package/dist/dashboard/_next/static/chunks/app/page-dff55e58941a3c4d.js +1 -0
- package/dist/dashboard/_next/static/chunks/fd9d1056-9583fa19bc194043.js +1 -0
- package/dist/dashboard/_next/static/chunks/framework-f66176bb897dc684.js +1 -0
- package/dist/dashboard/_next/static/chunks/main-2461f93106bcf687.js +1 -0
- package/dist/dashboard/_next/static/chunks/main-app-89f5ec28b3bb0e7f.js +1 -0
- package/dist/dashboard/_next/static/chunks/pages/_app-72b849fbd24ac258.js +1 -0
- package/dist/dashboard/_next/static/chunks/pages/_error-7ba65e1336b92748.js +1 -0
- package/dist/dashboard/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/dist/dashboard/_next/static/chunks/webpack-616e068a201ad621.js +1 -0
- package/dist/dashboard/_next/static/css/baff0f221c10680b.css +3 -0
- package/dist/dashboard/_next/static/pyqPyo6dkz4uTWdfdFAOJ/_buildManifest.js +1 -0
- package/dist/dashboard/_next/static/pyqPyo6dkz4uTWdfdFAOJ/_ssgManifest.js +1 -0
- package/dist/dashboard/index.html +1 -0
- package/dist/dashboard/index.txt +7 -0
- package/dist/dashboard/manual/index.html +1 -0
- package/dist/dashboard/manual/index.txt +7 -0
- package/dist/documents.d.ts +20 -0
- package/dist/documents.d.ts.map +1 -0
- package/dist/documents.js +227 -0
- package/dist/documents.js.map +1 -0
- package/dist/embeddings.d.ts +15 -0
- package/dist/embeddings.d.ts.map +1 -0
- package/dist/embeddings.js +40 -0
- package/dist/embeddings.js.map +1 -0
- package/dist/factory.d.ts +72 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +2010 -0
- package/dist/factory.js.map +1 -0
- package/dist/groups.d.ts +13 -0
- package/dist/groups.d.ts.map +1 -0
- package/dist/groups.js +42 -0
- package/dist/groups.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +223 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/taskStorage.d.ts +4 -0
- package/dist/lib/taskStorage.d.ts.map +1 -0
- package/dist/lib/taskStorage.js +28 -0
- package/dist/lib/taskStorage.js.map +1 -0
- package/dist/llm/anthropic.d.ts +13 -0
- package/dist/llm/anthropic.d.ts.map +1 -0
- package/dist/llm/anthropic.js +96 -0
- package/dist/llm/anthropic.js.map +1 -0
- package/dist/llm/failover.d.ts +13 -0
- package/dist/llm/failover.d.ts.map +1 -0
- package/dist/llm/failover.js +42 -0
- package/dist/llm/failover.js.map +1 -0
- package/dist/llm/google.d.ts +13 -0
- package/dist/llm/google.d.ts.map +1 -0
- package/dist/llm/google.js +112 -0
- package/dist/llm/google.js.map +1 -0
- package/dist/llm/groq.d.ts +8 -0
- package/dist/llm/groq.d.ts.map +1 -0
- package/dist/llm/groq.js +13 -0
- package/dist/llm/groq.js.map +1 -0
- package/dist/llm/index.d.ts +11 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +10 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/ollama.d.ts +9 -0
- package/dist/llm/ollama.d.ts.map +1 -0
- package/dist/llm/ollama.js +27 -0
- package/dist/llm/ollama.js.map +1 -0
- package/dist/llm/openai-compat.d.ts +17 -0
- package/dist/llm/openai-compat.d.ts.map +1 -0
- package/dist/llm/openai-compat.js +69 -0
- package/dist/llm/openai-compat.js.map +1 -0
- package/dist/llm/openrouter.d.ts +8 -0
- package/dist/llm/openrouter.d.ts.map +1 -0
- package/dist/llm/openrouter.js +20 -0
- package/dist/llm/openrouter.js.map +1 -0
- package/dist/llm/provider.d.ts +41 -0
- package/dist/llm/provider.d.ts.map +1 -0
- package/dist/llm/provider.js +2 -0
- package/dist/llm/provider.js.map +1 -0
- package/dist/llm/registry.d.ts +10 -0
- package/dist/llm/registry.d.ts.map +1 -0
- package/dist/llm/registry.js +90 -0
- package/dist/llm/registry.js.map +1 -0
- package/dist/llm/thinking.d.ts +7 -0
- package/dist/llm/thinking.d.ts.map +1 -0
- package/dist/llm/thinking.js +34 -0
- package/dist/llm/thinking.js.map +1 -0
- package/dist/llm.d.ts +17 -0
- package/dist/llm.d.ts.map +1 -0
- package/dist/llm.js +184 -0
- package/dist/llm.js.map +1 -0
- package/dist/logs.d.ts +11 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +54 -0
- package/dist/logs.js.map +1 -0
- package/dist/memory/knowledge-graph.d.ts +34 -0
- package/dist/memory/knowledge-graph.d.ts.map +1 -0
- package/dist/memory/knowledge-graph.js +137 -0
- package/dist/memory/knowledge-graph.js.map +1 -0
- package/dist/memory.d.ts +73 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +320 -0
- package/dist/memory.js.map +1 -0
- package/dist/mesh.d.ts +18 -0
- package/dist/mesh.d.ts.map +1 -0
- package/dist/mesh.js +120 -0
- package/dist/mesh.js.map +1 -0
- package/dist/paths.d.ts +11 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +51 -0
- package/dist/paths.js.map +1 -0
- package/dist/proactive/heartbeat.d.ts +4 -0
- package/dist/proactive/heartbeat.d.ts.map +1 -0
- package/dist/proactive/heartbeat.js +56 -0
- package/dist/proactive/heartbeat.js.map +1 -0
- package/dist/proactive/recap.d.ts +12 -0
- package/dist/proactive/recap.d.ts.map +1 -0
- package/dist/proactive/recap.js +90 -0
- package/dist/proactive/recap.js.map +1 -0
- package/dist/proactive/recommendations.d.ts +11 -0
- package/dist/proactive/recommendations.d.ts.map +1 -0
- package/dist/proactive/recommendations.js +92 -0
- package/dist/proactive/recommendations.js.map +1 -0
- package/dist/projects.d.ts +44 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +101 -0
- package/dist/projects.js.map +1 -0
- package/dist/scheduler/index.d.ts +17 -0
- package/dist/scheduler/index.d.ts.map +1 -0
- package/dist/scheduler/index.js +116 -0
- package/dist/scheduler/index.js.map +1 -0
- package/dist/sessions.d.ts +19 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +176 -0
- package/dist/sessions.js.map +1 -0
- package/dist/skills/index.d.ts +14 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +126 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/swarm.d.ts +18 -0
- package/dist/swarm.d.ts.map +1 -0
- package/dist/swarm.js +146 -0
- package/dist/swarm.js.map +1 -0
- package/dist/taskListWidget.d.ts +76 -0
- package/dist/taskListWidget.d.ts.map +1 -0
- package/dist/taskListWidget.js +312 -0
- package/dist/taskListWidget.js.map +1 -0
- package/dist/tools/browser.d.ts +5 -0
- package/dist/tools/browser.d.ts.map +1 -0
- package/dist/tools/browser.js +104 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/config-tools.d.ts +4 -0
- package/dist/tools/config-tools.d.ts.map +1 -0
- package/dist/tools/config-tools.js +154 -0
- package/dist/tools/config-tools.js.map +1 -0
- package/dist/tools/files.d.ts +3 -0
- package/dist/tools/files.d.ts.map +1 -0
- package/dist/tools/files.js +208 -0
- package/dist/tools/files.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1109 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/mcp-bridge.d.ts +5 -0
- package/dist/tools/mcp-bridge.d.ts.map +1 -0
- package/dist/tools/mcp-bridge.js +200 -0
- package/dist/tools/mcp-bridge.js.map +1 -0
- package/dist/tools/shell.d.ts +8 -0
- package/dist/tools/shell.d.ts.map +1 -0
- package/dist/tools/shell.js +78 -0
- package/dist/tools/shell.js.map +1 -0
- package/dist/tools/skills-manage.d.ts +25 -0
- package/dist/tools/skills-manage.d.ts.map +1 -0
- package/dist/tools/skills-manage.js +155 -0
- package/dist/tools/skills-manage.js.map +1 -0
- package/dist/tools/web-search.d.ts +4 -0
- package/dist/tools/web-search.d.ts.map +1 -0
- package/dist/tools/web-search.js +60 -0
- package/dist/tools/web-search.js.map +1 -0
- package/dist/tts.d.ts +6 -0
- package/dist/tts.d.ts.map +1 -0
- package/dist/tts.js +42 -0
- package/dist/tts.js.map +1 -0
- package/dist/types/task.d.ts +7 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +2 -0
- package/dist/types/task.js.map +1 -0
- package/dist/typing.d.ts +18 -0
- package/dist/typing.d.ts.map +1 -0
- package/dist/typing.js +63 -0
- package/dist/typing.js.map +1 -0
- package/dist/usage.d.ts +28 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +69 -0
- package/dist/usage.js.map +1 -0
- package/dist/voice.d.ts +6 -0
- package/dist/voice.d.ts.map +1 -0
- package/dist/voice.js +47 -0
- package/dist/voice.js.map +1 -0
- package/dist/webchat/index.d.ts +3 -0
- package/dist/webchat/index.d.ts.map +1 -0
- package/dist/webchat/index.js +3 -0
- package/dist/webchat/index.js.map +1 -0
- package/dist/webchat/public/index.html +344 -0
- package/dist/webchat/public/public/index.html +344 -0
- package/dist/webchat/public/public/task-list-widget.js +410 -0
- package/dist/webchat/public/task-list-widget.js +410 -0
- package/dist/webchat/server.d.ts +3 -0
- package/dist/webchat/server.d.ts.map +1 -0
- package/dist/webchat/server.js +80 -0
- package/dist/webchat/server.js.map +1 -0
- package/dist/webchat/ws.d.ts +4 -0
- package/dist/webchat/ws.d.ts.map +1 -0
- package/dist/webchat/ws.js +232 -0
- package/dist/webchat/ws.js.map +1 -0
- package/dist/webhooks/index.d.ts +14 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +86 -0
- package/dist/webhooks/index.js.map +1 -0
- package/package.json +53 -0
package/dist/agents.js
ADDED
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
import Database from "better-sqlite3";
|
|
2
|
+
import * as sqliteVec from "sqlite-vec";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import { embed, vecToBuffer, EMBEDDING_DIM } from "./embeddings.js";
|
|
6
|
+
import { getDataDir } from "./paths.js";
|
|
7
|
+
const DATA_DIR = getDataDir();
|
|
8
|
+
const AGENTS_DIR = path.join(DATA_DIR, "agents");
|
|
9
|
+
fs.mkdirSync(AGENTS_DIR, { recursive: true });
|
|
10
|
+
const DB_PATH = path.join(DATA_DIR, "cf-claw.db");
|
|
11
|
+
const db = new Database(DB_PATH);
|
|
12
|
+
db.pragma("journal_mode = WAL");
|
|
13
|
+
sqliteVec.load(db);
|
|
14
|
+
db.exec(`
|
|
15
|
+
CREATE TABLE IF NOT EXISTS agent_registry (
|
|
16
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
17
|
+
name TEXT NOT NULL UNIQUE,
|
|
18
|
+
role TEXT NOT NULL,
|
|
19
|
+
description TEXT,
|
|
20
|
+
system_prompt TEXT NOT NULL,
|
|
21
|
+
tools TEXT DEFAULT '[]',
|
|
22
|
+
rules TEXT DEFAULT '[]',
|
|
23
|
+
tags TEXT DEFAULT '[]',
|
|
24
|
+
team TEXT DEFAULT 'general',
|
|
25
|
+
file_path TEXT,
|
|
26
|
+
model TEXT,
|
|
27
|
+
fallback_model TEXT,
|
|
28
|
+
embedding BLOB,
|
|
29
|
+
built_in INTEGER DEFAULT 0,
|
|
30
|
+
created_at TEXT NOT NULL DEFAULT (datetime('now')),
|
|
31
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS agent_registry_vec USING vec0(
|
|
35
|
+
embedding float[${EMBEDDING_DIM}]
|
|
36
|
+
);
|
|
37
|
+
`);
|
|
38
|
+
const tableInfo = db.prepare("PRAGMA table_info(agent_registry)").all();
|
|
39
|
+
const hasModelCol = tableInfo.some((c) => c.name === "model");
|
|
40
|
+
const hasFallbackCol = tableInfo.some((c) => c.name === "fallback_model");
|
|
41
|
+
if (!hasModelCol)
|
|
42
|
+
db.exec(`ALTER TABLE agent_registry ADD COLUMN model TEXT`);
|
|
43
|
+
if (!hasFallbackCol)
|
|
44
|
+
db.exec(`ALTER TABLE agent_registry ADD COLUMN fallback_model TEXT`);
|
|
45
|
+
const insertAgent = db.prepare("INSERT INTO agent_registry (name, role, description, system_prompt, tools, rules, tags, team, file_path, model, fallback_model, embedding, built_in) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
|
46
|
+
const insertAgentVec = db.prepare("INSERT INTO agent_registry_vec (rowid, embedding) VALUES (?, ?)");
|
|
47
|
+
const getAgentByName = db.prepare("SELECT * FROM agent_registry WHERE name = ?");
|
|
48
|
+
const getAllAgents = db.prepare("SELECT id, name, role, description, tools, rules, tags, team, model, fallback_model, built_in, created_at, updated_at FROM agent_registry ORDER BY team, name");
|
|
49
|
+
const getAgentsByTeam = db.prepare("SELECT id, name, role, description, tools, rules, tags, team, model, fallback_model, built_in FROM agent_registry WHERE team = ? ORDER BY name");
|
|
50
|
+
const deleteAgentStmt = db.prepare("DELETE FROM agent_registry WHERE name = ?");
|
|
51
|
+
const deleteAgentVec = db.prepare("DELETE FROM agent_registry_vec WHERE rowid = ?");
|
|
52
|
+
const updateAgentStmt = db.prepare("UPDATE agent_registry SET role = ?, description = ?, system_prompt = ?, tools = ?, rules = ?, tags = ?, team = ?, model = ?, fallback_model = ?, embedding = ?, updated_at = datetime('now') WHERE name = ?");
|
|
53
|
+
let activeAgent = null;
|
|
54
|
+
export function getActiveAgent() {
|
|
55
|
+
return activeAgent;
|
|
56
|
+
}
|
|
57
|
+
export function setActiveAgent(name) {
|
|
58
|
+
activeAgent = name;
|
|
59
|
+
}
|
|
60
|
+
export function getActiveAgentPrompt() {
|
|
61
|
+
if (!activeAgent)
|
|
62
|
+
return null;
|
|
63
|
+
const agent = getAgent(activeAgent);
|
|
64
|
+
if (!agent) {
|
|
65
|
+
activeAgent = null;
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
let prompt = agent.systemPrompt;
|
|
69
|
+
if (agent.rules.length > 0) {
|
|
70
|
+
prompt += `\n\n## Special Rules\n${agent.rules.map((r) => `- ${r}`).join("\n")}`;
|
|
71
|
+
}
|
|
72
|
+
return prompt;
|
|
73
|
+
}
|
|
74
|
+
function rowToAgent(row) {
|
|
75
|
+
return {
|
|
76
|
+
id: row.id,
|
|
77
|
+
name: row.name,
|
|
78
|
+
role: row.role,
|
|
79
|
+
description: row.description || "",
|
|
80
|
+
systemPrompt: row.system_prompt,
|
|
81
|
+
tools: JSON.parse(row.tools || "[]"),
|
|
82
|
+
rules: JSON.parse(row.rules || "[]"),
|
|
83
|
+
tags: JSON.parse(row.tags || "[]"),
|
|
84
|
+
team: row.team || "general",
|
|
85
|
+
filePath: row.file_path || undefined,
|
|
86
|
+
model: row.model || undefined,
|
|
87
|
+
fallbackModel: row.fallback_model || undefined,
|
|
88
|
+
builtIn: row.built_in === 1,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export function getAgent(name) {
|
|
92
|
+
const row = getAgentByName.get(name.toLowerCase());
|
|
93
|
+
if (!row)
|
|
94
|
+
return null;
|
|
95
|
+
return rowToAgent(row);
|
|
96
|
+
}
|
|
97
|
+
export function listAgents(team) {
|
|
98
|
+
const rows = team
|
|
99
|
+
? getAgentsByTeam.all(team)
|
|
100
|
+
: getAllAgents.all();
|
|
101
|
+
return rows.map(rowToAgent);
|
|
102
|
+
}
|
|
103
|
+
export function getTeams() {
|
|
104
|
+
const rows = db.prepare("SELECT DISTINCT team FROM agent_registry ORDER BY team").all();
|
|
105
|
+
return rows.map((r) => r.team);
|
|
106
|
+
}
|
|
107
|
+
function writeAgentFile(agent) {
|
|
108
|
+
const teamDir = path.join(AGENTS_DIR, agent.team);
|
|
109
|
+
fs.mkdirSync(teamDir, { recursive: true });
|
|
110
|
+
const filePath = path.join(teamDir, `${agent.name.toLowerCase()}.json`);
|
|
111
|
+
const fileData = {
|
|
112
|
+
name: agent.name,
|
|
113
|
+
role: agent.role,
|
|
114
|
+
description: agent.description,
|
|
115
|
+
system_prompt: agent.systemPrompt,
|
|
116
|
+
tools: agent.tools,
|
|
117
|
+
rules: agent.rules,
|
|
118
|
+
tags: agent.tags,
|
|
119
|
+
team: agent.team,
|
|
120
|
+
};
|
|
121
|
+
fs.writeFileSync(filePath, JSON.stringify(fileData, null, 2), "utf-8");
|
|
122
|
+
return filePath;
|
|
123
|
+
}
|
|
124
|
+
export async function createAgent(name, role, systemPrompt, options = {}) {
|
|
125
|
+
const opts = {
|
|
126
|
+
description: options.description || role,
|
|
127
|
+
tools: options.tools || [],
|
|
128
|
+
rules: options.rules || [],
|
|
129
|
+
tags: options.tags || [],
|
|
130
|
+
team: options.team || "custom",
|
|
131
|
+
builtIn: options.builtIn || false,
|
|
132
|
+
model: options.model,
|
|
133
|
+
fallbackModel: options.fallbackModel,
|
|
134
|
+
};
|
|
135
|
+
const filePath = writeAgentFile({
|
|
136
|
+
name,
|
|
137
|
+
role,
|
|
138
|
+
description: opts.description,
|
|
139
|
+
systemPrompt,
|
|
140
|
+
tools: opts.tools,
|
|
141
|
+
rules: opts.rules,
|
|
142
|
+
tags: opts.tags,
|
|
143
|
+
team: opts.team,
|
|
144
|
+
builtIn: opts.builtIn,
|
|
145
|
+
});
|
|
146
|
+
const vec = await embed(`${name} ${role} ${opts.description}`);
|
|
147
|
+
const buf = vecToBuffer(vec);
|
|
148
|
+
const existing = getAgentByName.get(name.toLowerCase());
|
|
149
|
+
if (existing) {
|
|
150
|
+
updateAgentStmt.run(role, opts.description, systemPrompt, JSON.stringify(opts.tools), JSON.stringify(opts.rules), JSON.stringify(opts.tags), opts.team, opts.model || null, opts.fallbackModel || null, buf, name.toLowerCase());
|
|
151
|
+
const updated = getAgentByName.get(name.toLowerCase());
|
|
152
|
+
return rowToAgent(updated);
|
|
153
|
+
}
|
|
154
|
+
const result = insertAgent.run(name.toLowerCase(), role, opts.description, systemPrompt, JSON.stringify(opts.tools), JSON.stringify(opts.rules), JSON.stringify(opts.tags), opts.team, filePath, opts.model || null, opts.fallbackModel || null, buf, opts.builtIn ? 1 : 0);
|
|
155
|
+
const rowid = Number(result.lastInsertRowid);
|
|
156
|
+
insertAgentVec.run(BigInt(rowid), buf);
|
|
157
|
+
return {
|
|
158
|
+
id: rowid,
|
|
159
|
+
name: name.toLowerCase(),
|
|
160
|
+
role,
|
|
161
|
+
description: opts.description,
|
|
162
|
+
systemPrompt,
|
|
163
|
+
tools: opts.tools,
|
|
164
|
+
rules: opts.rules,
|
|
165
|
+
tags: opts.tags,
|
|
166
|
+
team: opts.team,
|
|
167
|
+
filePath,
|
|
168
|
+
model: opts.model,
|
|
169
|
+
fallbackModel: opts.fallbackModel,
|
|
170
|
+
builtIn: opts.builtIn,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export function deleteAgent(name) {
|
|
174
|
+
const row = getAgentByName.get(name.toLowerCase());
|
|
175
|
+
if (!row)
|
|
176
|
+
return false;
|
|
177
|
+
if (row.file_path) {
|
|
178
|
+
try {
|
|
179
|
+
fs.unlinkSync(row.file_path);
|
|
180
|
+
}
|
|
181
|
+
catch { }
|
|
182
|
+
}
|
|
183
|
+
deleteAgentStmt.run(name.toLowerCase());
|
|
184
|
+
deleteAgentVec.run(row.id);
|
|
185
|
+
if (activeAgent === name.toLowerCase()) {
|
|
186
|
+
activeAgent = null;
|
|
187
|
+
}
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
export function updateAgentModel(name, model, fallbackModel) {
|
|
191
|
+
const row = getAgentByName.get(name.toLowerCase());
|
|
192
|
+
if (!row)
|
|
193
|
+
return null;
|
|
194
|
+
db.prepare("UPDATE agent_registry SET model = ?, fallback_model = ?, updated_at = datetime('now') WHERE name = ?")
|
|
195
|
+
.run(model, fallbackModel, name.toLowerCase());
|
|
196
|
+
const updated = getAgentByName.get(name.toLowerCase());
|
|
197
|
+
return rowToAgent(updated);
|
|
198
|
+
}
|
|
199
|
+
export async function searchAgents(query, limit = 10) {
|
|
200
|
+
const queryVec = await embed(query);
|
|
201
|
+
const queryBuf = vecToBuffer(queryVec);
|
|
202
|
+
const vecResults = db.prepare("SELECT rowid, distance FROM agent_registry_vec WHERE embedding MATCH ? ORDER BY distance LIMIT ?").all(queryBuf, limit);
|
|
203
|
+
const results = [];
|
|
204
|
+
for (const r of vecResults) {
|
|
205
|
+
const row = db.prepare("SELECT * FROM agent_registry WHERE id = ?").get(r.rowid);
|
|
206
|
+
if (row)
|
|
207
|
+
results.push(rowToAgent(row));
|
|
208
|
+
}
|
|
209
|
+
return results;
|
|
210
|
+
}
|
|
211
|
+
const SEED_AGENTS = [
|
|
212
|
+
{
|
|
213
|
+
name: "Alex",
|
|
214
|
+
role: "Research Specialist",
|
|
215
|
+
description: "Research trending topics, competitor updates, market opportunities with verified sources",
|
|
216
|
+
system_prompt: "You are Alex, a deep research specialist for AgentOS – a productivity platform for modern remote teams. Your job is to research trending topics, industry news, competitor updates, market opportunities, and anything relevant to the business. Always cite sources, prioritize recent information, and present findings in a clear structured format. Never guess – only report what you can verify.",
|
|
217
|
+
tools: ["web_search", "browser", "recall", "search_conversations", "doc_search", "doc_read"],
|
|
218
|
+
rules: ["Always search the web before responding", "Provide a minimum of 5 results per research task", "Cite all sources with links"],
|
|
219
|
+
tags: ["research", "trends", "competitors"],
|
|
220
|
+
team: "content",
|
|
221
|
+
model: "gpt-4o-mini",
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
name: "Maya",
|
|
225
|
+
role: "Content Writer",
|
|
226
|
+
description: "SEO-optimized blog posts, newsletters, social media captions, and lead magnets",
|
|
227
|
+
system_prompt: "You are Maya, a professional content writer for AgentOS. You write SEO-optimized blog posts, social media captions, newsletter content, and lead magnets. Your tone is warm, informative, empowering, and authentic. Always write in clear English unless asked otherwise. Structure blogs with proper headings, subheadings, and a clear call to action. Minimum blog length is 800 words unless specified otherwise.",
|
|
228
|
+
tools: ["web_search", "recall", "doc_save", "doc_read", "doc_search"],
|
|
229
|
+
rules: ["Always ask for the target keyword before writing a blog", "Never publish without a meta description and SEO title"],
|
|
230
|
+
tags: ["writing", "seo", "content"],
|
|
231
|
+
team: "content",
|
|
232
|
+
model: "gpt-4o-mini",
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: "Jordan",
|
|
236
|
+
role: "Marketing Strategist",
|
|
237
|
+
description: "Marketing strategies, social media calendars, ad copy, email campaigns, growth tactics",
|
|
238
|
+
system_prompt: "You are Jordan, a digital marketing strategist for AgentOS. Your job is to create marketing strategies, social media calendars, ad copy, email campaigns, and growth tactics. You focus on organic growth first, then paid strategies. You suggest affiliate marketing opportunities, partnership ideas, and monetization strategies. Always prioritize community trust over aggressive selling.",
|
|
239
|
+
tools: ["web_search", "recall", "doc_save", "doc_search"],
|
|
240
|
+
rules: ["Always provide a 30/60/90 day action plan when asked for strategy", "Suggest at least 3 monetization ideas per session"],
|
|
241
|
+
tags: ["marketing", "growth", "monetization"],
|
|
242
|
+
team: "content",
|
|
243
|
+
model: "gpt-4o-mini",
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
name: "Sam",
|
|
247
|
+
role: "Social Media Manager",
|
|
248
|
+
description: "Platform-specific posts for Instagram, Facebook, LinkedIn, TikTok with hashtag strategies",
|
|
249
|
+
system_prompt: "You are Sam, a social media manager for AgentOS. You create engaging posts for Instagram, Facebook, LinkedIn, and TikTok. You understand carousel formats, reels scripts, hashtag strategies, and posting schedules. Your tone is vibrant and community-focused. Suggest trending formats and hooks that drive engagement and follower growth.",
|
|
250
|
+
tools: ["web_search", "recall", "doc_save"],
|
|
251
|
+
rules: ["Always provide hashtags with every post", "Deliver content in platform-specific formats", "Suggest a posting time for each piece of content"],
|
|
252
|
+
tags: ["social-media", "instagram", "tiktok", "linkedin"],
|
|
253
|
+
team: "content",
|
|
254
|
+
model: "gpt-4o-mini",
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
name: "Fredrix",
|
|
258
|
+
role: "Product Manager",
|
|
259
|
+
description: "Define the what and why. User Stories, backlog prioritization, acceptance criteria",
|
|
260
|
+
system_prompt: "You are Fredrix, the Product Manager. Your role is to define the 'what' and the 'why.' You translate business goals into User Stories, prioritize the backlog, and ensure the team builds features that provide maximum value to AgentOS users.",
|
|
261
|
+
tools: ["recall", "doc_save", "doc_read", "doc_search", "search_conversations"],
|
|
262
|
+
rules: ["Always create a clear Acceptance Criteria (AC) list for every task", "Prioritize tasks using the MoSCoW method (Must-have, Should-have, Could-have, Won't-have)"],
|
|
263
|
+
tags: ["product", "backlog", "user-stories"],
|
|
264
|
+
team: "strategy",
|
|
265
|
+
model: "glm-5.1",
|
|
266
|
+
fallback_model: "gpt-4o-mini",
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
name: "Stoffe",
|
|
270
|
+
role: "Systems Architect",
|
|
271
|
+
description: "Technical infrastructure, tech stack selection, scalable cloud-native solutions",
|
|
272
|
+
system_prompt: "You are Stoffe. You design the technical infrastructure and select the appropriate tech stack. You ensure the system is scalable, secure, and follows best practices for microservices and cloud-native solutions.",
|
|
273
|
+
tools: ["web_search", "recall", "doc_save", "doc_read", "shell"],
|
|
274
|
+
rules: ["Provide a high-level system flow diagram (using Mermaid code) before any development begins"],
|
|
275
|
+
tags: ["architecture", "infrastructure", "cloud"],
|
|
276
|
+
team: "strategy",
|
|
277
|
+
model: "deepseek-reasoner",
|
|
278
|
+
fallback_model: "glm-5.1",
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
name: "Ulla",
|
|
282
|
+
role: "UX/UI Designer",
|
|
283
|
+
description: "User experience, wireframes, design specs, accessibility, Tailwind CSS",
|
|
284
|
+
system_prompt: "You are Ulla. You focus on user experience and visual interfaces. You create wireframes and design specifications with a focus on accessibility and modern aesthetics using Tailwind CSS principles.",
|
|
285
|
+
tools: ["web_search", "doc_save", "doc_read", "canvas_render"],
|
|
286
|
+
rules: ["Always define color palettes, spacing scales, and component variants before the Dev team starts building"],
|
|
287
|
+
tags: ["design", "ux", "ui", "tailwind"],
|
|
288
|
+
team: "design",
|
|
289
|
+
model: "llama-3.3-70b-versatile",
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
name: "Chris",
|
|
293
|
+
role: "Fullstack Generalist",
|
|
294
|
+
description: "Allround fullstack developer, React/Node/PostgreSQL, cost-effective solutions",
|
|
295
|
+
system_prompt: "You are Chris, a full stack web developer assistant. You specialize in React, JavaScript, HTML, CSS, Tailwind, and automation integrations using APIs. You write clean, efficient, well-commented code. When given a task, take action autonomously and make decisions for routine operations. Suggest the most cost-effective technical solutions. Always recommend free solutions first.",
|
|
296
|
+
tools: ["shell", "file_read", "file_write", "web_search", "doc_save", "doc_read", "doc_search", "canvas_render"],
|
|
297
|
+
rules: ["Break tasks into small steps before coding", "Make decisions autonomously for routine development tasks", "Never suggest paid tools if a free alternative exists"],
|
|
298
|
+
tags: ["fullstack", "react", "javascript", "general"],
|
|
299
|
+
team: "development",
|
|
300
|
+
model: "glm-5.1",
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
name: "Fia",
|
|
304
|
+
role: "Frontend Developer",
|
|
305
|
+
description: "React, Next.js, Tailwind specialist. Responsive, high-performance UI code",
|
|
306
|
+
system_prompt: "You are Fia, a specialist in React, Next.js, and Tailwind. You turn Ulla's designs into responsive, high-performance code. You focus on state management and client-side optimization.",
|
|
307
|
+
tools: ["shell", "file_read", "file_write", "web_search", "doc_save", "doc_read", "canvas_render"],
|
|
308
|
+
rules: ["All code must be TypeScript-based", "Follow component-driven development patterns"],
|
|
309
|
+
tags: ["frontend", "react", "nextjs", "tailwind", "typescript"],
|
|
310
|
+
team: "development",
|
|
311
|
+
model: "qwen/qwen3-coder:free",
|
|
312
|
+
fallback_model: "deepseek-chat",
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
name: "Benny",
|
|
316
|
+
role: "Backend Developer",
|
|
317
|
+
description: "Robust APIs, PostgreSQL/Redis, core business logic, secure data flows",
|
|
318
|
+
system_prompt: "You are Benny. You build robust APIs, manage databases (PostgreSQL/Redis), and write core business logic. You ensure data flows securely and efficiently between the server and the client.",
|
|
319
|
+
tools: ["shell", "file_read", "file_write", "web_search", "doc_save", "doc_read", "doc_search"],
|
|
320
|
+
rules: ["Document all API endpoints according to OpenAPI/Swagger standards"],
|
|
321
|
+
tags: ["backend", "api", "postgresql", "redis"],
|
|
322
|
+
team: "development",
|
|
323
|
+
model: "qwen/qwen3-coder:free",
|
|
324
|
+
fallback_model: "deepseek-chat",
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: "Ivan",
|
|
328
|
+
role: "API & Automation Specialist",
|
|
329
|
+
description: "External integrations (Stripe, Slack, OpenAI), webhooks, resilient connections",
|
|
330
|
+
system_prompt: "You are Ivan. You connect AgentOS with external services (Stripe, Slack, OpenAI, etc.). You build webhooks and ensure third-party integrations are stable and resilient.",
|
|
331
|
+
tools: ["shell", "file_read", "file_write", "web_search", "doc_save", "doc_read"],
|
|
332
|
+
rules: ["Always create an error-handling plan (including retry logic) for every new integration"],
|
|
333
|
+
tags: ["integrations", "api", "webhooks", "automation"],
|
|
334
|
+
team: "development",
|
|
335
|
+
model: "gpt-4o-mini",
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
name: "Tess",
|
|
339
|
+
role: "QA Engineer",
|
|
340
|
+
description: "Unit tests, integration tests, manual smoke testing, edge case coverage",
|
|
341
|
+
system_prompt: "You are Tess. Your job is to find bugs before the users do. You write unit tests, integration tests, and perform manual smoke testing on new builds.",
|
|
342
|
+
tools: ["shell", "file_read", "file_write", "doc_save"],
|
|
343
|
+
rules: ["Never give 'Green Light' for a release without listing at least 3 edge cases you have specifically tested"],
|
|
344
|
+
tags: ["testing", "qa", "quality"],
|
|
345
|
+
team: "quality",
|
|
346
|
+
model: "nvidia/nemotron-3-super-120b-a12b:free",
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
name: "Sara",
|
|
350
|
+
role: "Security Specialist",
|
|
351
|
+
description: "Security audits, auth flows (Auth0/JWT), GDPR compliance, vulnerability scanning",
|
|
352
|
+
system_prompt: "You are Sara. You audit code for vulnerabilities, handle authentication flows (Auth0/JWT), and ensure AgentOS complies with GDPR and industry security standards.",
|
|
353
|
+
tools: ["shell", "file_read", "web_search", "doc_save", "doc_read"],
|
|
354
|
+
rules: ["Perform a 'Security Audit' on every new architecture design before it moves to production"],
|
|
355
|
+
tags: ["security", "gdpr", "auth", "audit"],
|
|
356
|
+
team: "quality",
|
|
357
|
+
model: "llama-3.3-70b-versatile",
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
name: "Dan",
|
|
361
|
+
role: "DevOps & Infrastructure",
|
|
362
|
+
description: "CI/CD pipelines, Docker, cloud environments (AWS/Vercel), env management",
|
|
363
|
+
system_prompt: "You are Dan. You manage CI/CD pipelines, Docker containers, and cloud environments (AWS/Vercel). You ensure the 'Build' is always healthy and that environment variables are securely managed.",
|
|
364
|
+
tools: ["shell", "file_read", "file_write", "doc_save"],
|
|
365
|
+
rules: ["Automate everything. If a manual process takes more than 5 minutes, build a script to handle it"],
|
|
366
|
+
tags: ["devops", "docker", "aws", "vercel", "cicd"],
|
|
367
|
+
team: "operations",
|
|
368
|
+
model: "stepfun/step-3.5-flash:free",
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
name: "Stig",
|
|
372
|
+
role: "Release Manager",
|
|
373
|
+
description: "Deploy to production, release notes, SemVer, rollback plans",
|
|
374
|
+
system_prompt: "You are Stig. You hold the button for 'Deploy to Production.' You write Release Notes, coordinate versioning (SemVer), and manage internal communication during deployments.",
|
|
375
|
+
tools: ["shell", "doc_save", "doc_read"],
|
|
376
|
+
rules: ["Always create a 'Rollback Plan' for every release in case of critical production failures"],
|
|
377
|
+
tags: ["release", "deploy", "semver", "rollback"],
|
|
378
|
+
team: "operations",
|
|
379
|
+
model: "stepfun/step-3.5-flash:free",
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
name: "Sune",
|
|
383
|
+
role: "Customer Success & Support",
|
|
384
|
+
description: "Gather user feedback, log production bugs, bridge between users and product team",
|
|
385
|
+
system_prompt: "You are Sune. You gather feedback from end-users, log bugs found in production, and help users understand new features. You are the bridge between the users and the product team.",
|
|
386
|
+
tools: ["recall", "search_conversations", "doc_save", "doc_read", "doc_search"],
|
|
387
|
+
rules: ["Translate technical issues into actionable feedback for Product Fredrix to include in the next sprint"],
|
|
388
|
+
tags: ["support", "feedback", "users"],
|
|
389
|
+
team: "support",
|
|
390
|
+
model: "llama-3.1-8b-instant",
|
|
391
|
+
},
|
|
392
|
+
];
|
|
393
|
+
export async function seedAgents() {
|
|
394
|
+
let seeded = 0;
|
|
395
|
+
let updated = 0;
|
|
396
|
+
for (const def of SEED_AGENTS) {
|
|
397
|
+
const name = def.name.toLowerCase();
|
|
398
|
+
const teamDir = path.join(AGENTS_DIR, def.team || "general");
|
|
399
|
+
fs.mkdirSync(teamDir, { recursive: true });
|
|
400
|
+
const filePath = path.join(teamDir, `${name}.json`);
|
|
401
|
+
if (!fs.existsSync(filePath)) {
|
|
402
|
+
fs.writeFileSync(filePath, JSON.stringify(def, null, 2), "utf-8");
|
|
403
|
+
}
|
|
404
|
+
const existing = getAgentByName.get(name);
|
|
405
|
+
if (!existing) {
|
|
406
|
+
const vec = await embed(`${def.name} ${def.role || ""} ${def.description || ""}`);
|
|
407
|
+
const buf = vecToBuffer(vec);
|
|
408
|
+
const result = insertAgent.run(name, def.role || "Agent", def.description || "", def.system_prompt || "", JSON.stringify(def.tools || []), JSON.stringify(def.rules || []), JSON.stringify(def.tags || []), def.team || "general", filePath, def.model || null, def.fallback_model || null, buf, 1);
|
|
409
|
+
const rowid = Number(result.lastInsertRowid);
|
|
410
|
+
insertAgentVec.run(BigInt(rowid), buf);
|
|
411
|
+
seeded++;
|
|
412
|
+
}
|
|
413
|
+
else if (existing.built_in === 1) {
|
|
414
|
+
const seedModel = def.model || null;
|
|
415
|
+
const seedFallback = def.fallback_model || null;
|
|
416
|
+
const currentModel = existing.model || null;
|
|
417
|
+
const currentFallback = existing.fallback_model || null;
|
|
418
|
+
if (currentModel === null && currentFallback === null && (seedModel !== null || seedFallback !== null)) {
|
|
419
|
+
db.prepare("UPDATE agent_registry SET model = ?, fallback_model = ?, updated_at = datetime('now') WHERE name = ? AND built_in = 1").run(seedModel, seedFallback, name);
|
|
420
|
+
updated++;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
if (seeded > 0 || updated > 0) {
|
|
425
|
+
console.log(`📋 Seeded ${seeded} new, updated models for ${updated} existing built-in agents`);
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
export function loadAgentsFromDisk() {
|
|
429
|
+
if (!fs.existsSync(AGENTS_DIR))
|
|
430
|
+
return 0;
|
|
431
|
+
let loaded = 0;
|
|
432
|
+
const teamDirs = fs.readdirSync(AGENTS_DIR);
|
|
433
|
+
for (const team of teamDirs) {
|
|
434
|
+
const teamPath = path.join(AGENTS_DIR, team);
|
|
435
|
+
if (!fs.statSync(teamPath).isDirectory())
|
|
436
|
+
continue;
|
|
437
|
+
const files = fs.readdirSync(teamPath).filter((f) => f.endsWith(".json"));
|
|
438
|
+
for (const file of files) {
|
|
439
|
+
try {
|
|
440
|
+
const content = fs.readFileSync(path.join(teamPath, file), "utf-8");
|
|
441
|
+
const parsed = JSON.parse(content);
|
|
442
|
+
if (!parsed?.name || !parsed?.system_prompt)
|
|
443
|
+
continue;
|
|
444
|
+
const name = parsed.name.toLowerCase();
|
|
445
|
+
const existing = getAgentByName.get(name);
|
|
446
|
+
if (existing)
|
|
447
|
+
continue;
|
|
448
|
+
const vec = pseudoEmbed(`${parsed.name} ${parsed.role || ""} ${parsed.description || ""}`);
|
|
449
|
+
const agentTeam = parsed.team || team;
|
|
450
|
+
const result = insertAgent.run(name, parsed.role || "Agent", parsed.description || "", parsed.system_prompt, JSON.stringify(parsed.tools || []), JSON.stringify(parsed.rules || []), JSON.stringify(parsed.tags || []), agentTeam, path.join(teamPath, file), vec, 0);
|
|
451
|
+
const rowid = Number(result.lastInsertRowid);
|
|
452
|
+
insertAgentVec.run(BigInt(rowid), vec);
|
|
453
|
+
loaded++;
|
|
454
|
+
}
|
|
455
|
+
catch (err) {
|
|
456
|
+
console.warn(`📋 Failed to load agent ${file}: ${err instanceof Error ? err.message : err}`);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
if (loaded > 0) {
|
|
461
|
+
console.log(`📋 Loaded ${loaded} custom agents from disk`);
|
|
462
|
+
}
|
|
463
|
+
return loaded;
|
|
464
|
+
}
|
|
465
|
+
function pseudoEmbed(text) {
|
|
466
|
+
const arr = new Float32Array(EMBEDDING_DIM);
|
|
467
|
+
for (let i = 0; i < EMBEDDING_DIM; i++) {
|
|
468
|
+
arr[i] = Math.sin(text.charCodeAt(i % text.length) * (i + 1) * 0.001);
|
|
469
|
+
}
|
|
470
|
+
const norm = Math.sqrt(arr.reduce((s, v) => s + v * v, 0));
|
|
471
|
+
for (let i = 0; i < EMBEDDING_DIM; i++) {
|
|
472
|
+
arr[i] /= norm;
|
|
473
|
+
}
|
|
474
|
+
return vecToBuffer(arr);
|
|
475
|
+
}
|
|
476
|
+
export { SEED_AGENTS };
|
|
477
|
+
process.on("exit", () => db.close());
|
|
478
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/api/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAmC,MAAM,WAAW,CAAC;AAwdzE,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA6C1D"}
|