@astrive-ai/agent 1.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.
@@ -0,0 +1,30 @@
1
+ import { AstriveConfig, IAgent, ChatInput, ChatOptions, AgentResponse, AgentStreamChunk, IPlugin, ITool, IProvider } from "@astrive-ai/types";
2
+ type ToolFactory = () => ITool;
3
+ export declare class AstriveAI implements IAgent {
4
+ private config;
5
+ private logger;
6
+ private events;
7
+ private providerManager;
8
+ private toolRegistry;
9
+ private memoryManager;
10
+ private middlewarePipeline;
11
+ private toolExecutor;
12
+ private planner;
13
+ private conversationManager;
14
+ private pluginManager;
15
+ private reflectionEngine;
16
+ private initialized;
17
+ constructor(config: AstriveConfig);
18
+ init(): Promise<void>;
19
+ chat(input: string | ChatInput, options?: ChatOptions): Promise<AgentResponse>;
20
+ chatStream(input: string | ChatInput, options?: ChatOptions): AsyncGenerator<AgentStreamChunk>;
21
+ use(plugin: IPlugin): Promise<void>;
22
+ provider(provider: IProvider): void;
23
+ tool(tool: ITool | ToolFactory): void;
24
+ getTools(): ITool[];
25
+ getProviders(): IProvider[];
26
+ destroy(): Promise<void>;
27
+ }
28
+ export declare function createAgent(config: AstriveConfig): IAgent;
29
+ export {};
30
+ //# sourceMappingURL=astrive-ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astrive-ai.d.ts","sourceRoot":"","sources":["../src/astrive-ai.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,MAAM,EACN,SAAS,EACT,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,KAAK,EAEL,SAAS,EAKV,MAAM,mBAAmB,CAAC;AAa3B,KAAK,WAAW,GAAG,MAAM,KAAK,CAAC;AAE/B,qBAAa,SAAU,YAAW,MAAM;IACtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,aAAa;IAgDpB,IAAI;IAQJ,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAiK7E,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC;IA8C/F,GAAG,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAazC,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAInC,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,WAAW,GAAG,IAAI;IAQrC,QAAQ,IAAI,KAAK,EAAE;IAInB,YAAY,IAAI,SAAS,EAAE;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAWtC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,298 @@
1
+ import { Logger } from "@astrive-ai/logger";
2
+ import { EventEmitter } from "@astrive-ai/events";
3
+ import { ProviderManager, GroqProvider } from "@astrive-ai/providers";
4
+ import { ToolRegistry, MiddlewarePipeline, ToolExecutor } from "@astrive-ai/core";
5
+ import { MemoryManager } from "@astrive-ai/memory";
6
+ import { LLMPlanner, SimplePlanner } from "@astrive-ai/planner";
7
+ import * as BuiltInTools from "@astrive-ai/tools";
8
+ import { ConversationManager } from "./conversation-manager.js";
9
+ import { PluginManager } from "./plugin-manager.js";
10
+ import { ReflectionEngine } from "./reflection.js";
11
+ export class AstriveAI {
12
+ config;
13
+ logger;
14
+ events;
15
+ providerManager;
16
+ toolRegistry;
17
+ memoryManager;
18
+ middlewarePipeline;
19
+ toolExecutor;
20
+ planner;
21
+ conversationManager;
22
+ pluginManager;
23
+ reflectionEngine;
24
+ initialized = false;
25
+ constructor(config) {
26
+ this.config = config;
27
+ this.logger = new Logger(config.logger || { level: 'info', prefix: 'Astrive', colors: true, timestamp: true });
28
+ this.events = new EventEmitter();
29
+ this.providerManager = new ProviderManager();
30
+ if (config.providers?.groq?.apiKey) {
31
+ const groq = new GroqProvider(this.logger, this.events);
32
+ this.providerManager.register(groq);
33
+ }
34
+ this.toolRegistry = new ToolRegistry(this.events);
35
+ const toolClasses = [
36
+ BuiltInTools.DownloaderTool,
37
+ BuiltInTools.VisionTool,
38
+ BuiltInTools.TextToImageTool,
39
+ BuiltInTools.RemoveBGTool,
40
+ BuiltInTools.UpscalerTool,
41
+ BuiltInTools.OCRTool,
42
+ BuiltInTools.FaceSwapTool,
43
+ BuiltInTools.Img2ImgTool,
44
+ BuiltInTools.TextToSpeechTool,
45
+ BuiltInTools.SpeechToTextTool,
46
+ BuiltInTools.WebSearchTool,
47
+ BuiltInTools.FilesystemTool,
48
+ BuiltInTools.TerminalTool,
49
+ BuiltInTools.GitTool,
50
+ ];
51
+ for (const ToolClass of toolClasses) {
52
+ if (ToolClass) {
53
+ this.toolRegistry.register(new ToolClass());
54
+ }
55
+ }
56
+ this.memoryManager = new MemoryManager(config.memory || {}, this.logger, this.events);
57
+ this.middlewarePipeline = new MiddlewarePipeline();
58
+ this.toolExecutor = new ToolExecutor(this.toolRegistry, this.events, this.logger);
59
+ this.conversationManager = new ConversationManager();
60
+ this.pluginManager = new PluginManager();
61
+ this.reflectionEngine = new ReflectionEngine();
62
+ this.planner = new SimplePlanner();
63
+ this.initialized = true;
64
+ }
65
+ async init() {
66
+ await this.providerManager.initAll(this.config.providers || {});
67
+ const providers = this.providerManager.getAll();
68
+ if (providers.length > 0) {
69
+ this.planner = new LLMPlanner(providers[0], this.logger, this.events);
70
+ }
71
+ }
72
+ async chat(input, options) {
73
+ if (!this.initialized) {
74
+ throw new Error("Agent not initialized");
75
+ }
76
+ const startTime = Date.now();
77
+ const chatInput = typeof input === "string" ? { message: input, sessionId: options?.sessionId } : input;
78
+ const sessionId = chatInput.sessionId || "default";
79
+ let providerName = "groq";
80
+ if (options && 'provider' in options && options.provider) {
81
+ providerName = options.provider;
82
+ }
83
+ let provider;
84
+ try {
85
+ provider = this.providerManager.selectProvider(providerName, "chat");
86
+ }
87
+ catch (e) {
88
+ const providers = this.providerManager.getAll();
89
+ if (providers.length > 0) {
90
+ provider = providers[0];
91
+ }
92
+ else {
93
+ throw new Error(`Provider ${providerName} not found`);
94
+ }
95
+ }
96
+ this.conversationManager.addMessage(sessionId, { role: "user", content: chatInput.message });
97
+ let memoryContext = "";
98
+ if (this.config.memory?.enabled) {
99
+ memoryContext = await this.memoryManager.getRelevantContext(chatInput.message, 5);
100
+ }
101
+ const messages = this.conversationManager.buildMessages(sessionId, this.config.systemPrompt, memoryContext);
102
+ const tools = this.toolRegistry.getAll();
103
+ const toolDefinitions = this.toolRegistry.getDefinitions();
104
+ let response;
105
+ const planningEnabled = options?.planning !== false && tools.length > 0;
106
+ let stepsExecuted = 0;
107
+ const callProvider = async (msgs, toolsList) => {
108
+ return await provider.chat({
109
+ messages: msgs,
110
+ model: options?.model || "llama-3.3-70b-versatile",
111
+ temperature: options?.temperature || 0.7,
112
+ maxTokens: options?.maxTokens || 2048,
113
+ tools: toolsList && toolsList.length > 0 ? toolsList : undefined
114
+ });
115
+ };
116
+ if (planningEnabled) {
117
+ const initialResponse = await callProvider(messages, toolDefinitions);
118
+ stepsExecuted++;
119
+ if (initialResponse.toolCalls && initialResponse.toolCalls.length > 0) {
120
+ const toolResults = [];
121
+ const assistantMessage = {
122
+ role: "assistant",
123
+ content: initialResponse.content || "",
124
+ tool_calls: initialResponse.toolCalls
125
+ };
126
+ messages.push(assistantMessage);
127
+ this.conversationManager.addMessage(sessionId, assistantMessage);
128
+ for (const call of initialResponse.toolCalls) {
129
+ try {
130
+ const args = typeof call.arguments === 'string'
131
+ ? JSON.parse(call.arguments)
132
+ : call.arguments;
133
+ const result = await this.toolExecutor.execute({
134
+ id: call.id,
135
+ name: call.name,
136
+ arguments: args
137
+ });
138
+ const finalToolResult = result.result || { success: false, data: result.error, contentType: 'text' };
139
+ toolResults.push(finalToolResult);
140
+ const toolMsg = {
141
+ role: "tool",
142
+ content: JSON.stringify(result.result || { error: result.error }),
143
+ tool_call_id: call.id
144
+ };
145
+ messages.push(toolMsg);
146
+ this.conversationManager.addMessage(sessionId, toolMsg);
147
+ stepsExecuted++;
148
+ }
149
+ catch (error) {
150
+ const toolMsg = {
151
+ role: "tool",
152
+ content: JSON.stringify({ error: error.message }),
153
+ tool_call_id: call.id
154
+ };
155
+ messages.push(toolMsg);
156
+ this.conversationManager.addMessage(sessionId, toolMsg);
157
+ stepsExecuted++;
158
+ }
159
+ }
160
+ const finalResponse = await callProvider(messages);
161
+ stepsExecuted++;
162
+ const metadata = {
163
+ conversationId: sessionId,
164
+ model: finalResponse.model,
165
+ provider: provider.name,
166
+ executionTime: Date.now() - startTime,
167
+ stepsExecuted
168
+ };
169
+ response = {
170
+ content: finalResponse.content,
171
+ toolResults,
172
+ usage: finalResponse.usage,
173
+ metadata
174
+ };
175
+ this.conversationManager.addMessage(sessionId, { role: "assistant", content: response.content });
176
+ }
177
+ else {
178
+ const metadata = {
179
+ conversationId: sessionId,
180
+ model: initialResponse.model,
181
+ provider: provider.name,
182
+ executionTime: Date.now() - startTime,
183
+ stepsExecuted
184
+ };
185
+ response = {
186
+ content: initialResponse.content,
187
+ usage: initialResponse.usage,
188
+ metadata
189
+ };
190
+ this.conversationManager.addMessage(sessionId, { role: "assistant", content: response.content });
191
+ }
192
+ }
193
+ else {
194
+ const rawResponse = await callProvider(messages);
195
+ stepsExecuted++;
196
+ const metadata = {
197
+ conversationId: sessionId,
198
+ model: rawResponse.model,
199
+ provider: provider.name,
200
+ executionTime: Date.now() - startTime,
201
+ stepsExecuted
202
+ };
203
+ response = {
204
+ content: rawResponse.content,
205
+ usage: rawResponse.usage,
206
+ metadata
207
+ };
208
+ this.conversationManager.addMessage(sessionId, { role: "assistant", content: response.content });
209
+ }
210
+ if (this.config.memory?.enabled) {
211
+ await this.memoryManager.extractAndSaveMemories([{ role: "user", content: chatInput.message }, { role: "assistant", content: response.content }]);
212
+ }
213
+ return response;
214
+ }
215
+ async *chatStream(input, options) {
216
+ if (!this.initialized) {
217
+ throw new Error("Agent not initialized");
218
+ }
219
+ const chatInput = typeof input === "string" ? { message: input, sessionId: options?.sessionId } : input;
220
+ const sessionId = chatInput.sessionId || "default";
221
+ let providerName = "groq";
222
+ if (options && 'provider' in options && options.provider) {
223
+ providerName = options.provider;
224
+ }
225
+ let provider;
226
+ try {
227
+ provider = this.providerManager.selectProvider(providerName, "chat");
228
+ }
229
+ catch (e) {
230
+ const providers = this.providerManager.getAll();
231
+ if (providers.length > 0)
232
+ provider = providers[0];
233
+ else
234
+ throw new Error(`Provider ${providerName} not found`);
235
+ }
236
+ this.conversationManager.addMessage(sessionId, { role: "user", content: chatInput.message });
237
+ const messages = this.conversationManager.buildMessages(sessionId, this.config.systemPrompt);
238
+ if (!provider.chatStream)
239
+ throw new Error("Provider does not support streaming");
240
+ const stream = await provider.chatStream({
241
+ messages,
242
+ model: options?.model || "llama-3.3-70b-versatile",
243
+ temperature: options?.temperature || 0.7,
244
+ maxTokens: options?.maxTokens || 2048
245
+ });
246
+ let fullContent = "";
247
+ for await (const chunk of stream) {
248
+ if (chunk.content) {
249
+ fullContent += chunk.content;
250
+ yield { type: "text", content: chunk.content };
251
+ }
252
+ }
253
+ this.conversationManager.addMessage(sessionId, { role: "assistant", content: fullContent });
254
+ yield { type: "done" };
255
+ }
256
+ async use(plugin) {
257
+ const context = {
258
+ agent: this,
259
+ config: this.config,
260
+ logger: this.logger,
261
+ events: this.events,
262
+ registerTool: (t) => this.toolRegistry.register(t),
263
+ registerProvider: (p) => this.providerManager.register(p),
264
+ registerMiddleware: (m) => this.middlewarePipeline.use(m)
265
+ };
266
+ await this.pluginManager.install(plugin, context);
267
+ }
268
+ provider(provider) {
269
+ this.providerManager.register(provider);
270
+ }
271
+ tool(tool) {
272
+ if (typeof tool === 'function') {
273
+ this.toolRegistry.register(tool());
274
+ }
275
+ else {
276
+ this.toolRegistry.register(tool);
277
+ }
278
+ }
279
+ getTools() {
280
+ return this.toolRegistry.getAll();
281
+ }
282
+ getProviders() {
283
+ return this.providerManager.getAll();
284
+ }
285
+ async destroy() {
286
+ await this.pluginManager.destroyAll();
287
+ for (const provider of this.providerManager.getAll()) {
288
+ if (typeof provider.destroy === 'function') {
289
+ await provider.destroy();
290
+ }
291
+ }
292
+ this.initialized = false;
293
+ }
294
+ }
295
+ export function createAgent(config) {
296
+ return new AstriveAI(config);
297
+ }
298
+ //# sourceMappingURL=astrive-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"astrive-ai.js","sourceRoot":"","sources":["../src/astrive-ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { Message } from "@astrive-ai/types";
2
+ export interface ConversationState {
3
+ id: string;
4
+ messages: Message[];
5
+ systemPrompt?: string;
6
+ metadata?: Record<string, any>;
7
+ createdAt: number;
8
+ }
9
+ export declare class ConversationManager {
10
+ private conversations;
11
+ getOrCreate(sessionId?: string, systemPrompt?: string): ConversationState;
12
+ addMessage(id: string, message: Message): void;
13
+ getMessages(id: string): Message[];
14
+ buildMessages(id: string, systemPrompt?: string, memoryContext?: string): Message[];
15
+ }
16
+ //# sourceMappingURL=conversation-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-manager.d.ts","sourceRoot":"","sources":["../src/conversation-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAA6C;IAE3D,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAqBzE,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAO9C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,EAAE;IAKlC,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,EAAE;CAmB3F"}
@@ -0,0 +1,47 @@
1
+ import { randomUUID } from "node:crypto";
2
+ export class ConversationManager {
3
+ conversations = new Map();
4
+ getOrCreate(sessionId, systemPrompt) {
5
+ const id = sessionId || randomUUID();
6
+ let state = this.conversations.get(id);
7
+ if (!state) {
8
+ state = {
9
+ id,
10
+ messages: [],
11
+ systemPrompt,
12
+ createdAt: Date.now(),
13
+ };
14
+ this.conversations.set(id, state);
15
+ }
16
+ if (systemPrompt && state.systemPrompt !== systemPrompt) {
17
+ state.systemPrompt = systemPrompt;
18
+ }
19
+ return state;
20
+ }
21
+ addMessage(id, message) {
22
+ const state = this.conversations.get(id);
23
+ if (state) {
24
+ state.messages.push(message);
25
+ }
26
+ }
27
+ getMessages(id) {
28
+ const state = this.conversations.get(id);
29
+ return state ? [...state.messages] : [];
30
+ }
31
+ buildMessages(id, systemPrompt, memoryContext) {
32
+ const state = this.getOrCreate(id, systemPrompt);
33
+ const messages = [];
34
+ const finalSystemPrompt = memoryContext
35
+ ? `${state.systemPrompt || "You are a helpful AI assistant."}\n\nContext:\n${memoryContext}`
36
+ : state.systemPrompt;
37
+ if (finalSystemPrompt) {
38
+ messages.push({ role: "system", content: finalSystemPrompt });
39
+ }
40
+ // Add all messages to the context. Tool messages and tool_calls are correctly maintained in the array.
41
+ for (const msg of state.messages) {
42
+ messages.push({ ...msg });
43
+ }
44
+ return messages;
45
+ }
46
+ }
47
+ //# sourceMappingURL=conversation-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-manager.js","sourceRoot":"","sources":["../src/conversation-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC,MAAM,OAAO,mBAAmB;IACtB,aAAa,GAAmC,IAAI,GAAG,EAAE,CAAC;IAE3D,WAAW,CAAC,SAAkB,EAAE,YAAqB;QAC1D,MAAM,EAAE,GAAG,SAAS,IAAI,UAAU,EAAE,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,GAAG;gBACN,EAAE;gBACF,QAAQ,EAAE,EAAE;gBACZ,YAAY;gBACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;YACF,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,YAAY,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YACxD,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QACpC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,UAAU,CAAC,EAAU,EAAE,OAAgB;QAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEM,WAAW,CAAC,EAAU;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IAEM,aAAa,CAAC,EAAU,EAAE,YAAqB,EAAE,aAAsB;QAC5E,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,MAAM,iBAAiB,GAAG,aAAa;YACrC,CAAC,CAAC,GAAG,KAAK,CAAC,YAAY,IAAI,iCAAiC,iBAAiB,aAAa,EAAE;YAC5F,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;QAEvB,IAAI,iBAAiB,EAAE,CAAC;YACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAChE,CAAC;QAED,uGAAuG;QACvG,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export * from "./astrive-ai.js";
2
+ export * from "./conversation-manager.js";
3
+ export * from "./plugin-manager.js";
4
+ export * from "./reflection.js";
5
+ export * from "./multi-agent.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from "./astrive-ai.js";
2
+ export * from "./conversation-manager.js";
3
+ export * from "./plugin-manager.js";
4
+ export * from "./reflection.js";
5
+ export * from "./multi-agent.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { IAgent, AgentResponse, ChatOptions } from '@astrive-ai/types';
2
+ export interface AgentTask {
3
+ description: string;
4
+ assignedRole: 'researcher' | 'coder' | 'creative' | 'reviewer' | 'validator' | 'custom';
5
+ dependencies?: string[];
6
+ }
7
+ export declare class MultiAgentOrchestrator {
8
+ private agents;
9
+ private plannerAgent;
10
+ constructor(plannerAgent: IAgent);
11
+ registerAgent(role: string, agent: IAgent): void;
12
+ executeTask(task: string, options?: ChatOptions): Promise<AgentResponse>;
13
+ }
14
+ //# sourceMappingURL=multi-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-agent.d.ts","sourceRoot":"","sources":["../src/multi-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAa,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAElF,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IACxF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,YAAY,CAAS;gBAEjB,YAAY,EAAE,MAAM;IAIzB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI1C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAsDtF"}
@@ -0,0 +1,58 @@
1
+ export class MultiAgentOrchestrator {
2
+ agents = new Map();
3
+ plannerAgent;
4
+ constructor(plannerAgent) {
5
+ this.plannerAgent = plannerAgent;
6
+ }
7
+ registerAgent(role, agent) {
8
+ this.agents.set(role, agent);
9
+ }
10
+ async executeTask(task, options) {
11
+ // 1. Planning phase
12
+ const planPrompt = `Break down the following task into sub-tasks assigned to different agent roles (researcher, coder, creative). Output JSON only.\nTask: ${task}`;
13
+ const planResponse = await this.plannerAgent.chat(planPrompt, { ...options, planning: false });
14
+ // In a real implementation, we would parse the JSON plan and execute the subtasks.
15
+ // For this prototype, we'll assume a linear flow if specific roles are registered.
16
+ let currentContext = `Original Task: ${task}\n\n`;
17
+ let finalResponse = null;
18
+ // 2. Execution phase - Researcher
19
+ if (this.agents.has('researcher')) {
20
+ const researcher = this.agents.get('researcher');
21
+ const res = await researcher.chat(`Research the following task and provide context:\n${currentContext}`, options);
22
+ currentContext += `Research Results:\n${res.content}\n\n`;
23
+ finalResponse = res;
24
+ }
25
+ // 3. Execution phase - Coder or Creative
26
+ if (this.agents.has('coder')) {
27
+ const coder = this.agents.get('coder');
28
+ const res = await coder.chat(`Based on the context, write the necessary code:\n${currentContext}`, options);
29
+ currentContext += `Code Results:\n${res.content}\n\n`;
30
+ finalResponse = res;
31
+ }
32
+ else if (this.agents.has('creative')) {
33
+ const creative = this.agents.get('creative');
34
+ const res = await creative.chat(`Based on the context, create the required content:\n${currentContext}`, options);
35
+ currentContext += `Creative Results:\n${res.content}\n\n`;
36
+ finalResponse = res;
37
+ }
38
+ // 4. Review phase
39
+ if (this.agents.has('reviewer')) {
40
+ const reviewer = this.agents.get('reviewer');
41
+ const res = await reviewer.chat(`Review the following results and suggest improvements:\n${currentContext}`, options);
42
+ currentContext += `Review Results:\n${res.content}\n\n`;
43
+ finalResponse = res;
44
+ }
45
+ // 5. Validation and Final Polish phase
46
+ if (this.agents.has('validator')) {
47
+ const validator = this.agents.get('validator');
48
+ const res = await validator.chat(`Validate the work and provide the final output to the user:\n${currentContext}`, options);
49
+ finalResponse = res;
50
+ }
51
+ if (!finalResponse) {
52
+ // Fallback if no specialized agents were registered
53
+ return await this.plannerAgent.chat(task, options);
54
+ }
55
+ return finalResponse;
56
+ }
57
+ }
58
+ //# sourceMappingURL=multi-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-agent.js","sourceRoot":"","sources":["../src/multi-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { IPlugin, PluginContext } from "@astrive-ai/types";
2
+ export declare class PluginManager {
3
+ private plugins;
4
+ install(plugin: IPlugin, context: PluginContext): Promise<void>;
5
+ uninstall(name: string): Promise<void>;
6
+ destroyAll(): Promise<void>;
7
+ getAll(): IPlugin[];
8
+ has(name: string): boolean;
9
+ }
10
+ //# sourceMappingURL=plugin-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-manager.d.ts","sourceRoot":"","sources":["../src/plugin-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE3D,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAmC;IAErC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAa/D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,MAAM,IAAI,OAAO,EAAE;IAInB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGlC"}
@@ -0,0 +1,34 @@
1
+ export class PluginManager {
2
+ plugins = new Map();
3
+ async install(plugin, context) {
4
+ if (this.plugins.has(plugin.name)) {
5
+ throw new Error(`Plugin ${plugin.name} is already installed`);
6
+ }
7
+ await plugin.install(context);
8
+ this.plugins.set(plugin.name, plugin);
9
+ if (plugin.onInit) {
10
+ await plugin.onInit();
11
+ }
12
+ }
13
+ async uninstall(name) {
14
+ const plugin = this.plugins.get(name);
15
+ if (plugin) {
16
+ if (plugin.onDestroy) {
17
+ await plugin.onDestroy();
18
+ }
19
+ this.plugins.delete(name);
20
+ }
21
+ }
22
+ async destroyAll() {
23
+ for (const name of Array.from(this.plugins.keys())) {
24
+ await this.uninstall(name);
25
+ }
26
+ }
27
+ getAll() {
28
+ return Array.from(this.plugins.values());
29
+ }
30
+ has(name) {
31
+ return this.plugins.has(name);
32
+ }
33
+ }
34
+ //# sourceMappingURL=plugin-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../src/plugin-manager.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IAChB,OAAO,GAAyB,IAAI,GAAG,EAAE,CAAC;IAE3C,KAAK,CAAC,OAAO,CAAC,MAAe,EAAE,OAAsB;QAC1D,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,uBAAuB,CAAC,CAAC;QAChE,CAAC;QAED,MAAM,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEtC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,IAAY;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAEM,MAAM;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEM,GAAG,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import { IProvider } from "@astrive-ai/types";
2
+ export interface ReflectionContext {
3
+ provider: IProvider;
4
+ originalInput: string;
5
+ }
6
+ export interface ReviewResult {
7
+ hasIssues: boolean;
8
+ issues: string[];
9
+ suggestions: string[];
10
+ }
11
+ export declare class ReflectionEngine {
12
+ reflect(response: string, context: ReflectionContext): Promise<string>;
13
+ private reviewResponse;
14
+ }
15
+ //# sourceMappingURL=reflection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflection.d.ts","sourceRoot":"","sources":["../src/reflection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAW,MAAM,mBAAmB,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,qBAAa,gBAAgB;IACd,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;YAyBrE,cAAc;CA8B7B"}