claude-flow-novice 1.3.0 → 1.3.2
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/.claude-flow-novice/preferences/generation.json +147 -0
- package/.claude-flow-novice/preferences/language-configs/javascript.json +51 -0
- package/.claude-flow-novice/preferences/language-configs/python.json +50 -0
- package/.claude-flow-novice/preferences/language-configs/rust.json +237 -0
- package/.claude-flow-novice/preferences/language-configs/typescript.json +54 -0
- package/.claude-flow-novice/preferences/project-local.json +91 -0
- package/.claude-flow-novice/preferences/resource-delegation.json +120 -0
- package/.claude-flow-novice/preferences/team-shared.json +195 -0
- package/.claude-flow-novice/preferences/user-global.json +247 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-JAVASCRIPT.md +769 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-PYTHON.md +1214 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-RUST.md +475 -0
- package/.claude-flow-novice/templates/claude-md-templates/CLAUDE-TYPESCRIPT.md +851 -0
- package/.claude-flow-novice/templates/claude-md-templates/README.md +263 -0
- package/CLAUDE.md +81 -0
- package/README-NPM.md +0 -0
- package/package.json +11 -7
- package/scripts/build/README.md +167 -0
- package/scripts/build/build-config.js +27 -0
- package/scripts/build/build-prompt-copier.sh +30 -0
- package/scripts/build/performance-monitor.js +869 -0
- package/scripts/build/prepare-publish.js +150 -0
- package/scripts/build/typescript-fixer.js +621 -0
- package/scripts/build/unified-builder.sh +428 -0
- package/scripts/build/update-bin-version.js +32 -0
- package/scripts/dev/README.md +264 -0
- package/scripts/dev/claude-flow-wrapper.sh +35 -0
- package/scripts/dev/claude-monitor.py +419 -0
- package/scripts/dev/claude-sparc.sh +562 -0
- package/scripts/dev/claude-wrapper.sh +17 -0
- package/scripts/dev/demo-phase3-compliance.js +172 -0
- package/scripts/dev/demo-task-system.ts +224 -0
- package/scripts/dev/deployment-validator.js +315 -0
- package/scripts/dev/spawn-claude-terminal.sh +32 -0
- package/scripts/dev/start-portal.sh +506 -0
- package/scripts/dev/start-web-ui.js +15 -0
- package/scripts/dev/stop-portal.sh +311 -0
- package/scripts/dev/validate-examples.ts +288 -0
- package/scripts/dev/validate-phase2.cjs +451 -0
- package/scripts/dev/validate-phase2.js +785 -0
- package/scripts/dev/validate-phase3.cjs +208 -0
- package/scripts/dev/validate-security-remediation.js +1 -0
- package/scripts/legacy/README.md +272 -0
- package/scripts/legacy/batch-fix-ts.sh +54 -0
- package/scripts/legacy/build-migration.sh +105 -0
- package/scripts/legacy/build-monitor.js +209 -0
- package/scripts/legacy/build-with-filter.sh +84 -0
- package/scripts/legacy/build-workaround.sh +71 -0
- package/scripts/legacy/fix-ts-advanced.js +358 -0
- package/scripts/legacy/fix-ts-final.sh +50 -0
- package/scripts/legacy/fix-ts-targeted.sh +49 -0
- package/scripts/legacy/fix-typescript-errors.js +305 -0
- package/scripts/legacy/force-build.sh +63 -0
- package/scripts/legacy/optimize-performance.js +400 -0
- package/scripts/legacy/performance-monitor.js +263 -0
- package/scripts/legacy/performance-monitoring.js +532 -0
- package/scripts/legacy/performance-test-runner.js +645 -0
- package/scripts/legacy/quick-fix-ts.js +281 -0
- package/scripts/legacy/safe-build.sh +63 -0
- package/scripts/migration/README.md +434 -0
- package/scripts/migration/install-arm64.js +78 -0
- package/scripts/migration/install.js +83 -0
- package/scripts/migration/migrate-hooks.js +173 -0
- package/scripts/migration/migration-examples.ts +318 -0
- package/scripts/optimization/build-optimizer.js +438 -0
- package/scripts/optimization/config-validator.js +761 -0
- package/scripts/optimization/test-optimization.js +432 -0
- package/scripts/optimization/unified-activation.js +839 -0
- package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
- package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
- package/scripts/performance/test-enhanced-backend.sh +504 -0
- package/scripts/performance-test-runner.js +698 -0
- package/scripts/security/README.md +339 -0
- package/scripts/security/install-git-hooks.sh +132 -0
- package/scripts/security/ruv-swarm-safe.js +74 -0
- package/scripts/test/README.md +236 -0
- package/scripts/test/check-links.ts +274 -0
- package/scripts/test/check-performance-regression.ts +168 -0
- package/scripts/test/coverage-report.ts +692 -0
- package/scripts/test/generate-swarm-tests.js +633 -0
- package/scripts/test/integration-test-validation.cjs +253 -0
- package/scripts/test/load-test-swarm.js +576 -0
- package/scripts/test/run-phase3-compliance-tests.js +427 -0
- package/scripts/test/test-batch-tasks.ts +29 -0
- package/scripts/test/test-byzantine-resolution.js +246 -0
- package/scripts/test/test-claude-spawn-options.sh +63 -0
- package/scripts/test/test-cli-wizard.js +331 -0
- package/scripts/test/test-comprehensive.js +401 -0
- package/scripts/test/test-coordination-features.ts +238 -0
- package/scripts/test/test-fallback-systems.js +276 -0
- package/scripts/test/test-init-command.ts +302 -0
- package/scripts/test/test-mcp.ts +251 -0
- package/scripts/test/test-runner.ts +568 -0
- package/scripts/test/test-swarm-integration.sh +92 -0
- package/scripts/test/test-swarm.ts +142 -0
- package/scripts/test/validation-summary.ts +408 -0
- package/scripts/utils/README.md +261 -0
- package/scripts/utils/clean-build-artifacts.sh +94 -0
- package/scripts/utils/cleanup-root.sh +69 -0
- package/scripts/utils/fix-cliffy-imports.js +307 -0
- package/scripts/utils/fix-duplicate-imports.js +114 -0
- package/scripts/utils/fix-error-handling.cjs +70 -0
- package/scripts/utils/fix-import-paths.js +104 -0
- package/scripts/utils/fix-imports.js +116 -0
- package/scripts/utils/fix-shebang.js +78 -0
- package/scripts/utils/fix-test-modules.js +27 -0
- package/scripts/utils/fix-timezone-issue-246.js +200 -0
- package/scripts/utils/fix-ts-comprehensive.py +182 -0
- package/scripts/utils/fix-ts-targeted-batch.js +250 -0
- package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
- package/scripts/utils/simple-test-fixer.js +190 -0
- package/scripts/utils/validate-metrics-structure.cjs +144 -0
- package/scripts/verify-mcp-server.js +86 -0
- package/src/cli/simple-commands/__tests__/agent.test.js +291 -0
- package/src/cli/simple-commands/__tests__/memory.test.js +8 -0
- package/src/cli/simple-commands/__tests__/swarm.test.js +371 -0
- package/src/cli/simple-commands/__tests__/task.test.js +8 -0
- package/src/cli/simple-commands/agent.js +216 -0
- package/src/cli/simple-commands/analysis.js +570 -0
- package/src/cli/simple-commands/automation-executor.js +1603 -0
- package/src/cli/simple-commands/automation.js +627 -0
- package/src/cli/simple-commands/batch-manager.js +338 -0
- package/src/cli/simple-commands/claude-telemetry.js +311 -0
- package/src/cli/simple-commands/claude-track.js +102 -0
- package/src/cli/simple-commands/concurrent-display.js +348 -0
- package/src/cli/simple-commands/config.js +319 -0
- package/src/cli/simple-commands/coordination.js +307 -0
- package/src/cli/simple-commands/enhanced-ui-views.js +654 -0
- package/src/cli/simple-commands/enhanced-webui-complete.js +1038 -0
- package/src/cli/simple-commands/fix-hook-variables.js +363 -0
- package/src/cli/simple-commands/github/gh-coordinator.js +605 -0
- package/src/cli/simple-commands/github/github-api.js +624 -0
- package/src/cli/simple-commands/github/init.js +543 -0
- package/src/cli/simple-commands/github.js +377 -0
- package/src/cli/simple-commands/goal.js +145 -0
- package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +311 -0
- package/src/cli/simple-commands/hive-mind/communication.js +740 -0
- package/src/cli/simple-commands/hive-mind/core.js +1031 -0
- package/src/cli/simple-commands/hive-mind/db-optimizer.js +872 -0
- package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1364 -0
- package/src/cli/simple-commands/hive-mind/memory.js +1292 -0
- package/src/cli/simple-commands/hive-mind/performance-optimizer.js +618 -0
- package/src/cli/simple-commands/hive-mind/performance-test.js +373 -0
- package/src/cli/simple-commands/hive-mind/queen.js +809 -0
- package/src/cli/simple-commands/hive-mind/session-manager.js +1223 -0
- package/src/cli/simple-commands/hive-mind-optimize.js +361 -0
- package/src/cli/simple-commands/hive-mind-wizard.js +281 -0
- package/src/cli/simple-commands/hive-mind.js +3112 -0
- package/src/cli/simple-commands/hive.js +140 -0
- package/src/cli/simple-commands/hook-safety.js +671 -0
- package/src/cli/simple-commands/hooks.js +1268 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224542.json +7 -0
- package/src/cli/simple-commands/init/.claude/checkpoints/1756224544.json +8 -0
- package/src/cli/simple-commands/init/README.md +106 -0
- package/src/cli/simple-commands/init/VALIDATION_ROLLBACK.md +488 -0
- package/src/cli/simple-commands/init/agent-copier.js +347 -0
- package/src/cli/simple-commands/init/batch-init.js +663 -0
- package/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +438 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +876 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +356 -0
- package/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +501 -0
- package/src/cli/simple-commands/init/claude-commands/slash-commands.js +57 -0
- package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +296 -0
- package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
- package/src/cli/simple-commands/init/executable-wrapper.js +122 -0
- package/src/cli/simple-commands/init/gitignore-updater.js +137 -0
- package/src/cli/simple-commands/init/help.js +110 -0
- package/src/cli/simple-commands/init/hive-mind-init.js +749 -0
- package/src/cli/simple-commands/init/index.js +1953 -0
- package/src/cli/simple-commands/init/performance-monitor.js +344 -0
- package/src/cli/simple-commands/init/rollback/backup-manager.js +542 -0
- package/src/cli/simple-commands/init/rollback/index.js +399 -0
- package/src/cli/simple-commands/init/rollback/recovery-manager.js +778 -0
- package/src/cli/simple-commands/init/rollback/rollback-executor.js +521 -0
- package/src/cli/simple-commands/init/rollback/state-tracker.js +486 -0
- package/src/cli/simple-commands/init/sparc/roo-readme.js +61 -0
- package/src/cli/simple-commands/init/sparc/roomodes-config.js +102 -0
- package/src/cli/simple-commands/init/sparc/workflows.js +40 -0
- package/src/cli/simple-commands/init/sparc-structure.js +68 -0
- package/src/cli/simple-commands/init/template-copier.js +640 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md +1185 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +265 -0
- package/src/cli/simple-commands/init/templates/claude-flow-universal +81 -0
- package/src/cli/simple-commands/init/templates/claude-flow.bat +18 -0
- package/src/cli/simple-commands/init/templates/claude-flow.ps1 +24 -0
- package/src/cli/simple-commands/init/templates/claude-md.js +1101 -0
- package/src/cli/simple-commands/init/templates/commands/analysis/bottleneck-detect.md +162 -0
- package/src/cli/simple-commands/init/templates/commands/automation/auto-agent.md +122 -0
- package/src/cli/simple-commands/init/templates/commands/coordination/swarm-init.md +85 -0
- package/src/cli/simple-commands/init/templates/commands/github/github-swarm.md +121 -0
- package/src/cli/simple-commands/init/templates/commands/helpers/standard-checkpoint-hooks.sh +179 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/notification.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-command.md +116 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-edit.md +117 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/post-task.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-command.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-edit.md +113 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-search.md +112 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/pre-task.md +111 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-end.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-restore.md +118 -0
- package/src/cli/simple-commands/init/templates/commands/hooks/session-start.md +117 -0
- package/src/cli/simple-commands/init/templates/coordination-md.js +340 -0
- package/src/cli/simple-commands/init/templates/coordination.md +16 -0
- package/src/cli/simple-commands/init/templates/enhanced-templates.js +2347 -0
- package/src/cli/simple-commands/init/templates/github-safe-enhanced.js +331 -0
- package/src/cli/simple-commands/init/templates/github-safe.js +106 -0
- package/src/cli/simple-commands/init/templates/memory-bank-md.js +259 -0
- package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
- package/src/cli/simple-commands/init/templates/readme-files.js +72 -0
- package/src/cli/simple-commands/init/templates/safe-hook-patterns.js +430 -0
- package/src/cli/simple-commands/init/templates/settings.json +109 -0
- package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
- package/src/cli/simple-commands/init/templates/sparc-modes.js +1401 -0
- package/src/cli/simple-commands/init/templates/verification-claude-md.js +432 -0
- package/src/cli/simple-commands/init/validation/config-validator.js +354 -0
- package/src/cli/simple-commands/init/validation/health-checker.js +599 -0
- package/src/cli/simple-commands/init/validation/index.js +388 -0
- package/src/cli/simple-commands/init/validation/mode-validator.js +387 -0
- package/src/cli/simple-commands/init/validation/post-init-validator.js +390 -0
- package/src/cli/simple-commands/init/validation/pre-init-validator.js +290 -0
- package/src/cli/simple-commands/init/validation/test-runner.js +488 -0
- package/src/cli/simple-commands/init.js +4 -0
- package/src/cli/simple-commands/mcp-health.js +163 -0
- package/src/cli/simple-commands/mcp-integration-layer.js +689 -0
- package/src/cli/simple-commands/mcp.js +420 -0
- package/src/cli/simple-commands/memory-consolidation.js +631 -0
- package/src/cli/simple-commands/memory.js +345 -0
- package/src/cli/simple-commands/migrate-hooks.js +63 -0
- package/src/cli/simple-commands/monitor.js +417 -0
- package/src/cli/simple-commands/neural.js +148 -0
- package/src/cli/simple-commands/pair-autofix-only.js +755 -0
- package/src/cli/simple-commands/pair-basic.js +751 -0
- package/src/cli/simple-commands/pair-old.js +623 -0
- package/src/cli/simple-commands/pair-working.js +849 -0
- package/src/cli/simple-commands/pair.js +849 -0
- package/src/cli/simple-commands/performance-hooks.js +149 -0
- package/src/cli/simple-commands/performance-metrics.js +601 -0
- package/src/cli/simple-commands/process-ui-enhanced.js +821 -0
- package/src/cli/simple-commands/process-ui.js +274 -0
- package/src/cli/simple-commands/realtime-update-system.js +659 -0
- package/src/cli/simple-commands/sparc/architecture.js +1750 -0
- package/src/cli/simple-commands/sparc/commands.js +575 -0
- package/src/cli/simple-commands/sparc/completion.js +1831 -0
- package/src/cli/simple-commands/sparc/coordinator.js +1045 -0
- package/src/cli/simple-commands/sparc/index.js +321 -0
- package/src/cli/simple-commands/sparc/phase-base.js +430 -0
- package/src/cli/simple-commands/sparc/pseudocode.js +984 -0
- package/src/cli/simple-commands/sparc/refinement.js +1856 -0
- package/src/cli/simple-commands/sparc/specification.js +736 -0
- package/src/cli/simple-commands/sparc-modes/architect.js +125 -0
- package/src/cli/simple-commands/sparc-modes/ask.js +126 -0
- package/src/cli/simple-commands/sparc-modes/code.js +148 -0
- package/src/cli/simple-commands/sparc-modes/debug.js +112 -0
- package/src/cli/simple-commands/sparc-modes/devops.js +137 -0
- package/src/cli/simple-commands/sparc-modes/docs-writer.js +38 -0
- package/src/cli/simple-commands/sparc-modes/generic.js +34 -0
- package/src/cli/simple-commands/sparc-modes/index.js +201 -0
- package/src/cli/simple-commands/sparc-modes/integration.js +55 -0
- package/src/cli/simple-commands/sparc-modes/mcp.js +38 -0
- package/src/cli/simple-commands/sparc-modes/monitoring.js +38 -0
- package/src/cli/simple-commands/sparc-modes/optimization.js +38 -0
- package/src/cli/simple-commands/sparc-modes/security-review.js +130 -0
- package/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +167 -0
- package/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +38 -0
- package/src/cli/simple-commands/sparc-modes/supabase-admin.js +149 -0
- package/src/cli/simple-commands/sparc-modes/swarm.js +436 -0
- package/src/cli/simple-commands/sparc-modes/tdd.js +112 -0
- package/src/cli/simple-commands/sparc-modes/tutorial.js +277 -0
- package/src/cli/simple-commands/sparc.js +530 -0
- package/src/cli/simple-commands/start-ui.js +147 -0
- package/src/cli/simple-commands/start-wrapper.js +285 -0
- package/src/cli/simple-commands/start.js +2 -0
- package/src/cli/simple-commands/status.js +303 -0
- package/src/cli/simple-commands/stream-chain-clean.js +221 -0
- package/src/cli/simple-commands/stream-chain-fixed.js +89 -0
- package/src/cli/simple-commands/stream-chain-real.js +408 -0
- package/src/cli/simple-commands/stream-chain-working.js +323 -0
- package/src/cli/simple-commands/stream-chain.js +491 -0
- package/src/cli/simple-commands/stream-processor.js +340 -0
- package/src/cli/simple-commands/swarm-executor.js +253 -0
- package/src/cli/simple-commands/swarm-metrics-integration.js +371 -0
- package/src/cli/simple-commands/swarm-ui.js +741 -0
- package/src/cli/simple-commands/swarm-webui-integration.js +311 -0
- package/src/cli/simple-commands/swarm.js +2277 -0
- package/src/cli/simple-commands/task.js +228 -0
- package/src/cli/simple-commands/templates/mle-star-workflow.json +294 -0
- package/src/cli/simple-commands/timestamp-fix.js +104 -0
- package/src/cli/simple-commands/token-tracker.js +372 -0
- package/src/cli/simple-commands/tool-execution-framework.js +555 -0
- package/src/cli/simple-commands/train-and-stream.js +354 -0
- package/src/cli/simple-commands/training-pipeline.js +874 -0
- package/src/cli/simple-commands/training.js +288 -0
- package/src/cli/simple-commands/verification-hooks.js +336 -0
- package/src/cli/simple-commands/verification-integration.js +464 -0
- package/src/cli/simple-commands/verification-training-integration.js +646 -0
- package/src/cli/simple-commands/verification.js +551 -0
- package/src/cli/simple-commands/web-server.js +929 -0
- package/src/cli/simple-commands/webui-validator.js +136 -0
- package/src/language/README.md +503 -0
- package/src/language/claude-md-generator.js +618 -0
- package/src/language/cli.js +422 -0
- package/src/language/example.js +347 -0
- package/src/language/integration-system.js +619 -0
- package/src/language/language-detector.js +581 -0
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Verification Integration Module
|
|
3
|
+
* Connects verification system to actual agent operations and task execution
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { exec } from 'child_process';
|
|
7
|
+
import { promisify } from 'util';
|
|
8
|
+
import fs from 'fs/promises';
|
|
9
|
+
import path from 'path';
|
|
10
|
+
import crypto from 'crypto';
|
|
11
|
+
|
|
12
|
+
const execAsync = promisify(exec);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Verification middleware for task execution
|
|
16
|
+
* Intercepts task results and verifies them
|
|
17
|
+
*/
|
|
18
|
+
export class VerificationMiddleware {
|
|
19
|
+
constructor(verificationSystem) {
|
|
20
|
+
this.verificationSystem = verificationSystem;
|
|
21
|
+
this.enabled = true;
|
|
22
|
+
this.autoRollback = true;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Wrap task execution with verification
|
|
27
|
+
*/
|
|
28
|
+
async executeWithVerification(taskFn, taskId, agentType, context) {
|
|
29
|
+
// Pre-task verification
|
|
30
|
+
const preCheck = await this.preTaskVerification(taskId, context);
|
|
31
|
+
if (!preCheck.passed && this.enabled) {
|
|
32
|
+
console.log(`❌ Pre-task verification failed for ${taskId}`);
|
|
33
|
+
return { success: false, reason: 'Pre-task verification failed', preCheck };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Execute the actual task
|
|
37
|
+
let result;
|
|
38
|
+
let error;
|
|
39
|
+
try {
|
|
40
|
+
result = await taskFn();
|
|
41
|
+
} catch (err) {
|
|
42
|
+
error = err;
|
|
43
|
+
result = { success: false, error: err.message };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Post-task verification
|
|
47
|
+
const postCheck = await this.postTaskVerification(taskId, agentType, result, context);
|
|
48
|
+
|
|
49
|
+
// If verification fails and auto-rollback is enabled
|
|
50
|
+
if (!postCheck.passed && this.autoRollback) {
|
|
51
|
+
await this.rollbackTask(taskId, context);
|
|
52
|
+
return {
|
|
53
|
+
success: false,
|
|
54
|
+
reason: 'Post-task verification failed',
|
|
55
|
+
result,
|
|
56
|
+
verification: postCheck,
|
|
57
|
+
rollback: true,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
success: postCheck.passed,
|
|
63
|
+
result,
|
|
64
|
+
verification: postCheck,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Pre-task verification checks
|
|
70
|
+
*/
|
|
71
|
+
async preTaskVerification(taskId, context) {
|
|
72
|
+
const checks = [];
|
|
73
|
+
|
|
74
|
+
// Check if environment is clean
|
|
75
|
+
if (context.requiresCleanState) {
|
|
76
|
+
const gitStatus = await this.checkGitStatus();
|
|
77
|
+
checks.push({
|
|
78
|
+
name: 'clean-state',
|
|
79
|
+
passed: gitStatus.clean,
|
|
80
|
+
score: gitStatus.clean ? 1.0 : 0.0,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Check dependencies
|
|
85
|
+
if (context.dependencies) {
|
|
86
|
+
for (const dep of context.dependencies) {
|
|
87
|
+
const exists = await this.checkDependency(dep);
|
|
88
|
+
checks.push({
|
|
89
|
+
name: `dependency-${dep}`,
|
|
90
|
+
passed: exists,
|
|
91
|
+
score: exists ? 1.0 : 0.0,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const score =
|
|
97
|
+
checks.length > 0 ? checks.reduce((sum, c) => sum + c.score, 0) / checks.length : 1.0;
|
|
98
|
+
|
|
99
|
+
return {
|
|
100
|
+
passed: score >= 0.95,
|
|
101
|
+
score,
|
|
102
|
+
checks,
|
|
103
|
+
timestamp: new Date().toISOString(),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Post-task verification checks
|
|
109
|
+
*/
|
|
110
|
+
async postTaskVerification(taskId, agentType, result, context) {
|
|
111
|
+
const checks = [];
|
|
112
|
+
|
|
113
|
+
// Verify based on agent type
|
|
114
|
+
switch (agentType) {
|
|
115
|
+
case 'coder':
|
|
116
|
+
// Check if code compiles
|
|
117
|
+
if (context.language === 'typescript' || context.language === 'javascript') {
|
|
118
|
+
const typecheck = await this.runTypeCheck();
|
|
119
|
+
checks.push({
|
|
120
|
+
name: 'typecheck',
|
|
121
|
+
passed: typecheck.passed,
|
|
122
|
+
score: typecheck.score,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Check if tests pass
|
|
127
|
+
if (context.hasTests) {
|
|
128
|
+
const tests = await this.runTests();
|
|
129
|
+
checks.push({
|
|
130
|
+
name: 'tests',
|
|
131
|
+
passed: tests.passed,
|
|
132
|
+
score: tests.score,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Check linting
|
|
137
|
+
const lint = await this.runLint();
|
|
138
|
+
checks.push({
|
|
139
|
+
name: 'lint',
|
|
140
|
+
passed: lint.passed,
|
|
141
|
+
score: lint.score,
|
|
142
|
+
});
|
|
143
|
+
break;
|
|
144
|
+
|
|
145
|
+
case 'researcher':
|
|
146
|
+
// Verify research output has required sections
|
|
147
|
+
if (result && result.output) {
|
|
148
|
+
const hasFindings =
|
|
149
|
+
result.output.includes('findings') || result.output.includes('results');
|
|
150
|
+
checks.push({
|
|
151
|
+
name: 'research-completeness',
|
|
152
|
+
passed: hasFindings,
|
|
153
|
+
score: hasFindings ? 1.0 : 0.5,
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
break;
|
|
157
|
+
|
|
158
|
+
case 'tester':
|
|
159
|
+
// Verify test coverage meets threshold
|
|
160
|
+
if (context.requiresCoverage) {
|
|
161
|
+
const coverage = await this.checkTestCoverage();
|
|
162
|
+
checks.push({
|
|
163
|
+
name: 'coverage',
|
|
164
|
+
passed: coverage.percentage >= 80,
|
|
165
|
+
score: coverage.percentage / 100,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
|
|
170
|
+
case 'architect':
|
|
171
|
+
// Verify architecture decisions are documented
|
|
172
|
+
const hasDocs = await this.checkDocumentation();
|
|
173
|
+
checks.push({
|
|
174
|
+
name: 'documentation',
|
|
175
|
+
passed: hasDocs,
|
|
176
|
+
score: hasDocs ? 1.0 : 0.3,
|
|
177
|
+
});
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Check result success claim
|
|
182
|
+
if (result && result.success !== undefined) {
|
|
183
|
+
checks.push({
|
|
184
|
+
name: 'claimed-success',
|
|
185
|
+
passed: result.success,
|
|
186
|
+
score: result.success ? 1.0 : 0.0,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
const score =
|
|
191
|
+
checks.length > 0 ? checks.reduce((sum, c) => sum + c.score, 0) / checks.length : 0.5;
|
|
192
|
+
|
|
193
|
+
// Store verification result
|
|
194
|
+
await this.verificationSystem.verifyTask(taskId, agentType, {
|
|
195
|
+
success: result?.success,
|
|
196
|
+
checks,
|
|
197
|
+
score,
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
return {
|
|
201
|
+
passed: score >= this.verificationSystem.getThreshold(),
|
|
202
|
+
score,
|
|
203
|
+
checks,
|
|
204
|
+
timestamp: new Date().toISOString(),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Rollback task changes
|
|
210
|
+
*/
|
|
211
|
+
async rollbackTask(taskId, context) {
|
|
212
|
+
console.log(`🔄 Rolling back task ${taskId}...`);
|
|
213
|
+
|
|
214
|
+
try {
|
|
215
|
+
// If we have a git checkpoint, rollback to it
|
|
216
|
+
if (context.gitCheckpoint) {
|
|
217
|
+
await execAsync(`git reset --hard ${context.gitCheckpoint}`);
|
|
218
|
+
console.log(`✅ Rolled back to checkpoint ${context.gitCheckpoint}`);
|
|
219
|
+
} else {
|
|
220
|
+
// Otherwise just reset to last commit
|
|
221
|
+
await execAsync('git reset --hard HEAD');
|
|
222
|
+
console.log(`✅ Rolled back to last commit`);
|
|
223
|
+
}
|
|
224
|
+
return true;
|
|
225
|
+
} catch (error) {
|
|
226
|
+
console.error(`❌ Rollback failed: ${error.message}`);
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Helper methods for actual checks
|
|
232
|
+
|
|
233
|
+
async checkGitStatus() {
|
|
234
|
+
try {
|
|
235
|
+
const { stdout } = await execAsync('git status --porcelain');
|
|
236
|
+
return { clean: stdout.trim() === '' };
|
|
237
|
+
} catch {
|
|
238
|
+
return { clean: false };
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
async checkDependency(dep) {
|
|
243
|
+
try {
|
|
244
|
+
await execAsync(`which ${dep}`);
|
|
245
|
+
return true;
|
|
246
|
+
} catch {
|
|
247
|
+
return false;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
async runTypeCheck() {
|
|
252
|
+
try {
|
|
253
|
+
const { stdout } = await execAsync('npm run typecheck 2>&1 || true');
|
|
254
|
+
const hasErrors = stdout.toLowerCase().includes('error');
|
|
255
|
+
return {
|
|
256
|
+
passed: !hasErrors,
|
|
257
|
+
score: hasErrors ? 0.5 : 1.0,
|
|
258
|
+
};
|
|
259
|
+
} catch {
|
|
260
|
+
return { passed: false, score: 0.3 };
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
async runTests() {
|
|
265
|
+
try {
|
|
266
|
+
const { stdout } = await execAsync('npm test 2>&1 || true');
|
|
267
|
+
const passed = stdout.includes('PASS') || stdout.includes('passing');
|
|
268
|
+
const failed = stdout.includes('FAIL') || stdout.includes('failing');
|
|
269
|
+
|
|
270
|
+
if (passed && !failed) {
|
|
271
|
+
return { passed: true, score: 1.0 };
|
|
272
|
+
} else if (passed && failed) {
|
|
273
|
+
return { passed: false, score: 0.7 };
|
|
274
|
+
} else {
|
|
275
|
+
return { passed: false, score: 0.3 };
|
|
276
|
+
}
|
|
277
|
+
} catch {
|
|
278
|
+
return { passed: false, score: 0.0 };
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
async runLint() {
|
|
283
|
+
try {
|
|
284
|
+
const { stdout } = await execAsync('npm run lint 2>&1 || true');
|
|
285
|
+
const hasErrors = stdout.toLowerCase().includes('error');
|
|
286
|
+
const hasWarnings = stdout.toLowerCase().includes('warning');
|
|
287
|
+
|
|
288
|
+
if (!hasErrors && !hasWarnings) {
|
|
289
|
+
return { passed: true, score: 1.0 };
|
|
290
|
+
} else if (!hasErrors && hasWarnings) {
|
|
291
|
+
return { passed: true, score: 0.8 };
|
|
292
|
+
} else {
|
|
293
|
+
return { passed: false, score: 0.5 };
|
|
294
|
+
}
|
|
295
|
+
} catch {
|
|
296
|
+
return { passed: false, score: 0.3 };
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
async checkTestCoverage() {
|
|
301
|
+
try {
|
|
302
|
+
const { stdout } = await execAsync('npm run coverage 2>&1 || true');
|
|
303
|
+
const match = stdout.match(/(\d+(\.\d+)?)\s*%/);
|
|
304
|
+
const percentage = match ? parseFloat(match[1]) : 0;
|
|
305
|
+
return { percentage };
|
|
306
|
+
} catch {
|
|
307
|
+
return { percentage: 0 };
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
async checkDocumentation() {
|
|
312
|
+
try {
|
|
313
|
+
// Check if common documentation files exist
|
|
314
|
+
const docFiles = ['README.md', 'ARCHITECTURE.md', 'docs/design.md'];
|
|
315
|
+
for (const file of docFiles) {
|
|
316
|
+
try {
|
|
317
|
+
await fs.access(file);
|
|
318
|
+
return true;
|
|
319
|
+
} catch {
|
|
320
|
+
// Continue checking other files
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return false;
|
|
324
|
+
} catch {
|
|
325
|
+
return false;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Integration with swarm command
|
|
332
|
+
*/
|
|
333
|
+
export function integrateWithSwarm(swarmCommand, verificationSystem) {
|
|
334
|
+
const originalExecute = swarmCommand.execute;
|
|
335
|
+
const middleware = new VerificationMiddleware(verificationSystem);
|
|
336
|
+
|
|
337
|
+
swarmCommand.execute = async function (objective, options) {
|
|
338
|
+
// Create checkpoint before swarm execution
|
|
339
|
+
const checkpoint = await createGitCheckpoint();
|
|
340
|
+
|
|
341
|
+
// Wrap the original execution with verification
|
|
342
|
+
const context = {
|
|
343
|
+
requiresCleanState: !options.allowDirty,
|
|
344
|
+
dependencies: options.dependencies || [],
|
|
345
|
+
language: options.language || 'javascript',
|
|
346
|
+
hasTests: options.runTests !== false,
|
|
347
|
+
requiresCoverage: options.coverage === true,
|
|
348
|
+
gitCheckpoint: checkpoint,
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
// Execute with verification
|
|
352
|
+
return await middleware.executeWithVerification(
|
|
353
|
+
() => originalExecute.call(this, objective, options),
|
|
354
|
+
`swarm-${Date.now()}`,
|
|
355
|
+
'swarm',
|
|
356
|
+
context,
|
|
357
|
+
);
|
|
358
|
+
};
|
|
359
|
+
|
|
360
|
+
return swarmCommand;
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* Integration with non-interactive mode
|
|
365
|
+
*/
|
|
366
|
+
export function integrateWithNonInteractive(flags, verificationSystem) {
|
|
367
|
+
// Add verification flags to non-interactive mode
|
|
368
|
+
const verificationFlags = {
|
|
369
|
+
...flags,
|
|
370
|
+
verify: true,
|
|
371
|
+
verificationThreshold: flags.threshold || 0.95,
|
|
372
|
+
autoRollback: flags.rollback !== false,
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
// Return a verification wrapper for non-interactive execution
|
|
376
|
+
return {
|
|
377
|
+
flags: verificationFlags,
|
|
378
|
+
preExecute: async (taskId) => {
|
|
379
|
+
await verificationSystem.initialize('strict');
|
|
380
|
+
console.log('✅ Verification enabled for non-interactive mode');
|
|
381
|
+
},
|
|
382
|
+
postExecute: async (taskId, result) => {
|
|
383
|
+
const verification = await verificationSystem.verifyTask(taskId, 'non-interactive', result);
|
|
384
|
+
|
|
385
|
+
if (!verification.passed) {
|
|
386
|
+
console.error('❌ Verification failed in non-interactive mode');
|
|
387
|
+
process.exit(1);
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
/**
|
|
394
|
+
* Integration with training system
|
|
395
|
+
*/
|
|
396
|
+
export function integrateWithTraining(trainingSystem, verificationSystem) {
|
|
397
|
+
// Feed verification results to training system
|
|
398
|
+
verificationSystem.onVerification = async (verification) => {
|
|
399
|
+
// Convert verification to training data
|
|
400
|
+
const trainingData = {
|
|
401
|
+
input: {
|
|
402
|
+
taskId: verification.taskId,
|
|
403
|
+
agentType: verification.agentType,
|
|
404
|
+
context: verification.context,
|
|
405
|
+
},
|
|
406
|
+
output: {
|
|
407
|
+
success: verification.passed,
|
|
408
|
+
score: verification.score,
|
|
409
|
+
checks: verification.results,
|
|
410
|
+
},
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
// Feed to training system
|
|
414
|
+
await trainingSystem.learn(trainingData);
|
|
415
|
+
|
|
416
|
+
// Update agent model based on performance
|
|
417
|
+
if (verification.agentType) {
|
|
418
|
+
await trainingSystem.updateAgentModel(verification.agentType, verification.score);
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
|
|
422
|
+
return verificationSystem;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* Create git checkpoint for rollback
|
|
427
|
+
*/
|
|
428
|
+
async function createGitCheckpoint() {
|
|
429
|
+
try {
|
|
430
|
+
// Create a temporary commit as checkpoint
|
|
431
|
+
const { stdout } = await execAsync('git rev-parse HEAD');
|
|
432
|
+
return stdout.trim();
|
|
433
|
+
} catch {
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Export verification hooks for command integration
|
|
440
|
+
*/
|
|
441
|
+
export const verificationHooks = {
|
|
442
|
+
beforeTask: async (taskId, context) => {
|
|
443
|
+
// Hook called before task execution
|
|
444
|
+
console.log(`🔍 Pre-task verification for ${taskId}`);
|
|
445
|
+
},
|
|
446
|
+
|
|
447
|
+
afterTask: async (taskId, result, context) => {
|
|
448
|
+
// Hook called after task execution
|
|
449
|
+
console.log(`✅ Post-task verification for ${taskId}`);
|
|
450
|
+
},
|
|
451
|
+
|
|
452
|
+
onFailure: async (taskId, verification) => {
|
|
453
|
+
// Hook called when verification fails
|
|
454
|
+
console.log(`❌ Verification failed for ${taskId}: ${verification.score}`);
|
|
455
|
+
},
|
|
456
|
+
};
|
|
457
|
+
|
|
458
|
+
export default {
|
|
459
|
+
VerificationMiddleware,
|
|
460
|
+
integrateWithSwarm,
|
|
461
|
+
integrateWithNonInteractive,
|
|
462
|
+
integrateWithTraining,
|
|
463
|
+
verificationHooks,
|
|
464
|
+
};
|