@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,316 @@
1
+ /**
2
+ * Plugin Loader - Dynamic plugin loading and lifecycle management
3
+ *
4
+ * Handles loading, validation, and execution of plugins with manifest validation
5
+ * and error isolation.
6
+ *
7
+ * @module @dcyfr/ai/plugins/plugin-loader
8
+ * @example
9
+ * ```typescript
10
+ * import { PluginLoader } from '@dcyfr/ai/plugins/plugin-loader';
11
+ *
12
+ * const loader = new PluginLoader();
13
+ *
14
+ * // Load a plugin
15
+ * await loader.loadPlugin('@dcyfr/agents/design-token-validator');
16
+ *
17
+ * // Execute plugin validation
18
+ * const result = await loader.validateAll({
19
+ * projectRoot: '/path/to/project',
20
+ * files: ['src/app.ts'],
21
+ * config: {},
22
+ * });
23
+ * ```
24
+ */
25
+ /**
26
+ * Plugin load error
27
+ */
28
+ export class PluginLoadError extends Error {
29
+ pluginName;
30
+ cause;
31
+ constructor(message, pluginName, cause) {
32
+ super(message);
33
+ this.pluginName = pluginName;
34
+ this.cause = cause;
35
+ this.name = 'PluginLoadError';
36
+ }
37
+ }
38
+ /**
39
+ * Plugin validation error
40
+ */
41
+ export class PluginValidationError extends Error {
42
+ pluginName;
43
+ constructor(message, pluginName) {
44
+ super(message);
45
+ this.pluginName = pluginName;
46
+ this.name = 'PluginValidationError';
47
+ }
48
+ }
49
+ /**
50
+ * Plugin Loader - manages plugin lifecycle
51
+ */
52
+ export class PluginLoader {
53
+ plugins = new Map();
54
+ config;
55
+ constructor(config = {}) {
56
+ this.config = {
57
+ autoLoad: false,
58
+ failureMode: 'throw',
59
+ timeout: 30000,
60
+ ...config,
61
+ };
62
+ }
63
+ /**
64
+ * Load a plugin by module path or object
65
+ */
66
+ async loadPlugin(pluginPath) {
67
+ try {
68
+ let plugin;
69
+ if (typeof pluginPath === 'string') {
70
+ // Dynamic import
71
+ const module = await import(pluginPath);
72
+ plugin = module.default || module;
73
+ }
74
+ else {
75
+ plugin = pluginPath;
76
+ }
77
+ // Validate manifest
78
+ this.validateManifest(plugin.manifest);
79
+ // Check for duplicates
80
+ if (this.plugins.has(plugin.manifest.name)) {
81
+ throw new PluginValidationError(`Plugin '${plugin.manifest.name}' is already loaded`, plugin.manifest.name);
82
+ }
83
+ // Call onLoad hook if present
84
+ if (plugin.onLoad) {
85
+ await this.executeWithTimeout(() => plugin.onLoad(), this.config.timeout, `onLoad hook for ${plugin.manifest.name}`);
86
+ }
87
+ // Store plugin
88
+ this.plugins.set(plugin.manifest.name, {
89
+ name: plugin.manifest.name,
90
+ manifest: plugin.manifest,
91
+ plugin,
92
+ loaded: new Date(),
93
+ enabled: true,
94
+ });
95
+ console.log(`✅ Loaded plugin: ${plugin.manifest.name} v${plugin.manifest.version}`);
96
+ }
97
+ catch (error) {
98
+ const pluginName = typeof pluginPath === 'string' ? pluginPath : 'unknown';
99
+ if (this.config.failureMode === 'throw') {
100
+ throw new PluginLoadError(`Failed to load plugin: ${error instanceof Error ? error.message : String(error)}`, pluginName, error instanceof Error ? error : undefined);
101
+ }
102
+ else if (this.config.failureMode === 'warn') {
103
+ console.warn(`⚠️ Failed to load plugin ${pluginName}:`, error);
104
+ }
105
+ // silent mode: do nothing
106
+ }
107
+ }
108
+ /**
109
+ * Load multiple plugins
110
+ */
111
+ async loadPlugins(plugins) {
112
+ await Promise.all(plugins.map(p => this.loadPlugin(p)));
113
+ }
114
+ /**
115
+ * Unload a plugin
116
+ */
117
+ async unloadPlugin(pluginName) {
118
+ const loaded = this.plugins.get(pluginName);
119
+ if (!loaded) {
120
+ throw new Error(`Plugin '${pluginName}' is not loaded`);
121
+ }
122
+ // Call onUnload hook if present
123
+ if (loaded.plugin.onUnload) {
124
+ await this.executeWithTimeout(() => loaded.plugin.onUnload(), this.config.timeout, `onUnload hook for ${pluginName}`);
125
+ }
126
+ this.plugins.delete(pluginName);
127
+ console.log(`🗑️ Unloaded plugin: ${pluginName}`);
128
+ }
129
+ /**
130
+ * Enable a plugin
131
+ */
132
+ enablePlugin(pluginName) {
133
+ const loaded = this.plugins.get(pluginName);
134
+ if (!loaded) {
135
+ throw new Error(`Plugin '${pluginName}' is not loaded`);
136
+ }
137
+ loaded.enabled = true;
138
+ }
139
+ /**
140
+ * Disable a plugin
141
+ */
142
+ disablePlugin(pluginName) {
143
+ const loaded = this.plugins.get(pluginName);
144
+ if (!loaded) {
145
+ throw new Error(`Plugin '${pluginName}' is not loaded`);
146
+ }
147
+ loaded.enabled = false;
148
+ }
149
+ /**
150
+ * Validate all enabled plugins
151
+ */
152
+ async validateAll(context) {
153
+ const results = [];
154
+ for (const [name, loaded] of this.plugins.entries()) {
155
+ if (!loaded.enabled)
156
+ continue;
157
+ if (loaded.plugin.onValidate) {
158
+ try {
159
+ const result = await this.executeWithTimeout(() => loaded.plugin.onValidate(context), this.config.timeout, `onValidate for ${name}`);
160
+ results.push(result);
161
+ }
162
+ catch (error) {
163
+ console.error(`❌ Plugin ${name} validation failed:`, error);
164
+ results.push({
165
+ valid: false,
166
+ violations: [
167
+ {
168
+ type: 'plugin-error',
169
+ severity: 'error',
170
+ message: `Plugin validation failed: ${error instanceof Error ? error.message : String(error)}`,
171
+ },
172
+ ],
173
+ warnings: [],
174
+ });
175
+ }
176
+ }
177
+ }
178
+ // Merge all results
179
+ return this.mergeResults(results);
180
+ }
181
+ /**
182
+ * Validate with specific plugins
183
+ */
184
+ async validateWith(pluginNames, context) {
185
+ const results = [];
186
+ for (const name of pluginNames) {
187
+ const loaded = this.plugins.get(name);
188
+ if (!loaded) {
189
+ console.warn(`⚠️ Plugin '${name}' not found, skipping`);
190
+ continue;
191
+ }
192
+ if (!loaded.enabled) {
193
+ console.warn(`⚠️ Plugin '${name}' is disabled, skipping`);
194
+ continue;
195
+ }
196
+ if (loaded.plugin.onValidate) {
197
+ try {
198
+ const result = await this.executeWithTimeout(() => loaded.plugin.onValidate(context), this.config.timeout, `onValidate for ${name}`);
199
+ results.push(result);
200
+ }
201
+ catch (error) {
202
+ console.error(`❌ Plugin ${name} validation failed:`, error);
203
+ results.push({
204
+ valid: false,
205
+ violations: [
206
+ {
207
+ type: 'plugin-error',
208
+ severity: 'error',
209
+ message: `Plugin validation failed: ${error instanceof Error ? error.message : String(error)}`,
210
+ },
211
+ ],
212
+ warnings: [],
213
+ });
214
+ }
215
+ }
216
+ }
217
+ return this.mergeResults(results);
218
+ }
219
+ /**
220
+ * Get loaded plugin info
221
+ */
222
+ getPlugin(name) {
223
+ return this.plugins.get(name);
224
+ }
225
+ /**
226
+ * Get all loaded plugins
227
+ */
228
+ getPlugins() {
229
+ return Array.from(this.plugins.values());
230
+ }
231
+ /**
232
+ * Get plugin count
233
+ */
234
+ getPluginCount() {
235
+ return this.plugins.size;
236
+ }
237
+ /**
238
+ * Clear all plugins
239
+ */
240
+ async clearAll() {
241
+ const names = Array.from(this.plugins.keys());
242
+ await Promise.all(names.map(name => this.unloadPlugin(name)));
243
+ }
244
+ /**
245
+ * Validate plugin manifest
246
+ */
247
+ validateManifest(manifest) {
248
+ if (!manifest.name) {
249
+ throw new PluginValidationError('Plugin manifest missing required field: name', 'unknown');
250
+ }
251
+ if (!manifest.version) {
252
+ throw new PluginValidationError(`Plugin manifest missing required field: version`, manifest.name);
253
+ }
254
+ // Validate version format (semver-like)
255
+ if (!/^\d+\.\d+\.\d+/.test(manifest.version)) {
256
+ throw new PluginValidationError(`Invalid version format: ${manifest.version} (expected x.y.z)`, manifest.name);
257
+ }
258
+ if (!manifest.description) {
259
+ console.warn(`⚠️ Plugin ${manifest.name} missing description`);
260
+ }
261
+ }
262
+ /**
263
+ * Execute function with timeout
264
+ */
265
+ async executeWithTimeout(fn, timeout, taskName) {
266
+ return Promise.race([
267
+ Promise.resolve(fn()),
268
+ new Promise((_, reject) => setTimeout(() => reject(new Error(`Timeout executing ${taskName}`)), timeout)),
269
+ ]);
270
+ }
271
+ /**
272
+ * Merge multiple validation results
273
+ */
274
+ mergeResults(results) {
275
+ if (results.length === 0) {
276
+ return {
277
+ valid: true,
278
+ violations: [],
279
+ warnings: [],
280
+ };
281
+ }
282
+ const allViolations = results.flatMap(r => r.violations);
283
+ const allWarnings = results.flatMap(r => r.warnings);
284
+ const allValid = results.every(r => r.valid);
285
+ return {
286
+ valid: allValid && allViolations.length === 0,
287
+ violations: allViolations,
288
+ warnings: allWarnings,
289
+ metadata: {
290
+ pluginCount: results.length,
291
+ totalViolations: allViolations.length,
292
+ totalWarnings: allWarnings.length,
293
+ },
294
+ };
295
+ }
296
+ }
297
+ /**
298
+ * Global plugin loader instance
299
+ */
300
+ let globalLoader = null;
301
+ /**
302
+ * Get or create global plugin loader
303
+ */
304
+ export function getGlobalPluginLoader(config) {
305
+ if (!globalLoader) {
306
+ globalLoader = new PluginLoader(config);
307
+ }
308
+ return globalLoader;
309
+ }
310
+ /**
311
+ * Reset global plugin loader
312
+ */
313
+ export function resetGlobalPluginLoader() {
314
+ globalLoader = null;
315
+ }
316
+ //# sourceMappingURL=plugin-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-loader.js","sourceRoot":"","sources":["../../../packages/ai/plugins/plugin-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Core type definitions for DCYFR AI Framework
3
+ *
4
+ * Shared types used across the framework for agents, providers, sessions, and telemetry.
5
+ * @module @dcyfr/ai/types
6
+ */
7
+ /**
8
+ * Supported AI provider types
9
+ */
10
+ export type ProviderType = "claude" | "groq" | "ollama" | "copilot" | "openai" | "anthropic";
11
+ /**
12
+ * Agent types - typically maps to primary providers
13
+ */
14
+ export type AgentType = "claude" | "copilot" | "groq" | "ollama";
15
+ /**
16
+ * Task classification types
17
+ */
18
+ export type TaskType = "feature" | "bug" | "refactor" | "quick-fix" | "research" | "documentation" | "testing";
19
+ /**
20
+ * Task execution outcomes
21
+ */
22
+ export type TaskOutcome = "success" | "escalated" | "failed" | "partial";
23
+ /**
24
+ * Validation status for quality gates
25
+ */
26
+ export type ValidationStatus = "pass" | "fail" | "pending" | "skipped";
27
+ /**
28
+ * Validation severity levels
29
+ */
30
+ export type ValidationSeverity = "error" | "warning" | "info";
31
+ /**
32
+ * Storage adapter types
33
+ */
34
+ export type StorageType = "memory" | "file" | "redis" | "database";
35
+ /**
36
+ * Plugin lifecycle hooks
37
+ */
38
+ export interface PluginHooks {
39
+ onLoad?: () => void | Promise<void>;
40
+ onUnload?: () => void | Promise<void>;
41
+ onValidate?: (context: ValidationContext) => Promise<ValidationResult>;
42
+ onComplete?: () => void | Promise<void>;
43
+ }
44
+ /**
45
+ * Plugin manifest structure
46
+ */
47
+ export interface PluginManifest {
48
+ name: string;
49
+ version: string;
50
+ description: string;
51
+ author?: string;
52
+ license?: string;
53
+ dependencies?: Record<string, string>;
54
+ configSchema?: Record<string, unknown>;
55
+ }
56
+ /**
57
+ * Plugin interface that all plugins must implement
58
+ */
59
+ export interface Plugin extends PluginHooks {
60
+ manifest: PluginManifest;
61
+ }
62
+ /**
63
+ * Validation context passed to plugins
64
+ */
65
+ export interface ValidationContext {
66
+ projectRoot: string;
67
+ files: string[];
68
+ config: Record<string, unknown>;
69
+ metadata?: Record<string, unknown>;
70
+ }
71
+ /**
72
+ * Validation result from plugins
73
+ */
74
+ export interface ValidationResult {
75
+ valid: boolean;
76
+ violations: ValidationViolation[];
77
+ warnings: ValidationViolation[];
78
+ metadata?: Record<string, unknown>;
79
+ }
80
+ /**
81
+ * Individual validation violation
82
+ */
83
+ export interface ValidationViolation {
84
+ type: string;
85
+ severity: ValidationSeverity;
86
+ message: string;
87
+ file?: string;
88
+ line?: number;
89
+ column?: number;
90
+ fixed?: boolean;
91
+ }
92
+ /**
93
+ * Storage adapter interface
94
+ */
95
+ export interface StorageAdapter {
96
+ type: StorageType;
97
+ get<T>(key: string): Promise<T | null>;
98
+ set<T>(key: string, value: T): Promise<void>;
99
+ delete(key: string): Promise<void>;
100
+ list(prefix?: string): Promise<string[]>;
101
+ clear(): Promise<void>;
102
+ }
103
+ /**
104
+ * Framework configuration
105
+ */
106
+ export interface FrameworkConfig {
107
+ version: string;
108
+ minNodeVersion?: string;
109
+ storage?: StorageType;
110
+ telemetry?: {
111
+ enabled: boolean;
112
+ retention?: string;
113
+ };
114
+ validation?: {
115
+ failureMode: "warn" | "error" | "block";
116
+ };
117
+ }
118
+ /**
119
+ * Provider configuration
120
+ */
121
+ export interface ProviderConfig {
122
+ name: ProviderType;
123
+ apiEndpoint?: string;
124
+ healthCheckUrl?: string;
125
+ maxRetries: number;
126
+ retryDelay: number;
127
+ timeout: number;
128
+ enabled?: boolean;
129
+ }
130
+ /**
131
+ * Provider health status
132
+ */
133
+ export interface ProviderHealth {
134
+ provider: ProviderType;
135
+ available: boolean;
136
+ responseTime?: number;
137
+ lastChecked: Date;
138
+ rateLimitRemaining?: number;
139
+ rateLimitReset?: Date;
140
+ error?: string;
141
+ }
142
+ /**
143
+ * Task context for execution
144
+ */
145
+ export interface TaskContext {
146
+ description: string;
147
+ phase: "planning" | "implementation" | "validation" | "complete";
148
+ estimatedTime?: string;
149
+ filesInProgress: string[];
150
+ validationStatus?: Record<string, ValidationStatus>;
151
+ }
152
+ /**
153
+ * Execution result wrapper
154
+ */
155
+ export interface ExecutionResult<T = unknown> {
156
+ success: boolean;
157
+ data?: T;
158
+ provider: ProviderType;
159
+ fallbackUsed: boolean;
160
+ error?: Error;
161
+ executionTime: number;
162
+ validationsPassed: string[];
163
+ validationsFailed: string[];
164
+ }
165
+ /**
166
+ * Cost estimate for provider usage
167
+ */
168
+ export interface CostEstimate {
169
+ provider: string;
170
+ inputTokens: number;
171
+ outputTokens: number;
172
+ estimatedCost: number;
173
+ currency: "USD" | "EUR" | "GBP";
174
+ }
175
+ /**
176
+ * Re-export all types as a namespace
177
+ */
178
+ export * from './telemetry';
179
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../packages/ai/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Core type definitions for DCYFR AI Framework
3
+ *
4
+ * Shared types used across the framework for agents, providers, sessions, and telemetry.
5
+ * @module @dcyfr/ai/types
6
+ */
7
+ /**
8
+ * Re-export all types as a namespace
9
+ */
10
+ export * from './telemetry';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../packages/ai/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqMH;;GAEG;AACH,cAAc,aAAa,CAAC"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Telemetry-specific type definitions
3
+ * @module @dcyfr/ai/types/telemetry
4
+ */
5
+ import type { AgentType, TaskType, TaskOutcome, ValidationStatus } from './index';
6
+ /**
7
+ * Telemetry metrics collected during a session
8
+ */
9
+ export interface TelemetryMetrics {
10
+ tokenCompliance: number;
11
+ testPassRate: number;
12
+ lintViolations: number;
13
+ typeErrors: number;
14
+ executionTime: number;
15
+ tokensUsed: number;
16
+ filesModified: number;
17
+ linesChanged: number;
18
+ validations: Record<string, ValidationStatus>;
19
+ }
20
+ /**
21
+ * Violation record for quality issues
22
+ */
23
+ export interface ViolationRecord {
24
+ timestamp: Date;
25
+ type: "design-token" | "eslint" | "typescript" | "test" | "security" | "custom";
26
+ severity: "error" | "warning" | "info";
27
+ message: string;
28
+ file?: string;
29
+ line?: number;
30
+ fixed: boolean;
31
+ }
32
+ /**
33
+ * Handoff record when switching agents
34
+ */
35
+ export interface HandoffRecord {
36
+ timestamp: Date;
37
+ fromAgent: AgentType;
38
+ toAgent: AgentType;
39
+ reason: "rate-limit" | "quality" | "manual" | "cost-optimization" | "offline" | "error";
40
+ automatic: boolean;
41
+ }
42
+ /**
43
+ * Complete telemetry session data
44
+ */
45
+ export interface TelemetrySession {
46
+ sessionId: string;
47
+ agent: AgentType;
48
+ taskType: TaskType;
49
+ taskDescription: string;
50
+ startTime: Date;
51
+ endTime?: Date;
52
+ outcome?: TaskOutcome;
53
+ metrics: TelemetryMetrics;
54
+ violations: ViolationRecord[];
55
+ handoffs: HandoffRecord[];
56
+ cost: {
57
+ provider: string;
58
+ inputTokens: number;
59
+ outputTokens: number;
60
+ estimatedCost: number;
61
+ currency: "USD" | "EUR" | "GBP";
62
+ };
63
+ }
64
+ /**
65
+ * Aggregated statistics for an agent
66
+ */
67
+ export interface AgentStats {
68
+ agent: AgentType;
69
+ period: string;
70
+ totalSessions: number;
71
+ totalTime: number;
72
+ averageSessionTime: number;
73
+ outcomes: {
74
+ success: number;
75
+ escalated: number;
76
+ failed: number;
77
+ partial: number;
78
+ };
79
+ quality: {
80
+ averageTokenCompliance: number;
81
+ averageTestPassRate: number;
82
+ totalViolations: number;
83
+ violationsFixed: number;
84
+ };
85
+ performance: {
86
+ averageExecutionTime: number;
87
+ totalTokensUsed: number;
88
+ averageFilesModified: number;
89
+ };
90
+ cost: {
91
+ totalCost: number;
92
+ averageCostPerSession: number;
93
+ costByTaskType: Record<TaskType, number>;
94
+ };
95
+ taskTypes: Record<TaskType, number>;
96
+ }
97
+ /**
98
+ * Comparison statistics across agents
99
+ */
100
+ export interface ComparisonStats {
101
+ period: string;
102
+ agents: Record<AgentType, AgentStats>;
103
+ recommendations: string[];
104
+ }
105
+ /**
106
+ * Handoff pattern analytics
107
+ */
108
+ export interface HandoffPatterns {
109
+ totalHandoffs: number;
110
+ byReason: Record<HandoffRecord["reason"], number>;
111
+ mostCommonPath: string;
112
+ automaticVsManual: {
113
+ automatic: number;
114
+ manual: number;
115
+ };
116
+ }
117
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../../packages/ai/types/telemetry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Telemetry-specific type definitions
3
+ * @module @dcyfr/ai/types/telemetry
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../../packages/ai/types/telemetry.ts"],"names":[],"mappings":"AAAA;;;GAGG"}