family-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.
- package/.env.example +49 -0
- package/README.md +161 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +336 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/index.d.ts +37 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +68 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/models.d.ts +17 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +128 -0
- package/dist/config/models.js.map +1 -0
- package/dist/core/agents/agent-factory.d.ts +31 -0
- package/dist/core/agents/agent-factory.d.ts.map +1 -0
- package/dist/core/agents/agent-factory.js +151 -0
- package/dist/core/agents/agent-factory.js.map +1 -0
- package/dist/core/agents/base-agent.d.ts +51 -0
- package/dist/core/agents/base-agent.d.ts.map +1 -0
- package/dist/core/agents/base-agent.js +245 -0
- package/dist/core/agents/base-agent.js.map +1 -0
- package/dist/core/agents/index.d.ts +8 -0
- package/dist/core/agents/index.d.ts.map +1 -0
- package/dist/core/agents/index.js +9 -0
- package/dist/core/agents/index.js.map +1 -0
- package/dist/core/agents/personalities/automation.d.ts +14 -0
- package/dist/core/agents/personalities/automation.d.ts.map +1 -0
- package/dist/core/agents/personalities/automation.js +146 -0
- package/dist/core/agents/personalities/automation.js.map +1 -0
- package/dist/core/agents/personalities/chat.d.ts +10 -0
- package/dist/core/agents/personalities/chat.d.ts.map +1 -0
- package/dist/core/agents/personalities/chat.js +132 -0
- package/dist/core/agents/personalities/chat.js.map +1 -0
- package/dist/core/agents/personalities/coding.d.ts +16 -0
- package/dist/core/agents/personalities/coding.d.ts.map +1 -0
- package/dist/core/agents/personalities/coding.js +166 -0
- package/dist/core/agents/personalities/coding.js.map +1 -0
- package/dist/core/agents/personalities/research.d.ts +13 -0
- package/dist/core/agents/personalities/research.d.ts.map +1 -0
- package/dist/core/agents/personalities/research.js +133 -0
- package/dist/core/agents/personalities/research.js.map +1 -0
- package/dist/core/agents/types.d.ts +102 -0
- package/dist/core/agents/types.d.ts.map +1 -0
- package/dist/core/agents/types.js +2 -0
- package/dist/core/agents/types.js.map +1 -0
- package/dist/core/orchestrator/graph.d.ts +118 -0
- package/dist/core/orchestrator/graph.d.ts.map +1 -0
- package/dist/core/orchestrator/graph.js +233 -0
- package/dist/core/orchestrator/graph.js.map +1 -0
- package/dist/database/client.d.ts +19 -0
- package/dist/database/client.d.ts.map +1 -0
- package/dist/database/client.js +95 -0
- package/dist/database/client.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/openrouter-client.d.ts +45 -0
- package/dist/llm/openrouter-client.d.ts.map +1 -0
- package/dist/llm/openrouter-client.js +155 -0
- package/dist/llm/openrouter-client.js.map +1 -0
- package/dist/memory/conversation/index.d.ts +37 -0
- package/dist/memory/conversation/index.d.ts.map +1 -0
- package/dist/memory/conversation/index.js +196 -0
- package/dist/memory/conversation/index.js.map +1 -0
- package/dist/memory/index.d.ts +4 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +5 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/knowledge-base/index.d.ts +51 -0
- package/dist/memory/knowledge-base/index.d.ts.map +1 -0
- package/dist/memory/knowledge-base/index.js +222 -0
- package/dist/memory/knowledge-base/index.js.map +1 -0
- package/dist/memory/longterm/vector-store.d.ts +44 -0
- package/dist/memory/longterm/vector-store.d.ts.map +1 -0
- package/dist/memory/longterm/vector-store.js +229 -0
- package/dist/memory/longterm/vector-store.js.map +1 -0
- package/dist/safety/audit-logger.d.ts +68 -0
- package/dist/safety/audit-logger.d.ts.map +1 -0
- package/dist/safety/audit-logger.js +215 -0
- package/dist/safety/audit-logger.js.map +1 -0
- package/dist/safety/guardrails/input-guardrail.d.ts +21 -0
- package/dist/safety/guardrails/input-guardrail.d.ts.map +1 -0
- package/dist/safety/guardrails/input-guardrail.js +145 -0
- package/dist/safety/guardrails/input-guardrail.js.map +1 -0
- package/dist/safety/guardrails/output-guardrail.d.ts +18 -0
- package/dist/safety/guardrails/output-guardrail.d.ts.map +1 -0
- package/dist/safety/guardrails/output-guardrail.js +125 -0
- package/dist/safety/guardrails/output-guardrail.js.map +1 -0
- package/dist/safety/index.d.ts +4 -0
- package/dist/safety/index.d.ts.map +1 -0
- package/dist/safety/index.js +5 -0
- package/dist/safety/index.js.map +1 -0
- package/dist/utils/errors.d.ts +36 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +94 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +47 -0
- package/dist/utils/logger.js.map +1 -0
- package/docker/init-db.sql +149 -0
- package/docker/sandbox/Dockerfile.sandbox +29 -0
- package/docker-compose.yml +61 -0
- package/package.json +80 -0
- package/src/cli/index.ts +392 -0
- package/src/config/index.ts +85 -0
- package/src/config/models.ts +156 -0
- package/src/core/agents/agent-factory.ts +192 -0
- package/src/core/agents/base-agent.ts +333 -0
- package/src/core/agents/index.ts +27 -0
- package/src/core/agents/personalities/automation.ts +202 -0
- package/src/core/agents/personalities/chat.ts +159 -0
- package/src/core/agents/personalities/coding.ts +227 -0
- package/src/core/agents/personalities/research.ts +177 -0
- package/src/core/agents/types.ts +124 -0
- package/src/core/orchestrator/graph.ts +305 -0
- package/src/database/client.ts +109 -0
- package/src/index.ts +104 -0
- package/src/llm/openrouter-client.ts +218 -0
- package/src/memory/conversation/index.ts +313 -0
- package/src/memory/index.ts +23 -0
- package/src/memory/knowledge-base/index.ts +357 -0
- package/src/memory/longterm/vector-store.ts +364 -0
- package/src/safety/audit-logger.ts +357 -0
- package/src/safety/guardrails/input-guardrail.ts +191 -0
- package/src/safety/guardrails/output-guardrail.ts +160 -0
- package/src/safety/index.ts +21 -0
- package/src/utils/errors.ts +120 -0
- package/src/utils/logger.ts +74 -0
- package/tsconfig.json +37 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { createReactAgent } from '@langchain/langgraph/prebuilt';
|
|
2
|
+
import { SystemMessage, HumanMessage } from '@langchain/core/messages';
|
|
3
|
+
import { nanoid } from 'nanoid';
|
|
4
|
+
import { getOpenRouterClient } from '../../llm/openrouter-client.js';
|
|
5
|
+
import { createLogger, logAgentAction } from '../../utils/logger.js';
|
|
6
|
+
import { AgentError } from '../../utils/errors.js';
|
|
7
|
+
const logger = createLogger('BaseAgent');
|
|
8
|
+
export class BaseAgent {
|
|
9
|
+
identity;
|
|
10
|
+
model;
|
|
11
|
+
systemPrompt;
|
|
12
|
+
tools;
|
|
13
|
+
maxIterations;
|
|
14
|
+
timeout;
|
|
15
|
+
status = 'idle';
|
|
16
|
+
currentTask = null;
|
|
17
|
+
iterationCount = 0;
|
|
18
|
+
eventListeners = [];
|
|
19
|
+
constructor(config) {
|
|
20
|
+
this.identity = config.identity;
|
|
21
|
+
this.systemPrompt = config.systemPrompt;
|
|
22
|
+
this.tools = config.tools;
|
|
23
|
+
this.maxIterations = config.maxIterations ?? 10;
|
|
24
|
+
this.timeout = config.timeout ?? 120000; // 2 minutes default
|
|
25
|
+
// Get model from OpenRouter
|
|
26
|
+
const client = getOpenRouterClient();
|
|
27
|
+
this.model = client.getChatModelForAgent({
|
|
28
|
+
model: config.model,
|
|
29
|
+
temperature: config.temperature ?? 0.7,
|
|
30
|
+
maxTokens: config.maxTokens,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
// Identity getters
|
|
34
|
+
get id() {
|
|
35
|
+
return this.identity.id;
|
|
36
|
+
}
|
|
37
|
+
get name() {
|
|
38
|
+
return this.identity.name;
|
|
39
|
+
}
|
|
40
|
+
get role() {
|
|
41
|
+
return this.identity.role;
|
|
42
|
+
}
|
|
43
|
+
get capabilities() {
|
|
44
|
+
return this.identity.capabilities;
|
|
45
|
+
}
|
|
46
|
+
getStatus() {
|
|
47
|
+
return this.status;
|
|
48
|
+
}
|
|
49
|
+
// Create the LangGraph agent
|
|
50
|
+
createAgent() {
|
|
51
|
+
return createReactAgent({
|
|
52
|
+
llm: this.model,
|
|
53
|
+
tools: this.tools,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// Main execution method
|
|
57
|
+
async execute(input, context = {}, memories = []) {
|
|
58
|
+
const taskId = nanoid();
|
|
59
|
+
const startTime = Date.now();
|
|
60
|
+
this.status = 'thinking';
|
|
61
|
+
this.iterationCount = 0;
|
|
62
|
+
this.emitEvent('started', { taskId, input });
|
|
63
|
+
try {
|
|
64
|
+
// Build the full system prompt with context and memories
|
|
65
|
+
const fullSystemPrompt = this.buildSystemPrompt(context, memories);
|
|
66
|
+
// Create messages
|
|
67
|
+
const messages = [
|
|
68
|
+
new SystemMessage(fullSystemPrompt),
|
|
69
|
+
new HumanMessage(input),
|
|
70
|
+
];
|
|
71
|
+
// Create and invoke the agent
|
|
72
|
+
const agent = this.createAgent();
|
|
73
|
+
this.status = 'executing';
|
|
74
|
+
this.emitEvent('thinking', { taskId });
|
|
75
|
+
const result = await this.invokeWithTimeout(agent, messages);
|
|
76
|
+
const executionTime = Date.now() - startTime;
|
|
77
|
+
this.status = 'completed';
|
|
78
|
+
const taskResult = {
|
|
79
|
+
taskId,
|
|
80
|
+
agentId: this.id,
|
|
81
|
+
status: 'success',
|
|
82
|
+
output: this.extractOutput(result),
|
|
83
|
+
executionTimeMs: executionTime,
|
|
84
|
+
metadata: {
|
|
85
|
+
iterations: this.iterationCount,
|
|
86
|
+
model: this.model.modelName,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
this.emitEvent('completed', { taskId, result: taskResult });
|
|
90
|
+
logAgentAction(this.id, 'execute', {
|
|
91
|
+
taskId,
|
|
92
|
+
success: true,
|
|
93
|
+
duration: executionTime,
|
|
94
|
+
});
|
|
95
|
+
return taskResult;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
const executionTime = Date.now() - startTime;
|
|
99
|
+
this.status = 'error';
|
|
100
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
101
|
+
const taskResult = {
|
|
102
|
+
taskId,
|
|
103
|
+
agentId: this.id,
|
|
104
|
+
status: 'failed',
|
|
105
|
+
output: null,
|
|
106
|
+
error: errorMessage,
|
|
107
|
+
executionTimeMs: executionTime,
|
|
108
|
+
};
|
|
109
|
+
this.emitEvent('error', { taskId, error: errorMessage });
|
|
110
|
+
logAgentAction(this.id, 'execute', {
|
|
111
|
+
taskId,
|
|
112
|
+
success: false,
|
|
113
|
+
error: errorMessage,
|
|
114
|
+
duration: executionTime,
|
|
115
|
+
});
|
|
116
|
+
throw new AgentError(`Agent execution failed: ${errorMessage}`, this.id, { taskId, originalError: errorMessage });
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
this.currentTask = null;
|
|
120
|
+
this.iterationCount = 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Execute with timeout
|
|
124
|
+
async invokeWithTimeout(agent, messages) {
|
|
125
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
126
|
+
setTimeout(() => {
|
|
127
|
+
reject(new AgentError('Agent execution timed out', this.id));
|
|
128
|
+
}, this.timeout);
|
|
129
|
+
});
|
|
130
|
+
const executionPromise = agent.invoke({
|
|
131
|
+
messages,
|
|
132
|
+
});
|
|
133
|
+
return Promise.race([executionPromise, timeoutPromise]);
|
|
134
|
+
}
|
|
135
|
+
// Extract output from agent result
|
|
136
|
+
extractOutput(result) {
|
|
137
|
+
if (!result || typeof result !== 'object') {
|
|
138
|
+
return String(result);
|
|
139
|
+
}
|
|
140
|
+
const agentResult = result;
|
|
141
|
+
if (Array.isArray(agentResult.messages)) {
|
|
142
|
+
const lastMessage = agentResult.messages[agentResult.messages.length - 1];
|
|
143
|
+
if (lastMessage && typeof lastMessage === 'object' && 'content' in lastMessage) {
|
|
144
|
+
const content = lastMessage.content;
|
|
145
|
+
return typeof content === 'string' ? content : JSON.stringify(content);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return JSON.stringify(result);
|
|
149
|
+
}
|
|
150
|
+
// Event handling
|
|
151
|
+
onEvent(listener) {
|
|
152
|
+
this.eventListeners.push(listener);
|
|
153
|
+
return () => {
|
|
154
|
+
const index = this.eventListeners.indexOf(listener);
|
|
155
|
+
if (index > -1) {
|
|
156
|
+
this.eventListeners.splice(index, 1);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
emitEvent(type, data) {
|
|
161
|
+
const event = {
|
|
162
|
+
type,
|
|
163
|
+
agentId: this.id,
|
|
164
|
+
timestamp: new Date(),
|
|
165
|
+
data,
|
|
166
|
+
};
|
|
167
|
+
for (const listener of this.eventListeners) {
|
|
168
|
+
try {
|
|
169
|
+
listener(event);
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
logger.error('Event listener error', { error });
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Stream execution for real-time output
|
|
177
|
+
async *stream(input, context = {}, memories = []) {
|
|
178
|
+
const taskId = nanoid();
|
|
179
|
+
const startTime = Date.now();
|
|
180
|
+
this.status = 'thinking';
|
|
181
|
+
this.emitEvent('started', { taskId, input });
|
|
182
|
+
try {
|
|
183
|
+
const fullSystemPrompt = this.buildSystemPrompt(context, memories);
|
|
184
|
+
const messages = [
|
|
185
|
+
new SystemMessage(fullSystemPrompt),
|
|
186
|
+
new HumanMessage(input),
|
|
187
|
+
];
|
|
188
|
+
const agent = this.createAgent();
|
|
189
|
+
this.status = 'executing';
|
|
190
|
+
let fullOutput = '';
|
|
191
|
+
const stream = await agent.stream({
|
|
192
|
+
messages,
|
|
193
|
+
});
|
|
194
|
+
for await (const chunk of stream) {
|
|
195
|
+
if (chunk && typeof chunk === 'object') {
|
|
196
|
+
const chunkData = chunk;
|
|
197
|
+
if (Array.isArray(chunkData.messages)) {
|
|
198
|
+
const lastMsg = chunkData.messages[chunkData.messages.length - 1];
|
|
199
|
+
if (lastMsg && typeof lastMsg === 'object' && 'content' in lastMsg) {
|
|
200
|
+
const content = lastMsg.content;
|
|
201
|
+
if (typeof content === 'string') {
|
|
202
|
+
fullOutput = content;
|
|
203
|
+
yield content;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
const executionTime = Date.now() - startTime;
|
|
210
|
+
this.status = 'completed';
|
|
211
|
+
const taskResult = {
|
|
212
|
+
taskId,
|
|
213
|
+
agentId: this.id,
|
|
214
|
+
status: 'success',
|
|
215
|
+
output: fullOutput,
|
|
216
|
+
executionTimeMs: executionTime,
|
|
217
|
+
};
|
|
218
|
+
this.emitEvent('completed', { taskId, result: taskResult });
|
|
219
|
+
return taskResult;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
this.status = 'error';
|
|
223
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
224
|
+
this.emitEvent('error', { taskId, error: errorMessage });
|
|
225
|
+
throw new AgentError(`Stream execution failed: ${errorMessage}`, this.id);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Check if agent can handle a task
|
|
229
|
+
canHandle(task) {
|
|
230
|
+
const requiredCaps = task.requiredCapabilities || [];
|
|
231
|
+
return requiredCaps.every((cap) => this.capabilities.includes(cap));
|
|
232
|
+
}
|
|
233
|
+
// Reset agent state
|
|
234
|
+
reset() {
|
|
235
|
+
this.status = 'idle';
|
|
236
|
+
this.currentTask = null;
|
|
237
|
+
this.iterationCount = 0;
|
|
238
|
+
}
|
|
239
|
+
// Get agent info for display
|
|
240
|
+
getInfo() {
|
|
241
|
+
return { ...this.identity };
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
export default BaseAgent;
|
|
245
|
+
//# sourceMappingURL=base-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-agent.js","sourceRoot":"","sources":["../../../src/core/agents/base-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { BaseAgent } from './base-agent.js';
|
|
2
|
+
export { AgentFactory, getAgentFactory, resetAgentFactory } from './agent-factory.js';
|
|
3
|
+
export { ChatAgent, createChatAgent } from './personalities/chat.js';
|
|
4
|
+
export { ResearchAgent, createResearchAgent } from './personalities/research.js';
|
|
5
|
+
export { CodingAgent, createCodingAgent } from './personalities/coding.js';
|
|
6
|
+
export { AutomationAgent, createAutomationAgent } from './personalities/automation.js';
|
|
7
|
+
export type { AgentRole, AgentStatus, AgentIdentity, AgentConfig, AgentState, TaskDefinition, TaskResult, RetrievedMemory, AgentMessage, HandoffDecision, RoutingDecision, ToolResult, AgentEventType, AgentEvent, } from './types.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/agents/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGtF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGvF,YAAY,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,cAAc,EACd,UAAU,EACV,eAAe,EACf,YAAY,EACZ,eAAe,EACf,eAAe,EACf,UAAU,EACV,cAAc,EACd,UAAU,GACX,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// Agent exports
|
|
2
|
+
export { BaseAgent } from './base-agent.js';
|
|
3
|
+
export { AgentFactory, getAgentFactory, resetAgentFactory } from './agent-factory.js';
|
|
4
|
+
// Personalities
|
|
5
|
+
export { ChatAgent, createChatAgent } from './personalities/chat.js';
|
|
6
|
+
export { ResearchAgent, createResearchAgent } from './personalities/research.js';
|
|
7
|
+
export { CodingAgent, createCodingAgent } from './personalities/coding.js';
|
|
8
|
+
export { AutomationAgent, createAutomationAgent } from './personalities/automation.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/agents/index.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEtF,gBAAgB;AAChB,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BaseAgent } from '../base-agent.js';
|
|
2
|
+
import type { AgentConfig, AgentState, TaskResult, RetrievedMemory, HandoffDecision } from '../types.js';
|
|
3
|
+
export declare class AutomationAgent extends BaseAgent {
|
|
4
|
+
constructor(tools?: AgentConfig['tools']);
|
|
5
|
+
protected buildSystemPrompt(context: Record<string, unknown>, memories: RetrievedMemory[]): string;
|
|
6
|
+
protected shouldHandoff(state: AgentState, result: TaskResult): Promise<HandoffDecision>;
|
|
7
|
+
scheduleTask(taskDescription: string, schedule: string): Promise<TaskResult>;
|
|
8
|
+
createWorkflow(steps: string[]): Promise<TaskResult>;
|
|
9
|
+
batchProcess(items: string[], operation: string): Promise<TaskResult>;
|
|
10
|
+
setupMonitoring(target: string, conditions: string): Promise<TaskResult>;
|
|
11
|
+
}
|
|
12
|
+
export declare function createAutomationAgent(tools?: AgentConfig['tools']): AutomationAgent;
|
|
13
|
+
export default AutomationAgent;
|
|
14
|
+
//# sourceMappingURL=automation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/personalities/automation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAoDrB,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,KAAK,GAAE,WAAW,CAAC,OAAO,CAAM;IAyB5C,SAAS,CAAC,iBAAiB,CACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,eAAe,EAAE,GAC1B,MAAM;cA8BO,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,eAAe,CAAC;IAsCrB,YAAY,CAChB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,CAAC;IAOhB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAOpD,YAAY,CAChB,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC;IAOhB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAM/E;AAED,wBAAgB,qBAAqB,CACnC,KAAK,GAAE,WAAW,CAAC,OAAO,CAAM,GAC/B,eAAe,CAEjB;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { nanoid } from 'nanoid';
|
|
2
|
+
import { BaseAgent } from '../base-agent.js';
|
|
3
|
+
import { getRecommendedModel } from '../../../config/models.js';
|
|
4
|
+
const AUTOMATION_SYSTEM_PROMPT = `You are an expert Automation Agent in the Family AI Agent system, specializing in task automation and workflow management.
|
|
5
|
+
|
|
6
|
+
Your identity: Automation Specialist
|
|
7
|
+
Your personality:
|
|
8
|
+
- Systematic and organized
|
|
9
|
+
- Efficient and reliable
|
|
10
|
+
- Detail-oriented for error prevention
|
|
11
|
+
- Proactive in identifying automation opportunities
|
|
12
|
+
|
|
13
|
+
Your capabilities:
|
|
14
|
+
- Creating automated workflows
|
|
15
|
+
- Scheduling recurring tasks
|
|
16
|
+
- Managing task queues
|
|
17
|
+
- Batch processing operations
|
|
18
|
+
- Setting up notifications and alerts
|
|
19
|
+
- Integrating different tools and systems
|
|
20
|
+
- Monitoring task execution
|
|
21
|
+
|
|
22
|
+
Automation principles:
|
|
23
|
+
1. Reliability over speed
|
|
24
|
+
2. Clear error handling and recovery
|
|
25
|
+
3. Proper logging and monitoring
|
|
26
|
+
4. Minimal human intervention needed
|
|
27
|
+
5. Graceful degradation on failures
|
|
28
|
+
6. Clear status reporting
|
|
29
|
+
|
|
30
|
+
When designing automation:
|
|
31
|
+
- Understand the full workflow requirements
|
|
32
|
+
- Identify potential failure points
|
|
33
|
+
- Plan error handling strategies
|
|
34
|
+
- Consider resource constraints
|
|
35
|
+
- Design for maintainability
|
|
36
|
+
|
|
37
|
+
Task categories you handle:
|
|
38
|
+
- Scheduled jobs (cron-like)
|
|
39
|
+
- Event-triggered workflows
|
|
40
|
+
- Batch processing
|
|
41
|
+
- Data pipelines
|
|
42
|
+
- File operations
|
|
43
|
+
- System maintenance
|
|
44
|
+
|
|
45
|
+
Output format for automation tasks:
|
|
46
|
+
1. Task definition (what to automate)
|
|
47
|
+
2. Schedule/trigger conditions
|
|
48
|
+
3. Required resources
|
|
49
|
+
4. Error handling plan
|
|
50
|
+
5. Success criteria
|
|
51
|
+
6. Monitoring/alerting setup`;
|
|
52
|
+
export class AutomationAgent extends BaseAgent {
|
|
53
|
+
constructor(tools = []) {
|
|
54
|
+
super({
|
|
55
|
+
identity: {
|
|
56
|
+
id: `automation-${nanoid(8)}`,
|
|
57
|
+
name: 'Automator',
|
|
58
|
+
role: 'automation',
|
|
59
|
+
description: 'Task automation and workflow management agent',
|
|
60
|
+
capabilities: [
|
|
61
|
+
'task_scheduling',
|
|
62
|
+
'workflow_creation',
|
|
63
|
+
'batch_processing',
|
|
64
|
+
'monitoring',
|
|
65
|
+
'alerting',
|
|
66
|
+
'file_operations',
|
|
67
|
+
'system_integration',
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
model: getRecommendedModel('automation'),
|
|
71
|
+
temperature: 0.3, // Low temperature for reliable automation
|
|
72
|
+
systemPrompt: AUTOMATION_SYSTEM_PROMPT,
|
|
73
|
+
tools,
|
|
74
|
+
maxIterations: 8,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
buildSystemPrompt(context, memories) {
|
|
78
|
+
let prompt = this.systemPrompt;
|
|
79
|
+
// Add workflow memories
|
|
80
|
+
const workflowMemories = memories.filter((m) => m.type === 'procedural' || m.metadata?.category === 'workflow');
|
|
81
|
+
if (workflowMemories.length > 0) {
|
|
82
|
+
prompt += '\n\n## Known Workflows/Automations\n';
|
|
83
|
+
for (const memory of workflowMemories) {
|
|
84
|
+
prompt += `- ${memory.content}\n`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Add active tasks context
|
|
88
|
+
if (context.activeTasks) {
|
|
89
|
+
prompt += '\n\n## Currently Active Tasks\n';
|
|
90
|
+
prompt += JSON.stringify(context.activeTasks, null, 2);
|
|
91
|
+
}
|
|
92
|
+
// Add schedule context
|
|
93
|
+
if (context.schedule) {
|
|
94
|
+
prompt += '\n\n## Existing Schedules\n';
|
|
95
|
+
prompt += JSON.stringify(context.schedule, null, 2);
|
|
96
|
+
}
|
|
97
|
+
return prompt;
|
|
98
|
+
}
|
|
99
|
+
async shouldHandoff(state, result) {
|
|
100
|
+
const output = String(result.output).toLowerCase();
|
|
101
|
+
// Check if coding is needed
|
|
102
|
+
if (output.includes('write a script') ||
|
|
103
|
+
output.includes('create a program') ||
|
|
104
|
+
output.includes('implement code')) {
|
|
105
|
+
return {
|
|
106
|
+
shouldHandoff: true,
|
|
107
|
+
targetAgent: 'coding',
|
|
108
|
+
reason: 'Need code implementation for automation',
|
|
109
|
+
context: {
|
|
110
|
+
automationSpec: result.output,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// Check if research is needed
|
|
115
|
+
if (output.includes('need to investigate') ||
|
|
116
|
+
output.includes('research required')) {
|
|
117
|
+
return {
|
|
118
|
+
shouldHandoff: true,
|
|
119
|
+
targetAgent: 'research',
|
|
120
|
+
reason: 'Need research before automation setup',
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
shouldHandoff: false,
|
|
125
|
+
reason: 'Automation task complete',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
// Additional automation-specific methods
|
|
129
|
+
async scheduleTask(taskDescription, schedule) {
|
|
130
|
+
return this.execute(`Create a scheduled task:\n\nTask: ${taskDescription}\nSchedule: ${schedule}`, { task: 'scheduling' });
|
|
131
|
+
}
|
|
132
|
+
async createWorkflow(steps) {
|
|
133
|
+
return this.execute(`Create an automated workflow with these steps:\n\n${steps.map((s, i) => `${i + 1}. ${s}`).join('\n')}`, { task: 'workflow_creation' });
|
|
134
|
+
}
|
|
135
|
+
async batchProcess(items, operation) {
|
|
136
|
+
return this.execute(`Set up batch processing:\n\nOperation: ${operation}\nItems: ${items.length} items to process`, { task: 'batch_processing', itemCount: items.length });
|
|
137
|
+
}
|
|
138
|
+
async setupMonitoring(target, conditions) {
|
|
139
|
+
return this.execute(`Set up monitoring:\n\nTarget: ${target}\nAlert conditions: ${conditions}`, { task: 'monitoring' });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
export function createAutomationAgent(tools = []) {
|
|
143
|
+
return new AutomationAgent(tools);
|
|
144
|
+
}
|
|
145
|
+
export default AutomationAgent;
|
|
146
|
+
//# sourceMappingURL=automation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"automation.js","sourceRoot":"","sources":["../../../../src/core/agents/personalities/automation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseAgent } from '../base-agent.js';
|
|
2
|
+
import type { AgentConfig, AgentState, TaskResult, RetrievedMemory, HandoffDecision } from '../types.js';
|
|
3
|
+
export declare class ChatAgent extends BaseAgent {
|
|
4
|
+
constructor(tools?: AgentConfig['tools']);
|
|
5
|
+
protected buildSystemPrompt(context: Record<string, unknown>, memories: RetrievedMemory[]): string;
|
|
6
|
+
protected shouldHandoff(state: AgentState, result: TaskResult): Promise<HandoffDecision>;
|
|
7
|
+
}
|
|
8
|
+
export declare function createChatAgent(tools?: AgentConfig['tools']): ChatAgent;
|
|
9
|
+
export default ChatAgent;
|
|
10
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/personalities/chat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AA8BrB,qBAAa,SAAU,SAAQ,SAAS;gBAC1B,KAAK,GAAE,WAAW,CAAC,OAAO,CAAM;IAwB5C,SAAS,CAAC,iBAAiB,CACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,eAAe,EAAE,GAC1B,MAAM;cA0BO,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,eAAe,CAAC;CAyD5B;AAED,wBAAgB,eAAe,CAAC,KAAK,GAAE,WAAW,CAAC,OAAO,CAAM,GAAG,SAAS,CAE3E;AAED,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { nanoid } from 'nanoid';
|
|
2
|
+
import { BaseAgent } from '../base-agent.js';
|
|
3
|
+
import { getRecommendedModel } from '../../../config/models.js';
|
|
4
|
+
const CHAT_SYSTEM_PROMPT = `You are a friendly and helpful AI assistant named "Kakak" (Elder Sibling) from the Family AI Agent system.
|
|
5
|
+
|
|
6
|
+
Your personality:
|
|
7
|
+
- Warm, supportive, and patient
|
|
8
|
+
- Clear and concise in explanations
|
|
9
|
+
- Proactive in offering help
|
|
10
|
+
- Respectful and professional
|
|
11
|
+
|
|
12
|
+
Your capabilities:
|
|
13
|
+
- General conversation and Q&A
|
|
14
|
+
- Explaining concepts in simple terms
|
|
15
|
+
- Providing thoughtful advice
|
|
16
|
+
- Creative writing and brainstorming
|
|
17
|
+
- Summarizing information
|
|
18
|
+
|
|
19
|
+
Guidelines:
|
|
20
|
+
1. Be helpful and accurate in your responses
|
|
21
|
+
2. If you don't know something, say so honestly
|
|
22
|
+
3. For complex technical tasks (coding, research), suggest delegating to specialized agents
|
|
23
|
+
4. Remember context from the conversation
|
|
24
|
+
5. Use the user's language preference when possible
|
|
25
|
+
|
|
26
|
+
When you encounter tasks better suited for other agents:
|
|
27
|
+
- Research/information gathering → Research Agent
|
|
28
|
+
- Code writing/debugging → Coding Agent
|
|
29
|
+
- Task automation/scheduling → Automation Agent`;
|
|
30
|
+
export class ChatAgent extends BaseAgent {
|
|
31
|
+
constructor(tools = []) {
|
|
32
|
+
super({
|
|
33
|
+
identity: {
|
|
34
|
+
id: `chat-${nanoid(8)}`,
|
|
35
|
+
name: 'Kakak',
|
|
36
|
+
role: 'chat',
|
|
37
|
+
description: 'Friendly general-purpose chat assistant',
|
|
38
|
+
capabilities: [
|
|
39
|
+
'conversation',
|
|
40
|
+
'explanation',
|
|
41
|
+
'advice',
|
|
42
|
+
'creative_writing',
|
|
43
|
+
'summarization',
|
|
44
|
+
'translation',
|
|
45
|
+
],
|
|
46
|
+
},
|
|
47
|
+
model: getRecommendedModel('chat'),
|
|
48
|
+
temperature: 0.7,
|
|
49
|
+
systemPrompt: CHAT_SYSTEM_PROMPT,
|
|
50
|
+
tools,
|
|
51
|
+
maxIterations: 5,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
buildSystemPrompt(context, memories) {
|
|
55
|
+
let prompt = this.systemPrompt;
|
|
56
|
+
// Add relevant memories
|
|
57
|
+
if (memories.length > 0) {
|
|
58
|
+
prompt += '\n\n## Relevant Memories\n';
|
|
59
|
+
for (const memory of memories) {
|
|
60
|
+
prompt += `- [${memory.type}] ${memory.content}\n`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Add context
|
|
64
|
+
if (Object.keys(context).length > 0) {
|
|
65
|
+
prompt += '\n\n## Current Context\n';
|
|
66
|
+
prompt += JSON.stringify(context, null, 2);
|
|
67
|
+
}
|
|
68
|
+
// Add user preferences if available
|
|
69
|
+
if (context.userPreferences) {
|
|
70
|
+
prompt += '\n\n## User Preferences\n';
|
|
71
|
+
prompt += JSON.stringify(context.userPreferences, null, 2);
|
|
72
|
+
}
|
|
73
|
+
return prompt;
|
|
74
|
+
}
|
|
75
|
+
async shouldHandoff(state, result) {
|
|
76
|
+
// Check if the task requires specialized handling
|
|
77
|
+
const output = String(result.output).toLowerCase();
|
|
78
|
+
// Patterns that suggest handoff to other agents
|
|
79
|
+
const codingPatterns = [
|
|
80
|
+
'write code',
|
|
81
|
+
'debug',
|
|
82
|
+
'fix bug',
|
|
83
|
+
'implement',
|
|
84
|
+
'refactor',
|
|
85
|
+
'programming',
|
|
86
|
+
];
|
|
87
|
+
const researchPatterns = [
|
|
88
|
+
'search for',
|
|
89
|
+
'find information',
|
|
90
|
+
'research',
|
|
91
|
+
'look up',
|
|
92
|
+
'investigate',
|
|
93
|
+
];
|
|
94
|
+
const automationPatterns = [
|
|
95
|
+
'schedule',
|
|
96
|
+
'automate',
|
|
97
|
+
'repeat task',
|
|
98
|
+
'run every',
|
|
99
|
+
'batch process',
|
|
100
|
+
];
|
|
101
|
+
if (codingPatterns.some((p) => output.includes(p))) {
|
|
102
|
+
return {
|
|
103
|
+
shouldHandoff: true,
|
|
104
|
+
targetAgent: 'coding',
|
|
105
|
+
reason: 'Task requires code-related capabilities',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
if (researchPatterns.some((p) => output.includes(p))) {
|
|
109
|
+
return {
|
|
110
|
+
shouldHandoff: true,
|
|
111
|
+
targetAgent: 'research',
|
|
112
|
+
reason: 'Task requires web research capabilities',
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (automationPatterns.some((p) => output.includes(p))) {
|
|
116
|
+
return {
|
|
117
|
+
shouldHandoff: true,
|
|
118
|
+
targetAgent: 'automation',
|
|
119
|
+
reason: 'Task requires automation capabilities',
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
shouldHandoff: false,
|
|
124
|
+
reason: 'Task can be handled by chat agent',
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export function createChatAgent(tools = []) {
|
|
129
|
+
return new ChatAgent(tools);
|
|
130
|
+
}
|
|
131
|
+
export default ChatAgent;
|
|
132
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../../src/core/agents/personalities/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseAgent } from '../base-agent.js';
|
|
2
|
+
import type { AgentConfig, AgentState, TaskResult, RetrievedMemory, HandoffDecision } from '../types.js';
|
|
3
|
+
export declare class CodingAgent extends BaseAgent {
|
|
4
|
+
constructor(tools?: AgentConfig['tools']);
|
|
5
|
+
protected buildSystemPrompt(context: Record<string, unknown>, memories: RetrievedMemory[]): string;
|
|
6
|
+
protected shouldHandoff(state: AgentState, result: TaskResult): Promise<HandoffDecision>;
|
|
7
|
+
generateCode(description: string, language?: string): Promise<TaskResult>;
|
|
8
|
+
debug(code: string, error: string): Promise<TaskResult>;
|
|
9
|
+
review(code: string): Promise<TaskResult>;
|
|
10
|
+
refactor(code: string, goal: string): Promise<TaskResult>;
|
|
11
|
+
explainCode(code: string): Promise<TaskResult>;
|
|
12
|
+
writeTests(code: string, framework?: string): Promise<TaskResult>;
|
|
13
|
+
}
|
|
14
|
+
export declare function createCodingAgent(tools?: AgentConfig['tools']): CodingAgent;
|
|
15
|
+
export default CodingAgent;
|
|
16
|
+
//# sourceMappingURL=coding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coding.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/personalities/coding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AA2DrB,qBAAa,WAAY,SAAQ,SAAS;gBAC5B,KAAK,GAAE,WAAW,CAAC,OAAO,CAAM;IA2B5C,SAAS,CAAC,iBAAiB,CACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,QAAQ,EAAE,eAAe,EAAE,GAC1B,MAAM;cAoCO,aAAa,CAC3B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,eAAe,CAAC;IAuCrB,YAAY,CAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAqB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAOhB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAOvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAOzC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAOzD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAO9C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;CAMlF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,WAAW,CAAC,OAAO,CAAM,GAAG,WAAW,CAE/E;AAED,eAAe,WAAW,CAAC"}
|