@bottensor/framework 0.1.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.js ADDED
@@ -0,0 +1,306 @@
1
+ import { OpenAIProvider } from "./provider.js";
2
+ import { loadSkill, loadSkillsFromDir, buildSkillSummary, buildSkillContext, collectTools } from "./skills.js";
3
+ import { MarkdownMemory } from "./memory.js";
4
+ const MAX_TOOL_ROUNDS = 10;
5
+ /**
6
+ * The core agent runtime.
7
+ *
8
+ * Usage:
9
+ * ```ts
10
+ * import { Agent } from "@bottensor/framework";
11
+ *
12
+ * const agent = new Agent({
13
+ * name: "my-agent",
14
+ * systemPrompt: "You are a helpful assistant.",
15
+ * provider: { name: "venice", apiKey: "...", baseUrl: "https://api.venice.ai/api/v1", defaultModel: "qwen3-4b" },
16
+ * skillsDir: "./skills",
17
+ * });
18
+ *
19
+ * const result = await agent.chat("Hello!");
20
+ * console.log(result.response);
21
+ * ```
22
+ */
23
+ export class Agent {
24
+ name;
25
+ provider;
26
+ model;
27
+ systemPrompt;
28
+ skills = [];
29
+ toolHandlers = new Map();
30
+ memory;
31
+ history = [];
32
+ config;
33
+ maxReasoningSteps;
34
+ constructor(config) {
35
+ this.config = config;
36
+ this.name = config.name;
37
+ this.systemPrompt = config.systemPrompt;
38
+ this.model = config.model ?? config.provider.defaultModel;
39
+ this.maxReasoningSteps = config.maxReasoningSteps ?? 0;
40
+ // Initialize provider
41
+ this.provider = new OpenAIProvider(config.provider);
42
+ // Initialize memory
43
+ if (config.memory === false) {
44
+ this.memory = null;
45
+ }
46
+ else if (config.memory) {
47
+ this.memory = config.memory;
48
+ }
49
+ else {
50
+ this.memory = new MarkdownMemory(config.memoryDir);
51
+ }
52
+ // Load skills
53
+ this.loadSkills();
54
+ // Register tool handlers
55
+ if (config.toolHandlers) {
56
+ for (const [name, handler] of Object.entries(config.toolHandlers)) {
57
+ this.toolHandlers.set(name, handler);
58
+ }
59
+ }
60
+ }
61
+ /** Use a custom provider instance */
62
+ useProvider(provider) {
63
+ this.provider = provider;
64
+ return this;
65
+ }
66
+ /** Register a tool handler */
67
+ tool(name, handler) {
68
+ this.toolHandlers.set(name, handler);
69
+ return this;
70
+ }
71
+ /** Add a skill at runtime */
72
+ addSkill(skill) {
73
+ this.skills.push(skill);
74
+ return this;
75
+ }
76
+ /** Load a skill from a file path */
77
+ loadSkillFile(path) {
78
+ this.skills.push(loadSkill(path));
79
+ return this;
80
+ }
81
+ /** Get conversation history */
82
+ getHistory() {
83
+ return [...this.history];
84
+ }
85
+ /** Clear conversation history */
86
+ clearHistory() {
87
+ this.history = [];
88
+ }
89
+ /** Get the memory store */
90
+ getMemory() {
91
+ return this.memory;
92
+ }
93
+ /**
94
+ * Send a message to the agent and get a response.
95
+ * Handles tool calling loops, memory retrieval, and skill injection.
96
+ */
97
+ async chat(message) {
98
+ const startTime = Date.now();
99
+ const allToolCalls = [];
100
+ let totalUsage = { promptTokens: 0, completionTokens: 0, totalTokens: 0, llmCalls: 0 };
101
+ // ── Build system prompt with skills + memory ────────
102
+ let fullSystemPrompt = this.systemPrompt;
103
+ // Inject skill summaries
104
+ if (this.skills.length > 0) {
105
+ fullSystemPrompt += buildSkillSummary(this.skills);
106
+ // Inject full skill content for all loaded skills
107
+ for (const skill of this.skills) {
108
+ fullSystemPrompt += buildSkillContext(skill);
109
+ }
110
+ }
111
+ // Inject memory context
112
+ if (this.memory) {
113
+ try {
114
+ const memories = await this.memory.search(message, 5);
115
+ if (memories.length > 0) {
116
+ fullSystemPrompt += "\n\n<memory>\nRelevant memories from previous conversations:\n";
117
+ for (const m of memories) {
118
+ fullSystemPrompt += `- [${m.type}] ${m.content}\n`;
119
+ }
120
+ fullSystemPrompt += "</memory>\n";
121
+ }
122
+ }
123
+ catch {
124
+ // Memory retrieval failure is non-fatal
125
+ }
126
+ }
127
+ // ── Build messages ──────────────────────────────────
128
+ const messages = [
129
+ { role: "system", content: fullSystemPrompt },
130
+ ...this.history,
131
+ { role: "user", content: message },
132
+ ];
133
+ // Apply beforeRequest hook
134
+ let processedMessages = messages;
135
+ const tools = this.getAllTools();
136
+ if (this.config.hooks?.beforeRequest) {
137
+ processedMessages = await this.config.hooks.beforeRequest(messages, tools);
138
+ }
139
+ // ── LLM call loop (handles tool calls) ──────────────
140
+ let response;
141
+ let rounds = 0;
142
+ while (true) {
143
+ const request = {
144
+ model: this.model,
145
+ messages: processedMessages,
146
+ temperature: this.config.temperature,
147
+ maxTokens: this.config.maxTokens,
148
+ tools: tools.length > 0 ? tools : undefined,
149
+ };
150
+ response = await this.provider.chat(request);
151
+ totalUsage.promptTokens += response.usage.promptTokens;
152
+ totalUsage.completionTokens += response.usage.completionTokens;
153
+ totalUsage.totalTokens += response.usage.totalTokens;
154
+ totalUsage.llmCalls++;
155
+ // Apply afterResponse hook
156
+ if (this.config.hooks?.afterResponse) {
157
+ response = await this.config.hooks.afterResponse(response);
158
+ }
159
+ // If no tool calls, we're done
160
+ if (!response.toolCalls || response.toolCalls.length === 0) {
161
+ break;
162
+ }
163
+ // Guard against infinite tool loops
164
+ rounds++;
165
+ if (rounds >= MAX_TOOL_ROUNDS) {
166
+ break;
167
+ }
168
+ // Add assistant message with tool calls
169
+ processedMessages.push({
170
+ role: "assistant",
171
+ content: response.content || "",
172
+ });
173
+ // Execute tool calls
174
+ for (const tc of response.toolCalls) {
175
+ let args;
176
+ try {
177
+ args = JSON.parse(tc.function.arguments);
178
+ }
179
+ catch {
180
+ args = {};
181
+ }
182
+ // Apply beforeToolCall hook
183
+ if (this.config.hooks?.beforeToolCall) {
184
+ args = await this.config.hooks.beforeToolCall(tc.function.name, args);
185
+ }
186
+ let result;
187
+ const handler = this.toolHandlers.get(tc.function.name);
188
+ if (handler) {
189
+ try {
190
+ const output = await handler(args);
191
+ result = { toolCallId: tc.id, content: output };
192
+ }
193
+ catch (err) {
194
+ result = {
195
+ toolCallId: tc.id,
196
+ content: `Error: ${err.message}`,
197
+ isError: true,
198
+ };
199
+ }
200
+ }
201
+ else {
202
+ result = {
203
+ toolCallId: tc.id,
204
+ content: `Error: No handler registered for tool "${tc.function.name}"`,
205
+ isError: true,
206
+ };
207
+ }
208
+ // Apply afterToolCall hook
209
+ if (this.config.hooks?.afterToolCall) {
210
+ result = await this.config.hooks.afterToolCall(tc.function.name, result);
211
+ }
212
+ allToolCalls.push({ name: tc.function.name, args, result: result.content });
213
+ processedMessages.push({
214
+ role: "tool",
215
+ content: result.content,
216
+ toolCallId: tc.id,
217
+ });
218
+ }
219
+ }
220
+ const finalResponse = response.content;
221
+ // ── Update history ──────────────────────────────────
222
+ this.history.push({ role: "user", content: message });
223
+ this.history.push({ role: "assistant", content: finalResponse });
224
+ // ── Store memory ────────────────────────────────────
225
+ if (this.memory) {
226
+ try {
227
+ await this.memory.add({
228
+ content: `User: ${message.slice(0, 500)}\nAssistant: ${finalResponse.slice(0, 500)}`,
229
+ type: "conversation",
230
+ });
231
+ }
232
+ catch {
233
+ // Non-fatal
234
+ }
235
+ }
236
+ return {
237
+ response: finalResponse,
238
+ messages: processedMessages,
239
+ toolCalls: allToolCalls,
240
+ usage: totalUsage,
241
+ duration: Date.now() - startTime,
242
+ };
243
+ }
244
+ /**
245
+ * Run a one-shot completion (no history, no memory).
246
+ */
247
+ async run(prompt, systemPrompt) {
248
+ const messages = [
249
+ { role: "system", content: systemPrompt ?? this.systemPrompt },
250
+ { role: "user", content: prompt },
251
+ ];
252
+ const response = await this.provider.chat({
253
+ model: this.model,
254
+ messages,
255
+ temperature: this.config.temperature,
256
+ maxTokens: this.config.maxTokens,
257
+ });
258
+ return response.content;
259
+ }
260
+ // ── Private helpers ───────────────────────────────────
261
+ loadSkills() {
262
+ // Load from explicit skill list
263
+ if (this.config.skills) {
264
+ for (const s of this.config.skills) {
265
+ if (typeof s === "string") {
266
+ try {
267
+ this.skills.push(loadSkill(s));
268
+ }
269
+ catch (err) {
270
+ console.warn(`[agent] Failed to load skill from ${s}: ${err.message}`);
271
+ }
272
+ }
273
+ else {
274
+ this.skills.push(s);
275
+ }
276
+ }
277
+ }
278
+ // Auto-discover from skillsDir
279
+ if (this.config.skillsDir) {
280
+ const discovered = loadSkillsFromDir(this.config.skillsDir);
281
+ this.skills.push(...discovered);
282
+ }
283
+ }
284
+ getAllTools() {
285
+ // Collect tools from skills
286
+ const skillTools = collectTools(this.skills);
287
+ // Collect tools from registered handlers that aren't already defined by skills
288
+ const skillToolNames = new Set(skillTools.map((t) => t.function.name));
289
+ const handlerTools = [];
290
+ for (const [name] of this.toolHandlers) {
291
+ if (!skillToolNames.has(name)) {
292
+ // Auto-generate a minimal tool def for handlers without skill definitions
293
+ handlerTools.push({
294
+ type: "function",
295
+ function: {
296
+ name,
297
+ description: `Execute the ${name} tool`,
298
+ parameters: { type: "object", properties: {} },
299
+ },
300
+ });
301
+ }
302
+ }
303
+ return [...skillTools, ...handlerTools];
304
+ }
305
+ }
306
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,273 @@
1
+ #!/usr/bin/env node
2
+ import { readFileSync, existsSync, mkdirSync, writeFileSync } from "node:fs";
3
+ import { join, resolve } from "node:path";
4
+ import { createInterface } from "node:readline";
5
+ import { parse as parseYaml } from "yaml";
6
+ import { Agent } from "./agent.js";
7
+ const AGENT_CONFIG_FILE = "agent.yaml";
8
+ const DEFAULT_SKILLS_DIR = "./skills";
9
+ const DEFAULT_MEMORY_DIR = "./.agent/memory";
10
+ function printHelp() {
11
+ console.log(`
12
+ @bottensor/framework — Open Agentic Framework
13
+
14
+ Usage:
15
+ bottensor init Create a new agent project
16
+ bottensor chat Start interactive chat with your agent
17
+ bottensor run <prompt> Run a one-shot prompt
18
+ bottensor skills List loaded skills
19
+ bottensor help Show this help
20
+
21
+ Configuration:
22
+ Create an agent.yaml in your project root:
23
+
24
+ name: my-agent
25
+ systemPrompt: You are a helpful assistant.
26
+ provider:
27
+ name: venice
28
+ apiKey: \${VENICE_API_KEY}
29
+ baseUrl: https://api.venice.ai/api/v1
30
+ defaultModel: qwen3-4b
31
+ skillsDir: ./skills
32
+ memoryDir: ./.agent/memory
33
+ `);
34
+ }
35
+ function loadConfig() {
36
+ const configPath = resolve(AGENT_CONFIG_FILE);
37
+ if (!existsSync(configPath)) {
38
+ return null;
39
+ }
40
+ let raw = readFileSync(configPath, "utf-8");
41
+ // Resolve environment variables: ${VAR_NAME}
42
+ raw = raw.replace(/\$\{(\w+)\}/g, (_, varName) => process.env[varName] ?? "");
43
+ const yaml = parseYaml(raw);
44
+ const provider = yaml.provider;
45
+ if (!provider) {
46
+ console.error("Error: agent.yaml must include a 'provider' section");
47
+ process.exit(1);
48
+ }
49
+ return {
50
+ name: yaml.name ?? "agent",
51
+ systemPrompt: yaml.systemPrompt ?? "You are a helpful AI assistant.",
52
+ provider: {
53
+ name: provider.name ?? "default",
54
+ apiKey: provider.apiKey ?? "",
55
+ baseUrl: provider.baseUrl ?? "",
56
+ defaultModel: provider.defaultModel ?? "gpt-4o-mini",
57
+ headers: provider.headers ?? undefined,
58
+ },
59
+ model: yaml.model,
60
+ skillsDir: yaml.skillsDir ?? DEFAULT_SKILLS_DIR,
61
+ memoryDir: yaml.memoryDir ?? DEFAULT_MEMORY_DIR,
62
+ temperature: yaml.temperature,
63
+ maxTokens: yaml.maxTokens,
64
+ maxReasoningSteps: yaml.maxReasoningSteps,
65
+ };
66
+ }
67
+ async function cmdInit() {
68
+ const configPath = resolve(AGENT_CONFIG_FILE);
69
+ if (existsSync(configPath)) {
70
+ console.log("agent.yaml already exists.");
71
+ return;
72
+ }
73
+ const template = `# Bottensor Agent Configuration
74
+ name: my-agent
75
+ systemPrompt: |
76
+ You are a helpful AI assistant powered by Bottensor.
77
+ You are friendly, concise, and knowledgeable.
78
+
79
+ provider:
80
+ name: venice
81
+ apiKey: \${VENICE_API_KEY}
82
+ baseUrl: https://api.venice.ai/api/v1
83
+ defaultModel: qwen3-4b
84
+
85
+ # Uncomment to use Bottensor API:
86
+ # provider:
87
+ # name: bottensor
88
+ # apiKey: \${BOTTENSOR_API_KEY}
89
+ # baseUrl: https://api.bottensor.xyz/v1
90
+ # defaultModel: qwen3-4b
91
+
92
+ # Uncomment to use OpenAI:
93
+ # provider:
94
+ # name: openai
95
+ # apiKey: \${OPENAI_API_KEY}
96
+ # baseUrl: https://api.openai.com/v1
97
+ # defaultModel: gpt-4o-mini
98
+
99
+ # Uncomment to use local Ollama:
100
+ # provider:
101
+ # name: ollama
102
+ # baseUrl: http://localhost:11434/v1
103
+ # defaultModel: llama3.2
104
+
105
+ skillsDir: ./skills
106
+ memoryDir: ./.agent/memory
107
+ temperature: 0.7
108
+ maxTokens: 4096
109
+ `;
110
+ writeFileSync(configPath, template);
111
+ mkdirSync(resolve(DEFAULT_SKILLS_DIR), { recursive: true });
112
+ // Create an example skill
113
+ const exampleSkill = `---
114
+ name: greeting
115
+ description: Knows how to greet users in different languages
116
+ version: "1.0"
117
+ ---
118
+
119
+ # Greeting Skill
120
+
121
+ When a user asks for a greeting or says hello, respond warmly.
122
+ You can greet in multiple languages:
123
+
124
+ - English: "Hello! How can I help you today?"
125
+ - Spanish: "¡Hola! ¿En qué puedo ayudarte?"
126
+ - Japanese: "こんにちは!何かお手伝いできますか?"
127
+ - French: "Bonjour ! Comment puis-je vous aider ?"
128
+
129
+ Always match the user's language if they greet you in a specific language.
130
+ `;
131
+ writeFileSync(join(resolve(DEFAULT_SKILLS_DIR), "greeting.md"), exampleSkill);
132
+ console.log(`
133
+ ✓ Created agent.yaml
134
+ ✓ Created skills/ directory with example skill
135
+
136
+ Next steps:
137
+ 1. Set your API key: export VENICE_API_KEY=your-key
138
+ 2. Start chatting: bottensor chat
139
+ 3. Add skills: create .md files in ./skills/
140
+ `);
141
+ }
142
+ async function cmdChat() {
143
+ const config = loadConfig();
144
+ if (!config) {
145
+ console.error("No agent.yaml found. Run 'bottensor init' first.");
146
+ process.exit(1);
147
+ }
148
+ const agent = new Agent(config);
149
+ console.log(`\n ${config.name} — powered by Bottensor framework`);
150
+ console.log(` Provider: ${config.provider.name} (${config.provider.defaultModel})`);
151
+ console.log(` Type 'exit' to quit, 'clear' to reset history\n`);
152
+ const rl = createInterface({
153
+ input: process.stdin,
154
+ output: process.stdout,
155
+ });
156
+ const prompt = () => {
157
+ rl.question("you > ", async (input) => {
158
+ const trimmed = input.trim();
159
+ if (!trimmed) {
160
+ prompt();
161
+ return;
162
+ }
163
+ if (trimmed === "exit" || trimmed === "quit") {
164
+ console.log("\nGoodbye!");
165
+ rl.close();
166
+ process.exit(0);
167
+ }
168
+ if (trimmed === "clear") {
169
+ agent.clearHistory();
170
+ console.log(" (history cleared)\n");
171
+ prompt();
172
+ return;
173
+ }
174
+ if (trimmed === "skills") {
175
+ const skills = agent.skills;
176
+ if (skills.length === 0) {
177
+ console.log(" No skills loaded.\n");
178
+ }
179
+ else {
180
+ console.log(" Loaded skills:");
181
+ for (const s of skills) {
182
+ console.log(` - ${s.meta.name}: ${s.meta.description}`);
183
+ }
184
+ console.log();
185
+ }
186
+ prompt();
187
+ return;
188
+ }
189
+ try {
190
+ const result = await agent.chat(trimmed);
191
+ console.log(`\n${config.name} > ${result.response}`);
192
+ if (result.toolCalls.length > 0) {
193
+ console.log(` [${result.toolCalls.length} tool call(s), ${result.usage.llmCalls} LLM call(s), ${result.duration}ms]`);
194
+ }
195
+ console.log();
196
+ }
197
+ catch (err) {
198
+ console.error(` Error: ${err.message}\n`);
199
+ }
200
+ prompt();
201
+ });
202
+ };
203
+ prompt();
204
+ }
205
+ async function cmdRun(promptText) {
206
+ const config = loadConfig();
207
+ if (!config) {
208
+ console.error("No agent.yaml found. Run 'bottensor init' first.");
209
+ process.exit(1);
210
+ }
211
+ const agent = new Agent(config);
212
+ try {
213
+ const result = await agent.chat(promptText);
214
+ console.log(result.response);
215
+ }
216
+ catch (err) {
217
+ console.error(`Error: ${err.message}`);
218
+ process.exit(1);
219
+ }
220
+ }
221
+ async function cmdSkills() {
222
+ const config = loadConfig();
223
+ if (!config) {
224
+ console.error("No agent.yaml found. Run 'bottensor init' first.");
225
+ process.exit(1);
226
+ }
227
+ const agent = new Agent(config);
228
+ const skills = agent.skills;
229
+ if (skills.length === 0) {
230
+ console.log("No skills loaded. Add .md files to your skills directory.");
231
+ return;
232
+ }
233
+ console.log(`\n ${skills.length} skill(s) loaded:\n`);
234
+ for (const s of skills) {
235
+ console.log(` ${s.meta.name} (v${s.meta.version ?? "1.0"})`);
236
+ console.log(` ${s.meta.description}`);
237
+ console.log(` Source: ${s.source}`);
238
+ console.log(` Tools: ${s.tools.length}`);
239
+ console.log();
240
+ }
241
+ }
242
+ // ── Main ────────────────────────────────────────────────
243
+ const args = process.argv.slice(2);
244
+ const command = args[0];
245
+ switch (command) {
246
+ case "init":
247
+ cmdInit();
248
+ break;
249
+ case "chat":
250
+ cmdChat();
251
+ break;
252
+ case "run":
253
+ if (!args[1]) {
254
+ console.error("Usage: bottensor run <prompt>");
255
+ process.exit(1);
256
+ }
257
+ cmdRun(args.slice(1).join(" "));
258
+ break;
259
+ case "skills":
260
+ cmdSkills();
261
+ break;
262
+ case "help":
263
+ case "--help":
264
+ case "-h":
265
+ case undefined:
266
+ printHelp();
267
+ break;
268
+ default:
269
+ console.error(`Unknown command: ${command}`);
270
+ printHelp();
271
+ process.exit(1);
272
+ }
273
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { Agent } from "./agent.js";
2
+ export { OpenAIProvider, bottensorProvider, agentsEcoProvider, veniceProvider, openaiProvider, groqProvider, ollamaProvider } from "./provider.js";
3
+ export { parseSkill, loadSkill, loadSkillsFromDir, buildSkillSummary, buildSkillContext, collectTools } from "./skills.js";
4
+ export { MarkdownMemory, InMemoryStore } from "./memory.js";
5
+ export type { AgentConfig, AgentHooks, RunResult, Provider, ProviderConfig, LLMRequest, LLMResponse, ChatMessage, ToolDef, ToolCall, ToolResult, ToolHandler, Skill, SkillFrontmatter, SkillToolDef, SkillConfigField, MemoryEntry, MemoryStore, } from "./types.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGnJ,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3H,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5D,YAAY,EAEV,WAAW,EACX,UAAU,EACV,SAAS,EAET,QAAQ,EACR,cAAc,EACd,UAAU,EACV,WAAW,EAEX,WAAW,EAEX,OAAO,EACP,QAAQ,EACR,UAAU,EACV,WAAW,EAEX,KAAK,EACL,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAEhB,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ // ── Core ────────────────────────────────────────────────
2
+ export { Agent } from "./agent.js";
3
+ // ── Providers ───────────────────────────────────────────
4
+ export { OpenAIProvider, bottensorProvider, agentsEcoProvider, veniceProvider, openaiProvider, groqProvider, ollamaProvider } from "./provider.js";
5
+ // ── Skills ──────────────────────────────────────────────
6
+ export { parseSkill, loadSkill, loadSkillsFromDir, buildSkillSummary, buildSkillContext, collectTools } from "./skills.js";
7
+ // ── Memory ──────────────────────────────────────────────
8
+ export { MarkdownMemory, InMemoryStore } from "./memory.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,2DAA2D;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEnJ,2DAA2D;AAC3D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3H,2DAA2D;AAC3D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}