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.
Files changed (132) hide show
  1. package/.env.example +49 -0
  2. package/README.md +161 -0
  3. package/dist/cli/index.d.ts +3 -0
  4. package/dist/cli/index.d.ts.map +1 -0
  5. package/dist/cli/index.js +336 -0
  6. package/dist/cli/index.js.map +1 -0
  7. package/dist/config/index.d.ts +37 -0
  8. package/dist/config/index.d.ts.map +1 -0
  9. package/dist/config/index.js +68 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/models.d.ts +17 -0
  12. package/dist/config/models.d.ts.map +1 -0
  13. package/dist/config/models.js +128 -0
  14. package/dist/config/models.js.map +1 -0
  15. package/dist/core/agents/agent-factory.d.ts +31 -0
  16. package/dist/core/agents/agent-factory.d.ts.map +1 -0
  17. package/dist/core/agents/agent-factory.js +151 -0
  18. package/dist/core/agents/agent-factory.js.map +1 -0
  19. package/dist/core/agents/base-agent.d.ts +51 -0
  20. package/dist/core/agents/base-agent.d.ts.map +1 -0
  21. package/dist/core/agents/base-agent.js +245 -0
  22. package/dist/core/agents/base-agent.js.map +1 -0
  23. package/dist/core/agents/index.d.ts +8 -0
  24. package/dist/core/agents/index.d.ts.map +1 -0
  25. package/dist/core/agents/index.js +9 -0
  26. package/dist/core/agents/index.js.map +1 -0
  27. package/dist/core/agents/personalities/automation.d.ts +14 -0
  28. package/dist/core/agents/personalities/automation.d.ts.map +1 -0
  29. package/dist/core/agents/personalities/automation.js +146 -0
  30. package/dist/core/agents/personalities/automation.js.map +1 -0
  31. package/dist/core/agents/personalities/chat.d.ts +10 -0
  32. package/dist/core/agents/personalities/chat.d.ts.map +1 -0
  33. package/dist/core/agents/personalities/chat.js +132 -0
  34. package/dist/core/agents/personalities/chat.js.map +1 -0
  35. package/dist/core/agents/personalities/coding.d.ts +16 -0
  36. package/dist/core/agents/personalities/coding.d.ts.map +1 -0
  37. package/dist/core/agents/personalities/coding.js +166 -0
  38. package/dist/core/agents/personalities/coding.js.map +1 -0
  39. package/dist/core/agents/personalities/research.d.ts +13 -0
  40. package/dist/core/agents/personalities/research.d.ts.map +1 -0
  41. package/dist/core/agents/personalities/research.js +133 -0
  42. package/dist/core/agents/personalities/research.js.map +1 -0
  43. package/dist/core/agents/types.d.ts +102 -0
  44. package/dist/core/agents/types.d.ts.map +1 -0
  45. package/dist/core/agents/types.js +2 -0
  46. package/dist/core/agents/types.js.map +1 -0
  47. package/dist/core/orchestrator/graph.d.ts +118 -0
  48. package/dist/core/orchestrator/graph.d.ts.map +1 -0
  49. package/dist/core/orchestrator/graph.js +233 -0
  50. package/dist/core/orchestrator/graph.js.map +1 -0
  51. package/dist/database/client.d.ts +19 -0
  52. package/dist/database/client.d.ts.map +1 -0
  53. package/dist/database/client.js +95 -0
  54. package/dist/database/client.js.map +1 -0
  55. package/dist/index.d.ts +41 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +67 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/llm/openrouter-client.d.ts +45 -0
  60. package/dist/llm/openrouter-client.d.ts.map +1 -0
  61. package/dist/llm/openrouter-client.js +155 -0
  62. package/dist/llm/openrouter-client.js.map +1 -0
  63. package/dist/memory/conversation/index.d.ts +37 -0
  64. package/dist/memory/conversation/index.d.ts.map +1 -0
  65. package/dist/memory/conversation/index.js +196 -0
  66. package/dist/memory/conversation/index.js.map +1 -0
  67. package/dist/memory/index.d.ts +4 -0
  68. package/dist/memory/index.d.ts.map +1 -0
  69. package/dist/memory/index.js +5 -0
  70. package/dist/memory/index.js.map +1 -0
  71. package/dist/memory/knowledge-base/index.d.ts +51 -0
  72. package/dist/memory/knowledge-base/index.d.ts.map +1 -0
  73. package/dist/memory/knowledge-base/index.js +222 -0
  74. package/dist/memory/knowledge-base/index.js.map +1 -0
  75. package/dist/memory/longterm/vector-store.d.ts +44 -0
  76. package/dist/memory/longterm/vector-store.d.ts.map +1 -0
  77. package/dist/memory/longterm/vector-store.js +229 -0
  78. package/dist/memory/longterm/vector-store.js.map +1 -0
  79. package/dist/safety/audit-logger.d.ts +68 -0
  80. package/dist/safety/audit-logger.d.ts.map +1 -0
  81. package/dist/safety/audit-logger.js +215 -0
  82. package/dist/safety/audit-logger.js.map +1 -0
  83. package/dist/safety/guardrails/input-guardrail.d.ts +21 -0
  84. package/dist/safety/guardrails/input-guardrail.d.ts.map +1 -0
  85. package/dist/safety/guardrails/input-guardrail.js +145 -0
  86. package/dist/safety/guardrails/input-guardrail.js.map +1 -0
  87. package/dist/safety/guardrails/output-guardrail.d.ts +18 -0
  88. package/dist/safety/guardrails/output-guardrail.d.ts.map +1 -0
  89. package/dist/safety/guardrails/output-guardrail.js +125 -0
  90. package/dist/safety/guardrails/output-guardrail.js.map +1 -0
  91. package/dist/safety/index.d.ts +4 -0
  92. package/dist/safety/index.d.ts.map +1 -0
  93. package/dist/safety/index.js +5 -0
  94. package/dist/safety/index.js.map +1 -0
  95. package/dist/utils/errors.d.ts +36 -0
  96. package/dist/utils/errors.d.ts.map +1 -0
  97. package/dist/utils/errors.js +94 -0
  98. package/dist/utils/errors.js.map +1 -0
  99. package/dist/utils/logger.d.ts +8 -0
  100. package/dist/utils/logger.d.ts.map +1 -0
  101. package/dist/utils/logger.js +47 -0
  102. package/dist/utils/logger.js.map +1 -0
  103. package/docker/init-db.sql +149 -0
  104. package/docker/sandbox/Dockerfile.sandbox +29 -0
  105. package/docker-compose.yml +61 -0
  106. package/package.json +80 -0
  107. package/src/cli/index.ts +392 -0
  108. package/src/config/index.ts +85 -0
  109. package/src/config/models.ts +156 -0
  110. package/src/core/agents/agent-factory.ts +192 -0
  111. package/src/core/agents/base-agent.ts +333 -0
  112. package/src/core/agents/index.ts +27 -0
  113. package/src/core/agents/personalities/automation.ts +202 -0
  114. package/src/core/agents/personalities/chat.ts +159 -0
  115. package/src/core/agents/personalities/coding.ts +227 -0
  116. package/src/core/agents/personalities/research.ts +177 -0
  117. package/src/core/agents/types.ts +124 -0
  118. package/src/core/orchestrator/graph.ts +305 -0
  119. package/src/database/client.ts +109 -0
  120. package/src/index.ts +104 -0
  121. package/src/llm/openrouter-client.ts +218 -0
  122. package/src/memory/conversation/index.ts +313 -0
  123. package/src/memory/index.ts +23 -0
  124. package/src/memory/knowledge-base/index.ts +357 -0
  125. package/src/memory/longterm/vector-store.ts +364 -0
  126. package/src/safety/audit-logger.ts +357 -0
  127. package/src/safety/guardrails/input-guardrail.ts +191 -0
  128. package/src/safety/guardrails/output-guardrail.ts +160 -0
  129. package/src/safety/index.ts +21 -0
  130. package/src/utils/errors.ts +120 -0
  131. package/src/utils/logger.ts +74 -0
  132. 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":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQ7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6BA+CJ,CAAC;AAE9B,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YAAY,QAA8B,EAAE;QAC1C,KAAK,CAAC;YACJ,QAAQ,EAAE;gBACR,EAAE,EAAE,cAAc,MAAM,CAAC,CAAC,CAAC,EAAE;gBAC7B,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,YAAY;gBAClB,WAAW,EAAE,+CAA+C;gBAC5D,YAAY,EAAE;oBACZ,iBAAiB;oBACjB,mBAAmB;oBACnB,kBAAkB;oBAClB,YAAY;oBACZ,UAAU;oBACV,iBAAiB;oBACjB,oBAAoB;iBACrB;aACF;YACD,KAAK,EAAE,mBAAmB,CAAC,YAAY,CAAC;YACxC,WAAW,EAAE,GAAG,EAAE,0CAA0C;YAC5D,YAAY,EAAE,wBAAwB;YACtC,KAAK;YACL,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;IACL,CAAC;IAES,iBAAiB,CACzB,OAAgC,EAChC,QAA2B;QAE3B,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;QAE/B,wBAAwB;QACxB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,KAAK,UAAU,CACtE,CAAC;QAEF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,sCAAsC,CAAC;YACjD,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;gBACtC,MAAM,IAAI,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC;YACpC,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,IAAI,iCAAiC,CAAC;YAC5C,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,uBAAuB;QACvB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,IAAI,6BAA6B,CAAC;YACxC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,KAAK,CAAC,aAAa,CAC3B,KAAiB,EACjB,MAAkB;QAElB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnD,4BAA4B;QAC5B,IACE,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACjC,CAAC;YACD,OAAO;gBACL,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,QAAQ;gBACrB,MAAM,EAAE,yCAAyC;gBACjD,OAAO,EAAE;oBACP,cAAc,EAAE,MAAM,CAAC,MAAM;iBAC9B;aACF,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,IACE,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YACtC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EACpC,CAAC;YACD,OAAO;gBACL,aAAa,EAAE,IAAI;gBACnB,WAAW,EAAE,UAAU;gBACvB,MAAM,EAAE,uCAAuC;aAChD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,aAAa,EAAE,KAAK;YACpB,MAAM,EAAE,0BAA0B;SACnC,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,YAAY,CAChB,eAAuB,EACvB,QAAgB;QAEhB,OAAO,IAAI,CAAC,OAAO,CACjB,qCAAqC,eAAe,eAAe,QAAQ,EAAE,EAC7E,EAAE,IAAI,EAAE,YAAY,EAAE,CACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAe;QAClC,OAAO,IAAI,CAAC,OAAO,CACjB,qDAAqD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvG,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAC9B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,KAAe,EACf,SAAiB;QAEjB,OAAO,IAAI,CAAC,OAAO,CACjB,0CAA0C,SAAS,YAAY,KAAK,CAAC,MAAM,mBAAmB,EAC9F,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CACtD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,UAAkB;QACtD,OAAO,IAAI,CAAC,OAAO,CACjB,iCAAiC,MAAM,uBAAuB,UAAU,EAAE,EAC1E,EAAE,IAAI,EAAE,YAAY,EAAE,CACvB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CACnC,QAA8B,EAAE;IAEhC,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,eAAe,eAAe,CAAC"}
@@ -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"}