agentic-qe 2.7.1 → 2.7.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/CHANGELOG.md +105 -0
- package/README.md +2 -2
- package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/CodeIntelligenceAgent.js +7 -5
- package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
- package/dist/cli/commands/knowledge-graph.d.ts.map +1 -1
- package/dist/cli/commands/knowledge-graph.js +4 -2
- package/dist/cli/commands/knowledge-graph.js.map +1 -1
- package/dist/cli/commands/migrate/index.d.ts +14 -0
- package/dist/cli/commands/migrate/index.d.ts.map +1 -0
- package/dist/cli/commands/migrate/index.js +283 -0
- package/dist/cli/commands/migrate/index.js.map +1 -0
- package/dist/cli/formatters/KGOutputFormatter.d.ts.map +1 -1
- package/dist/cli/formatters/KGOutputFormatter.js +15 -6
- package/dist/cli/formatters/KGOutputFormatter.js.map +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/database-init.d.ts.map +1 -1
- package/dist/cli/init/database-init.js +105 -0
- package/dist/cli/init/database-init.js.map +1 -1
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts +9 -3
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.d.ts.map +1 -1
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js +41 -3
- package/dist/code-intelligence/orchestrator/CodeIntelligenceOrchestrator.js.map +1 -1
- package/dist/code-intelligence/service/CodeIntelligenceService.js +1 -1
- package/dist/code-intelligence/service/CodeIntelligenceService.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/learning/QLearning.d.ts +9 -1
- package/dist/learning/QLearning.d.ts.map +1 -1
- package/dist/learning/QLearning.js +50 -1
- package/dist/learning/QLearning.js.map +1 -1
- package/dist/learning/metrics/LearningMetrics.d.ts +37 -0
- package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -1
- package/dist/learning/metrics/LearningMetrics.js +73 -0
- package/dist/learning/metrics/LearningMetrics.js.map +1 -1
- package/dist/mcp/handlers/fleet-init.d.ts +10 -0
- package/dist/mcp/handlers/fleet-init.d.ts.map +1 -1
- package/dist/mcp/handlers/fleet-init.js +61 -0
- package/dist/mcp/handlers/fleet-init.js.map +1 -1
- package/dist/mcp/handlers/learning/learning-store-pattern.d.ts +13 -0
- package/dist/mcp/handlers/learning/learning-store-pattern.d.ts.map +1 -1
- package/dist/mcp/handlers/learning/learning-store-pattern.js +38 -0
- package/dist/mcp/handlers/learning/learning-store-pattern.js.map +1 -1
- package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts +89 -0
- package/dist/mcp/handlers/phase3/Phase3DomainTools.d.ts.map +1 -1
- package/dist/mcp/handlers/phase3/Phase3DomainTools.js +110 -1
- package/dist/mcp/handlers/phase3/Phase3DomainTools.js.map +1 -1
- package/dist/mcp/handlers/task-orchestrate.d.ts +27 -1
- package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
- package/dist/mcp/handlers/task-orchestrate.js +188 -8
- package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts +6 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +92 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts +13 -0
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +66 -0
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts +55 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.d.ts.map +1 -1
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js +233 -0
- package/dist/mcp/tools/qe/quality-gates/evaluate-quality-gate.js.map +1 -1
- package/dist/mcp/tools/qe/quality-gates/index.d.ts +5 -2
- package/dist/mcp/tools/qe/quality-gates/index.d.ts.map +1 -1
- package/dist/mcp/tools/qe/quality-gates/index.js +10 -1
- package/dist/mcp/tools/qe/quality-gates/index.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +156 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/persistence/migrations/all-migrations.d.ts +18 -0
- package/dist/persistence/migrations/all-migrations.d.ts.map +1 -0
- package/dist/persistence/migrations/all-migrations.js +624 -0
- package/dist/persistence/migrations/all-migrations.js.map +1 -0
- package/dist/persistence/migrations/index.d.ts +110 -0
- package/dist/persistence/migrations/index.d.ts.map +1 -0
- package/dist/persistence/migrations/index.js +303 -0
- package/dist/persistence/migrations/index.js.map +1 -0
- package/dist/planning/GOAPPlanner.d.ts +128 -0
- package/dist/planning/GOAPPlanner.d.ts.map +1 -0
- package/dist/planning/GOAPPlanner.js +630 -0
- package/dist/planning/GOAPPlanner.js.map +1 -0
- package/dist/planning/WorldStateBuilder.d.ts +150 -0
- package/dist/planning/WorldStateBuilder.d.ts.map +1 -0
- package/dist/planning/WorldStateBuilder.js +267 -0
- package/dist/planning/WorldStateBuilder.js.map +1 -0
- package/dist/planning/actions/fleet-actions.d.ts +78 -0
- package/dist/planning/actions/fleet-actions.d.ts.map +1 -0
- package/dist/planning/actions/fleet-actions.js +329 -0
- package/dist/planning/actions/fleet-actions.js.map +1 -0
- package/dist/planning/actions/index.d.ts +61 -0
- package/dist/planning/actions/index.d.ts.map +1 -0
- package/dist/planning/actions/index.js +159 -0
- package/dist/planning/actions/index.js.map +1 -0
- package/dist/planning/actions/orchestration-actions.d.ts +61 -0
- package/dist/planning/actions/orchestration-actions.d.ts.map +1 -0
- package/dist/planning/actions/orchestration-actions.js +395 -0
- package/dist/planning/actions/orchestration-actions.js.map +1 -0
- package/dist/planning/actions/quality-gate-actions.d.ts +160 -0
- package/dist/planning/actions/quality-gate-actions.d.ts.map +1 -0
- package/dist/planning/actions/quality-gate-actions.js +639 -0
- package/dist/planning/actions/quality-gate-actions.js.map +1 -0
- package/dist/planning/actions/test-strategy-actions.d.ts +70 -0
- package/dist/planning/actions/test-strategy-actions.d.ts.map +1 -0
- package/dist/planning/actions/test-strategy-actions.js +278 -0
- package/dist/planning/actions/test-strategy-actions.js.map +1 -0
- package/dist/planning/execution/PlanExecutor.d.ts +124 -0
- package/dist/planning/execution/PlanExecutor.d.ts.map +1 -0
- package/dist/planning/execution/PlanExecutor.js +405 -0
- package/dist/planning/execution/PlanExecutor.js.map +1 -0
- package/dist/planning/execution/index.d.ts +12 -0
- package/dist/planning/execution/index.d.ts.map +1 -0
- package/dist/planning/execution/index.js +18 -0
- package/dist/planning/execution/index.js.map +1 -0
- package/dist/planning/goals/TaskWorkflowGoals.d.ts +67 -0
- package/dist/planning/goals/TaskWorkflowGoals.d.ts.map +1 -0
- package/dist/planning/goals/TaskWorkflowGoals.js +208 -0
- package/dist/planning/goals/TaskWorkflowGoals.js.map +1 -0
- package/dist/planning/goals/index.d.ts +10 -0
- package/dist/planning/goals/index.d.ts.map +1 -0
- package/dist/planning/goals/index.js +19 -0
- package/dist/planning/goals/index.js.map +1 -0
- package/dist/planning/index.d.ts +34 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/index.js +176 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/integration/GOAPQualityGateIntegration.d.ts +229 -0
- package/dist/planning/integration/GOAPQualityGateIntegration.d.ts.map +1 -0
- package/dist/planning/integration/GOAPQualityGateIntegration.js +582 -0
- package/dist/planning/integration/GOAPQualityGateIntegration.js.map +1 -0
- package/dist/planning/integration/GOAPTaskOrchestration.d.ts +165 -0
- package/dist/planning/integration/GOAPTaskOrchestration.d.ts.map +1 -0
- package/dist/planning/integration/GOAPTaskOrchestration.js +490 -0
- package/dist/planning/integration/GOAPTaskOrchestration.js.map +1 -0
- package/dist/planning/integration/index.d.ts +14 -0
- package/dist/planning/integration/index.d.ts.map +1 -0
- package/dist/planning/integration/index.js +23 -0
- package/dist/planning/integration/index.js.map +1 -0
- package/dist/planning/types.d.ts +264 -0
- package/dist/planning/types.d.ts.map +1 -0
- package/dist/planning/types.js +63 -0
- package/dist/planning/types.js.map +1 -0
- package/dist/utils/Database.d.ts.map +1 -1
- package/dist/utils/Database.js +81 -2
- package/dist/utils/Database.js.map +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GOAP Task Orchestration Integration
|
|
3
|
+
*
|
|
4
|
+
* Integrates GOAP planning with task orchestration to replace
|
|
5
|
+
* hardcoded workflow templates with dynamic plan generation.
|
|
6
|
+
*
|
|
7
|
+
* @module planning/integration/GOAPTaskOrchestration
|
|
8
|
+
* @version 1.0.0
|
|
9
|
+
*/
|
|
10
|
+
import Database from 'better-sqlite3';
|
|
11
|
+
import { TaskGoalDefinition } from '../goals/TaskWorkflowGoals';
|
|
12
|
+
/**
|
|
13
|
+
* Interface for agent registry to avoid circular dependency
|
|
14
|
+
*/
|
|
15
|
+
export interface AgentRegistryInterface {
|
|
16
|
+
getSupportedMCPTypes(): string[];
|
|
17
|
+
getAllAgents(): Array<{
|
|
18
|
+
id: string;
|
|
19
|
+
mcpType: string;
|
|
20
|
+
status: string;
|
|
21
|
+
}>;
|
|
22
|
+
getAgentsByType(mcpType: string): Array<{
|
|
23
|
+
id: string;
|
|
24
|
+
status: string;
|
|
25
|
+
}>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Orchestration context from task-orchestrate handler
|
|
29
|
+
*/
|
|
30
|
+
export interface OrchestrationContext {
|
|
31
|
+
project?: string;
|
|
32
|
+
branch?: string;
|
|
33
|
+
environment?: 'development' | 'staging' | 'production';
|
|
34
|
+
requirements?: string[];
|
|
35
|
+
/** Custom thresholds */
|
|
36
|
+
coverageThreshold?: number;
|
|
37
|
+
securityThreshold?: number;
|
|
38
|
+
performanceThreshold?: number;
|
|
39
|
+
testPassingThreshold?: number;
|
|
40
|
+
/** Time budget in seconds */
|
|
41
|
+
timeBudgetSeconds?: number;
|
|
42
|
+
/** Max agents available */
|
|
43
|
+
maxAgents?: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Task specification from task-orchestrate handler
|
|
47
|
+
*/
|
|
48
|
+
export interface TaskSpec {
|
|
49
|
+
type: 'comprehensive-testing' | 'quality-gate' | 'defect-prevention' | 'performance-validation';
|
|
50
|
+
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
51
|
+
strategy: 'parallel' | 'sequential' | 'adaptive';
|
|
52
|
+
maxAgents?: number;
|
|
53
|
+
timeoutMinutes?: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Workflow step generated from GOAP plan
|
|
57
|
+
*/
|
|
58
|
+
export interface GOAPWorkflowStep {
|
|
59
|
+
id: string;
|
|
60
|
+
name: string;
|
|
61
|
+
type: string;
|
|
62
|
+
dependencies: string[];
|
|
63
|
+
estimatedDuration: number;
|
|
64
|
+
status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
|
|
65
|
+
assignedAgent?: string;
|
|
66
|
+
goapActionId: string;
|
|
67
|
+
agentType: string;
|
|
68
|
+
category: string;
|
|
69
|
+
canRunParallel: boolean;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Result of GOAP workflow generation
|
|
73
|
+
*/
|
|
74
|
+
export interface GOAPWorkflowResult {
|
|
75
|
+
success: boolean;
|
|
76
|
+
workflow: GOAPWorkflowStep[];
|
|
77
|
+
planId: string;
|
|
78
|
+
totalCost: number;
|
|
79
|
+
estimatedDuration: number;
|
|
80
|
+
goalDefinition: TaskGoalDefinition;
|
|
81
|
+
alternativePaths: number;
|
|
82
|
+
error?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* GOAP Task Orchestration Integration
|
|
86
|
+
*/
|
|
87
|
+
export declare class GOAPTaskOrchestration {
|
|
88
|
+
private planner;
|
|
89
|
+
private db;
|
|
90
|
+
private logger;
|
|
91
|
+
private initialized;
|
|
92
|
+
private registry;
|
|
93
|
+
constructor(db: Database.Database, registry?: AgentRegistryInterface);
|
|
94
|
+
/**
|
|
95
|
+
* Set or update the agent registry for fleet state population
|
|
96
|
+
*/
|
|
97
|
+
setRegistry(registry: AgentRegistryInterface): void;
|
|
98
|
+
/**
|
|
99
|
+
* Initialize the integration (create tables, register actions)
|
|
100
|
+
*/
|
|
101
|
+
initialize(): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Generate a dynamic workflow for a task using GOAP planning
|
|
104
|
+
*/
|
|
105
|
+
generateWorkflow(task: TaskSpec, context?: OrchestrationContext): Promise<GOAPWorkflowResult>;
|
|
106
|
+
/**
|
|
107
|
+
* Build initial world state from task and context
|
|
108
|
+
*
|
|
109
|
+
* IMPORTANT: Fleet state is populated from AgentRegistry if available.
|
|
110
|
+
* This enables GOAP to make decisions based on actual agent availability.
|
|
111
|
+
*/
|
|
112
|
+
private buildWorldState;
|
|
113
|
+
/**
|
|
114
|
+
* Build fleet state from AgentRegistry
|
|
115
|
+
*
|
|
116
|
+
* Maps agent types to GOAP-compatible format.
|
|
117
|
+
* If no registry is available, returns default agent types based on orchestration actions.
|
|
118
|
+
*/
|
|
119
|
+
private buildFleetState;
|
|
120
|
+
/**
|
|
121
|
+
* Map task priority to risk level
|
|
122
|
+
*/
|
|
123
|
+
private mapPriorityToRisk;
|
|
124
|
+
/**
|
|
125
|
+
* Convert GOAP plan to workflow steps with proper dependencies
|
|
126
|
+
*/
|
|
127
|
+
private convertPlanToWorkflow;
|
|
128
|
+
/**
|
|
129
|
+
* Build dependency map based on action preconditions and effects
|
|
130
|
+
*/
|
|
131
|
+
private buildDependencyMap;
|
|
132
|
+
/**
|
|
133
|
+
* Resolve dependencies for a step based on completed workflow steps
|
|
134
|
+
*/
|
|
135
|
+
private resolveDependencies;
|
|
136
|
+
/**
|
|
137
|
+
* Map GOAP action category to step type
|
|
138
|
+
*/
|
|
139
|
+
private getStepTypeFromAction;
|
|
140
|
+
/**
|
|
141
|
+
* Find alternative paths for resilience
|
|
142
|
+
*/
|
|
143
|
+
private findAlternativePaths;
|
|
144
|
+
/**
|
|
145
|
+
* Persist plan to database
|
|
146
|
+
*/
|
|
147
|
+
private persistPlan;
|
|
148
|
+
/**
|
|
149
|
+
* Ensure GOAP tables exist
|
|
150
|
+
*/
|
|
151
|
+
private ensureTablesExist;
|
|
152
|
+
/**
|
|
153
|
+
* Register orchestration actions in database
|
|
154
|
+
*/
|
|
155
|
+
private registerOrchestrationActions;
|
|
156
|
+
/**
|
|
157
|
+
* Close database connection
|
|
158
|
+
*/
|
|
159
|
+
close(): void;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Factory function to create GOAPTaskOrchestration
|
|
163
|
+
*/
|
|
164
|
+
export declare function createGOAPTaskOrchestration(dbPath: string): GOAPTaskOrchestration;
|
|
165
|
+
//# sourceMappingURL=GOAPTaskOrchestration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GOAPTaskOrchestration.d.ts","sourceRoot":"","sources":["../../../src/planning/integration/GOAPTaskOrchestration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* GOAP Task Orchestration Integration
|
|
4
|
+
*
|
|
5
|
+
* Integrates GOAP planning with task orchestration to replace
|
|
6
|
+
* hardcoded workflow templates with dynamic plan generation.
|
|
7
|
+
*
|
|
8
|
+
* @module planning/integration/GOAPTaskOrchestration
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.GOAPTaskOrchestration = void 0;
|
|
13
|
+
exports.createGOAPTaskOrchestration = createGOAPTaskOrchestration;
|
|
14
|
+
const GOAPPlanner_1 = require("../GOAPPlanner");
|
|
15
|
+
const types_1 = require("../types");
|
|
16
|
+
const TaskWorkflowGoals_1 = require("../goals/TaskWorkflowGoals");
|
|
17
|
+
const actions_1 = require("../actions");
|
|
18
|
+
const Logger_1 = require("../../utils/Logger");
|
|
19
|
+
const SecureRandom_1 = require("../../utils/SecureRandom");
|
|
20
|
+
/**
|
|
21
|
+
* GOAP Task Orchestration Integration
|
|
22
|
+
*/
|
|
23
|
+
class GOAPTaskOrchestration {
|
|
24
|
+
constructor(db, registry) {
|
|
25
|
+
this.initialized = false;
|
|
26
|
+
this.registry = null;
|
|
27
|
+
this.db = db;
|
|
28
|
+
this.planner = new GOAPPlanner_1.GOAPPlanner(db);
|
|
29
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
30
|
+
this.registry = registry || null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Set or update the agent registry for fleet state population
|
|
34
|
+
*/
|
|
35
|
+
setRegistry(registry) {
|
|
36
|
+
this.registry = registry;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Initialize the integration (create tables, register actions)
|
|
40
|
+
*/
|
|
41
|
+
async initialize() {
|
|
42
|
+
if (this.initialized)
|
|
43
|
+
return;
|
|
44
|
+
this.logger.info('[GOAPTaskOrchestration] Initializing...');
|
|
45
|
+
// Ensure GOAP tables exist
|
|
46
|
+
await this.ensureTablesExist();
|
|
47
|
+
// Register orchestration actions
|
|
48
|
+
await this.registerOrchestrationActions();
|
|
49
|
+
this.initialized = true;
|
|
50
|
+
this.logger.info('[GOAPTaskOrchestration] Initialized', {
|
|
51
|
+
actionsRegistered: actions_1.orchestrationActions.length
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Generate a dynamic workflow for a task using GOAP planning
|
|
56
|
+
*/
|
|
57
|
+
async generateWorkflow(task, context = {}) {
|
|
58
|
+
await this.initialize();
|
|
59
|
+
this.logger.info('[GOAPTaskOrchestration] Generating workflow', {
|
|
60
|
+
taskType: task.type,
|
|
61
|
+
strategy: task.strategy,
|
|
62
|
+
context
|
|
63
|
+
});
|
|
64
|
+
try {
|
|
65
|
+
// Get and customize goal definition
|
|
66
|
+
const baseGoal = (0, TaskWorkflowGoals_1.getGoalForType)(task.type);
|
|
67
|
+
const goal = (0, TaskWorkflowGoals_1.customizeGoalConditions)(baseGoal, {
|
|
68
|
+
coverageThreshold: context.coverageThreshold,
|
|
69
|
+
securityThreshold: context.securityThreshold,
|
|
70
|
+
performanceThreshold: context.performanceThreshold,
|
|
71
|
+
testPassingThreshold: context.testPassingThreshold,
|
|
72
|
+
requirements: context.requirements
|
|
73
|
+
});
|
|
74
|
+
// Build initial world state
|
|
75
|
+
const worldState = this.buildWorldState(task, context);
|
|
76
|
+
// Get applicable actions for this task type
|
|
77
|
+
const applicableActions = (0, actions_1.getActionsForTaskType)(task.type);
|
|
78
|
+
// Set planner constraints
|
|
79
|
+
const constraints = {
|
|
80
|
+
maxIterations: 5000,
|
|
81
|
+
timeoutMs: 10000,
|
|
82
|
+
allowedCategories: goal.allowedCategories,
|
|
83
|
+
maxPlanLength: 10
|
|
84
|
+
};
|
|
85
|
+
// Generate GOAP plan
|
|
86
|
+
const plan = await this.planner.findPlan(worldState, goal.conditions, constraints);
|
|
87
|
+
if (!plan) {
|
|
88
|
+
this.logger.warn('[GOAPTaskOrchestration] No plan found', { taskType: task.type });
|
|
89
|
+
return {
|
|
90
|
+
success: false,
|
|
91
|
+
workflow: [],
|
|
92
|
+
planId: '',
|
|
93
|
+
totalCost: 0,
|
|
94
|
+
estimatedDuration: 0,
|
|
95
|
+
goalDefinition: goal,
|
|
96
|
+
alternativePaths: 0,
|
|
97
|
+
error: `No viable plan found for task type: ${task.type}`
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// Convert GOAP plan to workflow steps
|
|
101
|
+
const workflow = this.convertPlanToWorkflow(plan, task.strategy);
|
|
102
|
+
// Persist plan for tracking
|
|
103
|
+
const planId = await this.persistPlan(plan, task, context);
|
|
104
|
+
// Find alternative paths for resilience
|
|
105
|
+
const alternatives = await this.findAlternativePaths(plan, worldState, goal, constraints);
|
|
106
|
+
this.logger.info('[GOAPTaskOrchestration] Workflow generated', {
|
|
107
|
+
planId,
|
|
108
|
+
steps: workflow.length,
|
|
109
|
+
totalCost: plan.totalCost,
|
|
110
|
+
alternatives: alternatives.length
|
|
111
|
+
});
|
|
112
|
+
return {
|
|
113
|
+
success: true,
|
|
114
|
+
workflow,
|
|
115
|
+
planId,
|
|
116
|
+
totalCost: plan.totalCost,
|
|
117
|
+
estimatedDuration: plan.estimatedDuration,
|
|
118
|
+
goalDefinition: goal,
|
|
119
|
+
alternativePaths: alternatives.length
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
124
|
+
this.logger.error('[GOAPTaskOrchestration] Workflow generation failed', { error: errorMsg });
|
|
125
|
+
return {
|
|
126
|
+
success: false,
|
|
127
|
+
workflow: [],
|
|
128
|
+
planId: '',
|
|
129
|
+
totalCost: 0,
|
|
130
|
+
estimatedDuration: 0,
|
|
131
|
+
goalDefinition: (0, TaskWorkflowGoals_1.getGoalForType)(task.type),
|
|
132
|
+
alternativePaths: 0,
|
|
133
|
+
error: errorMsg
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Build initial world state from task and context
|
|
139
|
+
*
|
|
140
|
+
* IMPORTANT: Fleet state is populated from AgentRegistry if available.
|
|
141
|
+
* This enables GOAP to make decisions based on actual agent availability.
|
|
142
|
+
*/
|
|
143
|
+
buildWorldState(task, context) {
|
|
144
|
+
const timeBudget = context.timeBudgetSeconds || (task.timeoutMinutes || 30) * 60;
|
|
145
|
+
const parallelSlots = context.maxAgents || task.maxAgents || 4;
|
|
146
|
+
// Query actual fleet state from registry
|
|
147
|
+
const fleetState = this.buildFleetState();
|
|
148
|
+
return {
|
|
149
|
+
...types_1.DEFAULT_WORLD_STATE,
|
|
150
|
+
coverage: {
|
|
151
|
+
line: 0,
|
|
152
|
+
branch: 0,
|
|
153
|
+
function: 0,
|
|
154
|
+
target: context.coverageThreshold || 80,
|
|
155
|
+
measured: false
|
|
156
|
+
},
|
|
157
|
+
quality: {
|
|
158
|
+
testsPassing: 0,
|
|
159
|
+
securityScore: 0,
|
|
160
|
+
performanceScore: 0,
|
|
161
|
+
technicalDebt: 0,
|
|
162
|
+
// Measurement flags - all false initially
|
|
163
|
+
testsMeasured: false,
|
|
164
|
+
integrationTested: false,
|
|
165
|
+
securityMeasured: false,
|
|
166
|
+
performanceMeasured: false,
|
|
167
|
+
complexityMeasured: false,
|
|
168
|
+
gateEvaluated: false
|
|
169
|
+
},
|
|
170
|
+
fleet: fleetState,
|
|
171
|
+
resources: {
|
|
172
|
+
timeRemaining: timeBudget,
|
|
173
|
+
memoryAvailable: 2048,
|
|
174
|
+
parallelSlots
|
|
175
|
+
},
|
|
176
|
+
context: {
|
|
177
|
+
environment: context.environment || 'development',
|
|
178
|
+
changeSize: 'medium',
|
|
179
|
+
riskLevel: this.mapPriorityToRisk(task.priority),
|
|
180
|
+
previousFailures: 0,
|
|
181
|
+
impactAnalyzed: false,
|
|
182
|
+
coverageGapsAnalyzed: false,
|
|
183
|
+
bddGenerated: false
|
|
184
|
+
}
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Build fleet state from AgentRegistry
|
|
189
|
+
*
|
|
190
|
+
* Maps agent types to GOAP-compatible format.
|
|
191
|
+
* If no registry is available, returns default agent types based on orchestration actions.
|
|
192
|
+
*/
|
|
193
|
+
buildFleetState() {
|
|
194
|
+
if (this.registry) {
|
|
195
|
+
try {
|
|
196
|
+
// Get actual agents from registry
|
|
197
|
+
const allAgents = this.registry.getAllAgents();
|
|
198
|
+
const supportedTypes = this.registry.getSupportedMCPTypes();
|
|
199
|
+
// Separate available (idle) vs busy agents
|
|
200
|
+
const availableAgents = [];
|
|
201
|
+
const busyAgents = [];
|
|
202
|
+
const agentTypes = {};
|
|
203
|
+
for (const agent of allAgents) {
|
|
204
|
+
if (agent.status === 'idle' || agent.status === 'available') {
|
|
205
|
+
availableAgents.push(agent.mcpType);
|
|
206
|
+
}
|
|
207
|
+
else if (agent.status === 'busy' || agent.status === 'running') {
|
|
208
|
+
busyAgents.push(agent.id);
|
|
209
|
+
}
|
|
210
|
+
// Count by type
|
|
211
|
+
agentTypes[agent.mcpType] = (agentTypes[agent.mcpType] || 0) + 1;
|
|
212
|
+
}
|
|
213
|
+
// If no agents spawned yet, add supported types as "available"
|
|
214
|
+
// This allows planning to proceed knowing agents CAN be spawned
|
|
215
|
+
if (availableAgents.length === 0 && supportedTypes.length > 0) {
|
|
216
|
+
// Add supported types that match our action requirements
|
|
217
|
+
const actionAgentTypes = new Set(actions_1.orchestrationActions.map(a => a.agentType));
|
|
218
|
+
for (const type of supportedTypes) {
|
|
219
|
+
if (actionAgentTypes.has(type)) {
|
|
220
|
+
availableAgents.push(type);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
this.logger.debug('[GOAPTaskOrchestration] Fleet state from registry', {
|
|
225
|
+
activeAgents: allAgents.length,
|
|
226
|
+
availableAgents: availableAgents.length,
|
|
227
|
+
busyAgents: busyAgents.length
|
|
228
|
+
});
|
|
229
|
+
return {
|
|
230
|
+
activeAgents: allAgents.length,
|
|
231
|
+
availableAgents,
|
|
232
|
+
busyAgents,
|
|
233
|
+
agentTypes,
|
|
234
|
+
topologyOptimized: allAgents.length > 0
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
this.logger.warn('[GOAPTaskOrchestration] Failed to query registry, using defaults', {
|
|
239
|
+
error: error instanceof Error ? error.message : String(error)
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Default: assume all action agent types are available (can be spawned on demand)
|
|
244
|
+
const defaultAgentTypes = [...new Set(actions_1.orchestrationActions.map(a => a.agentType))];
|
|
245
|
+
return {
|
|
246
|
+
activeAgents: 0,
|
|
247
|
+
availableAgents: defaultAgentTypes, // GOAP assumes agents can be spawned
|
|
248
|
+
busyAgents: [],
|
|
249
|
+
agentTypes: {},
|
|
250
|
+
topologyOptimized: false
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Map task priority to risk level
|
|
255
|
+
*/
|
|
256
|
+
mapPriorityToRisk(priority) {
|
|
257
|
+
const mapping = {
|
|
258
|
+
'low': 'low',
|
|
259
|
+
'medium': 'medium',
|
|
260
|
+
'high': 'high',
|
|
261
|
+
'critical': 'critical'
|
|
262
|
+
};
|
|
263
|
+
return mapping[priority];
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Convert GOAP plan to workflow steps with proper dependencies
|
|
267
|
+
*/
|
|
268
|
+
convertPlanToWorkflow(plan, strategy) {
|
|
269
|
+
const workflow = [];
|
|
270
|
+
const actionDependencyMap = new Map();
|
|
271
|
+
// Build dependency map based on preconditions and effects
|
|
272
|
+
this.buildDependencyMap(plan.actions, actionDependencyMap);
|
|
273
|
+
for (let i = 0; i < plan.actions.length; i++) {
|
|
274
|
+
const action = plan.actions[i];
|
|
275
|
+
const stepId = `${action.id}-${Date.now()}-${i}`;
|
|
276
|
+
// Get dependencies based on strategy
|
|
277
|
+
let dependencies = [];
|
|
278
|
+
if (strategy === 'sequential') {
|
|
279
|
+
// Sequential: each step depends on previous
|
|
280
|
+
if (i > 0) {
|
|
281
|
+
dependencies = [workflow[i - 1].id];
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Parallel/Adaptive: use actual dependency analysis
|
|
286
|
+
dependencies = this.resolveDependencies(action, workflow, actionDependencyMap);
|
|
287
|
+
}
|
|
288
|
+
const step = {
|
|
289
|
+
id: stepId,
|
|
290
|
+
name: action.name,
|
|
291
|
+
type: this.getStepTypeFromAction(action),
|
|
292
|
+
dependencies,
|
|
293
|
+
estimatedDuration: action.durationEstimate || 300,
|
|
294
|
+
status: 'pending',
|
|
295
|
+
goapActionId: action.id,
|
|
296
|
+
agentType: action.agentType,
|
|
297
|
+
category: action.category,
|
|
298
|
+
canRunParallel: dependencies.length === 0 || strategy === 'parallel'
|
|
299
|
+
};
|
|
300
|
+
workflow.push(step);
|
|
301
|
+
}
|
|
302
|
+
return workflow;
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Build dependency map based on action preconditions and effects
|
|
306
|
+
*/
|
|
307
|
+
buildDependencyMap(actions, dependencyMap) {
|
|
308
|
+
for (const action of actions) {
|
|
309
|
+
const deps = [];
|
|
310
|
+
// Find actions whose effects satisfy this action's preconditions
|
|
311
|
+
for (const [precondKey] of Object.entries(action.preconditions)) {
|
|
312
|
+
for (const otherAction of actions) {
|
|
313
|
+
if (otherAction.id === action.id)
|
|
314
|
+
continue;
|
|
315
|
+
for (const [effectKey, effect] of Object.entries(otherAction.effects)) {
|
|
316
|
+
if (effectKey === precondKey) {
|
|
317
|
+
// Check if effect sets a flag that precondition requires
|
|
318
|
+
const effectObj = effect;
|
|
319
|
+
if (effectObj?.set === true) {
|
|
320
|
+
deps.push(otherAction.id);
|
|
321
|
+
break;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
dependencyMap.set(action.id, [...new Set(deps)]);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Resolve dependencies for a step based on completed workflow steps
|
|
332
|
+
*/
|
|
333
|
+
resolveDependencies(action, currentWorkflow, dependencyMap) {
|
|
334
|
+
const actionDeps = dependencyMap.get(action.id) || [];
|
|
335
|
+
const resolvedDeps = [];
|
|
336
|
+
for (const depActionId of actionDeps) {
|
|
337
|
+
// Find the workflow step that corresponds to this action
|
|
338
|
+
const depStep = currentWorkflow.find(s => s.goapActionId === depActionId);
|
|
339
|
+
if (depStep) {
|
|
340
|
+
resolvedDeps.push(depStep.id);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return resolvedDeps;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Map GOAP action category to step type
|
|
347
|
+
*/
|
|
348
|
+
getStepTypeFromAction(action) {
|
|
349
|
+
const typeMapping = {
|
|
350
|
+
'analysis': 'analysis',
|
|
351
|
+
'test': action.name.includes('Generate') ? 'test-generation' : 'test-execution',
|
|
352
|
+
'coverage': 'coverage-analysis',
|
|
353
|
+
'security': 'security-analysis',
|
|
354
|
+
'performance': 'performance-testing',
|
|
355
|
+
'process': 'decision-making',
|
|
356
|
+
'fleet': 'resource-management'
|
|
357
|
+
};
|
|
358
|
+
return typeMapping[action.category] || action.category;
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Find alternative paths for resilience
|
|
362
|
+
*/
|
|
363
|
+
async findAlternativePaths(primaryPlan, worldState, goal, constraints) {
|
|
364
|
+
const alternatives = [];
|
|
365
|
+
// Try to find alternatives by excluding actions one at a time
|
|
366
|
+
for (const action of primaryPlan.actions) {
|
|
367
|
+
// Skip measurement actions - they're usually required
|
|
368
|
+
const isMeasurement = Object.entries(action.effects).some(([key, effect]) => {
|
|
369
|
+
const effectObj = effect;
|
|
370
|
+
return effectObj?.set === true && (key.includes('Measured') || key.includes('Tested') || key.includes('Evaluated'));
|
|
371
|
+
});
|
|
372
|
+
if (isMeasurement)
|
|
373
|
+
continue;
|
|
374
|
+
try {
|
|
375
|
+
const altPlan = await this.planner.findPlan(worldState, goal.conditions, {
|
|
376
|
+
...constraints,
|
|
377
|
+
excludedActions: [action.id]
|
|
378
|
+
});
|
|
379
|
+
if (altPlan && altPlan.actions.length > 0) {
|
|
380
|
+
// Only add if it's actually different
|
|
381
|
+
const isDifferent = altPlan.actions.some((a) => !primaryPlan.actions.find((pa) => pa.id === a.id));
|
|
382
|
+
if (isDifferent) {
|
|
383
|
+
alternatives.push(altPlan);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
catch {
|
|
388
|
+
// Ignore failures finding alternatives
|
|
389
|
+
}
|
|
390
|
+
// Limit alternatives
|
|
391
|
+
if (alternatives.length >= 3)
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
return alternatives;
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Persist plan to database
|
|
398
|
+
*/
|
|
399
|
+
async persistPlan(plan, task, context) {
|
|
400
|
+
const planId = `orch-plan-${Date.now()}-${SecureRandom_1.SecureRandom.generateId(6)}`;
|
|
401
|
+
try {
|
|
402
|
+
this.db.prepare(`
|
|
403
|
+
INSERT INTO goap_plans (
|
|
404
|
+
id, goal_id, sequence, initial_state, goal_state,
|
|
405
|
+
action_sequence, total_cost, estimated_duration,
|
|
406
|
+
status, created_at
|
|
407
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'pending', ?)
|
|
408
|
+
`).run(planId, TaskWorkflowGoals_1.TASK_WORKFLOW_GOALS[task.type].id, JSON.stringify(plan.actions.map((a) => a.id)), JSON.stringify(context), JSON.stringify(TaskWorkflowGoals_1.TASK_WORKFLOW_GOALS[task.type].conditions), JSON.stringify(plan.actions.map((a) => ({ id: a.id, name: a.name, cost: a.cost }))), plan.totalCost, plan.estimatedDuration, Date.now());
|
|
409
|
+
}
|
|
410
|
+
catch (error) {
|
|
411
|
+
this.logger.warn('[GOAPTaskOrchestration] Failed to persist plan', { planId, error });
|
|
412
|
+
}
|
|
413
|
+
return planId;
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Ensure GOAP tables exist
|
|
417
|
+
*/
|
|
418
|
+
async ensureTablesExist() {
|
|
419
|
+
this.db.exec(`
|
|
420
|
+
CREATE TABLE IF NOT EXISTS goap_actions (
|
|
421
|
+
id TEXT PRIMARY KEY,
|
|
422
|
+
name TEXT NOT NULL,
|
|
423
|
+
description TEXT,
|
|
424
|
+
agent_type TEXT NOT NULL,
|
|
425
|
+
preconditions TEXT NOT NULL,
|
|
426
|
+
effects TEXT NOT NULL,
|
|
427
|
+
cost REAL NOT NULL DEFAULT 1.0,
|
|
428
|
+
duration_estimate INTEGER,
|
|
429
|
+
success_rate REAL DEFAULT 1.0,
|
|
430
|
+
execution_count INTEGER DEFAULT 0,
|
|
431
|
+
category TEXT,
|
|
432
|
+
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
433
|
+
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
|
434
|
+
);
|
|
435
|
+
|
|
436
|
+
CREATE TABLE IF NOT EXISTS goap_plans (
|
|
437
|
+
id TEXT PRIMARY KEY,
|
|
438
|
+
goal_id TEXT,
|
|
439
|
+
sequence TEXT NOT NULL,
|
|
440
|
+
initial_state TEXT,
|
|
441
|
+
goal_state TEXT,
|
|
442
|
+
action_sequence TEXT,
|
|
443
|
+
total_cost REAL,
|
|
444
|
+
estimated_duration INTEGER,
|
|
445
|
+
actual_duration INTEGER,
|
|
446
|
+
status TEXT DEFAULT 'pending',
|
|
447
|
+
success INTEGER,
|
|
448
|
+
failure_reason TEXT,
|
|
449
|
+
execution_trace TEXT,
|
|
450
|
+
replanned_from TEXT,
|
|
451
|
+
created_at INTEGER,
|
|
452
|
+
executed_at DATETIME,
|
|
453
|
+
completed_at DATETIME,
|
|
454
|
+
started_at DATETIME
|
|
455
|
+
);
|
|
456
|
+
`);
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Register orchestration actions in database
|
|
460
|
+
*/
|
|
461
|
+
async registerOrchestrationActions() {
|
|
462
|
+
const insertStmt = this.db.prepare(`
|
|
463
|
+
INSERT OR REPLACE INTO goap_actions (
|
|
464
|
+
id, name, description, agent_type, preconditions, effects,
|
|
465
|
+
cost, duration_estimate, category, created_at, updated_at
|
|
466
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
|
|
467
|
+
`);
|
|
468
|
+
const insertMany = this.db.transaction((actions) => {
|
|
469
|
+
for (const action of actions) {
|
|
470
|
+
insertStmt.run(action.id, action.name, action.description || '', action.agentType, JSON.stringify(action.preconditions), JSON.stringify(action.effects), action.cost, action.durationEstimate || null, action.category);
|
|
471
|
+
}
|
|
472
|
+
});
|
|
473
|
+
insertMany(actions_1.orchestrationActions);
|
|
474
|
+
}
|
|
475
|
+
/**
|
|
476
|
+
* Close database connection
|
|
477
|
+
*/
|
|
478
|
+
close() {
|
|
479
|
+
// Database is managed externally, don't close here
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
exports.GOAPTaskOrchestration = GOAPTaskOrchestration;
|
|
483
|
+
/**
|
|
484
|
+
* Factory function to create GOAPTaskOrchestration
|
|
485
|
+
*/
|
|
486
|
+
function createGOAPTaskOrchestration(dbPath) {
|
|
487
|
+
const db = new (require('better-sqlite3'))(dbPath);
|
|
488
|
+
return new GOAPTaskOrchestration(db);
|
|
489
|
+
}
|
|
490
|
+
//# sourceMappingURL=GOAPTaskOrchestration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GOAPTaskOrchestration.js","sourceRoot":"","sources":["../../../src/planning/integration/GOAPTaskOrchestration.ts"],"names":[],"mappings":"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"}
|