codehere 0.4.0 → 0.5.0-alpha.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 (231) hide show
  1. package/README.md +7 -0
  2. package/dist/application/agents/execution-agent.js +2 -2
  3. package/dist/application/agents/execution-agent.js.map +1 -1
  4. package/dist/application/agents/planning-agent.d.ts.map +1 -1
  5. package/dist/application/agents/planning-agent.js +16 -8
  6. package/dist/application/agents/planning-agent.js.map +1 -1
  7. package/dist/application/agents/validation-agent.js +2 -2
  8. package/dist/application/agents/validation-agent.js.map +1 -1
  9. package/dist/application/services/dependency-container.d.ts +30 -6
  10. package/dist/application/services/dependency-container.d.ts.map +1 -1
  11. package/dist/application/services/dependency-container.js +75 -43
  12. package/dist/application/services/dependency-container.js.map +1 -1
  13. package/dist/application/services/intelligent-router.d.ts.map +1 -1
  14. package/dist/application/services/intelligent-router.js +6 -3
  15. package/dist/application/services/intelligent-router.js.map +1 -1
  16. package/dist/domain/entities/task.d.ts.map +1 -1
  17. package/dist/domain/entities/task.js +1 -1
  18. package/dist/domain/entities/task.js.map +1 -1
  19. package/dist/domain/errors/embeddings-not-found-error.d.ts +9 -0
  20. package/dist/domain/errors/embeddings-not-found-error.d.ts.map +1 -0
  21. package/dist/domain/errors/embeddings-not-found-error.js +13 -0
  22. package/dist/domain/errors/embeddings-not-found-error.js.map +1 -0
  23. package/dist/domain/interfaces/embedding-repository.interface.d.ts +5 -0
  24. package/dist/domain/interfaces/embedding-repository.interface.d.ts.map +1 -1
  25. package/dist/domain/services/environment-mode-manager.d.ts +4 -10
  26. package/dist/domain/services/environment-mode-manager.d.ts.map +1 -1
  27. package/dist/domain/services/environment-mode-manager.js +7 -22
  28. package/dist/domain/services/environment-mode-manager.js.map +1 -1
  29. package/dist/domain/services/risk-tier-detector.d.ts +8 -9
  30. package/dist/domain/services/risk-tier-detector.d.ts.map +1 -1
  31. package/dist/domain/services/risk-tier-detector.js +53 -40
  32. package/dist/domain/services/risk-tier-detector.js.map +1 -1
  33. package/dist/embed.d.ts.map +1 -1
  34. package/dist/embed.js +18 -8
  35. package/dist/embed.js.map +1 -1
  36. package/dist/index.js +308 -48
  37. package/dist/index.js.map +1 -1
  38. package/dist/infrastructure/ai/cohere-ai-service.js +3 -3
  39. package/dist/infrastructure/ai/cohere-ai-service.js.map +1 -1
  40. package/dist/infrastructure/ai/provider-ai-service.d.ts.map +1 -1
  41. package/dist/infrastructure/ai/provider-ai-service.js +6 -6
  42. package/dist/infrastructure/ai/provider-ai-service.js.map +1 -1
  43. package/dist/infrastructure/cache/query-result-cache.d.ts +14 -55
  44. package/dist/infrastructure/cache/query-result-cache.d.ts.map +1 -1
  45. package/dist/infrastructure/cache/query-result-cache.js +40 -112
  46. package/dist/infrastructure/cache/query-result-cache.js.map +1 -1
  47. package/dist/infrastructure/cache/response-cache.d.ts +10 -78
  48. package/dist/infrastructure/cache/response-cache.d.ts.map +1 -1
  49. package/dist/infrastructure/cache/response-cache.js +22 -198
  50. package/dist/infrastructure/cache/response-cache.js.map +1 -1
  51. package/dist/infrastructure/cache/security-scan-cache.d.ts +8 -49
  52. package/dist/infrastructure/cache/security-scan-cache.d.ts.map +1 -1
  53. package/dist/infrastructure/cache/security-scan-cache.js +25 -102
  54. package/dist/infrastructure/cache/security-scan-cache.js.map +1 -1
  55. package/dist/infrastructure/completion/bash-completion.d.ts +2 -3
  56. package/dist/infrastructure/completion/bash-completion.d.ts.map +1 -1
  57. package/dist/infrastructure/completion/bash-completion.js +11 -87
  58. package/dist/infrastructure/completion/bash-completion.js.map +1 -1
  59. package/dist/infrastructure/completion/fish-completion.d.ts +2 -3
  60. package/dist/infrastructure/completion/fish-completion.d.ts.map +1 -1
  61. package/dist/infrastructure/completion/fish-completion.js +15 -58
  62. package/dist/infrastructure/completion/fish-completion.js.map +1 -1
  63. package/dist/infrastructure/completion/zsh-completion.d.ts +2 -3
  64. package/dist/infrastructure/completion/zsh-completion.d.ts.map +1 -1
  65. package/dist/infrastructure/completion/zsh-completion.js +18 -73
  66. package/dist/infrastructure/completion/zsh-completion.js.map +1 -1
  67. package/dist/infrastructure/config/config-manager.js +2 -2
  68. package/dist/infrastructure/config/config-manager.js.map +1 -1
  69. package/dist/infrastructure/context/conversation-context.d.ts +27 -31
  70. package/dist/infrastructure/context/conversation-context.d.ts.map +1 -1
  71. package/dist/infrastructure/context/conversation-context.js +94 -136
  72. package/dist/infrastructure/context/conversation-context.js.map +1 -1
  73. package/dist/infrastructure/context/session-manager.d.ts +27 -11
  74. package/dist/infrastructure/context/session-manager.d.ts.map +1 -1
  75. package/dist/infrastructure/context/session-manager.js +69 -73
  76. package/dist/infrastructure/context/session-manager.js.map +1 -1
  77. package/dist/infrastructure/providers/cohere-provider.d.ts.map +1 -1
  78. package/dist/infrastructure/providers/cohere-provider.js +102 -17
  79. package/dist/infrastructure/providers/cohere-provider.js.map +1 -1
  80. package/dist/infrastructure/providers/openrouter-provider.d.ts +42 -0
  81. package/dist/infrastructure/providers/openrouter-provider.d.ts.map +1 -0
  82. package/dist/infrastructure/providers/openrouter-provider.js +399 -0
  83. package/dist/infrastructure/providers/openrouter-provider.js.map +1 -0
  84. package/dist/infrastructure/serialization/toon-serializer.d.ts +45 -0
  85. package/dist/infrastructure/serialization/toon-serializer.d.ts.map +1 -0
  86. package/dist/infrastructure/serialization/toon-serializer.js +119 -0
  87. package/dist/infrastructure/serialization/toon-serializer.js.map +1 -0
  88. package/dist/infrastructure/storage/embeddings-path.d.ts +18 -0
  89. package/dist/infrastructure/storage/embeddings-path.d.ts.map +1 -0
  90. package/dist/infrastructure/storage/embeddings-path.js +37 -0
  91. package/dist/infrastructure/storage/embeddings-path.js.map +1 -0
  92. package/dist/infrastructure/storage/plan-repository.d.ts +2 -0
  93. package/dist/infrastructure/storage/plan-repository.d.ts.map +1 -1
  94. package/dist/infrastructure/storage/plan-repository.js +36 -73
  95. package/dist/infrastructure/storage/plan-repository.js.map +1 -1
  96. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts +10 -1
  97. package/dist/infrastructure/storage/sqlite-embedding-repository.d.ts.map +1 -1
  98. package/dist/infrastructure/storage/sqlite-embedding-repository.js +37 -3
  99. package/dist/infrastructure/storage/sqlite-embedding-repository.js.map +1 -1
  100. package/dist/infrastructure/storage/task-helpers.d.ts +11 -0
  101. package/dist/infrastructure/storage/task-helpers.d.ts.map +1 -1
  102. package/dist/infrastructure/storage/task-helpers.js +47 -7
  103. package/dist/infrastructure/storage/task-helpers.js.map +1 -1
  104. package/dist/infrastructure/storage/task-repository.d.ts.map +1 -1
  105. package/dist/infrastructure/storage/task-repository.js.map +1 -1
  106. package/dist/infrastructure/ux/capability-boundaries.d.ts +9 -37
  107. package/dist/infrastructure/ux/capability-boundaries.d.ts.map +1 -1
  108. package/dist/infrastructure/ux/capability-boundaries.js +23 -148
  109. package/dist/infrastructure/ux/capability-boundaries.js.map +1 -1
  110. package/dist/infrastructure/ux/comprehensive-formatter.d.ts +12 -54
  111. package/dist/infrastructure/ux/comprehensive-formatter.d.ts.map +1 -1
  112. package/dist/infrastructure/ux/comprehensive-formatter.js +87 -182
  113. package/dist/infrastructure/ux/comprehensive-formatter.js.map +1 -1
  114. package/dist/infrastructure/ux/contextual-feature-discovery.d.ts +5 -18
  115. package/dist/infrastructure/ux/contextual-feature-discovery.d.ts.map +1 -1
  116. package/dist/infrastructure/ux/contextual-feature-discovery.js +5 -139
  117. package/dist/infrastructure/ux/contextual-feature-discovery.js.map +1 -1
  118. package/dist/infrastructure/ux/feature-discovery.d.ts +3 -33
  119. package/dist/infrastructure/ux/feature-discovery.d.ts.map +1 -1
  120. package/dist/infrastructure/ux/feature-discovery.js +5 -181
  121. package/dist/infrastructure/ux/feature-discovery.js.map +1 -1
  122. package/dist/infrastructure/ux/feedback-prompt.d.ts +15 -31
  123. package/dist/infrastructure/ux/feedback-prompt.d.ts.map +1 -1
  124. package/dist/infrastructure/ux/feedback-prompt.js +30 -166
  125. package/dist/infrastructure/ux/feedback-prompt.js.map +1 -1
  126. package/dist/infrastructure/ux/progress-indicator.d.ts +3 -5
  127. package/dist/infrastructure/ux/progress-indicator.d.ts.map +1 -1
  128. package/dist/infrastructure/ux/progress-indicator.js +34 -49
  129. package/dist/infrastructure/ux/progress-indicator.js.map +1 -1
  130. package/dist/infrastructure/ux/review-checkpoint.d.ts +3 -1
  131. package/dist/infrastructure/ux/review-checkpoint.d.ts.map +1 -1
  132. package/dist/infrastructure/ux/review-checkpoint.js +33 -80
  133. package/dist/infrastructure/ux/review-checkpoint.js.map +1 -1
  134. package/dist/infrastructure/ux/staged-feature-intro.d.ts +14 -39
  135. package/dist/infrastructure/ux/staged-feature-intro.d.ts.map +1 -1
  136. package/dist/infrastructure/ux/staged-feature-intro.js +12 -132
  137. package/dist/infrastructure/ux/staged-feature-intro.js.map +1 -1
  138. package/dist/infrastructure/ux/syntax-highlighter.d.ts +1 -2
  139. package/dist/infrastructure/ux/syntax-highlighter.d.ts.map +1 -1
  140. package/dist/infrastructure/ux/syntax-highlighter.js +67 -148
  141. package/dist/infrastructure/ux/syntax-highlighter.js.map +1 -1
  142. package/dist/infrastructure/validation/agent-feedback.d.ts +25 -89
  143. package/dist/infrastructure/validation/agent-feedback.d.ts.map +1 -1
  144. package/dist/infrastructure/validation/agent-feedback.js +32 -204
  145. package/dist/infrastructure/validation/agent-feedback.js.map +1 -1
  146. package/dist/infrastructure/validation/agent-validation-helper.d.ts +53 -53
  147. package/dist/infrastructure/validation/agent-validation-helper.d.ts.map +1 -1
  148. package/dist/infrastructure/validation/agent-validation-helper.js +110 -61
  149. package/dist/infrastructure/validation/agent-validation-helper.js.map +1 -1
  150. package/dist/infrastructure/validation/review-handler.d.ts +13 -41
  151. package/dist/infrastructure/validation/review-handler.d.ts.map +1 -1
  152. package/dist/infrastructure/validation/review-handler.js +23 -189
  153. package/dist/infrastructure/validation/review-handler.js.map +1 -1
  154. package/dist/infrastructure/validation/summary-aggregator.d.ts +25 -22
  155. package/dist/infrastructure/validation/summary-aggregator.d.ts.map +1 -1
  156. package/dist/infrastructure/validation/summary-aggregator.js +47 -133
  157. package/dist/infrastructure/validation/summary-aggregator.js.map +1 -1
  158. package/dist/infrastructure/validation/summary-extractor.d.ts +13 -48
  159. package/dist/infrastructure/validation/summary-extractor.d.ts.map +1 -1
  160. package/dist/infrastructure/validation/summary-extractor.js +32 -89
  161. package/dist/infrastructure/validation/summary-extractor.js.map +1 -1
  162. package/dist/infrastructure/validation/trace-summary.d.ts +30 -57
  163. package/dist/infrastructure/validation/trace-summary.d.ts.map +1 -1
  164. package/dist/infrastructure/validation/trace-summary.js +37 -356
  165. package/dist/infrastructure/validation/trace-summary.js.map +1 -1
  166. package/dist/monitoring.d.ts +1 -1
  167. package/dist/monitoring.d.ts.map +1 -1
  168. package/dist/monitoring.js +12 -9
  169. package/dist/monitoring.js.map +1 -1
  170. package/dist/parallel-processor.d.ts.map +1 -1
  171. package/dist/parallel-processor.js +124 -45
  172. package/dist/parallel-processor.js.map +1 -1
  173. package/dist/presentation/cli/commands/ask-command.d.ts.map +1 -1
  174. package/dist/presentation/cli/commands/ask-command.js +185 -128
  175. package/dist/presentation/cli/commands/ask-command.js.map +1 -1
  176. package/dist/presentation/cli/commands/config-command.d.ts.map +1 -1
  177. package/dist/presentation/cli/commands/config-command.js +8 -6
  178. package/dist/presentation/cli/commands/config-command.js.map +1 -1
  179. package/dist/presentation/cli/commands/docs-command.d.ts +3 -1
  180. package/dist/presentation/cli/commands/docs-command.d.ts.map +1 -1
  181. package/dist/presentation/cli/commands/docs-command.js +13 -184
  182. package/dist/presentation/cli/commands/docs-command.js.map +1 -1
  183. package/dist/presentation/cli/commands/fix-command.d.ts +2 -0
  184. package/dist/presentation/cli/commands/fix-command.d.ts.map +1 -1
  185. package/dist/presentation/cli/commands/fix-command.js +25 -281
  186. package/dist/presentation/cli/commands/fix-command.js.map +1 -1
  187. package/dist/presentation/cli/commands/models-command.d.ts +13 -0
  188. package/dist/presentation/cli/commands/models-command.d.ts.map +1 -0
  189. package/dist/presentation/cli/commands/models-command.js +194 -0
  190. package/dist/presentation/cli/commands/models-command.js.map +1 -0
  191. package/dist/presentation/cli/commands/orchestrate-command.d.ts.map +1 -1
  192. package/dist/presentation/cli/commands/orchestrate-command.js +15 -7
  193. package/dist/presentation/cli/commands/orchestrate-command.js.map +1 -1
  194. package/dist/presentation/cli/commands/plan-command.d.ts.map +1 -1
  195. package/dist/presentation/cli/commands/plan-command.js +9 -6
  196. package/dist/presentation/cli/commands/plan-command.js.map +1 -1
  197. package/dist/presentation/cli/commands/product-command.d.ts +6 -4
  198. package/dist/presentation/cli/commands/product-command.d.ts.map +1 -1
  199. package/dist/presentation/cli/commands/product-command.js +12 -178
  200. package/dist/presentation/cli/commands/product-command.js.map +1 -1
  201. package/dist/presentation/cli/commands/review-command.d.ts +7 -7
  202. package/dist/presentation/cli/commands/review-command.d.ts.map +1 -1
  203. package/dist/presentation/cli/commands/review-command.js +148 -16
  204. package/dist/presentation/cli/commands/review-command.js.map +1 -1
  205. package/dist/presentation/cli/commands/run-command.d.ts +6 -8
  206. package/dist/presentation/cli/commands/run-command.d.ts.map +1 -1
  207. package/dist/presentation/cli/commands/run-command.js +182 -23
  208. package/dist/presentation/cli/commands/run-command.js.map +1 -1
  209. package/dist/presentation/cli/commands/setup-command.d.ts.map +1 -1
  210. package/dist/presentation/cli/commands/setup-command.js +15 -0
  211. package/dist/presentation/cli/commands/setup-command.js.map +1 -1
  212. package/dist/presentation/cli/commands/smart-command.js +1 -1
  213. package/dist/presentation/cli/commands/smart-command.js.map +1 -1
  214. package/dist/presentation/cli/commands/status-command.d.ts +3 -0
  215. package/dist/presentation/cli/commands/status-command.d.ts.map +1 -1
  216. package/dist/presentation/cli/commands/status-command.js +147 -156
  217. package/dist/presentation/cli/commands/status-command.js.map +1 -1
  218. package/dist/presentation/cli/commands/suggest-command.d.ts +3 -5
  219. package/dist/presentation/cli/commands/suggest-command.d.ts.map +1 -1
  220. package/dist/presentation/cli/commands/suggest-command.js +132 -19
  221. package/dist/presentation/cli/commands/suggest-command.js.map +1 -1
  222. package/dist/search.d.ts.map +1 -1
  223. package/dist/search.js +6 -1
  224. package/dist/search.js.map +1 -1
  225. package/dist/session.js +1 -1
  226. package/dist/session.js.map +1 -1
  227. package/dist/ui.d.ts +6 -0
  228. package/dist/ui.d.ts.map +1 -1
  229. package/dist/ui.js +35 -1
  230. package/dist/ui.js.map +1 -1
  231. package/package.json +8 -3
@@ -1,227 +1,55 @@
1
1
  /**
2
- * Infrastructure: Agent Feedback Module
3
- * Unified evaluation & feedback capture layer for Validation Mode
2
+ * Agent Feedback
3
+ * Records and manages feedback about agent operations
4
4
  *
5
- * Features:
6
- * - Record success/failure, user approval, user modifications, errors
7
- * - Store anonymously in local memory for pattern improvements
8
- * - JSON-based, appended per operation
9
- * - Privacy-first design with opt-out support
5
+ * Phase 1: v0.5.0-alpha.0
10
6
  */
11
- import { writeFileSync, readFileSync, existsSync, mkdirSync, appendFileSync } from 'fs';
12
- import { join, dirname } from 'path';
13
- import { fileURLToPath } from 'url';
14
- import { randomUUID } from 'crypto';
15
- const __filename = fileURLToPath(import.meta.url);
16
- const __dirname = dirname(__filename);
17
7
  /**
18
8
  * Agent Feedback Manager
19
- * Lightweight, privacy-first feedback capture
20
9
  */
21
- export class AgentFeedbackManager {
22
- config;
23
- feedbackDir = '';
24
- feedbackHistory = [];
25
- constructor(config) {
26
- // Check opt-out preference
27
- const optOut = process.env.CODEHERE_FEEDBACK_OPT_OUT === 'true' ||
28
- process.env.CODEHERE_TELEMETRY_DISABLED === 'true';
29
- this.config = {
30
- enabled: !optOut && (config?.enabled !== false),
31
- anonymize: config?.anonymize !== false,
32
- optOut: optOut || (config?.optOut === true),
33
- storagePath: config?.storagePath,
34
- };
35
- if (this.config.optOut || !this.config.enabled) {
36
- return;
37
- }
38
- // Set up feedback storage directory
39
- if (this.config.storagePath) {
40
- this.feedbackDir = this.config.storagePath;
41
- }
42
- else {
43
- const agentDir = join(__dirname, '../../..');
44
- this.feedbackDir = join(agentDir, 'data', 'feedback');
45
- }
46
- if (!existsSync(this.feedbackDir)) {
47
- mkdirSync(this.feedbackDir, { recursive: true });
48
- }
49
- // Load recent feedback history (for pattern analysis)
50
- this.loadRecentFeedback();
51
- }
10
+ class AgentFeedbackManager {
11
+ feedbackRecords = [];
12
+ maxRecords = 1000;
52
13
  /**
53
14
  * Record feedback for an agent operation
54
- * userAction is required - must be provided by caller
55
15
  */
56
16
  recordFeedback(feedback) {
57
- if (this.config.optOut || !this.config.enabled) {
58
- return 'feedback-disabled';
59
- }
60
- const feedbackId = randomUUID();
61
- const fullFeedback = {
17
+ const record = {
62
18
  ...feedback,
63
- feedbackId,
64
- timestamp: Date.now(),
19
+ timestamp: feedback.timestamp || Date.now(),
65
20
  };
66
- // Anonymize if configured
67
- const processedFeedback = this.config.anonymize
68
- ? this.anonymizeFeedback(fullFeedback)
69
- : fullFeedback;
70
- // Store in memory
71
- this.feedbackHistory.push(processedFeedback);
72
- if (this.feedbackHistory.length > 1000) {
73
- // Keep only last 1000 in memory
74
- this.feedbackHistory = this.feedbackHistory.slice(-1000);
75
- }
76
- // Append to JSON file (one JSON object per line for easy parsing)
77
- const feedbackFile = join(this.feedbackDir, 'agent-feedback.jsonl');
78
- try {
79
- appendFileSync(feedbackFile, JSON.stringify(processedFeedback) + '\n', 'utf-8');
80
- }
81
- catch (error) {
82
- // Silent failure - don't break user workflow
83
- console.error('[AgentFeedback] Failed to write feedback:', error);
84
- }
85
- return feedbackId;
86
- }
87
- /**
88
- * Get feedback for a run
89
- */
90
- getFeedbackForRun(runId) {
91
- return this.feedbackHistory.find(f => f.runId === runId) || null;
92
- }
93
- /**
94
- * Get recent feedback patterns (for learning)
95
- */
96
- getRecentFeedback(limit = 100) {
97
- return this.feedbackHistory.slice(-limit);
98
- }
99
- /**
100
- * Get feedback statistics
101
- */
102
- getFeedbackStats() {
103
- const stats = {
104
- total: this.feedbackHistory.length,
105
- byOutcome: {},
106
- byAgent: {},
107
- averageRating: undefined,
108
- };
109
- let totalRating = 0;
110
- let ratingCount = 0;
111
- for (const feedback of this.feedbackHistory) {
112
- // Count by outcome
113
- stats.byOutcome[feedback.outcome] = (stats.byOutcome[feedback.outcome] || 0) + 1;
114
- // Count by agent
115
- stats.byAgent[feedback.agentName] = (stats.byAgent[feedback.agentName] || 0) + 1;
116
- // Calculate average rating
117
- if (feedback.userFeedback?.rating) {
118
- totalRating += feedback.userFeedback.rating;
119
- ratingCount++;
120
- }
121
- }
122
- if (ratingCount > 0) {
123
- stats.averageRating = totalRating / ratingCount;
21
+ this.feedbackRecords.push(record);
22
+ // Trim old records if too many
23
+ if (this.feedbackRecords.length > this.maxRecords) {
24
+ this.feedbackRecords = this.feedbackRecords.slice(-this.maxRecords);
124
25
  }
125
- return stats;
26
+ // In alpha, feedback is stored in memory only
27
+ // Can be enhanced later to persist to disk
126
28
  }
127
29
  /**
128
- * Anonymize feedback (remove sensitive data)
30
+ * Get feedback records for an agent
129
31
  */
130
- anonymizeFeedback(feedback) {
131
- const anonymized = { ...feedback };
132
- // Remove query content if it might contain sensitive info
133
- if (anonymized.query) {
134
- // Keep only intent keywords, not full query
135
- const keywords = anonymized.query
136
- .split(/\s+/)
137
- .filter(w => w.length > 3)
138
- .slice(0, 5)
139
- .join(' ');
140
- anonymized.query = keywords || '[anonymized]';
141
- }
142
- // Remove file contents from modifications
143
- if (anonymized.userModifications) {
144
- anonymized.userModifications = anonymized.userModifications.map(mod => ({
145
- filepath: this.anonymizePath(mod.filepath),
146
- modificationType: mod.modificationType,
147
- description: mod.description ? '[anonymized]' : undefined,
148
- }));
149
- }
150
- // Anonymize file paths (keep structure, not names)
151
- if (anonymized.filesChanged) {
152
- anonymized.filesChanged = anonymized.filesChanged.map(p => this.anonymizePath(p));
153
- }
154
- if (anonymized.filesCreated) {
155
- anonymized.filesCreated = anonymized.filesCreated.map(p => this.anonymizePath(p));
156
- }
157
- return anonymized;
32
+ getFeedbackForAgent(agentName, limit = 10) {
33
+ return this.feedbackRecords
34
+ .filter(r => r.agentName === agentName)
35
+ .slice(-limit)
36
+ .reverse();
158
37
  }
159
38
  /**
160
- * Anonymize file path (keep structure, not actual names)
39
+ * Get all feedback records
161
40
  */
162
- anonymizePath(filepath) {
163
- // Replace actual file names with placeholders but keep structure
164
- const parts = filepath.split('/');
165
- return parts.map((part, index) => {
166
- if (index === parts.length - 1) {
167
- // Last part is filename
168
- const ext = part.split('.').pop();
169
- return `file${ext ? '.' + ext : ''}`;
170
- }
171
- return part;
172
- }).join('/');
173
- }
174
- /**
175
- * Load recent feedback from disk
176
- */
177
- loadRecentFeedback() {
178
- const feedbackFile = join(this.feedbackDir, 'agent-feedback.jsonl');
179
- if (!existsSync(feedbackFile)) {
180
- return;
181
- }
182
- try {
183
- const content = readFileSync(feedbackFile, 'utf-8');
184
- const lines = content.trim().split('\n').filter(line => line.trim());
185
- // Load last 100 entries
186
- const recentLines = lines.slice(-100);
187
- this.feedbackHistory = recentLines
188
- .map(line => {
189
- try {
190
- return JSON.parse(line);
191
- }
192
- catch {
193
- return null;
194
- }
195
- })
196
- .filter((f) => f !== null);
197
- }
198
- catch (error) {
199
- // Silent failure
200
- console.error('[AgentFeedback] Failed to load feedback history:', error);
201
- }
202
- }
203
- /**
204
- * Clear all feedback (privacy control)
205
- */
206
- clearFeedback() {
207
- this.feedbackHistory = [];
208
- const feedbackFile = join(this.feedbackDir, 'agent-feedback.jsonl');
209
- if (existsSync(feedbackFile)) {
210
- try {
211
- writeFileSync(feedbackFile, '', 'utf-8');
212
- }
213
- catch {
214
- // Silent failure
215
- }
216
- }
217
- }
218
- /**
219
- * Check if feedback collection is enabled
220
- */
221
- isEnabled() {
222
- return !this.config.optOut && this.config.enabled;
41
+ getAllFeedback(limit = 100) {
42
+ return this.feedbackRecords.slice(-limit).reverse();
223
43
  }
224
44
  }
225
- // Singleton instance
226
45
  export const agentFeedbackManager = new AgentFeedbackManager();
46
+ /**
47
+ * AgentFeedback class (kept for backward compatibility)
48
+ */
49
+ export class AgentFeedback {
50
+ data;
51
+ constructor(data) {
52
+ this.data = data;
53
+ }
54
+ }
227
55
  //# sourceMappingURL=agent-feedback.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-feedback.js","sourceRoot":"","sources":["../../../src/infrastructure/validation/agent-feedback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-feedback.js","sourceRoot":"","sources":["../../../src/infrastructure/validation/agent-feedback.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmBH;;GAEG;AACH,MAAM,oBAAoB;IAChB,eAAe,GAAqB,EAAE,CAAC;IAC9B,UAAU,GAAG,IAAI,CAAC;IAEnC;;OAEG;IACH,cAAc,CAAC,QAAwB;QACrC,MAAM,MAAM,GAAmB;YAC7B,GAAG,QAAQ;YACX,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;SAC5C,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,+BAA+B;QAC/B,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtE,CAAC;QAED,8CAA8C;QAC9C,2CAA2C;IAC7C,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,SAAiB,EAAE,QAAgB,EAAE;QACvD,OAAO,IAAI,CAAC,eAAe;aACxB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;aACtC,KAAK,CAAC,CAAC,KAAK,CAAC;aACb,OAAO,EAAE,CAAC;IACf,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,QAAgB,GAAG;QAChC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE/D;;GAEG;AACH,MAAM,OAAO,aAAa;IACL;IAAnB,YAAmB,IAAoB;QAApB,SAAI,GAAJ,IAAI,CAAgB;IAAG,CAAC;CAC5C"}
@@ -1,75 +1,75 @@
1
1
  /**
2
- * Infrastructure: Agent Validation Helper
3
- * Shared utilities for integrating Validation Layer into agents
2
+ * Agent Validation Helper
3
+ * Validates agent outputs and checks trust scores
4
4
  *
5
- * Provides:
6
- * - Automatic TraceSummary generation
7
- * - AgentFeedback recording
8
- * - Run context tracking
5
+ * Phase 1: v0.5.0-alpha.0
9
6
  */
10
- import type { TraceSummary } from './trace-summary.js';
11
- import type { FeedbackOutcome, UserAction } from './agent-feedback.js';
12
- export interface AgentValidationContext {
13
- runId: string;
7
+ import { TraceSummary } from './trace-summary.js';
8
+ export interface ValidationResult {
9
+ passed: boolean;
10
+ issues?: string[];
11
+ warnings?: string[];
12
+ score?: number;
13
+ summary?: TraceSummary;
14
+ feedbackId?: string | null;
15
+ runId?: string | null;
16
+ }
17
+ export interface TrustCheckResult {
18
+ passed: boolean;
19
+ trustScore?: number;
20
+ threshold?: number;
21
+ message?: string;
22
+ }
23
+ export interface ValidationContext {
14
24
  agentName: string;
15
25
  operation: string;
16
26
  startTime: number;
27
+ metadata?: Record<string, any>;
17
28
  }
18
- export interface AgentValidationResult<T = any> {
19
- result: T;
20
- summary: TraceSummary;
21
- feedbackId: string;
22
- runId: string;
29
+ export interface TraceData {
30
+ operationType: string;
31
+ operationName: string;
32
+ input?: any;
33
+ output?: any;
34
+ error?: Error;
35
+ metadata?: Record<string, any>;
23
36
  }
24
37
  /**
25
- * Helper class for agent validation integration
38
+ * Agent validation helper
26
39
  */
27
- export declare class AgentValidationHelper {
40
+ export declare const agentValidationHelper: {
28
41
  /**
29
- * Start validation context for an agent operation
42
+ * Start an agent operation and return validation context
30
43
  */
31
- startAgentOperation(agentName: string, operation: string, context?: {
32
- query?: string;
33
- codebaseId?: string;
34
- }): AgentValidationContext;
44
+ startAgentOperation(agentName: string, operation: string, metadata?: Record<string, any>): ValidationContext;
35
45
  /**
36
- * Complete agent operation and generate validation artifacts
46
+ * Complete an agent operation and return validation result
37
47
  */
38
- completeAgentOperation<T>(validationContext: AgentValidationContext, result: T, metadata: {
39
- outcome: FeedbackOutcome;
40
- userAction?: UserAction;
41
- filesChanged?: string[];
42
- filesCreated?: string[];
43
- filesDeleted?: string[];
44
- errors?: string[];
45
- warnings?: string[];
48
+ completeAgentOperation(context: ValidationContext, result: Record<string, any> | null, options?: {
49
+ outcome?: "success" | "failure" | "partial_success";
46
50
  validationChecks?: Array<{
47
51
  check: string;
48
52
  passed: boolean;
49
53
  message?: string;
50
- critical?: boolean;
51
54
  }>;
52
- metrics?: {
53
- tokensUsed?: number;
54
- duration?: number;
55
- filesAnalyzed?: number;
56
- changesProposed?: number;
57
- changesApplied?: number;
58
- };
59
- additionalContext?: Record<string, any>;
60
- }): Promise<AgentValidationResult<T>>;
55
+ filesChanged?: string[];
56
+ filesCreated?: string[];
57
+ filesDeleted?: string[];
58
+ errors?: any[];
59
+ warnings?: any[];
60
+ [key: string]: any;
61
+ }): Promise<ValidationResult>;
61
62
  /**
62
- * Record a trace during agent operation
63
+ * Trace an operation step
63
64
  */
64
- trace(operation: {
65
- operationType: 'llm_call' | 'tool_invocation' | 'memory_operation' | 'plan_generation' | 'code_analysis' | 'file_operation' | 'git_operation' | 'other';
66
- operationName: string;
67
- input?: any;
68
- output?: any;
69
- error?: Error;
70
- metadata?: Record<string, any>;
71
- duration?: number;
72
- }): string;
73
- }
74
- export declare const agentValidationHelper: AgentValidationHelper;
65
+ trace(data: TraceData): void;
66
+ /**
67
+ * Validate agent output
68
+ */
69
+ validate(output: any, context?: any): ValidationResult;
70
+ /**
71
+ * Check trust score for an agent
72
+ */
73
+ checkTrust(agentName: string, operation: string): TrustCheckResult;
74
+ };
75
75
  //# sourceMappingURL=agent-validation-helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-validation-helper.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/validation/agent-validation-helper.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAiB,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,GAAG,GAAG;IAC5C,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,mBAAmB,CACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,sBAAsB;IAczB;;OAEG;IACG,sBAAsB,CAAC,CAAC,EAC5B,iBAAiB,EAAE,sBAAsB,EACzC,MAAM,EAAE,CAAC,EACT,QAAQ,EAAE;QACR,OAAO,EAAE,eAAe,CAAC;QACzB,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,gBAAgB,CAAC,EAAE,KAAK,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,EAAE;YACR,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;QACF,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACzC,GACA,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAuDpC;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE;QACf,aAAa,EAAE,UAAU,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,iBAAiB,GAAG,eAAe,GAAG,gBAAgB,GAAG,eAAe,GAAG,OAAO,CAAC;QACxJ,aAAa,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,MAAM,CAAC,EAAE,GAAG,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,MAAM;CAGX;AAGD,eAAO,MAAM,qBAAqB,uBAA8B,CAAC"}
1
+ {"version":3,"file":"agent-validation-helper.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/validation/agent-validation-helper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAyB,MAAM,oBAAoB,CAAC;AAIzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC;;OAEG;mCAEU,MAAM,aACN,MAAM,aACN,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC7B,iBAAiB;IASpB;;OAEG;oCAEQ,iBAAiB,UAClB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,YACxB;QACR,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,iBAAiB,CAAC;QACpD,gBAAgB,CAAC,EAAE,KAAK,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,OAAO,CAAC;YAChB,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;QACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;QACf,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC;QACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,GACA,OAAO,CAAC,gBAAgB,CAAC;IAsF5B;;OAEG;gBACS,SAAS,GAAG,IAAI;IAK5B;;OAEG;qBACc,GAAG,YAAY,GAAG,GAAG,gBAAgB;IAetD;;OAEG;0BACmB,MAAM,aAAa,MAAM,GAAG,gBAAgB;CASnE,CAAC"}
@@ -1,88 +1,137 @@
1
1
  /**
2
- * Infrastructure: Agent Validation Helper
3
- * Shared utilities for integrating Validation Layer into agents
2
+ * Agent Validation Helper
3
+ * Validates agent outputs and checks trust scores
4
4
  *
5
- * Provides:
6
- * - Automatic TraceSummary generation
7
- * - AgentFeedback recording
8
- * - Run context tracking
5
+ * Phase 1: v0.5.0-alpha.0
9
6
  */
7
+ import { TraceSummary } from './trace-summary.js';
10
8
  import { executionTracer } from '../observability/execution-tracer.js';
11
- import { agentFeedbackManager } from './agent-feedback.js';
12
- import { traceSummaryFormatter } from './trace-summary.js';
9
+ import { randomUUID } from 'crypto';
13
10
  /**
14
- * Helper class for agent validation integration
11
+ * Agent validation helper
15
12
  */
16
- export class AgentValidationHelper {
13
+ export const agentValidationHelper = {
17
14
  /**
18
- * Start validation context for an agent operation
15
+ * Start an agent operation and return validation context
19
16
  */
20
- startAgentOperation(agentName, operation, context) {
21
- const runId = executionTracer.startRun(`${agentName}:${operation}`, {
22
- query: context?.query,
23
- codebaseId: context?.codebaseId,
24
- });
17
+ startAgentOperation(agentName, operation, metadata) {
25
18
  return {
26
- runId,
27
19
  agentName,
28
20
  operation,
29
21
  startTime: Date.now(),
22
+ metadata,
30
23
  };
31
- }
24
+ },
32
25
  /**
33
- * Complete agent operation and generate validation artifacts
26
+ * Complete an agent operation and return validation result
34
27
  */
35
- async completeAgentOperation(validationContext, result, metadata) {
36
- // End trace to finalize run context
37
- executionTracer.endRun();
38
- // Small delay to ensure file is written
39
- await new Promise(resolve => setTimeout(resolve, 100));
40
- // Get finalized run context
41
- const run = executionTracer.getRun(validationContext.runId);
42
- const duration = Date.now() - validationContext.startTime;
43
- // Note: Feedback recording is handled by CLI commands with proper userAction from review decision
44
- // This helper only creates the validation summary, not the feedback record
45
- const feedbackId = 'pending-cli-feedback';
46
- // Create trace summary
47
- const summary = traceSummaryFormatter.createSummary(run || {
48
- runId: validationContext.runId,
49
- startTime: validationContext.startTime,
50
- endTime: Date.now(),
51
- operation: validationContext.operation,
52
- query: metadata.additionalContext?.query,
53
- codebaseId: metadata.additionalContext?.codebaseId,
54
- traces: [],
55
- }, agentFeedbackManager.getFeedbackForRun(validationContext.runId) || undefined, validationContext.agentName);
56
- // Update summary with metadata if available
57
- if (metadata.filesChanged) {
58
- summary.filesChanged = metadata.filesChanged;
28
+ async completeAgentOperation(context, result, options) {
29
+ const endTime = Date.now();
30
+ const duration = endTime - context.startTime;
31
+ const opts = options || {};
32
+ // Basic validation
33
+ const issues = [];
34
+ const warnings = [];
35
+ // Check validation checks
36
+ if (opts.validationChecks) {
37
+ for (const check of opts.validationChecks) {
38
+ if (!check.passed) {
39
+ issues.push(check.message || check.check);
40
+ }
41
+ }
59
42
  }
60
- if (metadata.filesCreated) {
61
- summary.filesCreated = metadata.filesCreated;
43
+ // Check errors
44
+ if (opts.errors && opts.errors.length > 0) {
45
+ issues.push(...opts.errors.map((e) => typeof e === 'string' ? e : e.message || String(e)));
62
46
  }
63
- if (metadata.filesDeleted) {
64
- summary.filesDeleted = metadata.filesDeleted;
47
+ // Check warnings
48
+ if (opts.warnings && opts.warnings.length > 0) {
49
+ warnings.push(...opts.warnings.map((w) => typeof w === 'string' ? w : w.message || String(w)));
65
50
  }
66
- if (metadata.errors) {
67
- summary.errors = metadata.errors;
51
+ // Check outcome
52
+ if (opts.outcome === 'failure') {
53
+ issues.push('Operation failed');
68
54
  }
69
- if (metadata.warnings) {
70
- summary.warnings = metadata.warnings;
55
+ else if (opts.outcome === 'partial_success') {
56
+ warnings.push('Operation partially succeeded');
71
57
  }
58
+ // Check overallSuccess in result
59
+ if (result && result.overallSuccess === false) {
60
+ issues.push('Overall operation was not successful');
61
+ }
62
+ // Get runId from execution tracer
63
+ const runId = executionTracer.getCurrentRunId();
64
+ // Generate feedbackId
65
+ const feedbackId = randomUUID();
66
+ // Collect files affected
67
+ const filesAffected = [];
68
+ if (opts.filesChanged)
69
+ filesAffected.push(...opts.filesChanged);
70
+ if (opts.filesCreated)
71
+ filesAffected.push(...opts.filesCreated);
72
+ if (opts.filesDeleted)
73
+ filesAffected.push(...opts.filesDeleted);
74
+ // Create trace summary
75
+ const summaryData = {
76
+ runId: runId || `run-${Date.now()}`,
77
+ agentName: context.agentName,
78
+ operation: context.operation,
79
+ startTime: context.startTime,
80
+ endTime,
81
+ success: issues.length === 0,
82
+ filesAffected: filesAffected.length > 0 ? filesAffected : undefined,
83
+ error: issues.length > 0 ? issues.join('; ') : undefined,
84
+ metadata: {
85
+ ...context.metadata,
86
+ duration,
87
+ validationChecks: opts.validationChecks?.length || 0,
88
+ },
89
+ };
90
+ const summary = new TraceSummary(summaryData);
72
91
  return {
73
- result,
92
+ passed: issues.length === 0,
93
+ issues: issues.length > 0 ? issues : undefined,
94
+ warnings: warnings.length > 0 ? warnings : undefined,
95
+ score: issues.length === 0 ? 1.0 : Math.max(0, 1.0 - (issues.length * 0.2)),
74
96
  summary,
75
97
  feedbackId,
76
- runId: validationContext.runId,
98
+ runId,
77
99
  };
78
- }
100
+ },
101
+ /**
102
+ * Trace an operation step
103
+ */
104
+ trace(data) {
105
+ // In alpha, tracing is a no-op
106
+ // Can be enhanced later to log to execution tracer
107
+ },
79
108
  /**
80
- * Record a trace during agent operation
109
+ * Validate agent output
81
110
  */
82
- trace(operation) {
83
- return executionTracer.trace(operation);
84
- }
85
- }
86
- // Singleton instance
87
- export const agentValidationHelper = new AgentValidationHelper();
111
+ validate(output, context) {
112
+ // Basic validation - can be enhanced later
113
+ if (!output) {
114
+ return {
115
+ passed: false,
116
+ issues: ['Output is empty'],
117
+ };
118
+ }
119
+ return {
120
+ passed: true,
121
+ score: 1.0,
122
+ };
123
+ },
124
+ /**
125
+ * Check trust score for an agent
126
+ */
127
+ checkTrust(agentName, operation) {
128
+ // In alpha, default to passing
129
+ // Can be enhanced later with actual trust score tracking
130
+ return {
131
+ passed: true,
132
+ trustScore: 1.0,
133
+ threshold: 0.7,
134
+ };
135
+ },
136
+ };
88
137
  //# sourceMappingURL=agent-validation-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-validation-helper.js","sourceRoot":"","sources":["../../../src/infrastructure/validation/agent-validation-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-validation-helper.js","sourceRoot":"","sources":["../../../src/infrastructure/validation/agent-validation-helper.ts"],"names":[],"mappings":"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"}