family-ai-agent 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,203 @@
1
+ import { z } from 'zod';
2
+ declare const CustomModelSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ name: z.ZodString;
5
+ contextWindow: z.ZodDefault<z.ZodNumber>;
6
+ maxOutput: z.ZodDefault<z.ZodNumber>;
7
+ description: z.ZodOptional<z.ZodString>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ name: string;
10
+ id: string;
11
+ contextWindow: number;
12
+ maxOutput: number;
13
+ description?: string | undefined;
14
+ }, {
15
+ name: string;
16
+ id: string;
17
+ description?: string | undefined;
18
+ contextWindow?: number | undefined;
19
+ maxOutput?: number | undefined;
20
+ }>;
21
+ export type CustomModel = z.infer<typeof CustomModelSchema>;
22
+ declare const UserConfigSchema: z.ZodObject<{
23
+ apiKey: z.ZodString;
24
+ baseUrl: z.ZodDefault<z.ZodString>;
25
+ defaultModel: z.ZodDefault<z.ZodString>;
26
+ fastModel: z.ZodDefault<z.ZodString>;
27
+ embeddingModel: z.ZodDefault<z.ZodString>;
28
+ customModels: z.ZodDefault<z.ZodArray<z.ZodObject<{
29
+ id: z.ZodString;
30
+ name: z.ZodString;
31
+ contextWindow: z.ZodDefault<z.ZodNumber>;
32
+ maxOutput: z.ZodDefault<z.ZodNumber>;
33
+ description: z.ZodOptional<z.ZodString>;
34
+ }, "strip", z.ZodTypeAny, {
35
+ name: string;
36
+ id: string;
37
+ contextWindow: number;
38
+ maxOutput: number;
39
+ description?: string | undefined;
40
+ }, {
41
+ name: string;
42
+ id: string;
43
+ description?: string | undefined;
44
+ contextWindow?: number | undefined;
45
+ maxOutput?: number | undefined;
46
+ }>, "many">>;
47
+ temperature: z.ZodOptional<z.ZodNumber>;
48
+ maxTokens: z.ZodOptional<z.ZodNumber>;
49
+ enableSafetyFilters: z.ZodDefault<z.ZodBoolean>;
50
+ enableAuditLogging: z.ZodDefault<z.ZodBoolean>;
51
+ database: z.ZodOptional<z.ZodObject<{
52
+ host: z.ZodDefault<z.ZodString>;
53
+ port: z.ZodDefault<z.ZodNumber>;
54
+ user: z.ZodDefault<z.ZodString>;
55
+ password: z.ZodDefault<z.ZodString>;
56
+ name: z.ZodDefault<z.ZodString>;
57
+ }, "strip", z.ZodTypeAny, {
58
+ host: string;
59
+ port: number;
60
+ user: string;
61
+ password: string;
62
+ name: string;
63
+ }, {
64
+ host?: string | undefined;
65
+ port?: number | undefined;
66
+ user?: string | undefined;
67
+ password?: string | undefined;
68
+ name?: string | undefined;
69
+ }>>;
70
+ createdAt: z.ZodOptional<z.ZodString>;
71
+ updatedAt: z.ZodOptional<z.ZodString>;
72
+ }, "strip", z.ZodTypeAny, {
73
+ apiKey: string;
74
+ baseUrl: string;
75
+ defaultModel: string;
76
+ fastModel: string;
77
+ embeddingModel: string;
78
+ enableSafetyFilters: boolean;
79
+ enableAuditLogging: boolean;
80
+ customModels: {
81
+ name: string;
82
+ id: string;
83
+ contextWindow: number;
84
+ maxOutput: number;
85
+ description?: string | undefined;
86
+ }[];
87
+ database?: {
88
+ host: string;
89
+ port: number;
90
+ user: string;
91
+ password: string;
92
+ name: string;
93
+ } | undefined;
94
+ temperature?: number | undefined;
95
+ maxTokens?: number | undefined;
96
+ createdAt?: string | undefined;
97
+ updatedAt?: string | undefined;
98
+ }, {
99
+ apiKey: string;
100
+ baseUrl?: string | undefined;
101
+ defaultModel?: string | undefined;
102
+ fastModel?: string | undefined;
103
+ embeddingModel?: string | undefined;
104
+ enableSafetyFilters?: boolean | undefined;
105
+ enableAuditLogging?: boolean | undefined;
106
+ database?: {
107
+ host?: string | undefined;
108
+ port?: number | undefined;
109
+ user?: string | undefined;
110
+ password?: string | undefined;
111
+ name?: string | undefined;
112
+ } | undefined;
113
+ temperature?: number | undefined;
114
+ maxTokens?: number | undefined;
115
+ createdAt?: string | undefined;
116
+ updatedAt?: string | undefined;
117
+ customModels?: {
118
+ name: string;
119
+ id: string;
120
+ description?: string | undefined;
121
+ contextWindow?: number | undefined;
122
+ maxOutput?: number | undefined;
123
+ }[] | undefined;
124
+ }>;
125
+ export type UserConfig = z.infer<typeof UserConfigSchema>;
126
+ export type PartialUserConfig = Partial<Omit<UserConfig, 'createdAt' | 'updatedAt'>>;
127
+ /**
128
+ * Get the config directory path
129
+ */
130
+ export declare function getConfigDir(): string;
131
+ /**
132
+ * Get the config file path
133
+ */
134
+ export declare function getConfigPath(): string;
135
+ /**
136
+ * Check if config file exists
137
+ */
138
+ export declare function configExists(): boolean;
139
+ /**
140
+ * Ensure config directory exists
141
+ */
142
+ export declare function ensureConfigDir(): void;
143
+ /**
144
+ * Load user config from file
145
+ */
146
+ export declare function loadUserConfig(): UserConfig | null;
147
+ /**
148
+ * Save user config to file
149
+ */
150
+ export declare function saveUserConfig(config: PartialUserConfig): UserConfig;
151
+ /**
152
+ * Update specific config values
153
+ */
154
+ export declare function updateUserConfig(updates: PartialUserConfig): UserConfig;
155
+ /**
156
+ * Delete config file
157
+ */
158
+ export declare function deleteUserConfig(): boolean;
159
+ /**
160
+ * Get a specific config value
161
+ */
162
+ export declare function getConfigValue<K extends keyof UserConfig>(key: K): UserConfig[K] | undefined;
163
+ /**
164
+ * Add a custom model
165
+ */
166
+ export declare function addCustomModel(model: CustomModel): UserConfig;
167
+ /**
168
+ * Remove a custom model
169
+ */
170
+ export declare function removeCustomModel(modelId: string): UserConfig;
171
+ /**
172
+ * Get all available models (built-in + custom)
173
+ */
174
+ export declare function getAllModels(): Array<{
175
+ id: string;
176
+ name: string;
177
+ isCustom: boolean;
178
+ }>;
179
+ /**
180
+ * Mask API key for display
181
+ */
182
+ export declare function maskApiKey(apiKey: string): string;
183
+ /**
184
+ * Get config for display (with masked API key)
185
+ */
186
+ export declare function getDisplayConfig(): Record<string, unknown> | null;
187
+ declare const _default: {
188
+ getConfigDir: typeof getConfigDir;
189
+ getConfigPath: typeof getConfigPath;
190
+ configExists: typeof configExists;
191
+ loadUserConfig: typeof loadUserConfig;
192
+ saveUserConfig: typeof saveUserConfig;
193
+ updateUserConfig: typeof updateUserConfig;
194
+ deleteUserConfig: typeof deleteUserConfig;
195
+ getConfigValue: typeof getConfigValue;
196
+ addCustomModel: typeof addCustomModel;
197
+ removeCustomModel: typeof removeCustomModel;
198
+ getAllModels: typeof getAllModels;
199
+ maskApiKey: typeof maskApiKey;
200
+ getDisplayConfig: typeof getDisplayConfig;
201
+ };
202
+ export default _default;
203
+ //# sourceMappingURL=user-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-config.d.ts","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;EAMrB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCpB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAG1D,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC;AAErF;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAMtC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,UAAU,GAAG,IAAI,CA4BlD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,UAAU,CA8BpE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAWvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAiB1C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,UAAU,EACvD,GAAG,EAAE,CAAC,GACL,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAG3B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAmB7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAU7D;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CA0BrF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWjE;;;;;;;;;;;;;;;;AAED,wBAcE"}
@@ -0,0 +1,267 @@
1
+ import { homedir } from 'os';
2
+ import { join } from 'path';
3
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from 'fs';
4
+ import { z } from 'zod';
5
+ import { createLogger } from '../utils/logger.js';
6
+ const logger = createLogger('UserConfig');
7
+ // Config directory and file paths
8
+ const CONFIG_DIR_NAME = '.family-ai-agent';
9
+ const CONFIG_FILE_NAME = 'config.json';
10
+ // Custom model schema
11
+ const CustomModelSchema = z.object({
12
+ id: z.string().min(1),
13
+ name: z.string().min(1),
14
+ contextWindow: z.number().positive().default(8192),
15
+ maxOutput: z.number().positive().default(4096),
16
+ description: z.string().optional(),
17
+ });
18
+ // User config schema
19
+ const UserConfigSchema = z.object({
20
+ // API Configuration
21
+ apiKey: z.string().min(1, 'API key is required'),
22
+ baseUrl: z.string().url().default('https://openrouter.ai/api/v1'),
23
+ // Model Configuration
24
+ defaultModel: z.string().default('anthropic/claude-3.5-sonnet'),
25
+ fastModel: z.string().default('anthropic/claude-3-haiku'),
26
+ embeddingModel: z.string().default('openai/text-embedding-3-small'),
27
+ // Custom Models
28
+ customModels: z.array(CustomModelSchema).default([]),
29
+ // Optional Settings
30
+ temperature: z.number().min(0).max(2).optional(),
31
+ maxTokens: z.number().positive().optional(),
32
+ // Feature Flags
33
+ enableSafetyFilters: z.boolean().default(true),
34
+ enableAuditLogging: z.boolean().default(true),
35
+ // Database (optional - uses defaults if not set)
36
+ database: z.object({
37
+ host: z.string().default('localhost'),
38
+ port: z.number().default(5432),
39
+ user: z.string().default('familyai'),
40
+ password: z.string().default('familyai123'),
41
+ name: z.string().default('familyai'),
42
+ }).optional(),
43
+ // Metadata
44
+ createdAt: z.string().datetime().optional(),
45
+ updatedAt: z.string().datetime().optional(),
46
+ });
47
+ /**
48
+ * Get the config directory path
49
+ */
50
+ export function getConfigDir() {
51
+ return join(homedir(), CONFIG_DIR_NAME);
52
+ }
53
+ /**
54
+ * Get the config file path
55
+ */
56
+ export function getConfigPath() {
57
+ return join(getConfigDir(), CONFIG_FILE_NAME);
58
+ }
59
+ /**
60
+ * Check if config file exists
61
+ */
62
+ export function configExists() {
63
+ return existsSync(getConfigPath());
64
+ }
65
+ /**
66
+ * Ensure config directory exists
67
+ */
68
+ export function ensureConfigDir() {
69
+ const configDir = getConfigDir();
70
+ if (!existsSync(configDir)) {
71
+ mkdirSync(configDir, { recursive: true });
72
+ logger.debug('Config directory created', { path: configDir });
73
+ }
74
+ }
75
+ /**
76
+ * Load user config from file
77
+ */
78
+ export function loadUserConfig() {
79
+ const configPath = getConfigPath();
80
+ if (!existsSync(configPath)) {
81
+ logger.debug('Config file not found', { path: configPath });
82
+ return null;
83
+ }
84
+ try {
85
+ const fileContent = readFileSync(configPath, 'utf-8');
86
+ const rawConfig = JSON.parse(fileContent);
87
+ const parsed = UserConfigSchema.safeParse(rawConfig);
88
+ if (!parsed.success) {
89
+ logger.warn('Config file validation failed', {
90
+ errors: parsed.error.format(),
91
+ });
92
+ return null;
93
+ }
94
+ logger.debug('Config loaded successfully');
95
+ return parsed.data;
96
+ }
97
+ catch (error) {
98
+ logger.error('Failed to load config file', {
99
+ error: error instanceof Error ? error.message : 'Unknown error',
100
+ });
101
+ return null;
102
+ }
103
+ }
104
+ /**
105
+ * Save user config to file
106
+ */
107
+ export function saveUserConfig(config) {
108
+ ensureConfigDir();
109
+ const configPath = getConfigPath();
110
+ // Load existing config if present
111
+ const existingConfig = loadUserConfig();
112
+ // Merge with existing config
113
+ const mergedConfig = {
114
+ ...existingConfig,
115
+ ...config,
116
+ updatedAt: new Date().toISOString(),
117
+ };
118
+ // Add createdAt if new config
119
+ if (!existingConfig) {
120
+ mergedConfig.createdAt = new Date().toISOString();
121
+ }
122
+ // Validate merged config
123
+ const parsed = UserConfigSchema.safeParse(mergedConfig);
124
+ if (!parsed.success) {
125
+ throw new Error(`Invalid config: ${JSON.stringify(parsed.error.format())}`);
126
+ }
127
+ // Write to file
128
+ writeFileSync(configPath, JSON.stringify(parsed.data, null, 2), 'utf-8');
129
+ logger.info('Config saved successfully', { path: configPath });
130
+ return parsed.data;
131
+ }
132
+ /**
133
+ * Update specific config values
134
+ */
135
+ export function updateUserConfig(updates) {
136
+ const existingConfig = loadUserConfig();
137
+ if (!existingConfig) {
138
+ throw new Error('No config file found. Run setup first.');
139
+ }
140
+ return saveUserConfig({
141
+ ...existingConfig,
142
+ ...updates,
143
+ });
144
+ }
145
+ /**
146
+ * Delete config file
147
+ */
148
+ export function deleteUserConfig() {
149
+ const configPath = getConfigPath();
150
+ if (!existsSync(configPath)) {
151
+ return false;
152
+ }
153
+ try {
154
+ unlinkSync(configPath);
155
+ logger.info('Config deleted', { path: configPath });
156
+ return true;
157
+ }
158
+ catch (error) {
159
+ logger.error('Failed to delete config', {
160
+ error: error instanceof Error ? error.message : 'Unknown error',
161
+ });
162
+ return false;
163
+ }
164
+ }
165
+ /**
166
+ * Get a specific config value
167
+ */
168
+ export function getConfigValue(key) {
169
+ const config = loadUserConfig();
170
+ return config?.[key];
171
+ }
172
+ /**
173
+ * Add a custom model
174
+ */
175
+ export function addCustomModel(model) {
176
+ const config = loadUserConfig();
177
+ if (!config) {
178
+ throw new Error('No config file found. Run setup first.');
179
+ }
180
+ // Check if model already exists
181
+ const existingIndex = config.customModels.findIndex((m) => m.id === model.id);
182
+ if (existingIndex >= 0) {
183
+ // Update existing model
184
+ config.customModels[existingIndex] = model;
185
+ }
186
+ else {
187
+ // Add new model
188
+ config.customModels.push(model);
189
+ }
190
+ return saveUserConfig(config);
191
+ }
192
+ /**
193
+ * Remove a custom model
194
+ */
195
+ export function removeCustomModel(modelId) {
196
+ const config = loadUserConfig();
197
+ if (!config) {
198
+ throw new Error('No config file found. Run setup first.');
199
+ }
200
+ config.customModels = config.customModels.filter((m) => m.id !== modelId);
201
+ return saveUserConfig(config);
202
+ }
203
+ /**
204
+ * Get all available models (built-in + custom)
205
+ */
206
+ export function getAllModels() {
207
+ const config = loadUserConfig();
208
+ // Built-in models from OpenRouter
209
+ const builtInModels = [
210
+ { id: 'anthropic/claude-3.5-sonnet', name: 'Claude 3.5 Sonnet', isCustom: false },
211
+ { id: 'anthropic/claude-3-haiku', name: 'Claude 3 Haiku', isCustom: false },
212
+ { id: 'anthropic/claude-3-opus', name: 'Claude 3 Opus', isCustom: false },
213
+ { id: 'openai/gpt-4-turbo', name: 'GPT-4 Turbo', isCustom: false },
214
+ { id: 'openai/gpt-4o', name: 'GPT-4o', isCustom: false },
215
+ { id: 'openai/gpt-4o-mini', name: 'GPT-4o Mini', isCustom: false },
216
+ { id: 'google/gemini-pro-1.5', name: 'Gemini Pro 1.5', isCustom: false },
217
+ { id: 'meta-llama/llama-3.1-70b-instruct', name: 'Llama 3.1 70B', isCustom: false },
218
+ { id: 'meta-llama/llama-3.1-8b-instruct', name: 'Llama 3.1 8B', isCustom: false },
219
+ { id: 'mistralai/mistral-large', name: 'Mistral Large', isCustom: false },
220
+ { id: 'deepseek/deepseek-chat', name: 'DeepSeek Chat', isCustom: false },
221
+ ];
222
+ // Add custom models
223
+ const customModels = (config?.customModels || []).map((m) => ({
224
+ id: m.id,
225
+ name: m.name,
226
+ isCustom: true,
227
+ }));
228
+ return [...builtInModels, ...customModels];
229
+ }
230
+ /**
231
+ * Mask API key for display
232
+ */
233
+ export function maskApiKey(apiKey) {
234
+ if (apiKey.length <= 8) {
235
+ return '****';
236
+ }
237
+ return `${apiKey.slice(0, 4)}...${apiKey.slice(-4)}`;
238
+ }
239
+ /**
240
+ * Get config for display (with masked API key)
241
+ */
242
+ export function getDisplayConfig() {
243
+ const config = loadUserConfig();
244
+ if (!config) {
245
+ return null;
246
+ }
247
+ return {
248
+ ...config,
249
+ apiKey: maskApiKey(config.apiKey),
250
+ };
251
+ }
252
+ export default {
253
+ getConfigDir,
254
+ getConfigPath,
255
+ configExists,
256
+ loadUserConfig,
257
+ saveUserConfig,
258
+ updateUserConfig,
259
+ deleteUserConfig,
260
+ getConfigValue,
261
+ addCustomModel,
262
+ removeCustomModel,
263
+ getAllModels,
264
+ maskApiKey,
265
+ getDisplayConfig,
266
+ };
267
+ //# sourceMappingURL=user-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "family-ai-agent",
3
- "version": "1.0.0",
3
+ "version": "1.0.3",
4
4
  "description": "Multi-agent AI system with memory and autonomous capabilities",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
+ "bin": {
8
+ "family-ai-agent": "dist/cli/index.js"
9
+ },
7
10
  "scripts": {
8
11
  "dev": "tsx watch src/index.ts",
9
12
  "build": "tsc",