claude-flow-novice 2.0.3 → 2.0.4
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/dist/src/cli/commands/guidance.js +487 -668
- package/dist/src/cli/commands/index-validate.js +18 -29
- package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
- package/dist/src/cli/commands/neural-goal-init.js +92 -125
- package/dist/src/cli/commands/swarm-exec.js +317 -393
- package/dist/src/cli/commands/swarm.js +1 -1
- package/dist/src/cli/commands/validate-framework.js +983 -1100
- package/dist/src/cli/commands/validate.js +144 -223
- package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
- package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
- package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
- package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
- package/dist/src/cli/simple-commands/agent.js +157 -193
- package/dist/src/cli/simple-commands/analysis.js +336 -446
- package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
- package/dist/src/cli/simple-commands/automation.js +481 -469
- package/dist/src/cli/simple-commands/batch-manager.js +261 -313
- package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
- package/dist/src/cli/simple-commands/claude-track.js +68 -90
- package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
- package/dist/src/cli/simple-commands/config.js +245 -290
- package/dist/src/cli/simple-commands/coordination.js +182 -234
- package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
- package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
- package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
- package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
- package/dist/src/cli/simple-commands/github/github-api.js +535 -574
- package/dist/src/cli/simple-commands/github/init.js +276 -303
- package/dist/src/cli/simple-commands/github.js +222 -247
- package/dist/src/cli/simple-commands/goal.js +51 -63
- package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
- package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
- package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
- package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
- package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
- package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
- package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
- package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
- package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
- package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
- package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
- package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
- package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
- package/dist/src/cli/simple-commands/hive.js +90 -79
- package/dist/src/cli/simple-commands/hook-safety.js +431 -521
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
- package/dist/src/cli/simple-commands/hooks.js +1064 -1204
- package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
- package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
- package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
- package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
- package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
- package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
- package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
- package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
- package/dist/src/cli/simple-commands/init/help.js +104 -107
- package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
- package/dist/src/cli/simple-commands/init/index.js +1510 -1759
- package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
- package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
- package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
- package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
- package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
- package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
- package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
- package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
- package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
- package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
- package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
- package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
- package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
- package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
- package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
- package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
- package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
- package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
- package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
- package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
- package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
- package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
- package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
- package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
- package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
- package/dist/src/cli/simple-commands/init.js +1 -2
- package/dist/src/cli/simple-commands/mcp-health.js +131 -158
- package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
- package/dist/src/cli/simple-commands/mcp.js +345 -400
- package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
- package/dist/src/cli/simple-commands/memory.js +247 -311
- package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
- package/dist/src/cli/simple-commands/monitor.js +294 -363
- package/dist/src/cli/simple-commands/neural.js +51 -65
- package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
- package/dist/src/cli/simple-commands/pair-basic.js +528 -656
- package/dist/src/cli/simple-commands/pair-old.js +430 -543
- package/dist/src/cli/simple-commands/pair-working.js +615 -751
- package/dist/src/cli/simple-commands/pair.js +615 -751
- package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
- package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
- package/dist/src/cli/simple-commands/process-ui.js +230 -254
- package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
- package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
- package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
- package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
- package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
- package/dist/src/cli/simple-commands/sparc/index.js +241 -298
- package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
- package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
- package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
- package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
- package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
- package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
- package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
- package/dist/src/cli/simple-commands/sparc.js +465 -493
- package/dist/src/cli/simple-commands/start-ui.js +108 -132
- package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
- package/dist/src/cli/simple-commands/start.js +1 -1
- package/dist/src/cli/simple-commands/status.js +254 -275
- package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
- package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
- package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
- package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
- package/dist/src/cli/simple-commands/stream-chain.js +260 -318
- package/dist/src/cli/simple-commands/stream-processor.js +290 -315
- package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
- package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
- package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
- package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
- package/dist/src/cli/simple-commands/swarm.js +887 -1082
- package/dist/src/cli/simple-commands/task.js +161 -206
- package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
- package/dist/src/cli/simple-commands/token-tracker.js +258 -316
- package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
- package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
- package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
- package/dist/src/cli/simple-commands/training.js +170 -227
- package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
- package/dist/src/cli/simple-commands/verification-integration.js +389 -417
- package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
- package/dist/src/cli/simple-commands/verification.js +493 -513
- package/dist/src/cli/simple-commands/web-server.js +766 -836
- package/dist/src/cli/simple-commands/webui-validator.js +106 -124
- package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
- package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
- package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
- package/dist/src/coordination/iteration-tracker.js +363 -454
- package/dist/src/enterprise/analytics-manager.js +1135 -0
- package/dist/src/enterprise/audit-manager.js +1115 -0
- package/dist/src/enterprise/cloud-manager.js +891 -0
- package/dist/src/enterprise/deployment-manager.js +966 -0
- package/dist/src/enterprise/index.js +6 -0
- package/dist/src/enterprise/project-manager.js +584 -0
- package/dist/src/enterprise/security-manager.js +991 -0
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/DEPRECATED.js +46 -60
- package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
- package/dist/src/mcp/implementations/agent-tracker.js +114 -128
- package/dist/src/mcp/implementations/daa-tools.js +292 -350
- package/dist/src/mcp/implementations/workflow-tools.js +329 -361
- package/dist/src/mcp/mcp-config-manager.js +1183 -1331
- package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
- package/dist/src/mcp/mcp-server-novice.js +11 -17
- package/dist/src/mcp/mcp-server-sdk.js +11 -17
- package/dist/src/mcp/mcp-server.js +1620 -1484
- package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
- package/dist/src/memory/advanced-serializer.js +609 -589
- package/dist/src/memory/enhanced-examples.js +220 -305
- package/dist/src/memory/enhanced-memory.js +295 -336
- package/dist/src/memory/enhanced-session-serializer.js +408 -492
- package/dist/src/memory/fallback-memory-system.js +900 -1021
- package/dist/src/memory/fallback-store.js +93 -131
- package/dist/src/memory/high-performance-serialization.js +592 -730
- package/dist/src/memory/in-memory-store.js +161 -213
- package/dist/src/memory/index.js +123 -157
- package/dist/src/memory/lock-free-structures.js +578 -764
- package/dist/src/memory/memory-mapped-persistence.js +585 -766
- package/dist/src/memory/memory-pressure-manager.js +569 -707
- package/dist/src/memory/migration.js +358 -445
- package/dist/src/memory/shared-memory.js +641 -768
- package/dist/src/memory/sqlite-store.js +245 -325
- package/dist/src/memory/sqlite-wrapper.js +122 -151
- package/dist/src/memory/swarm-memory.js +470 -603
- package/dist/src/memory/test-example.js +126 -134
- package/dist/src/memory/ultra-fast-memory-store.js +622 -821
- package/dist/src/memory/unified-memory-manager.js +356 -437
- package/dist/src/migration/index.js +92 -0
- package/dist/src/migration/logger.js +121 -0
- package/dist/src/migration/migration-analyzer.js +268 -0
- package/dist/src/migration/migration-runner.js +522 -0
- package/dist/src/migration/migration-validator.js +285 -0
- package/dist/src/migration/progress-reporter.js +150 -0
- package/dist/src/migration/rollback-manager.js +321 -0
- package/dist/src/migration/tests/migration-system.test.js +7 -0
- package/dist/src/migration/types.js +3 -0
- package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
- package/dist/src/swarm/__tests__/integration.test.js +227 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
- package/dist/src/swarm/advanced-orchestrator.js +1095 -0
- package/dist/src/swarm/claude-code-interface.js +961 -0
- package/dist/src/swarm/claude-flow-executor.js +229 -0
- package/dist/src/swarm/consensus-coordinator.js +475 -0
- package/dist/src/swarm/coordinator.js +2993 -0
- package/dist/src/swarm/direct-executor.js +1180 -0
- package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
- package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
- package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
- package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
- package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
- package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
- package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
- package/dist/src/swarm/executor-v2.js +322 -0
- package/dist/src/swarm/executor.js +815 -0
- package/dist/src/swarm/hive-mind-integration.js +703 -0
- package/dist/src/swarm/index.js +41 -0
- package/dist/src/swarm/json-output-aggregator.js +267 -0
- package/dist/src/swarm/large-scale-coordinator.js +542 -0
- package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
- package/dist/src/swarm/memory.js +1117 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
- package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
- package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
- package/dist/src/swarm/optimizations/connection-pool.js +244 -0
- package/dist/src/swarm/optimizations/index.js +28 -0
- package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
- package/dist/src/swarm/optimizations/ttl-map.js +234 -0
- package/dist/src/swarm/prompt-cli.js +200 -0
- package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
- package/dist/src/swarm/prompt-copier.js +381 -0
- package/dist/src/swarm/prompt-manager.js +295 -0
- package/dist/src/swarm/prompt-utils.js +310 -0
- package/dist/src/swarm/result-aggregator.js +718 -0
- package/dist/src/swarm/sparc-executor.js +1568 -0
- package/dist/src/swarm/strategies/auto.js +758 -0
- package/dist/src/swarm/strategies/base.js +128 -0
- package/dist/src/swarm/strategies/research.js +914 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
- package/dist/src/swarm/types.js +52 -0
- package/dist/src/swarm/workers/copy-worker.js +56 -0
- package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
- package/dist/src/utils/github-cli-safe.js +56 -64
- package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
- package/dist/src/utils/npx-isolated-cache.js +104 -119
- package/dist/src/utils/preference-manager.js +622 -652
- package/dist/src/utils/timezone-utils.js +86 -105
- package/dist/src/validators/epic-config-schema.js +214 -0
- package/dist/src/validators/index.js +10 -0
- package/dist/src/validators/swarm-init-validator.js +259 -0
- package/dist/src/validators/todowrite-batching-validator.js +215 -0
- package/dist/src/validators/todowrite-integration.js +187 -0
- package/package.json +2 -2
|
@@ -1,464 +1,436 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Verification Integration Module
|
|
3
3
|
* Connects verification system to actual agent operations and task execution
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
import { promisify } from 'util';
|
|
8
|
-
import fs from 'fs/promises';
|
|
9
|
-
import path from 'path';
|
|
10
|
-
import crypto from 'crypto';
|
|
11
|
-
|
|
4
|
+
*/ import { exec } from "child_process";
|
|
5
|
+
import { promisify } from "util";
|
|
6
|
+
import fs from "node:fs/promises";
|
|
12
7
|
const execAsync = promisify(exec);
|
|
13
|
-
|
|
14
8
|
/**
|
|
15
9
|
* Verification middleware for task execution
|
|
16
10
|
* Intercepts task results and verifies them
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
constructor(verificationSystem) {
|
|
20
|
-
this.verificationSystem = verificationSystem;
|
|
21
|
-
this.enabled = true;
|
|
22
|
-
this.autoRollback = true;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
11
|
+
*/ export class VerificationMiddleware {
|
|
12
|
+
/**
|
|
26
13
|
* Wrap task execution with verification
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
14
|
+
*/ async executeWithVerification(taskFn, taskId, agentType, context) {
|
|
15
|
+
// Pre-task verification
|
|
16
|
+
const preCheck = await this.preTaskVerification(taskId, context);
|
|
17
|
+
if (!preCheck.passed && this.enabled) {
|
|
18
|
+
console.log(`❌ Pre-task verification failed for ${taskId}`);
|
|
19
|
+
return {
|
|
20
|
+
success: false,
|
|
21
|
+
reason: 'Pre-task verification failed',
|
|
22
|
+
preCheck
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// Execute the actual task
|
|
26
|
+
let result;
|
|
27
|
+
let error;
|
|
28
|
+
try {
|
|
29
|
+
result = await taskFn();
|
|
30
|
+
} catch (err) {
|
|
31
|
+
error = err;
|
|
32
|
+
result = {
|
|
33
|
+
success: false,
|
|
34
|
+
error: err.message
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
// Post-task verification
|
|
38
|
+
const postCheck = await this.postTaskVerification(taskId, agentType, result, context);
|
|
39
|
+
// If verification fails and auto-rollback is enabled
|
|
40
|
+
if (!postCheck.passed && this.autoRollback) {
|
|
41
|
+
await this.rollbackTask(taskId, context);
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
reason: 'Post-task verification failed',
|
|
45
|
+
result,
|
|
46
|
+
verification: postCheck,
|
|
47
|
+
rollback: true
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
success: postCheck.passed,
|
|
52
|
+
result,
|
|
53
|
+
verification: postCheck
|
|
54
|
+
};
|
|
59
55
|
}
|
|
60
|
-
|
|
61
|
-
return {
|
|
62
|
-
success: postCheck.passed,
|
|
63
|
-
result,
|
|
64
|
-
verification: postCheck,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/**
|
|
56
|
+
/**
|
|
69
57
|
* Pre-task verification checks
|
|
70
|
-
*/
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
|
-
});
|
|
58
|
+
*/ async preTaskVerification(taskId, context) {
|
|
59
|
+
const checks = [];
|
|
60
|
+
// Check if environment is clean
|
|
61
|
+
if (context.requiresCleanState) {
|
|
62
|
+
const gitStatus = await this.checkGitStatus();
|
|
63
|
+
checks.push({
|
|
64
|
+
name: 'clean-state',
|
|
65
|
+
passed: gitStatus.clean,
|
|
66
|
+
score: gitStatus.clean ? 1.0 : 0.0
|
|
67
|
+
});
|
|
124
68
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
69
|
+
// Check dependencies
|
|
70
|
+
if (context.dependencies) {
|
|
71
|
+
for (const dep of context.dependencies){
|
|
72
|
+
const exists = await this.checkDependency(dep);
|
|
73
|
+
checks.push({
|
|
74
|
+
name: `dependency-${dep}`,
|
|
75
|
+
passed: exists,
|
|
76
|
+
score: exists ? 1.0 : 0.0
|
|
77
|
+
});
|
|
78
|
+
}
|
|
134
79
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
80
|
+
const score = checks.length > 0 ? checks.reduce((sum, c)=>sum + c.score, 0) / checks.length : 1.0;
|
|
81
|
+
return {
|
|
82
|
+
passed: score >= 0.95,
|
|
83
|
+
score,
|
|
84
|
+
checks,
|
|
85
|
+
timestamp: new Date().toISOString()
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Post-task verification checks
|
|
90
|
+
*/ async postTaskVerification(taskId, agentType, result, context) {
|
|
91
|
+
const checks = [];
|
|
92
|
+
// Verify based on agent type
|
|
93
|
+
switch(agentType){
|
|
94
|
+
case 'coder':
|
|
95
|
+
// Check if code compiles
|
|
96
|
+
if (context.language === 'typescript' || context.language === 'javascript') {
|
|
97
|
+
const typecheck = await this.runTypeCheck();
|
|
98
|
+
checks.push({
|
|
99
|
+
name: 'typecheck',
|
|
100
|
+
passed: typecheck.passed,
|
|
101
|
+
score: typecheck.score
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// Check if tests pass
|
|
105
|
+
if (context.hasTests) {
|
|
106
|
+
const tests = await this.runTests();
|
|
107
|
+
checks.push({
|
|
108
|
+
name: 'tests',
|
|
109
|
+
passed: tests.passed,
|
|
110
|
+
score: tests.score
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Check linting
|
|
114
|
+
const lint = await this.runLint();
|
|
115
|
+
checks.push({
|
|
116
|
+
name: 'lint',
|
|
117
|
+
passed: lint.passed,
|
|
118
|
+
score: lint.score
|
|
119
|
+
});
|
|
120
|
+
break;
|
|
121
|
+
case 'researcher':
|
|
122
|
+
// Verify research output has required sections
|
|
123
|
+
if (result && result.output) {
|
|
124
|
+
const hasFindings = result.output.includes('findings') || result.output.includes('results');
|
|
125
|
+
checks.push({
|
|
126
|
+
name: 'research-completeness',
|
|
127
|
+
passed: hasFindings,
|
|
128
|
+
score: hasFindings ? 1.0 : 0.5
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
break;
|
|
132
|
+
case 'tester':
|
|
133
|
+
// Verify test coverage meets threshold
|
|
134
|
+
if (context.requiresCoverage) {
|
|
135
|
+
const coverage = await this.checkTestCoverage();
|
|
136
|
+
checks.push({
|
|
137
|
+
name: 'coverage',
|
|
138
|
+
passed: coverage.percentage >= 80,
|
|
139
|
+
score: coverage.percentage / 100
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
break;
|
|
143
|
+
case 'architect':
|
|
144
|
+
// Verify architecture decisions are documented
|
|
145
|
+
const hasDocs = await this.checkDocumentation();
|
|
146
|
+
checks.push({
|
|
147
|
+
name: 'documentation',
|
|
148
|
+
passed: hasDocs,
|
|
149
|
+
score: hasDocs ? 1.0 : 0.3
|
|
150
|
+
});
|
|
151
|
+
break;
|
|
155
152
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
name: 'coverage',
|
|
164
|
-
passed: coverage.percentage >= 80,
|
|
165
|
-
score: coverage.percentage / 100,
|
|
166
|
-
});
|
|
153
|
+
// Check result success claim
|
|
154
|
+
if (result && result.success !== undefined) {
|
|
155
|
+
checks.push({
|
|
156
|
+
name: 'claimed-success',
|
|
157
|
+
passed: result.success,
|
|
158
|
+
score: result.success ? 1.0 : 0.0
|
|
159
|
+
});
|
|
167
160
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
name: 'documentation',
|
|
175
|
-
passed: hasDocs,
|
|
176
|
-
score: hasDocs ? 1.0 : 0.3,
|
|
161
|
+
const score = checks.length > 0 ? checks.reduce((sum, c)=>sum + c.score, 0) / checks.length : 0.5;
|
|
162
|
+
// Store verification result
|
|
163
|
+
await this.verificationSystem.verifyTask(taskId, agentType, {
|
|
164
|
+
success: result?.success,
|
|
165
|
+
checks,
|
|
166
|
+
score
|
|
177
167
|
});
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
name: 'claimed-success',
|
|
185
|
-
passed: result.success,
|
|
186
|
-
score: result.success ? 1.0 : 0.0,
|
|
187
|
-
});
|
|
168
|
+
return {
|
|
169
|
+
passed: score >= this.verificationSystem.getThreshold(),
|
|
170
|
+
score,
|
|
171
|
+
checks,
|
|
172
|
+
timestamp: new Date().toISOString()
|
|
173
|
+
};
|
|
188
174
|
}
|
|
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
|
-
/**
|
|
175
|
+
/**
|
|
209
176
|
* Rollback task changes
|
|
210
|
-
*/
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
return false;
|
|
177
|
+
*/ async rollbackTask(taskId, context) {
|
|
178
|
+
console.log(`🔄 Rolling back task ${taskId}...`);
|
|
179
|
+
try {
|
|
180
|
+
// If we have a git checkpoint, rollback to it
|
|
181
|
+
if (context.gitCheckpoint) {
|
|
182
|
+
await execAsync(`git reset --hard ${context.gitCheckpoint}`);
|
|
183
|
+
console.log(`✅ Rolled back to checkpoint ${context.gitCheckpoint}`);
|
|
184
|
+
} else {
|
|
185
|
+
// Otherwise just reset to last commit
|
|
186
|
+
await execAsync('git reset --hard HEAD');
|
|
187
|
+
console.log(`✅ Rolled back to last commit`);
|
|
188
|
+
}
|
|
189
|
+
return true;
|
|
190
|
+
} catch (error) {
|
|
191
|
+
console.error(`❌ Rollback failed: ${error.message}`);
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
228
194
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
195
|
+
// Helper methods for actual checks
|
|
196
|
+
async checkGitStatus() {
|
|
197
|
+
try {
|
|
198
|
+
const { stdout } = await execAsync('git status --porcelain');
|
|
199
|
+
return {
|
|
200
|
+
clean: stdout.trim() === ''
|
|
201
|
+
};
|
|
202
|
+
} catch {
|
|
203
|
+
return {
|
|
204
|
+
clean: false
|
|
205
|
+
};
|
|
206
|
+
}
|
|
239
207
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
return false;
|
|
208
|
+
async checkDependency(dep) {
|
|
209
|
+
try {
|
|
210
|
+
await execAsync(`which ${dep}`);
|
|
211
|
+
return true;
|
|
212
|
+
} catch {
|
|
213
|
+
return false;
|
|
214
|
+
}
|
|
248
215
|
}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
216
|
+
async runTypeCheck() {
|
|
217
|
+
try {
|
|
218
|
+
const { stdout } = await execAsync('npm run typecheck 2>&1 || true');
|
|
219
|
+
const hasErrors = stdout.toLowerCase().includes('error');
|
|
220
|
+
return {
|
|
221
|
+
passed: !hasErrors,
|
|
222
|
+
score: hasErrors ? 0.5 : 1.0
|
|
223
|
+
};
|
|
224
|
+
} catch {
|
|
225
|
+
return {
|
|
226
|
+
passed: false,
|
|
227
|
+
score: 0.3
|
|
228
|
+
};
|
|
229
|
+
}
|
|
261
230
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
231
|
+
async runTests() {
|
|
232
|
+
try {
|
|
233
|
+
const { stdout } = await execAsync('npm test 2>&1 || true');
|
|
234
|
+
const passed = stdout.includes('PASS') || stdout.includes('passing');
|
|
235
|
+
const failed = stdout.includes('FAIL') || stdout.includes('failing');
|
|
236
|
+
if (passed && !failed) {
|
|
237
|
+
return {
|
|
238
|
+
passed: true,
|
|
239
|
+
score: 1.0
|
|
240
|
+
};
|
|
241
|
+
} else if (passed && failed) {
|
|
242
|
+
return {
|
|
243
|
+
passed: false,
|
|
244
|
+
score: 0.7
|
|
245
|
+
};
|
|
246
|
+
} else {
|
|
247
|
+
return {
|
|
248
|
+
passed: false,
|
|
249
|
+
score: 0.3
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
} catch {
|
|
253
|
+
return {
|
|
254
|
+
passed: false,
|
|
255
|
+
score: 0.0
|
|
256
|
+
};
|
|
257
|
+
}
|
|
279
258
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
259
|
+
async runLint() {
|
|
260
|
+
try {
|
|
261
|
+
const { stdout } = await execAsync('npm run lint 2>&1 || true');
|
|
262
|
+
const hasErrors = stdout.toLowerCase().includes('error');
|
|
263
|
+
const hasWarnings = stdout.toLowerCase().includes('warning');
|
|
264
|
+
if (!hasErrors && !hasWarnings) {
|
|
265
|
+
return {
|
|
266
|
+
passed: true,
|
|
267
|
+
score: 1.0
|
|
268
|
+
};
|
|
269
|
+
} else if (!hasErrors && hasWarnings) {
|
|
270
|
+
return {
|
|
271
|
+
passed: true,
|
|
272
|
+
score: 0.8
|
|
273
|
+
};
|
|
274
|
+
} else {
|
|
275
|
+
return {
|
|
276
|
+
passed: false,
|
|
277
|
+
score: 0.5
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
} catch {
|
|
281
|
+
return {
|
|
282
|
+
passed: false,
|
|
283
|
+
score: 0.3
|
|
284
|
+
};
|
|
285
|
+
}
|
|
297
286
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
287
|
+
async checkTestCoverage() {
|
|
288
|
+
try {
|
|
289
|
+
const { stdout } = await execAsync('npm run coverage 2>&1 || true');
|
|
290
|
+
const match = stdout.match(/(\d+(\.\d+)?)\s*%/);
|
|
291
|
+
const percentage = match ? parseFloat(match[1]) : 0;
|
|
292
|
+
return {
|
|
293
|
+
percentage
|
|
294
|
+
};
|
|
295
|
+
} catch {
|
|
296
|
+
return {
|
|
297
|
+
percentage: 0
|
|
298
|
+
};
|
|
299
|
+
}
|
|
308
300
|
}
|
|
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) {
|
|
301
|
+
async checkDocumentation() {
|
|
316
302
|
try {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
303
|
+
// Check if common documentation files exist
|
|
304
|
+
const docFiles = [
|
|
305
|
+
'README.md',
|
|
306
|
+
'ARCHITECTURE.md',
|
|
307
|
+
'docs/design.md'
|
|
308
|
+
];
|
|
309
|
+
for (const file of docFiles){
|
|
310
|
+
try {
|
|
311
|
+
await fs.access(file);
|
|
312
|
+
return true;
|
|
313
|
+
} catch {
|
|
314
|
+
// Continue checking other files
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return false;
|
|
318
|
+
} catch {
|
|
319
|
+
return false;
|
|
321
320
|
}
|
|
322
|
-
}
|
|
323
|
-
return false;
|
|
324
|
-
} catch {
|
|
325
|
-
return false;
|
|
326
321
|
}
|
|
327
|
-
|
|
322
|
+
constructor(verificationSystem){
|
|
323
|
+
this.verificationSystem = verificationSystem;
|
|
324
|
+
this.enabled = true;
|
|
325
|
+
this.autoRollback = true;
|
|
326
|
+
}
|
|
328
327
|
}
|
|
329
|
-
|
|
330
328
|
/**
|
|
331
329
|
* Integration with swarm command
|
|
332
|
-
*/
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
330
|
+
*/ export function integrateWithSwarm(swarmCommand, verificationSystem) {
|
|
331
|
+
const originalExecute = swarmCommand.execute;
|
|
332
|
+
const middleware = new VerificationMiddleware(verificationSystem);
|
|
333
|
+
swarmCommand.execute = async function(objective, options) {
|
|
334
|
+
// Create checkpoint before swarm execution
|
|
335
|
+
const checkpoint = await createGitCheckpoint();
|
|
336
|
+
// Wrap the original execution with verification
|
|
337
|
+
const context = {
|
|
338
|
+
requiresCleanState: !options.allowDirty,
|
|
339
|
+
dependencies: options.dependencies || [],
|
|
340
|
+
language: options.language || 'javascript',
|
|
341
|
+
hasTests: options.runTests !== false,
|
|
342
|
+
requiresCoverage: options.coverage === true,
|
|
343
|
+
gitCheckpoint: checkpoint
|
|
344
|
+
};
|
|
345
|
+
// Execute with verification
|
|
346
|
+
return await middleware.executeWithVerification(()=>originalExecute.call(this, objective, options), `swarm-${Date.now()}`, 'swarm', context);
|
|
349
347
|
};
|
|
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;
|
|
348
|
+
return swarmCommand;
|
|
361
349
|
}
|
|
362
|
-
|
|
363
350
|
/**
|
|
364
351
|
* Integration with non-interactive mode
|
|
365
|
-
*/
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
}
|
|
389
|
-
},
|
|
390
|
-
};
|
|
352
|
+
*/ export function integrateWithNonInteractive(flags, verificationSystem) {
|
|
353
|
+
// Add verification flags to non-interactive mode
|
|
354
|
+
const verificationFlags = {
|
|
355
|
+
...flags,
|
|
356
|
+
verify: true,
|
|
357
|
+
verificationThreshold: flags.threshold || 0.95,
|
|
358
|
+
autoRollback: flags.rollback !== false
|
|
359
|
+
};
|
|
360
|
+
// Return a verification wrapper for non-interactive execution
|
|
361
|
+
return {
|
|
362
|
+
flags: verificationFlags,
|
|
363
|
+
preExecute: async (taskId)=>{
|
|
364
|
+
await verificationSystem.initialize('strict');
|
|
365
|
+
console.log('✅ Verification enabled for non-interactive mode');
|
|
366
|
+
},
|
|
367
|
+
postExecute: async (taskId, result)=>{
|
|
368
|
+
const verification = await verificationSystem.verifyTask(taskId, 'non-interactive', result);
|
|
369
|
+
if (!verification.passed) {
|
|
370
|
+
console.error('❌ Verification failed in non-interactive mode');
|
|
371
|
+
process.exit(1);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
};
|
|
391
375
|
}
|
|
392
|
-
|
|
393
376
|
/**
|
|
394
377
|
* Integration with training system
|
|
395
|
-
*/
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
378
|
+
*/ export function integrateWithTraining(trainingSystem, verificationSystem) {
|
|
379
|
+
// Feed verification results to training system
|
|
380
|
+
verificationSystem.onVerification = async (verification)=>{
|
|
381
|
+
// Convert verification to training data
|
|
382
|
+
const trainingData = {
|
|
383
|
+
input: {
|
|
384
|
+
taskId: verification.taskId,
|
|
385
|
+
agentType: verification.agentType,
|
|
386
|
+
context: verification.context
|
|
387
|
+
},
|
|
388
|
+
output: {
|
|
389
|
+
success: verification.passed,
|
|
390
|
+
score: verification.score,
|
|
391
|
+
checks: verification.results
|
|
392
|
+
}
|
|
393
|
+
};
|
|
394
|
+
// Feed to training system
|
|
395
|
+
await trainingSystem.learn(trainingData);
|
|
396
|
+
// Update agent model based on performance
|
|
397
|
+
if (verification.agentType) {
|
|
398
|
+
await trainingSystem.updateAgentModel(verification.agentType, verification.score);
|
|
399
|
+
}
|
|
411
400
|
};
|
|
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;
|
|
401
|
+
return verificationSystem;
|
|
423
402
|
}
|
|
424
|
-
|
|
425
403
|
/**
|
|
426
404
|
* Create git checkpoint for rollback
|
|
427
|
-
*/
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
}
|
|
405
|
+
*/ async function createGitCheckpoint() {
|
|
406
|
+
try {
|
|
407
|
+
// Create a temporary commit as checkpoint
|
|
408
|
+
const { stdout } = await execAsync('git rev-parse HEAD');
|
|
409
|
+
return stdout.trim();
|
|
410
|
+
} catch {
|
|
411
|
+
return null;
|
|
412
|
+
}
|
|
436
413
|
}
|
|
437
|
-
|
|
438
414
|
/**
|
|
439
415
|
* Export verification hooks for command integration
|
|
440
|
-
*/
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
// Hook called when verification fails
|
|
454
|
-
console.log(`❌ Verification failed for ${taskId}: ${verification.score}`);
|
|
455
|
-
},
|
|
416
|
+
*/ export const verificationHooks = {
|
|
417
|
+
beforeTask: async (taskId, context)=>{
|
|
418
|
+
// Hook called before task execution
|
|
419
|
+
console.log(`🔍 Pre-task verification for ${taskId}`);
|
|
420
|
+
},
|
|
421
|
+
afterTask: async (taskId, result, context)=>{
|
|
422
|
+
// Hook called after task execution
|
|
423
|
+
console.log(`✅ Post-task verification for ${taskId}`);
|
|
424
|
+
},
|
|
425
|
+
onFailure: async (taskId, verification)=>{
|
|
426
|
+
// Hook called when verification fails
|
|
427
|
+
console.log(`❌ Verification failed for ${taskId}: ${verification.score}`);
|
|
428
|
+
}
|
|
456
429
|
};
|
|
457
|
-
|
|
458
430
|
export default {
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
431
|
+
VerificationMiddleware,
|
|
432
|
+
integrateWithSwarm,
|
|
433
|
+
integrateWithNonInteractive,
|
|
434
|
+
integrateWithTraining,
|
|
435
|
+
verificationHooks
|
|
464
436
|
};
|