@dcyfr/ai 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 (49) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/LICENSE +21 -0
  3. package/README.md +210 -0
  4. package/bin/cli.js +249 -0
  5. package/bin/dcyfr-ai.js +376 -0
  6. package/config/default.json +123 -0
  7. package/config/default.yaml +161 -0
  8. package/config/minimal.yaml +16 -0
  9. package/dist/ai/config/loader.d.ts +91 -0
  10. package/dist/ai/config/loader.d.ts.map +1 -0
  11. package/dist/ai/config/loader.js +259 -0
  12. package/dist/ai/config/loader.js.map +1 -0
  13. package/dist/ai/config/schema.d.ts +854 -0
  14. package/dist/ai/config/schema.d.ts.map +1 -0
  15. package/dist/ai/config/schema.js +260 -0
  16. package/dist/ai/config/schema.js.map +1 -0
  17. package/dist/ai/core/provider-registry.d.ts +115 -0
  18. package/dist/ai/core/provider-registry.d.ts.map +1 -0
  19. package/dist/ai/core/provider-registry.js +360 -0
  20. package/dist/ai/core/provider-registry.js.map +1 -0
  21. package/dist/ai/core/telemetry-engine.d.ts +114 -0
  22. package/dist/ai/core/telemetry-engine.d.ts.map +1 -0
  23. package/dist/ai/core/telemetry-engine.js +390 -0
  24. package/dist/ai/core/telemetry-engine.js.map +1 -0
  25. package/dist/ai/index.d.ts +17 -0
  26. package/dist/ai/index.d.ts.map +1 -0
  27. package/dist/ai/index.js +21 -0
  28. package/dist/ai/index.js.map +1 -0
  29. package/dist/ai/plugins/plugin-loader.d.ts +132 -0
  30. package/dist/ai/plugins/plugin-loader.d.ts.map +1 -0
  31. package/dist/ai/plugins/plugin-loader.js +316 -0
  32. package/dist/ai/plugins/plugin-loader.js.map +1 -0
  33. package/dist/ai/types/index.d.ts +179 -0
  34. package/dist/ai/types/index.d.ts.map +1 -0
  35. package/dist/ai/types/index.js +11 -0
  36. package/dist/ai/types/index.js.map +1 -0
  37. package/dist/ai/types/telemetry.d.ts +117 -0
  38. package/dist/ai/types/telemetry.d.ts.map +1 -0
  39. package/dist/ai/types/telemetry.js +6 -0
  40. package/dist/ai/types/telemetry.js.map +1 -0
  41. package/dist/ai/utils/storage.d.ts +37 -0
  42. package/dist/ai/utils/storage.d.ts.map +1 -0
  43. package/dist/ai/utils/storage.js +129 -0
  44. package/dist/ai/utils/storage.js.map +1 -0
  45. package/dist/ai/validation/validation-framework.d.ts +112 -0
  46. package/dist/ai/validation/validation-framework.d.ts.map +1 -0
  47. package/dist/ai/validation/validation-framework.js +221 -0
  48. package/dist/ai/validation/validation-framework.js.map +1 -0
  49. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../packages/ai/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Configuration Schema - Zod validation schemas for framework configuration
3
+ *
4
+ * Provides type-safe configuration with runtime validation and defaults.
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Severity level for validation issues
9
+ */
10
+ export const SeveritySchema = z.enum(['error', 'warning', 'info']);
11
+ /**
12
+ * Failure mode for validation gates
13
+ */
14
+ export const FailureModeSchema = z.enum(['error', 'warn', 'skip']);
15
+ /**
16
+ * Design token configuration
17
+ */
18
+ export const DesignTokenConfigSchema = z.object({
19
+ enabled: z.boolean().default(true),
20
+ tokenFile: z.string().default('src/lib/design-tokens.ts'),
21
+ compliance: z.number().min(0).max(1).default(0.90),
22
+ autofix: z.boolean().default(false),
23
+ strictMode: z.boolean().default(true),
24
+ patterns: z.object({
25
+ spacing: z.array(z.string()).default([
26
+ 'SPACING.XS',
27
+ 'SPACING.SM',
28
+ 'SPACING.MD',
29
+ 'SPACING.LG',
30
+ 'SPACING.XL',
31
+ ]),
32
+ typography: z.array(z.string()).default([
33
+ 'TYPOGRAPHY.H1',
34
+ 'TYPOGRAPHY.H2',
35
+ 'TYPOGRAPHY.BODY',
36
+ ]),
37
+ colors: z.array(z.string()).default([
38
+ 'SEMANTIC_COLORS.primary',
39
+ 'SEMANTIC_COLORS.success',
40
+ ]),
41
+ }).default({}),
42
+ }).default({});
43
+ /**
44
+ * Barrel export configuration
45
+ */
46
+ export const BarrelExportConfigSchema = z.object({
47
+ enabled: z.boolean().default(true),
48
+ barrelPaths: z.array(z.string()).default([
49
+ '@/components',
50
+ '@/lib',
51
+ '@/utils',
52
+ ]),
53
+ allowRelativeWithin: z.boolean().default(false),
54
+ strictMode: z.boolean().default(true),
55
+ exceptions: z.array(z.string()).default([
56
+ 'src/app/**/layout.tsx',
57
+ 'src/app/**/page.tsx',
58
+ ]),
59
+ }).default({});
60
+ /**
61
+ * PageLayout enforcement configuration
62
+ */
63
+ export const PageLayoutConfigSchema = z.object({
64
+ enabled: z.boolean().default(true),
65
+ targetUsage: z.number().min(0).max(1).default(0.90),
66
+ pagePattern: z.string().default('src/app/**/page.tsx'),
67
+ exceptions: z.array(z.string()).default([
68
+ 'ArticleLayout',
69
+ 'ArchiveLayout',
70
+ 'ErrorLayout',
71
+ ]),
72
+ strictMode: z.boolean().default(true),
73
+ }).default({});
74
+ /**
75
+ * Test data guardian configuration
76
+ */
77
+ export const TestDataConfigSchema = z.object({
78
+ enabled: z.boolean().default(true),
79
+ testPattern: z.string().default('**/*.{test,spec}.{ts,tsx,js,jsx}'),
80
+ sensitivePatterns: z.object({
81
+ apiKeys: z.boolean().default(true),
82
+ passwords: z.boolean().default(true),
83
+ secrets: z.boolean().default(true),
84
+ tokens: z.boolean().default(true),
85
+ emails: z.boolean().default(true),
86
+ urls: z.boolean().default(true),
87
+ }).default({}),
88
+ allowedPrefixes: z.array(z.string()).default([
89
+ 'MOCK_',
90
+ 'TEST_',
91
+ 'FAKE_',
92
+ 'FIXTURE_',
93
+ ]),
94
+ }).default({});
95
+ /**
96
+ * Plugin configuration
97
+ */
98
+ export const PluginConfigSchema = z.object({
99
+ name: z.string(),
100
+ enabled: z.boolean().default(true),
101
+ timeout: z.number().positive().default(30000),
102
+ failureMode: FailureModeSchema.default('warn'),
103
+ config: z.record(z.unknown()).default({}),
104
+ });
105
+ /**
106
+ * Validation gate configuration
107
+ */
108
+ export const ValidationGateConfigSchema = z.object({
109
+ name: z.string(),
110
+ plugins: z.array(z.string()),
111
+ required: z.boolean().default(true),
112
+ failureMode: FailureModeSchema.default('error'),
113
+ parallel: z.boolean().default(false),
114
+ timeout: z.number().positive().default(60000),
115
+ });
116
+ /**
117
+ * Telemetry configuration
118
+ */
119
+ export const TelemetryConfigSchema = z.object({
120
+ enabled: z.boolean().default(true),
121
+ storage: z.enum(['memory', 'file', 'redis', 'database']).default('file'),
122
+ storagePath: z.string().default('.dcyfr/telemetry'),
123
+ retentionDays: z.number().positive().default(30),
124
+ sampling: z.number().min(0).max(1).default(1.0),
125
+ }).default({});
126
+ /**
127
+ * Provider configuration
128
+ */
129
+ export const ProviderConfigSchema = z.object({
130
+ enabled: z.boolean().default(true),
131
+ primary: z.string().default('claude'),
132
+ fallback: z.array(z.string()).default(['groq', 'ollama', 'copilot']),
133
+ timeout: z.number().positive().default(30000),
134
+ retries: z.number().min(0).default(3),
135
+ providers: z.record(z.object({
136
+ enabled: z.boolean().default(true),
137
+ apiKey: z.string().optional(),
138
+ baseUrl: z.string().optional(),
139
+ model: z.string().optional(),
140
+ maxTokens: z.number().positive().optional(),
141
+ })).default({}),
142
+ }).default({});
143
+ /**
144
+ * Main framework configuration schema
145
+ */
146
+ export const FrameworkConfigSchema = z.object({
147
+ // Framework metadata
148
+ version: z.string().default('1.0.0'),
149
+ projectName: z.string().optional(),
150
+ // Core features
151
+ telemetry: TelemetryConfigSchema,
152
+ providers: ProviderConfigSchema,
153
+ // Validation
154
+ validation: z.object({
155
+ enabled: z.boolean().default(true),
156
+ parallel: z.boolean().default(true),
157
+ failFast: z.boolean().default(false),
158
+ gates: z.array(ValidationGateConfigSchema).default([]),
159
+ }).default({}),
160
+ // Plugins
161
+ plugins: z.array(PluginConfigSchema).default([]),
162
+ // DCYFR-specific agents
163
+ agents: z.object({
164
+ designTokens: DesignTokenConfigSchema,
165
+ barrelExports: BarrelExportConfigSchema,
166
+ pageLayout: PageLayoutConfigSchema,
167
+ testData: TestDataConfigSchema,
168
+ }).default({}),
169
+ // Project settings
170
+ project: z.object({
171
+ root: z.string().default(process.cwd()),
172
+ include: z.array(z.string()).default(['src/**/*.{ts,tsx,js,jsx}']),
173
+ exclude: z.array(z.string()).default([
174
+ 'node_modules/**',
175
+ 'dist/**',
176
+ 'build/**',
177
+ '.next/**',
178
+ ]),
179
+ }).default({}),
180
+ });
181
+ /**
182
+ * Default framework configuration
183
+ */
184
+ export const DEFAULT_CONFIG = {
185
+ version: '1.0.0',
186
+ telemetry: {
187
+ enabled: true,
188
+ storage: 'file',
189
+ storagePath: '.dcyfr/telemetry',
190
+ retentionDays: 30,
191
+ sampling: 1.0,
192
+ },
193
+ providers: {
194
+ enabled: true,
195
+ primary: 'claude',
196
+ fallback: ['groq', 'ollama', 'copilot'],
197
+ timeout: 30000,
198
+ retries: 3,
199
+ providers: {},
200
+ },
201
+ validation: {
202
+ enabled: true,
203
+ parallel: true,
204
+ failFast: false,
205
+ gates: [],
206
+ },
207
+ plugins: [],
208
+ agents: {
209
+ designTokens: {
210
+ enabled: true,
211
+ tokenFile: 'src/lib/design-tokens.ts',
212
+ compliance: 0.90,
213
+ autofix: false,
214
+ strictMode: true,
215
+ patterns: {
216
+ spacing: ['SPACING.XS', 'SPACING.SM', 'SPACING.MD', 'SPACING.LG', 'SPACING.XL'],
217
+ typography: ['TYPOGRAPHY.H1', 'TYPOGRAPHY.H2', 'TYPOGRAPHY.BODY'],
218
+ colors: ['SEMANTIC_COLORS.primary', 'SEMANTIC_COLORS.success'],
219
+ },
220
+ },
221
+ barrelExports: {
222
+ enabled: true,
223
+ barrelPaths: ['@/components', '@/lib', '@/utils'],
224
+ allowRelativeWithin: false,
225
+ strictMode: true,
226
+ exceptions: ['src/app/**/layout.tsx', 'src/app/**/page.tsx'],
227
+ },
228
+ pageLayout: {
229
+ enabled: true,
230
+ targetUsage: 0.90,
231
+ pagePattern: 'src/app/**/page.tsx',
232
+ exceptions: ['ArticleLayout', 'ArchiveLayout', 'ErrorLayout'],
233
+ strictMode: true,
234
+ },
235
+ testData: {
236
+ enabled: true,
237
+ testPattern: '**/*.{test,spec}.{ts,tsx,js,jsx}',
238
+ sensitivePatterns: {
239
+ apiKeys: true,
240
+ passwords: true,
241
+ secrets: true,
242
+ tokens: true,
243
+ emails: true,
244
+ urls: true,
245
+ },
246
+ allowedPrefixes: ['MOCK_', 'TEST_', 'FAKE_', 'FIXTURE_'],
247
+ },
248
+ },
249
+ project: {
250
+ root: process.cwd(),
251
+ include: ['src/**/*.{ts,tsx,js,jsx}'],
252
+ exclude: [
253
+ 'node_modules/**',
254
+ 'dist/**',
255
+ 'build/**',
256
+ '.next/**',
257
+ ],
258
+ },
259
+ };
260
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../packages/ai/config/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Provider Registry & Fallback Manager
3
+ *
4
+ * Automatically detects rate limits and failures in primary providers and falls back to
5
+ * secondary providers with session state preservation.
6
+ *
7
+ * Features:
8
+ * - Rate limit detection
9
+ * - Automatic session state save/restore
10
+ * - Provider health monitoring
11
+ * - Configurable fallback chain
12
+ * - Context preservation across providers
13
+ *
14
+ * @module @dcyfr/ai/core/provider-registry
15
+ * @example
16
+ * ```typescript
17
+ * import { ProviderRegistry } from '@dcyfr/ai/core/provider-registry';
18
+ *
19
+ * const registry = new ProviderRegistry({
20
+ * primaryProvider: 'claude',
21
+ * fallbackChain: ['groq', 'ollama'],
22
+ * autoReturn: true,
23
+ * healthCheckInterval: 60000,
24
+ * });
25
+ *
26
+ * const result = await registry.executeWithFallback(task, async (provider) => {
27
+ * // Your execution logic
28
+ * return { data: 'result' };
29
+ * });
30
+ * ```
31
+ */
32
+ import type { ProviderType, ProviderConfig, ProviderHealth, TaskContext, ExecutionResult } from '../types';
33
+ /**
34
+ * Rate limit error
35
+ */
36
+ export declare class RateLimitError extends Error {
37
+ provider: ProviderType;
38
+ retryAfter?: number | undefined;
39
+ constructor(message: string, provider: ProviderType, retryAfter?: number | undefined);
40
+ }
41
+ /**
42
+ * Provider unavailable error
43
+ */
44
+ export declare class ProviderUnavailableError extends Error {
45
+ provider: ProviderType;
46
+ constructor(message: string, provider: ProviderType);
47
+ }
48
+ /**
49
+ * Provider Registry configuration
50
+ */
51
+ export interface ProviderRegistryConfig {
52
+ primaryProvider: ProviderType;
53
+ fallbackChain: ProviderType[];
54
+ autoReturn: boolean;
55
+ healthCheckInterval: number;
56
+ sessionStatePath?: string;
57
+ validationLevel?: 'standard' | 'enhanced' | 'strict';
58
+ }
59
+ /**
60
+ * Provider Registry - manages multiple AI providers with automatic fallback
61
+ */
62
+ export declare class ProviderRegistry {
63
+ private config;
64
+ private providerConfigs;
65
+ private healthStatus;
66
+ private currentProvider;
67
+ private healthCheckTimer?;
68
+ constructor(config: ProviderRegistryConfig);
69
+ private initializeProviderConfigs;
70
+ /**
71
+ * Check provider health status
72
+ */
73
+ private checkProviderHealth;
74
+ /**
75
+ * Start periodic health monitoring
76
+ */
77
+ private startHealthMonitoring;
78
+ /**
79
+ * Switch to a different provider
80
+ */
81
+ private switchProvider;
82
+ /**
83
+ * Execute task with a specific provider
84
+ */
85
+ private executeWithProvider;
86
+ /**
87
+ * Execute a task with automatic fallback on failure
88
+ */
89
+ executeWithFallback<T>(task: TaskContext, executor: (provider: ProviderType) => Promise<T>): Promise<ExecutionResult<T>>;
90
+ /**
91
+ * Get current provider health status
92
+ */
93
+ getHealthStatus(): Map<ProviderType, ProviderHealth>;
94
+ /**
95
+ * Get current active provider
96
+ */
97
+ getCurrentProvider(): ProviderType;
98
+ /**
99
+ * Manually trigger fallback to next provider
100
+ */
101
+ fallbackToNext(): Promise<void>;
102
+ /**
103
+ * Manually return to primary provider
104
+ */
105
+ returnToPrimary(): Promise<void>;
106
+ /**
107
+ * Update provider configuration
108
+ */
109
+ updateProviderConfig(provider: ProviderType, config: Partial<ProviderConfig>): void;
110
+ /**
111
+ * Stop health monitoring and cleanup
112
+ */
113
+ destroy(): void;
114
+ }
115
+ //# sourceMappingURL=provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-registry.d.ts","sourceRoot":"","sources":["../../../packages/ai/core/provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;IAG9B,QAAQ,EAAE,YAAY;IACtB,UAAU,CAAC,EAAE,MAAM;gBAF1B,OAAO,EAAE,MAAM,EACR,QAAQ,EAAE,YAAY,EACtB,UAAU,CAAC,EAAE,MAAM,YAAA;CAK7B;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,KAAK;IACb,QAAQ,EAAE,YAAY;gBAA9C,OAAO,EAAE,MAAM,EAAS,QAAQ,EAAE,YAAY;CAI3D;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,YAAY,CAAC;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;CACtD;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,gBAAgB,CAAC,CAAiB;gBAE9B,MAAM,EAAE,sBAAsB;IAe1C,OAAO,CAAC,yBAAyB;IA8DjC;;OAEG;YACW,mBAAmB;IAqEjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;YACW,cAAc;IAc5B;;OAEG;YACW,mBAAmB;IA0DjC;;OAEG;IACU,mBAAmB,CAAC,CAAC,EAChC,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAC/C,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IAkD9B;;OAEG;IACI,eAAe,IAAI,GAAG,CAAC,YAAY,EAAE,cAAc,CAAC;IAI3D;;OAEG;IACI,kBAAkB,IAAI,YAAY;IAIzC;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5C;;OAEG;IACU,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7C;;OAEG;IACI,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAS1F;;OAEG;IACI,OAAO,IAAI,IAAI;CAMvB"}