codehere 0.2.2 → 0.3.0-rc.10
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.
- package/README.md +88 -68
- package/dist/domain/entities/task.js +4 -4
- package/dist/error-handler.js +4 -9
- package/dist/index.js +261 -1224
- package/dist/infrastructure/config/product-context.js +7 -6
- package/dist/infrastructure/hooks/claude-sdk-hook.js +348 -72
- package/dist/infrastructure/observability/execution-tracer.js +11 -6
- package/dist/infrastructure/orchestration/agent-adapter.js +13 -0
- package/dist/infrastructure/orchestration/agent-installer.js +101 -0
- package/dist/infrastructure/orchestration/agents-config-seed.js +56 -0
- package/dist/infrastructure/orchestration/aider-adapter.js +319 -0
- package/dist/infrastructure/orchestration/artifacts-extractor.js +175 -0
- package/dist/infrastructure/orchestration/claude-code-adapter.js +352 -0
- package/dist/infrastructure/orchestration/codex-adapter.js +310 -0
- package/dist/infrastructure/orchestration/conductor-adapter.js +340 -0
- package/dist/infrastructure/orchestration/generic-cli-adapter.js +553 -0
- package/dist/infrastructure/orchestration/opencode-adapter.js +275 -0
- package/dist/infrastructure/orchestration/progress-aggregator.js +189 -0
- package/dist/infrastructure/orchestration/readiness.js +106 -0
- package/dist/infrastructure/orchestration/session-manager.js +278 -0
- package/dist/infrastructure/orchestration/session-persistence.js +109 -0
- package/dist/infrastructure/protocols/mcp-helpers.js +10 -30
- package/dist/infrastructure/protocols/mcp-server-impl.js +359 -21
- package/dist/infrastructure/protocols/probe-port.js +36 -0
- package/dist/infrastructure/protocols/ui-page.js +1827 -0
- package/dist/infrastructure/security/file-collection.js +115 -0
- package/dist/infrastructure/security/trust-scorer.js +301 -56
- package/dist/infrastructure/storage/task-repository.js +8 -7
- package/dist/monitoring.js +9 -38
- package/dist/presentation/cli/commands/help-command.js +96 -139
- package/dist/presentation/cli/commands/hook-command.js +17 -24
- package/dist/presentation/cli/commands/report-command.js +59 -72
- package/dist/presentation/cli/commands/setup-command.js +4 -4
- package/dist/presentation/cli/commands/status-command.js +321 -30
- package/dist/presentation/cli/commands/trust-command.js +84 -72
- package/dist/presentation/cli/error-display.js +17 -21
- package/dist/presentation/cli/repl.js +474 -0
- package/dist/ui.js +11 -11
- package/package.json +24 -62
- package/dist/agents/base.js +0 -101
- package/dist/agents/orchestrator-model-driven.js +0 -141
- package/dist/agents/react-orchestrator-agent.js +0 -54
- package/dist/application/agents/execution-agent.js +0 -508
- package/dist/application/agents/multi-agent-orchestrator.js +0 -295
- package/dist/application/agents/planning-agent.js +0 -433
- package/dist/application/agents/validation-agent.js +0 -317
- package/dist/application/architectures/plan-and-act.js +0 -242
- package/dist/application/index.js +0 -12
- package/dist/application/services/agent-factory.js +0 -28
- package/dist/application/services/dependency-container.js +0 -596
- package/dist/application/services/git-context-service.js +0 -83
- package/dist/application/services/intelligent-router.js +0 -934
- package/dist/application/services/tool-executor-service.js +0 -94
- package/dist/application/use-cases/ask-question-use-case.js +0 -338
- package/dist/application/use-cases/edit-file-use-case.js +0 -830
- package/dist/application/use-cases/explain-file-use-case.js +0 -50
- package/dist/application/use-cases/index-codebase-use-case.js +0 -113
- package/dist/application/use-cases/planning-use-case.js +0 -276
- package/dist/application/use-cases/react-orchestration-use-case.js +0 -329
- package/dist/application/use-cases/reflexion-use-case.js +0 -30
- package/dist/application/workflows/deterministic-workflows.js +0 -189
- package/dist/ast-parser.js +0 -331
- package/dist/cache.js +0 -180
- package/dist/chat.js +0 -251
- package/dist/code-analysis.js +0 -327
- package/dist/context.js +0 -187
- package/dist/docs.js +0 -146
- package/dist/domain/entities/code-chunk.js +0 -6
- package/dist/domain/entities/decision.js +0 -9
- package/dist/domain/entities/edit.js +0 -6
- package/dist/domain/entities/knowledge-node.js +0 -9
- package/dist/domain/entities/knowledge-preservation.js +0 -10
- package/dist/domain/entities/memory.js +0 -6
- package/dist/domain/entities/pattern.js +0 -7
- package/dist/domain/entities/plan.js +0 -6
- package/dist/domain/entities/query.js +0 -6
- package/dist/domain/errors/embeddings-not-found-error.js +0 -13
- package/dist/domain/index.js +0 -19
- package/dist/domain/interfaces/ai-service.interface.js +0 -6
- package/dist/domain/interfaces/code-analyzer.interface.js +0 -6
- package/dist/domain/interfaces/decision-repository.interface.js +0 -9
- package/dist/domain/interfaces/embedding-repository.interface.js +0 -6
- package/dist/domain/interfaces/knowledge-graph-repository.interface.js +0 -9
- package/dist/domain/interfaces/knowledge-preservation-repository.interface.js +0 -8
- package/dist/domain/interfaces/memory-repository.interface.js +0 -6
- package/dist/domain/interfaces/pattern-repository.interface.js +0 -6
- package/dist/domain/interfaces/verification-service.interface.js +0 -6
- package/dist/domain/services/cross-team-pattern-sharing.js +0 -125
- package/dist/domain/services/decision-recorder.js +0 -223
- package/dist/domain/services/decision-retriever.js +0 -133
- package/dist/domain/services/environment-mode-manager.js +0 -22
- package/dist/domain/services/graded-memory-activation.js +0 -69
- package/dist/domain/services/knowledge-access.js +0 -132
- package/dist/domain/services/knowledge-extractor.js +0 -247
- package/dist/domain/services/knowledge-graph-builder.js +0 -268
- package/dist/domain/services/knowledge-graph-query.js +0 -187
- package/dist/domain/services/memory-retriever.js +0 -82
- package/dist/domain/services/memory-synthesizer.js +0 -91
- package/dist/domain/services/pattern-extractor.js +0 -442
- package/dist/domain/services/query-intent-classifier.js +0 -140
- package/dist/domain/services/react-loop.js +0 -186
- package/dist/domain/services/risk-tier-detector.js +0 -78
- package/dist/edit.js +0 -319
- package/dist/embed.js +0 -459
- package/dist/formatter.js +0 -168
- package/dist/git.js +0 -198
- package/dist/infrastructure/ai/cohere-ai-service.js +0 -607
- package/dist/infrastructure/ai/command-r-evaluation.js +0 -206
- package/dist/infrastructure/ai/model-config.js +0 -84
- package/dist/infrastructure/ai/provider-ai-service.js +0 -477
- package/dist/infrastructure/cache/embedding-cache.js +0 -175
- package/dist/infrastructure/cache/query-result-cache.js +0 -66
- package/dist/infrastructure/cache/response-cache.js +0 -48
- package/dist/infrastructure/cache/security-scan-cache.js +0 -47
- package/dist/infrastructure/chunking/ast-code-chunker.js +0 -19
- package/dist/infrastructure/chunking/code-aware-chunker.js +0 -397
- package/dist/infrastructure/context/context-compressor.js +0 -329
- package/dist/infrastructure/context/conversation-context.js +0 -128
- package/dist/infrastructure/context/session-manager.js +0 -94
- package/dist/infrastructure/cost/cost-tracker.js +0 -360
- package/dist/infrastructure/file-scanner/file-scanner.js +0 -106
- package/dist/infrastructure/governance/nist-ai-rmf.js +0 -292
- package/dist/infrastructure/governance/policy-as-code.js +0 -258
- package/dist/infrastructure/governance/prompt-to-code-lineage.js +0 -239
- package/dist/infrastructure/index.js +0 -7
- package/dist/infrastructure/observability/prompt-versioner.js +0 -145
- package/dist/infrastructure/protocols/a2a-metadata.js +0 -137
- package/dist/infrastructure/protocols/a2a-protocol.js +0 -314
- package/dist/infrastructure/protocols/mcp-oauth.js +0 -184
- package/dist/infrastructure/protocols/mcp-server.js +0 -333
- package/dist/infrastructure/protocols/streaming-handler.js +0 -103
- package/dist/infrastructure/providers/cohere-provider.js +0 -444
- package/dist/infrastructure/providers/fake-provider.js +0 -130
- package/dist/infrastructure/providers/local-llm-provider.js +0 -330
- package/dist/infrastructure/providers/model-config.types.js +0 -9
- package/dist/infrastructure/providers/model-provider.interface.js +0 -8
- package/dist/infrastructure/providers/openai-provider.js +0 -413
- package/dist/infrastructure/providers/openrouter-provider.js +0 -399
- package/dist/infrastructure/providers/operation-provider-resolver.js +0 -105
- package/dist/infrastructure/providers/provider-config-loader.js +0 -120
- package/dist/infrastructure/providers/provider-registry.js +0 -88
- package/dist/infrastructure/safety/pattern-detector.js +0 -133
- package/dist/infrastructure/security/ai-sast-scanner.js +0 -290
- package/dist/infrastructure/security/docker-sandbox.js +0 -178
- package/dist/infrastructure/security/enhanced-security-gate.js +0 -151
- package/dist/infrastructure/security/license-scanner.js +0 -167
- package/dist/infrastructure/security/provider-bias-detector.js +0 -164
- package/dist/infrastructure/security/sandbox-executor.js +0 -64
- package/dist/infrastructure/serialization/toon-serializer.js +0 -119
- package/dist/infrastructure/storage/memory-stream-service.js +0 -204
- package/dist/infrastructure/storage/plan-repository.js +0 -96
- package/dist/infrastructure/storage/sqlite-decision-repository.js +0 -232
- package/dist/infrastructure/storage/sqlite-embedding-repository.js +0 -311
- package/dist/infrastructure/storage/sqlite-knowledge-graph-repository.js +0 -417
- package/dist/infrastructure/storage/sqlite-knowledge-preservation-repository.js +0 -230
- package/dist/infrastructure/storage/sqlite-memory-repository.js +0 -229
- package/dist/infrastructure/storage/sqlite-pattern-repository.js +0 -249
- package/dist/infrastructure/storage/task-helpers.js +0 -197
- package/dist/infrastructure/telemetry/telemetry-service.js +0 -167
- package/dist/infrastructure/ux/appropriate-friction.js +0 -213
- package/dist/infrastructure/ux/bi-directional-learning.js +0 -337
- package/dist/infrastructure/ux/capability-boundaries.js +0 -42
- package/dist/infrastructure/ux/comprehensive-formatter.js +0 -117
- package/dist/infrastructure/ux/contextual-feature-discovery.js +0 -10
- package/dist/infrastructure/ux/expectation-management.js +0 -327
- package/dist/infrastructure/ux/feature-discovery.js +0 -14
- package/dist/infrastructure/ux/feedback-prompt.js +0 -45
- package/dist/infrastructure/ux/hitl-validation.js +0 -297
- package/dist/infrastructure/ux/progress-indicator.js +0 -116
- package/dist/infrastructure/ux/progressive-disclosure.js +0 -236
- package/dist/infrastructure/ux/review-checkpoint.js +0 -72
- package/dist/infrastructure/ux/staged-feature-intro.js +0 -24
- package/dist/infrastructure/ux/stream-markdown.js +0 -151
- package/dist/infrastructure/ux/syntax-highlighter.js +0 -91
- package/dist/infrastructure/ux/team-standards.js +0 -196
- package/dist/infrastructure/ux/transparency.js +0 -71
- package/dist/infrastructure/validation/agent-feedback.js +0 -55
- package/dist/infrastructure/validation/agent-validation-helper.js +0 -137
- package/dist/infrastructure/validation/review-handler.js +0 -40
- package/dist/infrastructure/validation/summary-aggregator.js +0 -70
- package/dist/infrastructure/validation/summary-extractor.js +0 -45
- package/dist/infrastructure/validation/trace-summary.js +0 -52
- package/dist/infrastructure/verification/verification-service.js +0 -47
- package/dist/infrastructure/xai/attention-visualizer.js +0 -172
- package/dist/infrastructure/xai/cot-visualizer.js +0 -283
- package/dist/infrastructure/xai/decision-tree-log.js +0 -212
- package/dist/infrastructure/xai/interactive-xai.js +0 -260
- package/dist/infrastructure/xai/uncertainty-quantifier.js +0 -198
- package/dist/intelligent-retrieval.js +0 -272
- package/dist/intent/classifier.js +0 -2
- package/dist/intent/context.js +0 -2
- package/dist/iterative-refinement.js +0 -189
- package/dist/learning.js +0 -232
- package/dist/log.js +0 -31
- package/dist/migrate.js +0 -133
- package/dist/parallel-processor.js +0 -534
- package/dist/planner.js +0 -198
- package/dist/policy.js +0 -26
- package/dist/presentation/cli/commands/ask-command.js +0 -314
- package/dist/presentation/cli/commands/cost-command.js +0 -191
- package/dist/presentation/cli/commands/decision-command.js +0 -207
- package/dist/presentation/cli/commands/docs-command.js +0 -25
- package/dist/presentation/cli/commands/fix-command.js +0 -53
- package/dist/presentation/cli/commands/knowledge-command.js +0 -129
- package/dist/presentation/cli/commands/learning-dashboard-command.js +0 -183
- package/dist/presentation/cli/commands/models-command.js +0 -194
- package/dist/presentation/cli/commands/orchestrate-command.js +0 -207
- package/dist/presentation/cli/commands/plan-command.js +0 -246
- package/dist/presentation/cli/commands/product-command.js +0 -199
- package/dist/presentation/cli/commands/react-command.js +0 -181
- package/dist/presentation/cli/commands/review-command.js +0 -154
- package/dist/presentation/cli/commands/run-command.js +0 -188
- package/dist/presentation/cli/commands/smart-command.js +0 -395
- package/dist/presentation/cli/commands/suggest-command.js +0 -138
- package/dist/presentation/cli/commands/trace-command.js +0 -129
- package/dist/presentation/cli/commands/undo-command.js +0 -150
- package/dist/query-optimizer.js +0 -205
- package/dist/refactor.js +0 -116
- package/dist/review.js +0 -206
- package/dist/search.js +0 -163
- package/dist/session.js +0 -704
- package/dist/task-verification.js +0 -336
- package/dist/testgen.js +0 -166
- package/dist/token-optimizer.js +0 -277
- package/dist/tools/bash.js +0 -213
- package/dist/tools/edit.js +0 -235
- package/dist/tools/executor.js +0 -153
- package/dist/tools/git-tool.js +0 -292
- package/dist/tools/parser.js +0 -158
- package/dist/tools/registry.js +0 -302
- package/dist/tools/search.js +0 -100
- package/dist/types.js +0 -2
- package/dist/utils/check-api-status.js +0 -100
- package/dist/utils/diff-parser.js +0 -162
- package/dist/verification/backup.js +0 -259
- package/dist/verification/compiler.js +0 -264
- package/dist/verification/index.js +0 -273
- package/dist/verification/test-runner.js +0 -379
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Infrastructure: Team Standards Integration
|
|
3
|
-
*
|
|
4
|
-
* Aligns AI-generated code with team style guides and automated linting
|
|
5
|
-
* Research: Team standards integration, style guide enforcement, automated linting integration
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Team style guide enforcement
|
|
9
|
-
* - Automated linting integration
|
|
10
|
-
* - Code formatting standards
|
|
11
|
-
* - Team-specific patterns
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Team Standards Integration System
|
|
15
|
-
* Enforces team style guides and integrates with linting
|
|
16
|
-
*/
|
|
17
|
-
export class TeamStandards {
|
|
18
|
-
styleGuides = new Map();
|
|
19
|
-
defaultStyleGuide;
|
|
20
|
-
constructor() {
|
|
21
|
-
this.defaultStyleGuide = this.createDefaultStyleGuide();
|
|
22
|
-
this.styleGuides.set('default', this.defaultStyleGuide);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Load team style guide
|
|
26
|
-
*/
|
|
27
|
-
loadStyleGuide(teamId, guide) {
|
|
28
|
-
this.styleGuides.set(teamId, guide);
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Get style guide for team
|
|
32
|
-
*/
|
|
33
|
-
getStyleGuide(teamId) {
|
|
34
|
-
return this.styleGuides.get(teamId) || this.defaultStyleGuide;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Validate code against style guide
|
|
38
|
-
*/
|
|
39
|
-
validateCode(teamId, filepath, code) {
|
|
40
|
-
const styleGuide = this.getStyleGuide(teamId);
|
|
41
|
-
const issues = [];
|
|
42
|
-
const violations = [];
|
|
43
|
-
// Validate against each rule
|
|
44
|
-
for (const rule of styleGuide.rules) {
|
|
45
|
-
if (!rule.enabled)
|
|
46
|
-
continue;
|
|
47
|
-
const ruleIssues = this.checkRule(code, rule, filepath);
|
|
48
|
-
issues.push(...ruleIssues);
|
|
49
|
-
for (const issue of ruleIssues) {
|
|
50
|
-
violations.push({
|
|
51
|
-
rule,
|
|
52
|
-
line: issue.line,
|
|
53
|
-
message: issue.message,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
// Check for errors
|
|
58
|
-
const hasErrors = issues.some(i => i.severity === 'error');
|
|
59
|
-
const passed = !hasErrors;
|
|
60
|
-
return {
|
|
61
|
-
passed,
|
|
62
|
-
issues,
|
|
63
|
-
violations,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Apply style guide to code (auto-fix where possible)
|
|
68
|
-
*/
|
|
69
|
-
applyStyleGuide(teamId, code, filepath) {
|
|
70
|
-
const styleGuide = this.getStyleGuide(teamId);
|
|
71
|
-
let modifiedCode = code;
|
|
72
|
-
let fixesApplied = 0;
|
|
73
|
-
const remainingIssues = [];
|
|
74
|
-
// Apply fixable rules
|
|
75
|
-
for (const rule of styleGuide.rules) {
|
|
76
|
-
if (!rule.enabled || !rule.fixable)
|
|
77
|
-
continue;
|
|
78
|
-
const { fixed, code: newCode } = this.applyRule(modifiedCode, rule, filepath);
|
|
79
|
-
if (fixed) {
|
|
80
|
-
modifiedCode = newCode;
|
|
81
|
-
fixesApplied++;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// Check remaining issues
|
|
85
|
-
const validation = this.validateCode(teamId, filepath, modifiedCode);
|
|
86
|
-
remainingIssues.push(...validation.issues.filter(i => !i.fixable || i.severity === 'error'));
|
|
87
|
-
return {
|
|
88
|
-
modified: modifiedCode,
|
|
89
|
-
fixesApplied,
|
|
90
|
-
remainingIssues,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Integrate with external linter (ESLint, Prettier, etc.)
|
|
95
|
-
*/
|
|
96
|
-
async runLinter(filepath, code, linterConfig) {
|
|
97
|
-
// In production, this would:
|
|
98
|
-
// - Call external linter (ESLint, Prettier, etc.)
|
|
99
|
-
// - Parse linting results
|
|
100
|
-
// - Return structured results
|
|
101
|
-
// For now, return basic validation
|
|
102
|
-
const issues = [];
|
|
103
|
-
// Basic checks (in production, delegate to actual linter)
|
|
104
|
-
const lines = code.split('\n');
|
|
105
|
-
for (let i = 0; i < lines.length; i++) {
|
|
106
|
-
const line = lines[i];
|
|
107
|
-
// Example: Check for trailing whitespace
|
|
108
|
-
if (line.trimEnd() !== line && line.trim().length > 0) {
|
|
109
|
-
issues.push({
|
|
110
|
-
line: i + 1,
|
|
111
|
-
message: 'Trailing whitespace',
|
|
112
|
-
rule: 'no-trailing-whitespace',
|
|
113
|
-
severity: 'warning',
|
|
114
|
-
fixable: true,
|
|
115
|
-
suggestedFix: line.trimEnd(),
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
const errors = issues.filter(i => i.severity === 'error');
|
|
120
|
-
const warnings = issues.filter(i => i.severity === 'warning');
|
|
121
|
-
const info = issues.filter(i => i.severity === 'info');
|
|
122
|
-
return {
|
|
123
|
-
filepath,
|
|
124
|
-
errors,
|
|
125
|
-
warnings,
|
|
126
|
-
info,
|
|
127
|
-
passed: errors.length === 0,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
// Private helpers
|
|
131
|
-
checkRule(code, rule, filepath) {
|
|
132
|
-
const issues = [];
|
|
133
|
-
const lines = code.split('\n');
|
|
134
|
-
// Simple pattern matching (in production, use AST analysis)
|
|
135
|
-
if (rule.pattern) {
|
|
136
|
-
const regex = new RegExp(rule.pattern, 'g');
|
|
137
|
-
for (let i = 0; i < lines.length; i++) {
|
|
138
|
-
const matches = lines[i].match(regex);
|
|
139
|
-
if (matches) {
|
|
140
|
-
issues.push({
|
|
141
|
-
line: i + 1,
|
|
142
|
-
message: rule.description,
|
|
143
|
-
rule: rule.ruleId,
|
|
144
|
-
severity: rule.severity,
|
|
145
|
-
fixable: rule.fixable,
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
return issues;
|
|
151
|
-
}
|
|
152
|
-
applyRule(code, rule, filepath) {
|
|
153
|
-
// Simple auto-fix (in production, use proper AST transformation)
|
|
154
|
-
let modified = code;
|
|
155
|
-
let fixed = false;
|
|
156
|
-
// Example: Fix trailing whitespace
|
|
157
|
-
if (rule.ruleId === 'no-trailing-whitespace') {
|
|
158
|
-
const lines = modified.split('\n');
|
|
159
|
-
const fixedLines = lines.map(line => line.trimEnd());
|
|
160
|
-
modified = fixedLines.join('\n');
|
|
161
|
-
fixed = modified !== code;
|
|
162
|
-
}
|
|
163
|
-
return { fixed, code: modified };
|
|
164
|
-
}
|
|
165
|
-
createDefaultStyleGuide() {
|
|
166
|
-
return {
|
|
167
|
-
teamId: 'default',
|
|
168
|
-
enabled: true,
|
|
169
|
-
version: '1.0.0',
|
|
170
|
-
createdAt: Date.now(),
|
|
171
|
-
updatedAt: Date.now(),
|
|
172
|
-
rules: [
|
|
173
|
-
{
|
|
174
|
-
ruleId: 'no-trailing-whitespace',
|
|
175
|
-
category: 'formatting',
|
|
176
|
-
rule: 'Remove trailing whitespace',
|
|
177
|
-
description: 'Lines should not end with whitespace',
|
|
178
|
-
severity: 'warning',
|
|
179
|
-
pattern: '\\s+$',
|
|
180
|
-
fixable: true,
|
|
181
|
-
enabled: true,
|
|
182
|
-
},
|
|
183
|
-
{
|
|
184
|
-
ruleId: 'consistent-indentation',
|
|
185
|
-
category: 'formatting',
|
|
186
|
-
rule: 'Use consistent indentation (2 spaces)',
|
|
187
|
-
description: 'Use 2 spaces for indentation',
|
|
188
|
-
severity: 'error',
|
|
189
|
-
fixable: true,
|
|
190
|
-
enabled: true,
|
|
191
|
-
},
|
|
192
|
-
],
|
|
193
|
-
};
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
//# sourceMappingURL=team-standards.js.map
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Transparency Bar — show timing, tokens, model after every AI response
|
|
3
|
-
*
|
|
4
|
-
* v0.3.0: Makes every interaction feel measurable.
|
|
5
|
-
*/
|
|
6
|
-
import chalk from 'chalk';
|
|
7
|
-
const dim = chalk.dim;
|
|
8
|
-
/**
|
|
9
|
-
* Format a transparency line for display after an AI response.
|
|
10
|
-
* Example: " 2.4s · ~320 tokens · Claude Sonnet"
|
|
11
|
-
*/
|
|
12
|
-
export function formatTransparency(info) {
|
|
13
|
-
const parts = [];
|
|
14
|
-
// Elapsed time
|
|
15
|
-
const seconds = (info.elapsedMs / 1000).toFixed(1);
|
|
16
|
-
parts.push(`${seconds}s`);
|
|
17
|
-
// Token estimate
|
|
18
|
-
if (info.tokenEstimate && info.tokenEstimate > 0) {
|
|
19
|
-
parts.push(`~${info.tokenEstimate} tokens`);
|
|
20
|
-
}
|
|
21
|
-
// Model name (clean up long IDs)
|
|
22
|
-
if (info.model) {
|
|
23
|
-
parts.push(cleanModelName(info.model));
|
|
24
|
-
}
|
|
25
|
-
return dim(' ' + parts.join(' · '));
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Format hook block stats for display.
|
|
29
|
-
* Example: " blocked 5 times this session · 72 total"
|
|
30
|
-
*/
|
|
31
|
-
export function formatBlockStats(sessionBlocks, totalBlocks) {
|
|
32
|
-
const parts = [];
|
|
33
|
-
if (sessionBlocks > 0) {
|
|
34
|
-
parts.push(`blocked ${sessionBlocks} time${sessionBlocks !== 1 ? 's' : ''} this session`);
|
|
35
|
-
}
|
|
36
|
-
if (totalBlocks > 0) {
|
|
37
|
-
parts.push(`${totalBlocks} total`);
|
|
38
|
-
}
|
|
39
|
-
if (parts.length === 0)
|
|
40
|
-
return '';
|
|
41
|
-
return dim(' ' + parts.join(' · '));
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Clean up model ID to a short display name.
|
|
45
|
-
* "claude-sonnet-4-20250514" → "Claude Sonnet"
|
|
46
|
-
* "gpt-4o" → "GPT-4o"
|
|
47
|
-
*/
|
|
48
|
-
function cleanModelName(model) {
|
|
49
|
-
const lower = model.toLowerCase();
|
|
50
|
-
if (lower.includes('claude') && lower.includes('opus'))
|
|
51
|
-
return 'Claude Opus';
|
|
52
|
-
if (lower.includes('claude') && lower.includes('sonnet'))
|
|
53
|
-
return 'Claude Sonnet';
|
|
54
|
-
if (lower.includes('claude') && lower.includes('haiku'))
|
|
55
|
-
return 'Claude Haiku';
|
|
56
|
-
if (lower.includes('gpt-4o'))
|
|
57
|
-
return 'GPT-4o';
|
|
58
|
-
if (lower.includes('gpt-4'))
|
|
59
|
-
return 'GPT-4';
|
|
60
|
-
if (lower.includes('gpt-3.5'))
|
|
61
|
-
return 'GPT-3.5';
|
|
62
|
-
// Fallback: return as-is but truncated
|
|
63
|
-
return model.length > 30 ? model.slice(0, 27) + '...' : model;
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Estimate token count from text (rough: ~4 chars per token for English).
|
|
67
|
-
*/
|
|
68
|
-
export function estimateTokens(text) {
|
|
69
|
-
return Math.round(text.length / 4);
|
|
70
|
-
}
|
|
71
|
-
//# sourceMappingURL=transparency.js.map
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Feedback
|
|
3
|
-
* Records and manages feedback about agent operations
|
|
4
|
-
*
|
|
5
|
-
* Phase 1: v0.5.0-alpha.0
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Agent Feedback Manager
|
|
9
|
-
*/
|
|
10
|
-
class AgentFeedbackManager {
|
|
11
|
-
feedbackRecords = [];
|
|
12
|
-
maxRecords = 1000;
|
|
13
|
-
/**
|
|
14
|
-
* Record feedback for an agent operation
|
|
15
|
-
*/
|
|
16
|
-
recordFeedback(feedback) {
|
|
17
|
-
const record = {
|
|
18
|
-
...feedback,
|
|
19
|
-
timestamp: feedback.timestamp || Date.now(),
|
|
20
|
-
};
|
|
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);
|
|
25
|
-
}
|
|
26
|
-
// In alpha, feedback is stored in memory only
|
|
27
|
-
// Can be enhanced later to persist to disk
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Get feedback records for an agent
|
|
31
|
-
*/
|
|
32
|
-
getFeedbackForAgent(agentName, limit = 10) {
|
|
33
|
-
return this.feedbackRecords
|
|
34
|
-
.filter(r => r.agentName === agentName)
|
|
35
|
-
.slice(-limit)
|
|
36
|
-
.reverse();
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Get all feedback records
|
|
40
|
-
*/
|
|
41
|
-
getAllFeedback(limit = 100) {
|
|
42
|
-
return this.feedbackRecords.slice(-limit).reverse();
|
|
43
|
-
}
|
|
44
|
-
}
|
|
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
|
-
}
|
|
55
|
-
//# sourceMappingURL=agent-feedback.js.map
|
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Agent Validation Helper
|
|
3
|
-
* Validates agent outputs and checks trust scores
|
|
4
|
-
*
|
|
5
|
-
* Phase 1: v0.5.0-alpha.0
|
|
6
|
-
*/
|
|
7
|
-
import { TraceSummary } from './trace-summary.js';
|
|
8
|
-
import { executionTracer } from '../observability/execution-tracer.js';
|
|
9
|
-
import { randomUUID } from 'crypto';
|
|
10
|
-
/**
|
|
11
|
-
* Agent validation helper
|
|
12
|
-
*/
|
|
13
|
-
export const agentValidationHelper = {
|
|
14
|
-
/**
|
|
15
|
-
* Start an agent operation and return validation context
|
|
16
|
-
*/
|
|
17
|
-
startAgentOperation(agentName, operation, metadata) {
|
|
18
|
-
return {
|
|
19
|
-
agentName,
|
|
20
|
-
operation,
|
|
21
|
-
startTime: Date.now(),
|
|
22
|
-
metadata,
|
|
23
|
-
};
|
|
24
|
-
},
|
|
25
|
-
/**
|
|
26
|
-
* Complete an agent operation and return validation result
|
|
27
|
-
*/
|
|
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
|
-
}
|
|
42
|
-
}
|
|
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)));
|
|
46
|
-
}
|
|
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)));
|
|
50
|
-
}
|
|
51
|
-
// Check outcome
|
|
52
|
-
if (opts.outcome === 'failure') {
|
|
53
|
-
issues.push('Operation failed');
|
|
54
|
-
}
|
|
55
|
-
else if (opts.outcome === 'partial_success') {
|
|
56
|
-
warnings.push('Operation partially succeeded');
|
|
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);
|
|
91
|
-
return {
|
|
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)),
|
|
96
|
-
summary,
|
|
97
|
-
feedbackId,
|
|
98
|
-
runId,
|
|
99
|
-
};
|
|
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
|
-
},
|
|
108
|
-
/**
|
|
109
|
-
* Validate agent output
|
|
110
|
-
*/
|
|
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
|
-
};
|
|
137
|
-
//# sourceMappingURL=agent-validation-helper.js.map
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Review Handler
|
|
3
|
-
* Handles review requests and decisions
|
|
4
|
-
*
|
|
5
|
-
* Phase 1: v0.5.0-alpha.0
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Review handler instance
|
|
9
|
-
*/
|
|
10
|
-
export const reviewHandler = {
|
|
11
|
-
/**
|
|
12
|
-
* Request review from user
|
|
13
|
-
*/
|
|
14
|
-
async requestReview(summary) {
|
|
15
|
-
// In alpha, auto-approve for non-interactive mode
|
|
16
|
-
// Can be enhanced later with interactive prompts
|
|
17
|
-
console.log('\n📋 Review Request:');
|
|
18
|
-
console.log(summary);
|
|
19
|
-
console.log('\n[Auto-approved in alpha mode]');
|
|
20
|
-
return {
|
|
21
|
-
approved: true,
|
|
22
|
-
proceed: true,
|
|
23
|
-
userAction: 'approved',
|
|
24
|
-
};
|
|
25
|
-
},
|
|
26
|
-
/**
|
|
27
|
-
* Get review decision (with optional review requested flag)
|
|
28
|
-
*/
|
|
29
|
-
async getReviewDecision(summary, reviewRequested) {
|
|
30
|
-
if (!reviewRequested) {
|
|
31
|
-
return {
|
|
32
|
-
approved: true,
|
|
33
|
-
proceed: true,
|
|
34
|
-
userAction: 'not_required',
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
return this.requestReview(summary);
|
|
38
|
-
},
|
|
39
|
-
};
|
|
40
|
-
//# sourceMappingURL=review-handler.js.map
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summary Aggregator
|
|
3
|
-
* Merges multiple trace summaries into a composite summary
|
|
4
|
-
*
|
|
5
|
-
* Phase 1: v0.5.0-alpha.0
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Summary aggregator instance
|
|
9
|
-
*/
|
|
10
|
-
class SummaryAggregatorImpl {
|
|
11
|
-
/**
|
|
12
|
-
* Merge multiple trace summaries into a composite summary
|
|
13
|
-
*/
|
|
14
|
-
mergeSummaries(agentSummaries, unifiedRunId, operation) {
|
|
15
|
-
if (agentSummaries.length === 0) {
|
|
16
|
-
return {
|
|
17
|
-
runId: unifiedRunId,
|
|
18
|
-
operation,
|
|
19
|
-
agents: [],
|
|
20
|
-
totalDuration: 0,
|
|
21
|
-
success: true,
|
|
22
|
-
summaries: [],
|
|
23
|
-
filesAffected: [],
|
|
24
|
-
errors: [],
|
|
25
|
-
startTime: Date.now(),
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
// Collect all data
|
|
29
|
-
const agents = [];
|
|
30
|
-
const filesAffected = new Set();
|
|
31
|
-
const errors = [];
|
|
32
|
-
let minStartTime = Infinity;
|
|
33
|
-
let maxEndTime = 0;
|
|
34
|
-
let allSuccess = true;
|
|
35
|
-
for (const { agent, summary } of agentSummaries) {
|
|
36
|
-
agents.push(agent);
|
|
37
|
-
const data = summary.data;
|
|
38
|
-
if (!data.success) {
|
|
39
|
-
allSuccess = false;
|
|
40
|
-
}
|
|
41
|
-
if (data.startTime < minStartTime) {
|
|
42
|
-
minStartTime = data.startTime;
|
|
43
|
-
}
|
|
44
|
-
if (data.endTime && data.endTime > maxEndTime) {
|
|
45
|
-
maxEndTime = data.endTime;
|
|
46
|
-
}
|
|
47
|
-
if (data.filesAffected) {
|
|
48
|
-
data.filesAffected.forEach(f => filesAffected.add(f));
|
|
49
|
-
}
|
|
50
|
-
if (data.error) {
|
|
51
|
-
errors.push(`${agent}: ${data.error}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
const compositeSummary = {
|
|
55
|
-
runId: unifiedRunId,
|
|
56
|
-
operation,
|
|
57
|
-
agents,
|
|
58
|
-
totalDuration: maxEndTime > 0 ? maxEndTime - minStartTime : 0,
|
|
59
|
-
success: allSuccess,
|
|
60
|
-
summaries: agentSummaries,
|
|
61
|
-
filesAffected: Array.from(filesAffected),
|
|
62
|
-
errors,
|
|
63
|
-
startTime: minStartTime !== Infinity ? minStartTime : Date.now(),
|
|
64
|
-
endTime: maxEndTime > 0 ? maxEndTime : undefined,
|
|
65
|
-
};
|
|
66
|
-
return compositeSummary;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
export const summaryAggregator = new SummaryAggregatorImpl();
|
|
70
|
-
//# sourceMappingURL=summary-aggregator.js.map
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Summary Extractor
|
|
3
|
-
* Extracts summaries from routing and orchestration results
|
|
4
|
-
*
|
|
5
|
-
* Phase 1: v0.5.0-alpha.0
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Summary extractor instance
|
|
9
|
-
*/
|
|
10
|
-
export const summaryExtractor = {
|
|
11
|
-
/**
|
|
12
|
-
* Extract summary from routing result
|
|
13
|
-
*/
|
|
14
|
-
extractFromRouting(result) {
|
|
15
|
-
if (!result) {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
const summary = result.message || result.summary || 'Operation completed';
|
|
19
|
-
return {
|
|
20
|
-
summary,
|
|
21
|
-
metadata: {
|
|
22
|
-
action: result.action,
|
|
23
|
-
success: result.success,
|
|
24
|
-
},
|
|
25
|
-
};
|
|
26
|
-
},
|
|
27
|
-
/**
|
|
28
|
-
* Extract summary from orchestration result
|
|
29
|
-
*/
|
|
30
|
-
extractFromOrchestration(result) {
|
|
31
|
-
if (!result) {
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
const summary = result.message || result.summary || 'Orchestration completed';
|
|
35
|
-
return {
|
|
36
|
-
summary,
|
|
37
|
-
metadata: {
|
|
38
|
-
success: result.success,
|
|
39
|
-
planId: result.plan?.id,
|
|
40
|
-
executionStatus: result.execution?.status,
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=summary-extractor.js.map
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Trace Summary
|
|
3
|
-
* Represents execution trace summaries for agents
|
|
4
|
-
*
|
|
5
|
-
* Phase 1: v0.5.0-alpha.0
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Trace Summary class
|
|
9
|
-
*/
|
|
10
|
-
export class TraceSummary {
|
|
11
|
-
data;
|
|
12
|
-
constructor(data) {
|
|
13
|
-
this.data = data;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Get summary as JSON
|
|
17
|
-
*/
|
|
18
|
-
toJSON() {
|
|
19
|
-
return this.data;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Get duration in milliseconds
|
|
23
|
-
*/
|
|
24
|
-
getDuration() {
|
|
25
|
-
if (this.data.endTime && this.data.startTime) {
|
|
26
|
-
return this.data.endTime - this.data.startTime;
|
|
27
|
-
}
|
|
28
|
-
return Date.now() - this.data.startTime;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Format trace summary for display
|
|
33
|
-
*/
|
|
34
|
-
export const traceSummaryFormatter = {
|
|
35
|
-
format(summary) {
|
|
36
|
-
const data = summary.data;
|
|
37
|
-
const duration = summary.getDuration();
|
|
38
|
-
const lines = [];
|
|
39
|
-
lines.push(`Agent: ${data.agentName}`);
|
|
40
|
-
lines.push(`Operation: ${data.operation}`);
|
|
41
|
-
lines.push(`Status: ${data.success ? 'Success' : 'Failed'}`);
|
|
42
|
-
lines.push(`Duration: ${(duration / 1000).toFixed(2)}s`);
|
|
43
|
-
if (data.filesAffected && data.filesAffected.length > 0) {
|
|
44
|
-
lines.push(`Files affected: ${data.filesAffected.length}`);
|
|
45
|
-
}
|
|
46
|
-
if (data.error) {
|
|
47
|
-
lines.push(`Error: ${data.error}`);
|
|
48
|
-
}
|
|
49
|
-
return lines.join('\n');
|
|
50
|
-
},
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=trace-summary.js.map
|