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,233 @@
1
+ import { StateGraph, Annotation, END, START } from '@langchain/langgraph';
2
+ import { HumanMessage, AIMessage } from '@langchain/core/messages';
3
+ import { nanoid } from 'nanoid';
4
+ import { getAgentFactory } from '../agents/agent-factory.js';
5
+ import { createLogger } from '../../utils/logger.js';
6
+ const logger = createLogger('OrchestratorGraph');
7
+ // Define the state annotation for LangGraph
8
+ export const AgentStateAnnotation = Annotation.Root({
9
+ // Messages in the conversation
10
+ messages: Annotation({
11
+ reducer: (prev, next) => [...prev, ...next],
12
+ default: () => [],
13
+ }),
14
+ // Current user input
15
+ input: Annotation({
16
+ reducer: (_, next) => next,
17
+ default: () => '',
18
+ }),
19
+ // Current task being processed
20
+ currentTask: Annotation({
21
+ reducer: (_, next) => next,
22
+ default: () => null,
23
+ }),
24
+ // Active agents in this workflow
25
+ activeAgents: Annotation({
26
+ reducer: (prev, next) => {
27
+ // Merge unique agents
28
+ const existing = new Set(prev.map((a) => a.id));
29
+ return [...prev, ...next.filter((a) => !existing.has(a.id))];
30
+ },
31
+ default: () => [],
32
+ }),
33
+ // Shared context for multi-agent coordination
34
+ sharedContext: Annotation({
35
+ reducer: (prev, next) => ({ ...prev, ...next }),
36
+ default: () => ({}),
37
+ }),
38
+ // Results from completed tasks
39
+ taskResults: Annotation({
40
+ reducer: (prev, next) => [...prev, ...next],
41
+ default: () => [],
42
+ }),
43
+ // Retrieved memories for context
44
+ memories: Annotation({
45
+ reducer: (_, next) => next,
46
+ default: () => [],
47
+ }),
48
+ // Next agent to route to
49
+ nextAgent: Annotation({
50
+ reducer: (_, next) => next,
51
+ default: () => null,
52
+ }),
53
+ // Final response to user
54
+ response: Annotation({
55
+ reducer: (_, next) => next,
56
+ default: () => '',
57
+ }),
58
+ // Error state
59
+ error: Annotation({
60
+ reducer: (_, next) => next,
61
+ default: () => null,
62
+ }),
63
+ });
64
+ // Supervisor node - analyzes and routes tasks
65
+ async function supervisorNode(state) {
66
+ logger.debug('Supervisor analyzing task', { input: state.input?.slice(0, 100) });
67
+ const input = state.input.toLowerCase();
68
+ // Simple routing logic based on keywords
69
+ let nextAgent = 'chat';
70
+ // Research patterns
71
+ if (input.includes('search') ||
72
+ input.includes('find') ||
73
+ input.includes('research') ||
74
+ input.includes('look up') ||
75
+ input.includes('what is') ||
76
+ input.includes('who is') ||
77
+ input.includes('investigate')) {
78
+ nextAgent = 'research';
79
+ }
80
+ // Coding patterns
81
+ else if (input.includes('code') ||
82
+ input.includes('program') ||
83
+ input.includes('function') ||
84
+ input.includes('debug') ||
85
+ input.includes('fix bug') ||
86
+ input.includes('implement') ||
87
+ input.includes('write a script') ||
88
+ input.includes('refactor')) {
89
+ nextAgent = 'coding';
90
+ }
91
+ // Automation patterns
92
+ else if (input.includes('automate') ||
93
+ input.includes('schedule') ||
94
+ input.includes('every day') ||
95
+ input.includes('every hour') ||
96
+ input.includes('batch') ||
97
+ input.includes('workflow') ||
98
+ input.includes('recurring')) {
99
+ nextAgent = 'automation';
100
+ }
101
+ const task = {
102
+ id: nanoid(),
103
+ type: nextAgent === 'chat' ? 'chat' : nextAgent === 'coding' ? 'coding' : nextAgent === 'research' ? 'research' : 'automation',
104
+ description: state.input,
105
+ input: state.input,
106
+ priority: 'normal',
107
+ requiredCapabilities: [],
108
+ };
109
+ logger.info('Task routed', { taskId: task.id, targetAgent: nextAgent });
110
+ return {
111
+ currentTask: task,
112
+ nextAgent,
113
+ sharedContext: {
114
+ routedAt: new Date().toISOString(),
115
+ routingReason: `Routed to ${nextAgent} based on input analysis`,
116
+ },
117
+ };
118
+ }
119
+ // Generic agent execution node
120
+ async function agentNode(role) {
121
+ return async (state) => {
122
+ logger.debug(`${role} agent executing`, { taskId: state.currentTask?.id });
123
+ const factory = getAgentFactory();
124
+ const agent = factory.getAgent(role);
125
+ try {
126
+ const result = await agent.execute(state.input, state.sharedContext, state.memories);
127
+ const aiMessage = new AIMessage({
128
+ content: String(result.output),
129
+ name: agent.name,
130
+ });
131
+ return {
132
+ messages: [aiMessage],
133
+ taskResults: [result],
134
+ response: String(result.output),
135
+ activeAgents: [agent.getInfo()],
136
+ nextAgent: 'end',
137
+ };
138
+ }
139
+ catch (error) {
140
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
141
+ logger.error(`${role} agent failed`, { error: errorMessage });
142
+ return {
143
+ error: errorMessage,
144
+ response: `Sorry, I encountered an error: ${errorMessage}`,
145
+ nextAgent: 'end',
146
+ };
147
+ }
148
+ finally {
149
+ factory.releaseAgent(agent.id);
150
+ }
151
+ };
152
+ }
153
+ // Create agent nodes
154
+ const chatAgentNode = await agentNode('chat');
155
+ const researchAgentNode = await agentNode('research');
156
+ const codingAgentNode = await agentNode('coding');
157
+ const automationAgentNode = await agentNode('automation');
158
+ // Routing function
159
+ function routeToAgent(state) {
160
+ if (state.error) {
161
+ return 'end';
162
+ }
163
+ return state.nextAgent ?? 'chat';
164
+ }
165
+ // Build the graph
166
+ export function createOrchestratorGraph() {
167
+ const workflow = new StateGraph(AgentStateAnnotation)
168
+ // Add nodes
169
+ .addNode('supervisor', supervisorNode)
170
+ .addNode('chat', chatAgentNode)
171
+ .addNode('research', researchAgentNode)
172
+ .addNode('coding', codingAgentNode)
173
+ .addNode('automation', automationAgentNode)
174
+ // Entry point
175
+ .addEdge(START, 'supervisor')
176
+ // Conditional routing from supervisor
177
+ .addConditionalEdges('supervisor', routeToAgent, {
178
+ chat: 'chat',
179
+ research: 'research',
180
+ coding: 'coding',
181
+ automation: 'automation',
182
+ end: END,
183
+ })
184
+ // All agents go to END after execution
185
+ .addEdge('chat', END)
186
+ .addEdge('research', END)
187
+ .addEdge('coding', END)
188
+ .addEdge('automation', END);
189
+ return workflow.compile();
190
+ }
191
+ // Singleton graph instance
192
+ let graphInstance = null;
193
+ export function getOrchestratorGraph() {
194
+ if (!graphInstance) {
195
+ graphInstance = createOrchestratorGraph();
196
+ }
197
+ return graphInstance;
198
+ }
199
+ // Helper function to run the orchestrator
200
+ export async function runOrchestrator(input, context = {}, memories = []) {
201
+ const graph = getOrchestratorGraph();
202
+ const initialState = {
203
+ input,
204
+ messages: [new HumanMessage(input)],
205
+ sharedContext: context,
206
+ memories,
207
+ };
208
+ logger.info('Orchestrator started', { input: input.slice(0, 100) });
209
+ const result = await graph.invoke(initialState);
210
+ logger.info('Orchestrator completed', {
211
+ response: result.response?.slice(0, 100),
212
+ agentsUsed: result.activeAgents?.map((a) => a.name),
213
+ });
214
+ return result;
215
+ }
216
+ // Stream execution
217
+ export async function* streamOrchestrator(input, context = {}, memories = []) {
218
+ const graph = getOrchestratorGraph();
219
+ const initialState = {
220
+ input,
221
+ messages: [new HumanMessage(input)],
222
+ sharedContext: context,
223
+ memories,
224
+ };
225
+ const stream = await graph.stream(initialState);
226
+ for await (const chunk of stream) {
227
+ for (const [node, state] of Object.entries(chunk)) {
228
+ yield { node, state: state };
229
+ }
230
+ }
231
+ }
232
+ export default { createOrchestratorGraph, getOrchestratorGraph, runOrchestrator, streamOrchestrator };
233
+ //# sourceMappingURL=graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/core/orchestrator/graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import pg from 'pg';
2
+ export declare function getPool(): pg.Pool;
3
+ export declare function query<T extends pg.QueryResultRow = pg.QueryResultRow>(text: string, params?: unknown[]): Promise<pg.QueryResult<T>>;
4
+ export declare function getClient(): Promise<pg.PoolClient>;
5
+ export declare function transaction<T>(callback: (client: pg.PoolClient) => Promise<T>): Promise<T>;
6
+ export declare function healthCheck(): Promise<boolean>;
7
+ export declare function closePool(): Promise<void>;
8
+ export declare function initDatabase(): Promise<void>;
9
+ declare const _default: {
10
+ getPool: typeof getPool;
11
+ query: typeof query;
12
+ getClient: typeof getClient;
13
+ transaction: typeof transaction;
14
+ healthCheck: typeof healthCheck;
15
+ closePool: typeof closePool;
16
+ initDatabase: typeof initDatabase;
17
+ };
18
+ export default _default;
19
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/database/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAUpB,wBAAgB,OAAO,IAAI,EAAE,CAAC,IAAI,CAmBjC;AAED,wBAAsB,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,cAAc,GAAG,EAAE,CAAC,cAAc,EACzE,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,EAAE,GACjB,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAc5B;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAGxD;AAED,wBAAsB,WAAW,CAAC,CAAC,EACjC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC,CAcZ;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAOpD;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAM/C;AAGD,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlD;;;;;;;;;;AAED,wBAQE"}
@@ -0,0 +1,95 @@
1
+ import pg from 'pg';
2
+ import { getDatabaseUrl } from '../config/index.js';
3
+ import { createLogger } from '../utils/logger.js';
4
+ import { MemoryError } from '../utils/errors.js';
5
+ const { Pool } = pg;
6
+ const logger = createLogger('Database');
7
+ let pool = null;
8
+ export function getPool() {
9
+ if (!pool) {
10
+ pool = new Pool({
11
+ connectionString: getDatabaseUrl(),
12
+ max: 20,
13
+ idleTimeoutMillis: 30000,
14
+ connectionTimeoutMillis: 5000,
15
+ });
16
+ pool.on('error', (err) => {
17
+ logger.error('Unexpected pool error', { error: err.message });
18
+ });
19
+ pool.on('connect', () => {
20
+ logger.debug('New client connected to pool');
21
+ });
22
+ }
23
+ return pool;
24
+ }
25
+ export async function query(text, params) {
26
+ const pool = getPool();
27
+ const start = Date.now();
28
+ try {
29
+ const result = await pool.query(text, params);
30
+ const duration = Date.now() - start;
31
+ logger.debug('Query executed', { duration, rows: result.rowCount });
32
+ return result;
33
+ }
34
+ catch (error) {
35
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
36
+ logger.error('Query failed', { error: errorMessage, query: text.slice(0, 100) });
37
+ throw new MemoryError(`Database query failed: ${errorMessage}`);
38
+ }
39
+ }
40
+ export async function getClient() {
41
+ const pool = getPool();
42
+ return pool.connect();
43
+ }
44
+ export async function transaction(callback) {
45
+ const client = await getClient();
46
+ try {
47
+ await client.query('BEGIN');
48
+ const result = await callback(client);
49
+ await client.query('COMMIT');
50
+ return result;
51
+ }
52
+ catch (error) {
53
+ await client.query('ROLLBACK');
54
+ throw error;
55
+ }
56
+ finally {
57
+ client.release();
58
+ }
59
+ }
60
+ export async function healthCheck() {
61
+ try {
62
+ const result = await query('SELECT 1 as health');
63
+ return result.rows.length > 0;
64
+ }
65
+ catch {
66
+ return false;
67
+ }
68
+ }
69
+ export async function closePool() {
70
+ if (pool) {
71
+ await pool.end();
72
+ pool = null;
73
+ logger.info('Database pool closed');
74
+ }
75
+ }
76
+ // Initialize the database connection
77
+ export async function initDatabase() {
78
+ const healthy = await healthCheck();
79
+ if (healthy) {
80
+ logger.info('Database connection established');
81
+ }
82
+ else {
83
+ throw new MemoryError('Failed to connect to database');
84
+ }
85
+ }
86
+ export default {
87
+ getPool,
88
+ query,
89
+ getClient,
90
+ transaction,
91
+ healthCheck,
92
+ closePool,
93
+ initDatabase,
94
+ };
95
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/database/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Family AI Agent - Multi-Agent AI System
3
+ *
4
+ * A production-ready multi-agent AI system with:
5
+ * - Supervisor architecture for task routing
6
+ * - Specialized agents (Research, Coding, Automation, Chat)
7
+ * - Long-term memory with vector search
8
+ * - Knowledge base with RAG
9
+ * - Safety guardrails
10
+ *
11
+ * @module family-ai-agent
12
+ */
13
+ export { BaseAgent } from './core/agents/base-agent.js';
14
+ export { ChatAgent, createChatAgent } from './core/agents/personalities/chat.js';
15
+ export { ResearchAgent, createResearchAgent } from './core/agents/personalities/research.js';
16
+ export { CodingAgent, createCodingAgent } from './core/agents/personalities/coding.js';
17
+ export { AutomationAgent, createAutomationAgent } from './core/agents/personalities/automation.js';
18
+ export { AgentFactory, getAgentFactory } from './core/agents/agent-factory.js';
19
+ export type { AgentRole, AgentStatus, AgentIdentity, AgentConfig, AgentState, TaskDefinition, TaskResult, RetrievedMemory, } from './core/agents/types.js';
20
+ export { createOrchestratorGraph, getOrchestratorGraph, runOrchestrator, streamOrchestrator, } from './core/orchestrator/graph.js';
21
+ export { VectorStore, getVectorStore } from './memory/longterm/vector-store.js';
22
+ export { ConversationMemory, getConversationMemory } from './memory/conversation/index.js';
23
+ export { KnowledgeBase, getKnowledgeBase } from './memory/knowledge-base/index.js';
24
+ export { OpenRouterClient, getOpenRouterClient } from './llm/openrouter-client.js';
25
+ export { InputGuardrail, getInputGuardrail, validateInput } from './safety/guardrails/input-guardrail.js';
26
+ export { OutputGuardrail, getOutputGuardrail, validateOutput } from './safety/guardrails/output-guardrail.js';
27
+ export { AuditLogger, getAuditLogger } from './safety/audit-logger.js';
28
+ export { initDatabase, closePool, query, transaction } from './database/client.js';
29
+ export { config, getDatabaseUrl, getRedisUrl, isProduction, isDevelopment } from './config/index.js';
30
+ export { AVAILABLE_MODELS, getModelConfig, getRecommendedModel } from './config/models.js';
31
+ export { logger, createLogger } from './utils/logger.js';
32
+ export * from './utils/errors.js';
33
+ export declare const VERSION = "1.0.0";
34
+ export declare function quickStart(): Promise<{
35
+ ask: (input: string) => Promise<string>;
36
+ remember: (content: string) => Promise<string>;
37
+ search: (query: string) => Promise<RetrievedMemory[]>;
38
+ shutdown: () => Promise<void>;
39
+ }>;
40
+ import type { RetrievedMemory } from './core/agents/types.js';
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAC/E,YAAY,EACV,SAAS,EACT,WAAW,EACX,aAAa,EACb,WAAW,EACX,UAAU,EACV,cAAc,EACd,UAAU,EACV,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGnF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGnF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAC1G,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzD,cAAc,mBAAmB,CAAC;AAGlC,eAAO,MAAM,OAAO,UAAU,CAAC;AAO/B,wBAAsB,UAAU,IAAI,OAAO,CAAC;IAC1C,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IACtD,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B,CAAC,CAyBD;AAED,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Family AI Agent - Multi-Agent AI System
3
+ *
4
+ * A production-ready multi-agent AI system with:
5
+ * - Supervisor architecture for task routing
6
+ * - Specialized agents (Research, Coding, Automation, Chat)
7
+ * - Long-term memory with vector search
8
+ * - Knowledge base with RAG
9
+ * - Safety guardrails
10
+ *
11
+ * @module family-ai-agent
12
+ */
13
+ // Core exports
14
+ export { BaseAgent } from './core/agents/base-agent.js';
15
+ export { ChatAgent, createChatAgent } from './core/agents/personalities/chat.js';
16
+ export { ResearchAgent, createResearchAgent } from './core/agents/personalities/research.js';
17
+ export { CodingAgent, createCodingAgent } from './core/agents/personalities/coding.js';
18
+ export { AutomationAgent, createAutomationAgent } from './core/agents/personalities/automation.js';
19
+ export { AgentFactory, getAgentFactory } from './core/agents/agent-factory.js';
20
+ // Orchestrator exports
21
+ export { createOrchestratorGraph, getOrchestratorGraph, runOrchestrator, streamOrchestrator, } from './core/orchestrator/graph.js';
22
+ // Memory exports
23
+ export { VectorStore, getVectorStore } from './memory/longterm/vector-store.js';
24
+ export { ConversationMemory, getConversationMemory } from './memory/conversation/index.js';
25
+ export { KnowledgeBase, getKnowledgeBase } from './memory/knowledge-base/index.js';
26
+ // LLM exports
27
+ export { OpenRouterClient, getOpenRouterClient } from './llm/openrouter-client.js';
28
+ // Safety exports
29
+ export { InputGuardrail, getInputGuardrail, validateInput } from './safety/guardrails/input-guardrail.js';
30
+ export { OutputGuardrail, getOutputGuardrail, validateOutput } from './safety/guardrails/output-guardrail.js';
31
+ export { AuditLogger, getAuditLogger } from './safety/audit-logger.js';
32
+ // Database exports
33
+ export { initDatabase, closePool, query, transaction } from './database/client.js';
34
+ // Config exports
35
+ export { config, getDatabaseUrl, getRedisUrl, isProduction, isDevelopment } from './config/index.js';
36
+ export { AVAILABLE_MODELS, getModelConfig, getRecommendedModel } from './config/models.js';
37
+ // Utility exports
38
+ export { logger, createLogger } from './utils/logger.js';
39
+ export * from './utils/errors.js';
40
+ // Version
41
+ export const VERSION = '1.0.0';
42
+ // Quick start function
43
+ import { initDatabase } from './database/client.js';
44
+ import { runOrchestrator } from './core/orchestrator/graph.js';
45
+ import { getVectorStore } from './memory/longterm/vector-store.js';
46
+ export async function quickStart() {
47
+ await initDatabase();
48
+ const vectorStore = getVectorStore();
49
+ return {
50
+ async ask(input) {
51
+ const memories = await vectorStore.search(input, { limit: 3 });
52
+ const result = await runOrchestrator(input, {}, memories);
53
+ return result.response;
54
+ },
55
+ async remember(content) {
56
+ return vectorStore.store(content, 'semantic');
57
+ },
58
+ async search(query) {
59
+ return vectorStore.search(query);
60
+ },
61
+ async shutdown() {
62
+ const { closePool } = await import('./database/client.js');
63
+ await closePool();
64
+ },
65
+ };
66
+ }
67
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { ChatOpenAI } from '@langchain/openai';
2
+ import { OpenAIEmbeddings } from '@langchain/openai';
3
+ import { type ModelConfig } from '../config/models.js';
4
+ import type { BaseMessage } from '@langchain/core/messages';
5
+ export interface ChatOptions {
6
+ model?: string;
7
+ temperature?: number;
8
+ maxTokens?: number;
9
+ topP?: number;
10
+ frequencyPenalty?: number;
11
+ presencePenalty?: number;
12
+ stop?: string[];
13
+ streaming?: boolean;
14
+ }
15
+ export interface CompletionResult {
16
+ content: string;
17
+ model: string;
18
+ usage: {
19
+ promptTokens: number;
20
+ completionTokens: number;
21
+ totalTokens: number;
22
+ };
23
+ finishReason: string;
24
+ }
25
+ export declare class OpenRouterClient {
26
+ private defaultModel;
27
+ private fastModel;
28
+ private embeddingModel;
29
+ private chatModels;
30
+ private embeddings;
31
+ constructor();
32
+ private getChatModel;
33
+ getEmbeddings(): OpenAIEmbeddings;
34
+ getChatModelForAgent(options?: ChatOptions): ChatOpenAI;
35
+ getFastModel(options?: ChatOptions): ChatOpenAI;
36
+ complete(messages: BaseMessage[], options?: ChatOptions): Promise<CompletionResult>;
37
+ streamComplete(messages: BaseMessage[], options?: ChatOptions): AsyncGenerator<string, void, unknown>;
38
+ embed(texts: string[]): Promise<number[][]>;
39
+ embedQuery(text: string): Promise<number[]>;
40
+ getModelInfo(modelId?: string): ModelConfig | undefined;
41
+ getAvailableModels(): string[];
42
+ }
43
+ export declare function getOpenRouterClient(): OpenRouterClient;
44
+ export default OpenRouterClient;
45
+ //# sourceMappingURL=openrouter-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openrouter-client.d.ts","sourceRoot":"","sources":["../../src/llm/openrouter-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAsC;IACxD,OAAO,CAAC,UAAU,CAAiC;;IAQnD,OAAO,CAAC,YAAY;IA+BpB,aAAa,IAAI,gBAAgB;IAcjC,oBAAoB,CAAC,OAAO,GAAE,WAAgB,GAAG,UAAU;IAS3D,YAAY,CAAC,OAAO,GAAE,WAAgB,GAAG,UAAU;IAK7C,QAAQ,CACZ,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,gBAAgB,CAAC;IAmCrB,cAAc,CACnB,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,GAAE,WAAgB,GACxB,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;IAwBlC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAc3C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcjD,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAKvD,kBAAkB,IAAI,MAAM,EAAE;CAG/B;AAKD,wBAAgB,mBAAmB,IAAI,gBAAgB,CAKtD;AAED,eAAe,gBAAgB,CAAC"}