dino-spec 17.4.2 → 17.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +10 -0
- package/dist/commands/init.js.map +1 -1
- package/dist/core/agents/__tests__/confidence-gate.test.d.ts +5 -0
- package/dist/core/agents/__tests__/confidence-gate.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/confidence-gate.test.js +329 -0
- package/dist/core/agents/__tests__/confidence-gate.test.js.map +1 -0
- package/dist/core/agents/__tests__/gap-detector.test.d.ts +5 -0
- package/dist/core/agents/__tests__/gap-detector.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/gap-detector.test.js +609 -0
- package/dist/core/agents/__tests__/gap-detector.test.js.map +1 -0
- package/dist/core/agents/__tests__/learning-loop.test.d.ts +5 -0
- package/dist/core/agents/__tests__/learning-loop.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/learning-loop.test.js +663 -0
- package/dist/core/agents/__tests__/learning-loop.test.js.map +1 -0
- package/dist/core/agents/__tests__/parallel-executor.test.d.ts +5 -0
- package/dist/core/agents/__tests__/parallel-executor.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/parallel-executor.test.js +610 -0
- package/dist/core/agents/__tests__/parallel-executor.test.js.map +1 -0
- package/dist/core/agents/__tests__/research-validator.test.js +5 -5
- package/dist/core/agents/__tests__/research-validator.test.js.map +1 -1
- package/dist/core/agents/__tests__/skill-creator.test.d.ts +5 -0
- package/dist/core/agents/__tests__/skill-creator.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/skill-creator.test.js +443 -0
- package/dist/core/agents/__tests__/skill-creator.test.js.map +1 -0
- package/dist/core/agents/__tests__/state-persistence.test.d.ts +2 -0
- package/dist/core/agents/__tests__/state-persistence.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/state-persistence.test.js +270 -0
- package/dist/core/agents/__tests__/state-persistence.test.js.map +1 -0
- package/dist/core/agents/__tests__/validation-cache.test.d.ts +2 -0
- package/dist/core/agents/__tests__/validation-cache.test.d.ts.map +1 -0
- package/dist/core/agents/__tests__/validation-cache.test.js +181 -0
- package/dist/core/agents/__tests__/validation-cache.test.js.map +1 -0
- package/dist/core/agents/blackboard.d.ts +22 -3
- package/dist/core/agents/blackboard.d.ts.map +1 -1
- package/dist/core/agents/blackboard.js +52 -2
- package/dist/core/agents/blackboard.js.map +1 -1
- package/dist/core/agents/circuit-breaker.d.ts +79 -1
- package/dist/core/agents/circuit-breaker.d.ts.map +1 -1
- package/dist/core/agents/circuit-breaker.js +175 -1
- package/dist/core/agents/circuit-breaker.js.map +1 -1
- package/dist/core/agents/clarification-phase.d.ts +128 -0
- package/dist/core/agents/clarification-phase.d.ts.map +1 -0
- package/dist/core/agents/clarification-phase.js +375 -0
- package/dist/core/agents/clarification-phase.js.map +1 -0
- package/dist/core/agents/confidence-gate.d.ts +116 -3
- package/dist/core/agents/confidence-gate.d.ts.map +1 -1
- package/dist/core/agents/confidence-gate.js +363 -3
- package/dist/core/agents/confidence-gate.js.map +1 -1
- package/dist/core/agents/correction-tracker.d.ts +197 -0
- package/dist/core/agents/correction-tracker.d.ts.map +1 -0
- package/dist/core/agents/correction-tracker.js +366 -0
- package/dist/core/agents/correction-tracker.js.map +1 -0
- package/dist/core/agents/dependency-graph.d.ts +193 -0
- package/dist/core/agents/dependency-graph.d.ts.map +1 -0
- package/dist/core/agents/dependency-graph.js +462 -0
- package/dist/core/agents/dependency-graph.js.map +1 -0
- package/dist/core/agents/gap-detector.d.ts +277 -0
- package/dist/core/agents/gap-detector.d.ts.map +1 -0
- package/dist/core/agents/gap-detector.js +540 -0
- package/dist/core/agents/gap-detector.js.map +1 -0
- package/dist/core/agents/index.d.ts +14 -1
- package/dist/core/agents/index.d.ts.map +1 -1
- package/dist/core/agents/index.js +26 -1
- package/dist/core/agents/index.js.map +1 -1
- package/dist/core/agents/message-protocol.d.ts +13 -2
- package/dist/core/agents/message-protocol.d.ts.map +1 -1
- package/dist/core/agents/message-protocol.js +20 -1
- package/dist/core/agents/message-protocol.js.map +1 -1
- package/dist/core/agents/parallel-executor.d.ts +182 -0
- package/dist/core/agents/parallel-executor.d.ts.map +1 -0
- package/dist/core/agents/parallel-executor.js +474 -0
- package/dist/core/agents/parallel-executor.js.map +1 -0
- package/dist/core/agents/pattern-detector.d.ts +157 -0
- package/dist/core/agents/pattern-detector.d.ts.map +1 -0
- package/dist/core/agents/pattern-detector.js +370 -0
- package/dist/core/agents/pattern-detector.js.map +1 -0
- package/dist/core/agents/registry-client.d.ts +6 -0
- package/dist/core/agents/registry-client.d.ts.map +1 -1
- package/dist/core/agents/registry-client.js +3 -0
- package/dist/core/agents/registry-client.js.map +1 -1
- package/dist/core/agents/research-phase.d.ts +114 -0
- package/dist/core/agents/research-phase.d.ts.map +1 -0
- package/dist/core/agents/research-phase.js +355 -0
- package/dist/core/agents/research-phase.js.map +1 -0
- package/dist/core/agents/research-validator.d.ts +13 -2
- package/dist/core/agents/research-validator.d.ts.map +1 -1
- package/dist/core/agents/research-validator.js +63 -31
- package/dist/core/agents/research-validator.js.map +1 -1
- package/dist/core/agents/skill-creator.d.ts +174 -0
- package/dist/core/agents/skill-creator.d.ts.map +1 -0
- package/dist/core/agents/skill-creator.js +570 -0
- package/dist/core/agents/skill-creator.js.map +1 -0
- package/dist/core/agents/state-persistence.d.ts +184 -0
- package/dist/core/agents/state-persistence.d.ts.map +1 -0
- package/dist/core/agents/state-persistence.js +394 -0
- package/dist/core/agents/state-persistence.js.map +1 -0
- package/dist/core/agents/validation-cache.d.ts +122 -0
- package/dist/core/agents/validation-cache.d.ts.map +1 -0
- package/dist/core/agents/validation-cache.js +280 -0
- package/dist/core/agents/validation-cache.js.map +1 -0
- package/dist/core/agents/validators/__tests__/validators.test.d.ts +5 -0
- package/dist/core/agents/validators/__tests__/validators.test.d.ts.map +1 -0
- package/dist/core/agents/validators/__tests__/validators.test.js +321 -0
- package/dist/core/agents/validators/__tests__/validators.test.js.map +1 -0
- package/dist/core/agents/validators/base-validator.d.ts +191 -0
- package/dist/core/agents/validators/base-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/base-validator.js +192 -0
- package/dist/core/agents/validators/base-validator.js.map +1 -0
- package/dist/core/agents/validators/index.d.ts +7 -0
- package/dist/core/agents/validators/index.d.ts.map +1 -0
- package/dist/core/agents/validators/index.js +7 -0
- package/dist/core/agents/validators/index.js.map +1 -0
- package/dist/core/agents/validators/npm-validator.d.ts +50 -0
- package/dist/core/agents/validators/npm-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/npm-validator.js +211 -0
- package/dist/core/agents/validators/npm-validator.js.map +1 -0
- package/dist/core/agents/validators/pip-validator.d.ts +49 -0
- package/dist/core/agents/validators/pip-validator.d.ts.map +1 -0
- package/dist/core/agents/validators/pip-validator.js +191 -0
- package/dist/core/agents/validators/pip-validator.js.map +1 -0
- package/dist/core/agents/validators/validator-registry.d.ts +122 -0
- package/dist/core/agents/validators/validator-registry.d.ts.map +1 -0
- package/dist/core/agents/validators/validator-registry.js +321 -0
- package/dist/core/agents/validators/validator-registry.js.map +1 -0
- package/dist/core/context-repl/types.d.ts +4 -4
- package/dist/core/memory/index.d.ts +1 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +2 -0
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/memory/learning-store.d.ts +222 -0
- package/dist/core/memory/learning-store.d.ts.map +1 -0
- package/dist/core/memory/learning-store.js +477 -0
- package/dist/core/memory/learning-store.js.map +1 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts +5 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.d.ts.map +1 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js +401 -0
- package/dist/core/spec-analyzer/__tests__/ambiguity-detector.test.js.map +1 -0
- package/dist/core/spec-analyzer/ambiguity-detector.d.ts +99 -0
- package/dist/core/spec-analyzer/ambiguity-detector.d.ts.map +1 -0
- package/dist/core/spec-analyzer/ambiguity-detector.js +250 -0
- package/dist/core/spec-analyzer/ambiguity-detector.js.map +1 -0
- package/dist/core/spec-analyzer/clarification-generator.d.ts +76 -0
- package/dist/core/spec-analyzer/clarification-generator.d.ts.map +1 -0
- package/dist/core/spec-analyzer/clarification-generator.js +257 -0
- package/dist/core/spec-analyzer/clarification-generator.js.map +1 -0
- package/dist/core/spec-analyzer/index.d.ts +10 -1
- package/dist/core/spec-analyzer/index.d.ts.map +1 -1
- package/dist/core/spec-analyzer/index.js +13 -1
- package/dist/core/spec-analyzer/index.js.map +1 -1
- package/dist/core/spec-analyzer/patterns.d.ts +73 -0
- package/dist/core/spec-analyzer/patterns.d.ts.map +1 -0
- package/dist/core/spec-analyzer/patterns.js +412 -0
- package/dist/core/spec-analyzer/patterns.js.map +1 -0
- package/dist/hooks/__tests__/dynamic-generator.test.d.ts +5 -0
- package/dist/hooks/__tests__/dynamic-generator.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/dynamic-generator.test.js +425 -0
- package/dist/hooks/__tests__/dynamic-generator.test.js.map +1 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts +5 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.js +315 -0
- package/dist/hooks/__tests__/hook-agent-bridge.test.js.map +1 -0
- package/dist/hooks/dynamic-generator.d.ts +158 -0
- package/dist/hooks/dynamic-generator.d.ts.map +1 -0
- package/dist/hooks/dynamic-generator.js +448 -0
- package/dist/hooks/dynamic-generator.js.map +1 -0
- package/dist/hooks/hook-agent-bridge.d.ts +252 -0
- package/dist/hooks/hook-agent-bridge.d.ts.map +1 -0
- package/dist/hooks/hook-agent-bridge.js +489 -0
- package/dist/hooks/hook-agent-bridge.js.map +1 -0
- package/dist/hooks/index.d.ts +3 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +5 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/mcp/tool-catalog.d.ts.map +1 -1
- package/dist/mcp/tool-catalog.js +47 -0
- package/dist/mcp/tool-catalog.js.map +1 -1
- package/dist/mcp/tool-tiers.d.ts.map +1 -1
- package/dist/mcp/tool-tiers.js +4 -0
- package/dist/mcp/tool-tiers.js.map +1 -1
- package/dist/mcp/tools/index.d.ts +2 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +15 -1
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/learning-store.d.ts +30 -0
- package/dist/mcp/tools/learning-store.d.ts.map +1 -0
- package/dist/mcp/tools/learning-store.js +286 -0
- package/dist/mcp/tools/learning-store.js.map +1 -0
- package/dist/rules/index.d.ts.map +1 -1
- package/dist/rules/index.js +2 -47
- package/dist/rules/index.js.map +1 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +159 -38
- package/dist/skills/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,540 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gap Detector - v17.5.0
|
|
3
|
+
*
|
|
4
|
+
* Detects gaps between expected and delivered outputs in multi-agent systems.
|
|
5
|
+
* Monitors agent health, acceptance criteria completion, and dependency satisfaction.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Specification matching (delivered vs expected)
|
|
9
|
+
* - Dependency graph tracking
|
|
10
|
+
* - Acceptance criteria monitoring
|
|
11
|
+
* - Stuck agent detection
|
|
12
|
+
* - Gap report generation
|
|
13
|
+
* - Automatic re-routing on failure
|
|
14
|
+
*
|
|
15
|
+
* @module gap-detector
|
|
16
|
+
*/
|
|
17
|
+
import { DependencyGraph, formatDependencyAnalysis, } from './dependency-graph.js';
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// Constants
|
|
20
|
+
// =============================================================================
|
|
21
|
+
export const DEFAULT_GAP_DETECTOR_CONFIG = {
|
|
22
|
+
stuckThresholdMs: 5 * 60 * 1000, // 5 minutes
|
|
23
|
+
enableAutoRecovery: true,
|
|
24
|
+
maxRecoveryAttempts: 3,
|
|
25
|
+
healthCheckIntervalMs: 30 * 1000, // 30 seconds
|
|
26
|
+
};
|
|
27
|
+
// =============================================================================
|
|
28
|
+
// Gap Detector Class
|
|
29
|
+
// =============================================================================
|
|
30
|
+
/**
|
|
31
|
+
* Detects and reports gaps in multi-agent execution
|
|
32
|
+
*/
|
|
33
|
+
export class GapDetector {
|
|
34
|
+
config;
|
|
35
|
+
dependencyGraph;
|
|
36
|
+
outputSpecs = new Map();
|
|
37
|
+
deliveredOutputs = new Map();
|
|
38
|
+
acceptanceCriteria = new Map();
|
|
39
|
+
agentHealth = new Map();
|
|
40
|
+
recoveryAttempts = new Map();
|
|
41
|
+
constructor(config = {}) {
|
|
42
|
+
this.config = { ...DEFAULT_GAP_DETECTOR_CONFIG, ...config };
|
|
43
|
+
this.dependencyGraph = new DependencyGraph();
|
|
44
|
+
}
|
|
45
|
+
// ===========================================================================
|
|
46
|
+
// Output Specification
|
|
47
|
+
// ===========================================================================
|
|
48
|
+
/**
|
|
49
|
+
* Register an expected output
|
|
50
|
+
*/
|
|
51
|
+
registerOutput(spec) {
|
|
52
|
+
this.outputSpecs.set(spec.id, spec);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Mark an output as delivered
|
|
56
|
+
*/
|
|
57
|
+
markOutputDelivered(specId, value) {
|
|
58
|
+
this.deliveredOutputs.set(specId, value);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if an output matches its specification
|
|
62
|
+
*/
|
|
63
|
+
checkOutputMatch(specId) {
|
|
64
|
+
const spec = this.outputSpecs.get(specId);
|
|
65
|
+
if (!spec) {
|
|
66
|
+
return { matches: false, gaps: ['Specification not found'] };
|
|
67
|
+
}
|
|
68
|
+
const delivered = this.deliveredOutputs.get(specId);
|
|
69
|
+
const gaps = [];
|
|
70
|
+
if (delivered === undefined) {
|
|
71
|
+
if (spec.validation?.required !== false) {
|
|
72
|
+
gaps.push(`Output "${spec.description}" not delivered`);
|
|
73
|
+
}
|
|
74
|
+
return { matches: gaps.length === 0, gaps };
|
|
75
|
+
}
|
|
76
|
+
// Validate if validation rules exist
|
|
77
|
+
if (spec.validation) {
|
|
78
|
+
if (spec.validation.pattern && typeof delivered === 'string') {
|
|
79
|
+
const regex = new RegExp(spec.validation.pattern);
|
|
80
|
+
if (!regex.test(delivered)) {
|
|
81
|
+
gaps.push(`Output does not match pattern: ${spec.validation.pattern}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (spec.validation.minLength !== undefined && typeof delivered === 'string') {
|
|
85
|
+
if (delivered.length < spec.validation.minLength) {
|
|
86
|
+
gaps.push(`Output length ${delivered.length} below minimum ${spec.validation.minLength}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return { matches: gaps.length === 0, gaps };
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get all output gaps
|
|
94
|
+
*/
|
|
95
|
+
getOutputGaps() {
|
|
96
|
+
const entries = [];
|
|
97
|
+
for (const [specId, spec] of this.outputSpecs) {
|
|
98
|
+
const { matches, gaps } = this.checkOutputMatch(specId);
|
|
99
|
+
if (!matches) {
|
|
100
|
+
entries.push({
|
|
101
|
+
type: 'output',
|
|
102
|
+
severity: spec.validation?.required !== false ? 'high' : 'medium',
|
|
103
|
+
description: gaps.join('; '),
|
|
104
|
+
entityId: specId,
|
|
105
|
+
suggestedAction: `Ensure ${spec.type} "${spec.target}" is produced correctly`,
|
|
106
|
+
autoRecoveryAttempted: false,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return entries;
|
|
111
|
+
}
|
|
112
|
+
// ===========================================================================
|
|
113
|
+
// Acceptance Criteria
|
|
114
|
+
// ===========================================================================
|
|
115
|
+
/**
|
|
116
|
+
* Register acceptance criteria
|
|
117
|
+
*/
|
|
118
|
+
registerCriteria(criteria) {
|
|
119
|
+
for (const criterion of criteria) {
|
|
120
|
+
this.acceptanceCriteria.set(criterion.id, criterion);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Mark a criterion as met
|
|
125
|
+
*/
|
|
126
|
+
markCriterionMet(criterionId, evidence) {
|
|
127
|
+
const criterion = this.acceptanceCriteria.get(criterionId);
|
|
128
|
+
if (criterion) {
|
|
129
|
+
criterion.met = true;
|
|
130
|
+
criterion.evidence = evidence;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get criteria status
|
|
135
|
+
*/
|
|
136
|
+
getCriteriaStatus() {
|
|
137
|
+
const all = Array.from(this.acceptanceCriteria.values());
|
|
138
|
+
const required = all.filter((c) => c.priority === 'required');
|
|
139
|
+
const optional = all.filter((c) => c.priority === 'optional');
|
|
140
|
+
const total = all.length;
|
|
141
|
+
const met = all.filter((c) => c.met).length;
|
|
142
|
+
return {
|
|
143
|
+
total,
|
|
144
|
+
met,
|
|
145
|
+
unmet: total - met,
|
|
146
|
+
percentComplete: total > 0 ? Math.round((met / total) * 100) : 100,
|
|
147
|
+
required: {
|
|
148
|
+
met: required.filter((c) => c.met).length,
|
|
149
|
+
total: required.length,
|
|
150
|
+
},
|
|
151
|
+
optional: {
|
|
152
|
+
met: optional.filter((c) => c.met).length,
|
|
153
|
+
total: optional.length,
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get criteria gaps
|
|
159
|
+
*/
|
|
160
|
+
getCriteriaGaps() {
|
|
161
|
+
const entries = [];
|
|
162
|
+
for (const criterion of this.acceptanceCriteria.values()) {
|
|
163
|
+
if (!criterion.met) {
|
|
164
|
+
entries.push({
|
|
165
|
+
type: 'criteria',
|
|
166
|
+
severity: criterion.priority === 'required' ? 'high' : 'low',
|
|
167
|
+
description: `Criterion not met: ${criterion.description}`,
|
|
168
|
+
entityId: criterion.id,
|
|
169
|
+
suggestedAction: 'Complete the required work to satisfy this criterion',
|
|
170
|
+
autoRecoveryAttempted: false,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return entries;
|
|
175
|
+
}
|
|
176
|
+
// ===========================================================================
|
|
177
|
+
// Dependency Tracking
|
|
178
|
+
// ===========================================================================
|
|
179
|
+
/**
|
|
180
|
+
* Get the dependency graph
|
|
181
|
+
*/
|
|
182
|
+
getDependencyGraph() {
|
|
183
|
+
return this.dependencyGraph;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Set the dependency graph
|
|
187
|
+
*/
|
|
188
|
+
setDependencyGraph(graph) {
|
|
189
|
+
this.dependencyGraph = graph;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Get dependency gaps
|
|
193
|
+
*/
|
|
194
|
+
getDependencyGaps() {
|
|
195
|
+
const gaps = this.dependencyGraph.identifyGaps();
|
|
196
|
+
return gaps.map((gap) => ({
|
|
197
|
+
type: 'dependency',
|
|
198
|
+
severity: gap.severity,
|
|
199
|
+
description: gap.description,
|
|
200
|
+
entityId: gap.nodeId,
|
|
201
|
+
suggestedAction: gap.resolution,
|
|
202
|
+
autoRecoveryAttempted: false,
|
|
203
|
+
}));
|
|
204
|
+
}
|
|
205
|
+
// ===========================================================================
|
|
206
|
+
// Agent Health
|
|
207
|
+
// ===========================================================================
|
|
208
|
+
/**
|
|
209
|
+
* Update agent health status
|
|
210
|
+
*/
|
|
211
|
+
updateAgentHealth(agentId, update) {
|
|
212
|
+
const existing = this.agentHealth.get(agentId) || {
|
|
213
|
+
agentId,
|
|
214
|
+
status: 'unknown',
|
|
215
|
+
lastHeartbeat: new Date(),
|
|
216
|
+
idleTime: 0,
|
|
217
|
+
errorCount: 0,
|
|
218
|
+
circuitState: 'closed',
|
|
219
|
+
};
|
|
220
|
+
this.agentHealth.set(agentId, {
|
|
221
|
+
...existing,
|
|
222
|
+
...update,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Record agent heartbeat
|
|
227
|
+
*/
|
|
228
|
+
recordHeartbeat(agentId) {
|
|
229
|
+
this.updateAgentHealth(agentId, {
|
|
230
|
+
lastHeartbeat: new Date(),
|
|
231
|
+
idleTime: 0,
|
|
232
|
+
status: 'healthy',
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Record agent error
|
|
237
|
+
*/
|
|
238
|
+
recordAgentError(agentId) {
|
|
239
|
+
const existing = this.agentHealth.get(agentId);
|
|
240
|
+
const errorCount = (existing?.errorCount || 0) + 1;
|
|
241
|
+
this.updateAgentHealth(agentId, {
|
|
242
|
+
errorCount,
|
|
243
|
+
status: errorCount >= 3 ? 'unhealthy' : 'degraded',
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Check for stuck agents
|
|
248
|
+
*/
|
|
249
|
+
checkStuckAgents() {
|
|
250
|
+
const now = Date.now();
|
|
251
|
+
const stuck = [];
|
|
252
|
+
for (const health of this.agentHealth.values()) {
|
|
253
|
+
const idleTime = now - health.lastHeartbeat.getTime();
|
|
254
|
+
if (idleTime > this.config.stuckThresholdMs) {
|
|
255
|
+
health.status = 'stuck';
|
|
256
|
+
health.idleTime = idleTime;
|
|
257
|
+
stuck.push(health);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
return stuck;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get agent health gaps
|
|
264
|
+
*/
|
|
265
|
+
getHealthGaps() {
|
|
266
|
+
const entries = [];
|
|
267
|
+
const stuckAgents = this.checkStuckAgents();
|
|
268
|
+
for (const agent of stuckAgents) {
|
|
269
|
+
entries.push({
|
|
270
|
+
type: 'health',
|
|
271
|
+
severity: 'high',
|
|
272
|
+
description: `Agent "${agent.agentId}" appears stuck (idle for ${Math.round(agent.idleTime / 60000)} minutes)`,
|
|
273
|
+
entityId: agent.agentId,
|
|
274
|
+
suggestedAction: 'Check agent status and consider re-routing task',
|
|
275
|
+
autoRecoveryAttempted: false,
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
for (const health of this.agentHealth.values()) {
|
|
279
|
+
if (health.status === 'unhealthy') {
|
|
280
|
+
entries.push({
|
|
281
|
+
type: 'health',
|
|
282
|
+
severity: 'high',
|
|
283
|
+
description: `Agent "${health.agentId}" is unhealthy (${health.errorCount} errors)`,
|
|
284
|
+
entityId: health.agentId,
|
|
285
|
+
suggestedAction: 'Consider replacing agent or reducing its workload',
|
|
286
|
+
autoRecoveryAttempted: false,
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
if (health.circuitState === 'open') {
|
|
290
|
+
entries.push({
|
|
291
|
+
type: 'health',
|
|
292
|
+
severity: 'critical',
|
|
293
|
+
description: `Agent "${health.agentId}" circuit is open (service unavailable)`,
|
|
294
|
+
entityId: health.agentId,
|
|
295
|
+
suggestedAction: 'Wait for circuit to close or route to alternative agent',
|
|
296
|
+
autoRecoveryAttempted: false,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
return entries;
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Get all agent health statuses
|
|
304
|
+
*/
|
|
305
|
+
getAllAgentHealth() {
|
|
306
|
+
return Array.from(this.agentHealth.values());
|
|
307
|
+
}
|
|
308
|
+
// ===========================================================================
|
|
309
|
+
// Re-routing
|
|
310
|
+
// ===========================================================================
|
|
311
|
+
/**
|
|
312
|
+
* Determine if a task should be re-routed
|
|
313
|
+
*/
|
|
314
|
+
shouldReroute(taskId, currentAgent, availableAgents) {
|
|
315
|
+
const agentHealth = this.agentHealth.get(currentAgent);
|
|
316
|
+
const attempts = this.recoveryAttempts.get(taskId) || 0;
|
|
317
|
+
// Check if agent is unhealthy
|
|
318
|
+
if (agentHealth?.status === 'stuck' || agentHealth?.status === 'unhealthy') {
|
|
319
|
+
// Find a healthy agent
|
|
320
|
+
const healthyAgent = availableAgents.find((id) => {
|
|
321
|
+
const health = this.agentHealth.get(id);
|
|
322
|
+
return !health || health.status === 'healthy';
|
|
323
|
+
});
|
|
324
|
+
if (healthyAgent && attempts < this.config.maxRecoveryAttempts) {
|
|
325
|
+
this.recoveryAttempts.set(taskId, attempts + 1);
|
|
326
|
+
return {
|
|
327
|
+
shouldReroute: true,
|
|
328
|
+
reason: `Agent "${currentAgent}" is ${agentHealth.status}`,
|
|
329
|
+
fromAgent: currentAgent,
|
|
330
|
+
toAgent: healthyAgent,
|
|
331
|
+
taskId,
|
|
332
|
+
priority: agentHealth.status === 'stuck' ? 'immediate' : 'next_available',
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
// Check circuit breaker
|
|
337
|
+
if (agentHealth?.circuitState === 'open') {
|
|
338
|
+
const healthyAgent = availableAgents.find((id) => {
|
|
339
|
+
const health = this.agentHealth.get(id);
|
|
340
|
+
return !health || health.circuitState !== 'open';
|
|
341
|
+
});
|
|
342
|
+
if (healthyAgent) {
|
|
343
|
+
return {
|
|
344
|
+
shouldReroute: true,
|
|
345
|
+
reason: `Agent "${currentAgent}" circuit is open`,
|
|
346
|
+
fromAgent: currentAgent,
|
|
347
|
+
toAgent: healthyAgent,
|
|
348
|
+
taskId,
|
|
349
|
+
priority: 'immediate',
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
return {
|
|
354
|
+
shouldReroute: false,
|
|
355
|
+
reason: 'No re-routing needed',
|
|
356
|
+
fromAgent: currentAgent,
|
|
357
|
+
taskId,
|
|
358
|
+
priority: 'low',
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
// ===========================================================================
|
|
362
|
+
// Gap Report
|
|
363
|
+
// ===========================================================================
|
|
364
|
+
/**
|
|
365
|
+
* Generate a comprehensive gap report
|
|
366
|
+
*/
|
|
367
|
+
generateReport() {
|
|
368
|
+
const outputGaps = this.getOutputGaps();
|
|
369
|
+
const criteriaGaps = this.getCriteriaGaps();
|
|
370
|
+
const dependencyGaps = this.getDependencyGaps();
|
|
371
|
+
const healthGaps = this.getHealthGaps();
|
|
372
|
+
const allEntries = [...outputGaps, ...criteriaGaps, ...dependencyGaps, ...healthGaps];
|
|
373
|
+
const summary = {
|
|
374
|
+
totalGaps: allEntries.length,
|
|
375
|
+
criticalGaps: allEntries.filter((e) => e.severity === 'critical').length,
|
|
376
|
+
highGaps: allEntries.filter((e) => e.severity === 'high').length,
|
|
377
|
+
mediumGaps: allEntries.filter((e) => e.severity === 'medium').length,
|
|
378
|
+
lowGaps: allEntries.filter((e) => e.severity === 'low').length,
|
|
379
|
+
autoRecovered: allEntries.filter((e) => e.recoveryResult === 'success').length,
|
|
380
|
+
};
|
|
381
|
+
const criteriaStatus = this.getCriteriaStatus();
|
|
382
|
+
// Generate recommendations
|
|
383
|
+
const recommendations = [];
|
|
384
|
+
if (summary.criticalGaps > 0) {
|
|
385
|
+
recommendations.push('URGENT: Address critical gaps immediately - they are blocking progress');
|
|
386
|
+
}
|
|
387
|
+
if (healthGaps.some((g) => g.description.includes('stuck'))) {
|
|
388
|
+
recommendations.push('Consider re-routing tasks from stuck agents to healthy ones');
|
|
389
|
+
}
|
|
390
|
+
if (criteriaStatus.required.met < criteriaStatus.required.total) {
|
|
391
|
+
recommendations.push(`${criteriaStatus.required.total - criteriaStatus.required.met} required criteria not yet met`);
|
|
392
|
+
}
|
|
393
|
+
const analysis = this.dependencyGraph.analyze();
|
|
394
|
+
if (analysis.circularDependencies.length > 0) {
|
|
395
|
+
recommendations.push('Break circular dependencies to enable progress');
|
|
396
|
+
}
|
|
397
|
+
if (analysis.orphanedNodes.length > 0) {
|
|
398
|
+
recommendations.push('Add missing dependencies or remove orphaned nodes');
|
|
399
|
+
}
|
|
400
|
+
return {
|
|
401
|
+
timestamp: new Date(),
|
|
402
|
+
summary,
|
|
403
|
+
entries: allEntries,
|
|
404
|
+
dependencyAnalysis: analysis,
|
|
405
|
+
criteriaStatus: {
|
|
406
|
+
total: criteriaStatus.total,
|
|
407
|
+
met: criteriaStatus.met,
|
|
408
|
+
unmet: criteriaStatus.unmet,
|
|
409
|
+
percentComplete: criteriaStatus.percentComplete,
|
|
410
|
+
},
|
|
411
|
+
agentHealth: this.getAllAgentHealth(),
|
|
412
|
+
recommendations,
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
/**
|
|
416
|
+
* Reset the detector state
|
|
417
|
+
*/
|
|
418
|
+
reset() {
|
|
419
|
+
this.outputSpecs.clear();
|
|
420
|
+
this.deliveredOutputs.clear();
|
|
421
|
+
this.acceptanceCriteria.clear();
|
|
422
|
+
this.agentHealth.clear();
|
|
423
|
+
this.recoveryAttempts.clear();
|
|
424
|
+
this.dependencyGraph.clear();
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
// =============================================================================
|
|
428
|
+
// Helper Functions
|
|
429
|
+
// =============================================================================
|
|
430
|
+
/**
|
|
431
|
+
* Create a gap detector with default configuration
|
|
432
|
+
*/
|
|
433
|
+
export function createGapDetector(config) {
|
|
434
|
+
return new GapDetector(config);
|
|
435
|
+
}
|
|
436
|
+
/**
|
|
437
|
+
* Format gap report for display
|
|
438
|
+
*/
|
|
439
|
+
export function formatGapReport(report) {
|
|
440
|
+
const lines = [];
|
|
441
|
+
lines.push('# Gap Detection Report');
|
|
442
|
+
lines.push('');
|
|
443
|
+
lines.push(`**Generated:** ${report.timestamp.toISOString()}`);
|
|
444
|
+
lines.push('');
|
|
445
|
+
// Summary
|
|
446
|
+
lines.push('## Summary');
|
|
447
|
+
lines.push('');
|
|
448
|
+
lines.push(`| Severity | Count |`);
|
|
449
|
+
lines.push(`|----------|-------|`);
|
|
450
|
+
lines.push(`| 🔴 Critical | ${report.summary.criticalGaps} |`);
|
|
451
|
+
lines.push(`| 🟠 High | ${report.summary.highGaps} |`);
|
|
452
|
+
lines.push(`| 🟡 Medium | ${report.summary.mediumGaps} |`);
|
|
453
|
+
lines.push(`| 🟢 Low | ${report.summary.lowGaps} |`);
|
|
454
|
+
lines.push(`| **Total** | **${report.summary.totalGaps}** |`);
|
|
455
|
+
lines.push('');
|
|
456
|
+
if (report.summary.autoRecovered > 0) {
|
|
457
|
+
lines.push(`✅ Auto-recovered: ${report.summary.autoRecovered}`);
|
|
458
|
+
lines.push('');
|
|
459
|
+
}
|
|
460
|
+
// Criteria Status
|
|
461
|
+
lines.push('## Acceptance Criteria');
|
|
462
|
+
lines.push('');
|
|
463
|
+
lines.push(`**Progress:** ${report.criteriaStatus.met}/${report.criteriaStatus.total} (${report.criteriaStatus.percentComplete}%)`);
|
|
464
|
+
lines.push('');
|
|
465
|
+
// Agent Health
|
|
466
|
+
if (report.agentHealth.length > 0) {
|
|
467
|
+
lines.push('## Agent Health');
|
|
468
|
+
lines.push('');
|
|
469
|
+
lines.push('| Agent | Status | Idle Time | Errors |');
|
|
470
|
+
lines.push('|-------|--------|-----------|--------|');
|
|
471
|
+
for (const agent of report.agentHealth) {
|
|
472
|
+
const statusEmoji = agent.status === 'healthy'
|
|
473
|
+
? '✅'
|
|
474
|
+
: agent.status === 'degraded'
|
|
475
|
+
? '🟡'
|
|
476
|
+
: agent.status === 'stuck'
|
|
477
|
+
? '🔴'
|
|
478
|
+
: '❓';
|
|
479
|
+
lines.push(`| ${agent.agentId} | ${statusEmoji} ${agent.status} | ${Math.round(agent.idleTime / 1000)}s | ${agent.errorCount} |`);
|
|
480
|
+
}
|
|
481
|
+
lines.push('');
|
|
482
|
+
}
|
|
483
|
+
// Gap Entries
|
|
484
|
+
if (report.entries.length > 0) {
|
|
485
|
+
lines.push('## Gap Details');
|
|
486
|
+
lines.push('');
|
|
487
|
+
const byType = {
|
|
488
|
+
output: report.entries.filter((e) => e.type === 'output'),
|
|
489
|
+
criteria: report.entries.filter((e) => e.type === 'criteria'),
|
|
490
|
+
dependency: report.entries.filter((e) => e.type === 'dependency'),
|
|
491
|
+
health: report.entries.filter((e) => e.type === 'health'),
|
|
492
|
+
};
|
|
493
|
+
for (const [type, entries] of Object.entries(byType)) {
|
|
494
|
+
if (entries.length === 0)
|
|
495
|
+
continue;
|
|
496
|
+
lines.push(`### ${type.charAt(0).toUpperCase() + type.slice(1)} Gaps (${entries.length})`);
|
|
497
|
+
lines.push('');
|
|
498
|
+
for (const entry of entries) {
|
|
499
|
+
const emoji = entry.severity === 'critical'
|
|
500
|
+
? '🔴'
|
|
501
|
+
: entry.severity === 'high'
|
|
502
|
+
? '🟠'
|
|
503
|
+
: entry.severity === 'medium'
|
|
504
|
+
? '🟡'
|
|
505
|
+
: '🟢';
|
|
506
|
+
lines.push(`${emoji} **${entry.entityId}**`);
|
|
507
|
+
lines.push(` ${entry.description}`);
|
|
508
|
+
lines.push(` _Action:_ ${entry.suggestedAction}`);
|
|
509
|
+
lines.push('');
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
// Dependency Analysis
|
|
514
|
+
lines.push(formatDependencyAnalysis(report.dependencyAnalysis));
|
|
515
|
+
lines.push('');
|
|
516
|
+
// Recommendations
|
|
517
|
+
if (report.recommendations.length > 0) {
|
|
518
|
+
lines.push('## Recommendations');
|
|
519
|
+
lines.push('');
|
|
520
|
+
for (const rec of report.recommendations) {
|
|
521
|
+
lines.push(`- ${rec}`);
|
|
522
|
+
}
|
|
523
|
+
lines.push('');
|
|
524
|
+
}
|
|
525
|
+
return lines.join('\n');
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Check if a report has critical issues
|
|
529
|
+
*/
|
|
530
|
+
export function hasCriticalIssues(report) {
|
|
531
|
+
return report.summary.criticalGaps > 0;
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Check if a report has blocking issues
|
|
535
|
+
*/
|
|
536
|
+
export function hasBlockingIssues(report) {
|
|
537
|
+
return (report.summary.criticalGaps > 0 ||
|
|
538
|
+
report.entries.some((e) => e.type === 'criteria' && e.severity === 'high'));
|
|
539
|
+
}
|
|
540
|
+
//# sourceMappingURL=gap-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gap-detector.js","sourceRoot":"","sources":["../../../src/core/agents/gap-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agent Coordination Module - v12.
|
|
2
|
+
* Agent Coordination Module - v12.6.0
|
|
3
3
|
*
|
|
4
4
|
* Multi-agent coordination features:
|
|
5
5
|
* - Action space masking (tool availability by phase/role)
|
|
@@ -8,20 +8,33 @@
|
|
|
8
8
|
* - Recursive agents (v8.0.0): self-spawning agents with depth control
|
|
9
9
|
* - Agent communication protocol (v12.5.0): message passing between agents
|
|
10
10
|
* - Shared blackboard (v12.5.0): coordination state and resource claiming
|
|
11
|
+
* - State persistence (v12.6.0): persistent agent state across sessions
|
|
11
12
|
*/
|
|
12
13
|
export { checkToolAvailability, createDefaultContext, formatActionMask, generateActionMask, getRecommendedTools, PHASE_RESTRICTIONS, ROLE_PERMISSIONS, TOOL_DEFINITIONS, } from './action-mask.js';
|
|
13
14
|
export { Blackboard, type BlackboardStats, blackboard, type CachedContent, formatBlackboardStats, formatClaim, type ResourceClaim, } from './blackboard.js';
|
|
14
15
|
export { AgentBudgetManager, budgetManager, COMPLEXITY_MULTIPLIERS, calculateRecommendedBudget, formatBudget, HANDOFF_RESERVE_PERCENT, hasSufficientBudget, MIN_USEFUL_BUDGET, ROLE_BASE_BUDGETS, } from './budgets.js';
|
|
15
16
|
export { CircuitBreaker, type CircuitBreakerConfig, type CircuitResult, type CircuitState, type CircuitStats, DEFAULT_CONFIG as DEFAULT_CIRCUIT_CONFIG, formatCircuitStats, } from './circuit-breaker.js';
|
|
16
17
|
export { type BreakerCategory, CATEGORY_CONFIGS, type CategoryConfig, CircuitBreakerRegistry, type CircuitStatusSummary, circuitRegistry, formatOpenCircuits, formatRegistryStats, type OpenCircuitInfo, type RegistryStats, withCircuitBreaker, } from './circuit-registry.js';
|
|
18
|
+
export { type ClarificationPhaseConfig, type ClarificationPhaseResult, type ClarificationPhaseState, type ClarificationRound, DEFAULT_CLARIFICATION_CONFIG, executeClarificationPhase, formatClarificationForSession, formatQuestionsForAskUser, generateAdditionalQuestions, getNextQuestions, initializeClarificationPhase, markUserValidated, processAnswers, type UserAnswer, } from './clarification-phase.js';
|
|
19
|
+
export { type ClarificationQuestion, CONFIDENCE_TIERS, type ConfidenceGateConfig, type ConfidenceRound, type ConfidenceTier, type ConfidenceTracking, checkConfidence, checkProgressiveConfidence, createConfidenceTracking, createProgressiveGateState, formatConfidenceForSession, formatGateResult, formatProgressiveGateForSession, type GateResult, generateClarificationQuestions, getConfidenceTier, getTieredAction, hasExceededMaxRounds, markStateUserValidated, type ProgressiveGateResult, type ProgressiveGateState, recordConfidenceRound, updateConfidenceFromAnswers, updateStateAfterClarification, updateStateAfterResearch, } from './confidence-gate.js';
|
|
17
20
|
export { type AgentDynamicContext, addAgentToState, buildInheritanceTree, type ContextInheritanceNode, type ContextIsolationState, type ContextIsolationStats, createAgentDynamicContext, createContextIsolationState, createInheritanceNode, createIsolatedContext, createSharedPrefix, formatAgentDynamicContext, formatIsolatedContext, formatIsolationStats, formatSharedPrefix, getAgentContext, getInheritedContext, type IsolatedAgentContext, listAgents, ROLE_CONSTRAINTS, type SharedContextPrefix, } from './context-isolation.js';
|
|
21
|
+
export { type Correction, type CorrectionCluster, type CorrectionContext, CorrectionTracker, type CorrectionTrackerConfig, type CorrectionType, correctionTracker, DEFAULT_TRACKER_CONFIG, detectCorrection, formatCluster, formatCorrection, getPromotableClusters, trackCorrection, } from './correction-tracker.js';
|
|
22
|
+
export { createGraphFromTasks, type DependencyAnalysis, type DependencyEdge, type DependencyGap, DependencyGraph, type DependencyNode, formatDependencyAnalysis, formatDependencyGaps, } from './dependency-graph.js';
|
|
23
|
+
export { type AcceptanceCriterion, type AgentHealth, createGapDetector, DEFAULT_GAP_DETECTOR_CONFIG, formatGapReport, GapDetector, type GapDetectorConfig, type GapReport, type GapReportEntry, hasBlockingIssues, hasCriticalIssues, type OutputSpec, type RerouteDecision, } from './gap-detector.js';
|
|
18
24
|
export { type InitContext, runBootstrap } from './initializer.js';
|
|
19
25
|
export { type AgentMessage, type BroadcastPayload, type ClaimPayload, createBroadcast, createClaim, createMessage, createQuery, createResponse, formatMessage, isBroadcast, isClaim, isQuery, isResponse, MessageBus, type MessageHandler, type MessagePayload, type MessageType, messageBus, type QueryPayload, type ResponsePayload, type SubscriptionOptions, } from './message-protocol.js';
|
|
20
26
|
export { broadcastTaskComplete, cacheFileContent, claimFileForRead, cleanupOrchestratorContext, completeParallelExecution, createOrchestratorContext, createParallelPlan, createSpawnContext, detectConflicts, formatParallelPlan, formatSpawnContext, getCachedFileContent, getChildTasks, getCoordinationState, getCoordinationStats, identifyParallelizableTasks, type OrchestratorContext, prepareParallelExecution, releaseFileClaim, resolveConflicts, setCoordinationState, synthesizeResults, } from './orchestrator.js';
|
|
27
|
+
export { type AgentExecutor, type AgentStatus, createMockAgentExecutor, createParallelExecutor, DEFAULT_EXECUTOR_CONFIG, type ExecutionProgress, executeParallel, formatExecutionProgress, formatParallelResult, ParallelExecutor, type ParallelExecutorConfig, type ParallelExecutorEvents, TimeoutError, type TrackedAgent, } from './parallel-executor.js';
|
|
28
|
+
export { calculateConfidenceAdjustment, DEFAULT_DETECTOR_CONFIG, type DetectedPattern, detectPatterns, formatDetectedPattern, formatSuggestionForSession, formatSuggestionsForSession, getPatternSuggestions, type PatternConfidence, PatternDetector, type PatternDetectorConfig, type PatternSuggestion, type PatternType, patternDetector, } from './pattern-detector.js';
|
|
21
29
|
export * from './programmatic/index.js';
|
|
22
30
|
export * from './recursive/index.js';
|
|
23
31
|
export { clearCaches, fetchPackageMetadata, getCacheStats, getPackageSize, type PackageMetadata, type PackageSize, type SearchResult, searchPackages, } from './registry-client.js';
|
|
32
|
+
export { buildResearchPrompt, buildResearchTaskParams, calculateConfidenceImprovement, DEFAULT_RESEARCH_CONFIG, executeResearchPhase, formatResearchForSession, identifyResearchTargets, type ResearchArea, type ResearchFinding, type ResearchPhaseConfig, type ResearchPhaseResult, type ResearchTarget, } from './research-phase.js';
|
|
24
33
|
export { clearValidationCache, getValidationCacheStats, type PackageValidation, type ValidationOptions, validatePackage, validatePackages, } from './research-validator.js';
|
|
25
34
|
export { clearAuditCache, getAuditCacheStats, type SecurityScanResult, scanPackage, type Vulnerability, type VulnerabilitySeverity, } from './security-scanner.js';
|
|
35
|
+
export { createSkill, DEFAULT_CREATOR_CONFIG, formatSkillDefinition, formatValidationResult as formatSkillValidationResult, getSkillCreator, SKILL_TEMPLATES, type SkillContext, SkillCreator, type SkillCreatorConfig, type SkillDefinition, type SkillEffort, type SkillFrontmatter, type SkillGenerationRequest, type SkillModel, type SkillTemplate, type SkillValidationResult, TOOL_PRESETS, } from './skill-creator.js';
|
|
36
|
+
export { createPersistenceHooks, DEFAULT_PERSISTENCE_CONFIG, initializePersistence, type MessageHistoryEntry, type PersistedState, type PersistenceConfig, StatePersistence, statePersistence, } from './state-persistence.js';
|
|
26
37
|
export type { ActionMask, AgentBudget, AgentBudgetStatus, AgentExecutionResult, AgentMaskingContext, AgentSpawnContext, BudgetAllocationRequest, BudgetHandoff, BudgetRecovery, BudgetStats, BudgetWarning, Conflict, ConflictDetection, ConflictStrategy, ConflictType, ExecutionWave, MaskingSessionState, MaskingTaskState, ParallelExecutionPlan, ParallelExecutionRequest, ParallelExecutionResult, TaskComplexity, ToolAvailability, ToolCategory, ToolDefinition, } from './types.js';
|
|
38
|
+
export { API_RATE_LIMITS, type CacheConfig, DEFAULT_CACHE_CONFIG, type RateLimitConfig, RateLimiter, rateLimited, rateLimiter, ValidationCache, withRateLimit, } from './validation-cache.js';
|
|
39
|
+
export { BaseValidator, type BatchValidationResult, createIssue, formatBatchResult, formatValidationResult, NpmValidator, npmValidator, type PackageEcosystem, type PackageId, type PackageMetadata as ValidatorPackageMetadata, PipValidator, pipValidator, type ValidationIssue, type ValidationResult, type ValidationSeverity, type ValidatorConfig, type ValidatorRegistration, ValidatorRegistry, validatePackage as validatePackagePlugin, validatePackages as validatePackagesPlugin, validatorRegistry, } from './validators/index.js';
|
|
27
40
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/agents/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/agents/index.ts"],"names":[],"mappings":"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"}
|