@avi770/testteam 2.0.0 → 3.0.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/CHANGELOG.md +25 -1
- package/README.md +20 -2
- package/agents/15-regression-sentinel.ts +3 -2
- package/agents/base-agent.ts +8 -0
- package/agents/registry.ts +72 -70
- package/core/cli.ts +128 -6
- package/core/orchestrator.ts +72 -1
- package/dist/agents/15-regression-sentinel.d.ts +2 -1
- package/dist/agents/15-regression-sentinel.d.ts.map +1 -1
- package/dist/agents/15-regression-sentinel.js +2 -2
- package/dist/agents/15-regression-sentinel.js.map +1 -1
- package/dist/agents/base-agent.d.ts +3 -1
- package/dist/agents/base-agent.d.ts.map +1 -1
- package/dist/agents/base-agent.js +7 -1
- package/dist/agents/base-agent.js.map +1 -1
- package/dist/agents/registry.d.ts +2 -1
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +71 -71
- package/dist/agents/registry.js.map +1 -1
- package/dist/clients/agent-mvp.d.ts +66 -0
- package/dist/clients/agent-mvp.d.ts.map +1 -0
- package/dist/clients/agent-mvp.js +91 -0
- package/dist/clients/agent-mvp.js.map +1 -0
- package/dist/clients/total-recall.d.ts +37 -0
- package/dist/clients/total-recall.d.ts.map +1 -0
- package/dist/clients/total-recall.js +224 -0
- package/dist/clients/total-recall.js.map +1 -0
- package/dist/core/cli.d.ts +3 -0
- package/dist/core/cli.d.ts.map +1 -1
- package/dist/core/cli.js +122 -6
- package/dist/core/cli.js.map +1 -1
- package/dist/core/orchestrator.d.ts +10 -1
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +60 -1
- package/dist/core/orchestrator.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Total Recall REST API Client
|
|
3
|
+
*
|
|
4
|
+
* Wraps Total Recall's memory API (localhost:3777) for the TestTeam agent system.
|
|
5
|
+
* All methods are graceful — if Total Recall is not running, they return
|
|
6
|
+
* empty/null without throwing.
|
|
7
|
+
*/
|
|
8
|
+
export class TotalRecallClient {
|
|
9
|
+
baseUrl;
|
|
10
|
+
projectId;
|
|
11
|
+
sessionId = null;
|
|
12
|
+
constructor(baseUrl = 'http://localhost:3777', projectId = 'testteam') {
|
|
13
|
+
this.baseUrl = baseUrl;
|
|
14
|
+
this.projectId = projectId;
|
|
15
|
+
}
|
|
16
|
+
/** Check whether the Total Recall API is reachable. */
|
|
17
|
+
async isAvailable() {
|
|
18
|
+
try {
|
|
19
|
+
const res = await fetch(`${this.baseUrl}/health`);
|
|
20
|
+
return res.ok;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** Start a new session and store the session_id. Returns the session_id. */
|
|
27
|
+
async startSession() {
|
|
28
|
+
try {
|
|
29
|
+
const res = await fetch(`${this.baseUrl}/session/start`, {
|
|
30
|
+
method: 'POST',
|
|
31
|
+
headers: { 'Content-Type': 'application/json' },
|
|
32
|
+
body: JSON.stringify({ project_id: this.projectId }),
|
|
33
|
+
});
|
|
34
|
+
const json = (await res.json());
|
|
35
|
+
this.sessionId = json.data.session_id;
|
|
36
|
+
return this.sessionId;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** Close the current session. */
|
|
43
|
+
async endSession() {
|
|
44
|
+
if (!this.sessionId)
|
|
45
|
+
return;
|
|
46
|
+
try {
|
|
47
|
+
await fetch(`${this.baseUrl}/session/close`, {
|
|
48
|
+
method: 'POST',
|
|
49
|
+
headers: { 'Content-Type': 'application/json' },
|
|
50
|
+
body: JSON.stringify({ session_id: this.sessionId }),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Swallow — Total Recall may have shut down
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
this.sessionId = null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/** Store a single finding as a 'fact' in Total Recall. */
|
|
61
|
+
async storeFinding(agentId, agentName, finding) {
|
|
62
|
+
try {
|
|
63
|
+
await fetch(`${this.baseUrl}/remember`, {
|
|
64
|
+
method: 'POST',
|
|
65
|
+
headers: { 'Content-Type': 'application/json' },
|
|
66
|
+
body: JSON.stringify({
|
|
67
|
+
category: 'fact',
|
|
68
|
+
content: finding.description,
|
|
69
|
+
project_id: this.projectId,
|
|
70
|
+
source: 'testteam',
|
|
71
|
+
tags: [agentName, finding.severity, finding.type],
|
|
72
|
+
confidence: finding.severity === 'critical' ? 1.0 : 0.9,
|
|
73
|
+
meta: {
|
|
74
|
+
agentId,
|
|
75
|
+
agentName,
|
|
76
|
+
findingId: finding.id,
|
|
77
|
+
severity: finding.severity,
|
|
78
|
+
module: finding.module,
|
|
79
|
+
type: finding.type,
|
|
80
|
+
file: finding.file,
|
|
81
|
+
line: finding.line,
|
|
82
|
+
},
|
|
83
|
+
}),
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
// Graceful — no-op if TR is down
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** Store multiple findings in a single batch request (max 50 per API call). */
|
|
91
|
+
async storeFindings(agentId, agentName, findings) {
|
|
92
|
+
if (findings.length === 0)
|
|
93
|
+
return;
|
|
94
|
+
try {
|
|
95
|
+
const items = findings.slice(0, 50).map((finding) => ({
|
|
96
|
+
category: 'fact',
|
|
97
|
+
content: finding.description,
|
|
98
|
+
project_id: this.projectId,
|
|
99
|
+
source: 'testteam',
|
|
100
|
+
tags: [agentName, finding.severity, finding.type],
|
|
101
|
+
confidence: finding.severity === 'critical' ? 1.0 : 0.9,
|
|
102
|
+
meta: {
|
|
103
|
+
agentId,
|
|
104
|
+
agentName,
|
|
105
|
+
findingId: finding.id,
|
|
106
|
+
severity: finding.severity,
|
|
107
|
+
module: finding.module,
|
|
108
|
+
type: finding.type,
|
|
109
|
+
file: finding.file,
|
|
110
|
+
line: finding.line,
|
|
111
|
+
},
|
|
112
|
+
}));
|
|
113
|
+
await fetch(`${this.baseUrl}/batch-remember`, {
|
|
114
|
+
method: 'POST',
|
|
115
|
+
headers: { 'Content-Type': 'application/json' },
|
|
116
|
+
body: JSON.stringify({ items }),
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// Graceful — no-op if TR is down
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Store a correction (e.g. a false-positive that was later dismissed). */
|
|
124
|
+
async storeCorrection(agentId, originalFinding, correction) {
|
|
125
|
+
try {
|
|
126
|
+
await fetch(`${this.baseUrl}/remember`, {
|
|
127
|
+
method: 'POST',
|
|
128
|
+
headers: { 'Content-Type': 'application/json' },
|
|
129
|
+
body: JSON.stringify({
|
|
130
|
+
category: 'correction',
|
|
131
|
+
content: correction,
|
|
132
|
+
project_id: this.projectId,
|
|
133
|
+
source: 'testteam',
|
|
134
|
+
tags: ['correction', `agent-${agentId}`],
|
|
135
|
+
confidence: 1.0,
|
|
136
|
+
meta: {
|
|
137
|
+
agentId,
|
|
138
|
+
originalFinding,
|
|
139
|
+
},
|
|
140
|
+
}),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
// Graceful
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/** Recall stored findings matching a query. */
|
|
148
|
+
async recallFindings(query, limit = 20) {
|
|
149
|
+
try {
|
|
150
|
+
const res = await fetch(`${this.baseUrl}/recall`, {
|
|
151
|
+
method: 'POST',
|
|
152
|
+
headers: { 'Content-Type': 'application/json' },
|
|
153
|
+
body: JSON.stringify({
|
|
154
|
+
query,
|
|
155
|
+
project_id: this.projectId,
|
|
156
|
+
limit,
|
|
157
|
+
}),
|
|
158
|
+
});
|
|
159
|
+
const json = (await res.json());
|
|
160
|
+
return json.data ?? [];
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/** Recall all stored corrections. */
|
|
167
|
+
async recallCorrections() {
|
|
168
|
+
try {
|
|
169
|
+
const res = await fetch(`${this.baseUrl}/recall`, {
|
|
170
|
+
method: 'POST',
|
|
171
|
+
headers: { 'Content-Type': 'application/json' },
|
|
172
|
+
body: JSON.stringify({
|
|
173
|
+
query: 'correction',
|
|
174
|
+
project_id: this.projectId,
|
|
175
|
+
limit: 100,
|
|
176
|
+
}),
|
|
177
|
+
});
|
|
178
|
+
const json = (await res.json());
|
|
179
|
+
return json.data ?? [];
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
return [];
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** Load smart context for a message (combines corrections, rules, keyword matches). */
|
|
186
|
+
async loadContext(message) {
|
|
187
|
+
try {
|
|
188
|
+
const res = await fetch(`${this.baseUrl}/context`, {
|
|
189
|
+
method: 'POST',
|
|
190
|
+
headers: { 'Content-Type': 'application/json' },
|
|
191
|
+
body: JSON.stringify({
|
|
192
|
+
message,
|
|
193
|
+
project_id: this.projectId,
|
|
194
|
+
...(this.sessionId ? { session_id: this.sessionId } : {}),
|
|
195
|
+
}),
|
|
196
|
+
});
|
|
197
|
+
const json = (await res.json());
|
|
198
|
+
return json.data ?? null;
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/** Semantic search via TF-IDF. */
|
|
205
|
+
async searchSemantic(query, limit = 20) {
|
|
206
|
+
try {
|
|
207
|
+
const res = await fetch(`${this.baseUrl}/search`, {
|
|
208
|
+
method: 'POST',
|
|
209
|
+
headers: { 'Content-Type': 'application/json' },
|
|
210
|
+
body: JSON.stringify({ query, limit }),
|
|
211
|
+
});
|
|
212
|
+
const json = (await res.json());
|
|
213
|
+
return json.data ?? [];
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/** Get the current session ID (if a session has been started). */
|
|
220
|
+
getSessionId() {
|
|
221
|
+
return this.sessionId;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=total-recall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"total-recall.js","sourceRoot":"","sources":["../../clients/total-recall.ts"],"names":[],"mappings":"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"}
|
package/dist/core/cli.d.ts
CHANGED
|
@@ -4,6 +4,9 @@ interface ParsedArgs {
|
|
|
4
4
|
dryRun: boolean;
|
|
5
5
|
agent: number | null;
|
|
6
6
|
configPath: string;
|
|
7
|
+
recallQuery: string | null;
|
|
8
|
+
reputation: boolean;
|
|
9
|
+
coaching: string | null;
|
|
7
10
|
}
|
|
8
11
|
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
9
12
|
export declare function main(argv?: string[]): Promise<number>;
|
package/dist/core/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../core/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAgC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../core/cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAgC,MAAM,SAAS,CAAC;AAcnE,UAAU,UAAU;IAClB,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAmBD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAoEpD;AAuBD,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmNzE"}
|
package/dist/core/cli.js
CHANGED
|
@@ -3,6 +3,8 @@ import { Orchestrator } from './orchestrator';
|
|
|
3
3
|
import { registerAllAgents } from '../agents/registry';
|
|
4
4
|
import { runInitWizard } from './init';
|
|
5
5
|
import { determineExitCode, writeCISummary, detectCIEnvironment } from './ci-output';
|
|
6
|
+
import { TotalRecallClient } from '../clients/total-recall';
|
|
7
|
+
import { AgentMvpClient } from '../clients/agent-mvp';
|
|
6
8
|
import * as path from 'path';
|
|
7
9
|
const PHASES = ['alpha', 'beta', 'uat', 'release'];
|
|
8
10
|
function printUsage() {
|
|
@@ -15,6 +17,9 @@ Options:
|
|
|
15
17
|
--dry-run Show dispatch plan without executing
|
|
16
18
|
--agent <id> Run a single agent by ID
|
|
17
19
|
--config <path> Path to config file (default: testteam.config.ts)
|
|
20
|
+
--recall <query> Query Total Recall memory and print results
|
|
21
|
+
--reputation Query agent reputations and print a table
|
|
22
|
+
--coaching <agentId> Query coaching flags for an agent
|
|
18
23
|
--help Show this help message
|
|
19
24
|
`.trim());
|
|
20
25
|
}
|
|
@@ -24,6 +29,9 @@ export function parseArgs(argv) {
|
|
|
24
29
|
let dryRun = false;
|
|
25
30
|
let agent = null;
|
|
26
31
|
let configPath = 'testteam.config.ts';
|
|
32
|
+
let recallQuery = null;
|
|
33
|
+
let reputation = false;
|
|
34
|
+
let coaching = null;
|
|
27
35
|
for (let i = 0; i < args.length; i++) {
|
|
28
36
|
const arg = args[i];
|
|
29
37
|
switch (arg) {
|
|
@@ -53,6 +61,25 @@ export function parseArgs(argv) {
|
|
|
53
61
|
throw new Error('--config requires a path argument');
|
|
54
62
|
}
|
|
55
63
|
break;
|
|
64
|
+
case '--recall': {
|
|
65
|
+
const value = args[++i];
|
|
66
|
+
if (!value) {
|
|
67
|
+
throw new Error('--recall requires a query argument');
|
|
68
|
+
}
|
|
69
|
+
recallQuery = value;
|
|
70
|
+
break;
|
|
71
|
+
}
|
|
72
|
+
case '--reputation':
|
|
73
|
+
reputation = true;
|
|
74
|
+
break;
|
|
75
|
+
case '--coaching': {
|
|
76
|
+
const value = args[++i];
|
|
77
|
+
if (!value) {
|
|
78
|
+
throw new Error('--coaching requires an agent ID argument');
|
|
79
|
+
}
|
|
80
|
+
coaching = value;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
56
83
|
case '--help':
|
|
57
84
|
printUsage();
|
|
58
85
|
process.exit(0);
|
|
@@ -61,7 +88,16 @@ export function parseArgs(argv) {
|
|
|
61
88
|
throw new Error(`Unknown argument: ${arg}`);
|
|
62
89
|
}
|
|
63
90
|
}
|
|
64
|
-
return { phase, dryRun, agent, configPath };
|
|
91
|
+
return { phase, dryRun, agent, configPath, recallQuery, reputation, coaching };
|
|
92
|
+
}
|
|
93
|
+
async function checkMahAvailability(baseUrl = 'http://localhost:3300') {
|
|
94
|
+
try {
|
|
95
|
+
const res = await fetch(`${baseUrl}/health`);
|
|
96
|
+
return res.ok;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
65
101
|
}
|
|
66
102
|
async function loadConfig(configPath) {
|
|
67
103
|
const absolutePath = path.resolve(configPath);
|
|
@@ -93,12 +129,61 @@ export async function main(argv = process.argv) {
|
|
|
93
129
|
printUsage();
|
|
94
130
|
return 1;
|
|
95
131
|
}
|
|
96
|
-
const { phase, dryRun, configPath } = parsed;
|
|
132
|
+
const { phase, dryRun, configPath, recallQuery, reputation, coaching } = parsed;
|
|
133
|
+
// Handle --recall: query Total Recall and exit
|
|
134
|
+
if (recallQuery) {
|
|
135
|
+
const tr = new TotalRecallClient();
|
|
136
|
+
const available = await tr.isAvailable();
|
|
137
|
+
if (!available) {
|
|
138
|
+
console.error('Total Recall is not running at http://localhost:3777');
|
|
139
|
+
return 1;
|
|
140
|
+
}
|
|
141
|
+
const results = await tr.recallFindings(recallQuery);
|
|
142
|
+
console.log(JSON.stringify(results, null, 2));
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
// Handle --coaching: query Agent-MVP coaching flags for a specific agent and exit
|
|
146
|
+
if (coaching) {
|
|
147
|
+
const mvp = new AgentMvpClient();
|
|
148
|
+
const mvpAvailable = await mvp.isAvailable();
|
|
149
|
+
if (!mvpAvailable) {
|
|
150
|
+
console.error('Agent-MVP is not running at http://localhost:3200');
|
|
151
|
+
return 1;
|
|
152
|
+
}
|
|
153
|
+
const flags = await mvp.getCoachingFlags(coaching);
|
|
154
|
+
if (flags.length > 0) {
|
|
155
|
+
console.log(JSON.stringify(flags, null, 2));
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.log(`No coaching flags for agent "${coaching}".`);
|
|
159
|
+
}
|
|
160
|
+
return 0;
|
|
161
|
+
}
|
|
162
|
+
// Handle --reputation: query Agent-MVP for all agent reputations and exit
|
|
163
|
+
if (reputation) {
|
|
164
|
+
const mvp = new AgentMvpClient();
|
|
165
|
+
const mvpAvailable = await mvp.isAvailable();
|
|
166
|
+
if (!mvpAvailable) {
|
|
167
|
+
console.error('Agent-MVP is not running at http://localhost:3200');
|
|
168
|
+
return 1;
|
|
169
|
+
}
|
|
170
|
+
const leaderboard = await mvp.getReputation('leaderboard');
|
|
171
|
+
if (leaderboard) {
|
|
172
|
+
console.log(JSON.stringify(leaderboard, null, 2));
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
console.log('No reputation data available.');
|
|
176
|
+
}
|
|
177
|
+
return 0;
|
|
178
|
+
}
|
|
97
179
|
if (!dryRun && !phase) {
|
|
98
180
|
console.error('--phase is required unless using --dry-run');
|
|
99
181
|
printUsage();
|
|
100
182
|
return 1;
|
|
101
183
|
}
|
|
184
|
+
// Startup banner
|
|
185
|
+
console.log('TestTeam v3.0.0 — Learning Agents');
|
|
186
|
+
console.log('─'.repeat(40));
|
|
102
187
|
// Load and validate config
|
|
103
188
|
let rawConfig;
|
|
104
189
|
try {
|
|
@@ -109,6 +194,33 @@ export async function main(argv = process.argv) {
|
|
|
109
194
|
return 1;
|
|
110
195
|
}
|
|
111
196
|
const config = validateConfig(rawConfig);
|
|
197
|
+
// Initialize Total Recall (optional — continues normally if unavailable)
|
|
198
|
+
const totalRecall = new TotalRecallClient();
|
|
199
|
+
const trAvailable = await totalRecall.isAvailable();
|
|
200
|
+
if (trAvailable) {
|
|
201
|
+
await totalRecall.startSession();
|
|
202
|
+
console.log('[Total Recall] Connected — findings will be stored in memory');
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
console.log('[Total Recall] Not available at http://localhost:3777 — running without memory');
|
|
206
|
+
}
|
|
207
|
+
// Initialize Agent-MVP client (optional ��� continues normally if unavailable)
|
|
208
|
+
const agentMvp = new AgentMvpClient();
|
|
209
|
+
const mvpAvailable = await agentMvp.isAvailable();
|
|
210
|
+
if (mvpAvailable) {
|
|
211
|
+
console.log('[Agent-MVP] Connected — agent scores will be reported');
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
console.log('[Agent-MVP] Not available at http://localhost:3200 — running without scoring');
|
|
215
|
+
}
|
|
216
|
+
// Check MAH availability (optional — informational only)
|
|
217
|
+
const mahAvailable = await checkMahAvailability();
|
|
218
|
+
if (mahAvailable) {
|
|
219
|
+
console.log('[MAH] Connected — multi-agent hub active');
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
console.log('[MAH] Not available at http://localhost:3300 — running without hub');
|
|
223
|
+
}
|
|
112
224
|
// Shared run directory so all phases write results to the same location.
|
|
113
225
|
// This ensures the Reporter (Agent 10, release phase) can read results
|
|
114
226
|
// from prior phases (alpha, beta, uat).
|
|
@@ -118,8 +230,8 @@ export async function main(argv = process.argv) {
|
|
|
118
230
|
? [...PHASES]
|
|
119
231
|
: [phase];
|
|
120
232
|
for (const p of targetPhases) {
|
|
121
|
-
const phaseOrchestrator = new Orchestrator(config, sharedRunDir);
|
|
122
|
-
registerAllAgents(phaseOrchestrator, config, p, sharedRunDir);
|
|
233
|
+
const phaseOrchestrator = new Orchestrator(config, sharedRunDir, mvpAvailable ? agentMvp : undefined);
|
|
234
|
+
registerAllAgents(phaseOrchestrator, config, p, sharedRunDir, trAvailable ? totalRecall : undefined);
|
|
123
235
|
const plan = phaseOrchestrator.dryRun(p);
|
|
124
236
|
console.log(`\nPhase: ${p}`);
|
|
125
237
|
for (const entry of plan) {
|
|
@@ -139,8 +251,8 @@ export async function main(argv = process.argv) {
|
|
|
139
251
|
for (const p of targetPhases) {
|
|
140
252
|
console.log(`\nRunning phase: ${p}`);
|
|
141
253
|
try {
|
|
142
|
-
const phaseOrchestrator = new Orchestrator(config, sharedRunDir);
|
|
143
|
-
registerAllAgents(phaseOrchestrator, config, p, sharedRunDir);
|
|
254
|
+
const phaseOrchestrator = new Orchestrator(config, sharedRunDir, mvpAvailable ? agentMvp : undefined);
|
|
255
|
+
registerAllAgents(phaseOrchestrator, config, p, sharedRunDir, trAvailable ? totalRecall : undefined);
|
|
144
256
|
const result = await phaseOrchestrator.runPhase(p);
|
|
145
257
|
if (result.skippedAgents.length > 0) {
|
|
146
258
|
console.log(` Skipped agents: ${result.skippedAgents.join(', ')}`);
|
|
@@ -164,6 +276,10 @@ export async function main(argv = process.argv) {
|
|
|
164
276
|
hadError = true;
|
|
165
277
|
}
|
|
166
278
|
}
|
|
279
|
+
// Close Total Recall session
|
|
280
|
+
if (trAvailable) {
|
|
281
|
+
await totalRecall.endSession().catch(() => { });
|
|
282
|
+
}
|
|
167
283
|
// Determine structured exit code:
|
|
168
284
|
// - 0: All gates passed, no advisory failures
|
|
169
285
|
// - 1: Blocking agent failures (or runtime errors)
|
package/dist/core/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../core/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../core/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { BaseAgent } from '../agents/base-agent';
|
|
|
4
4
|
import type { HealthCheck } from './health-check';
|
|
5
5
|
import { CostTracker } from './cost-tracker';
|
|
6
6
|
import type { LicenseTier } from './license';
|
|
7
|
+
import type { AgentMvpClient } from '../clients/agent-mvp';
|
|
7
8
|
export interface DispatchPlanEntry {
|
|
8
9
|
agentId: number;
|
|
9
10
|
status: 'scheduled' | 'disabled' | 'unregistered';
|
|
@@ -19,12 +20,13 @@ export declare class Orchestrator {
|
|
|
19
20
|
private readonly agents;
|
|
20
21
|
private readonly healthChecks;
|
|
21
22
|
private runDir;
|
|
23
|
+
private readonly agentMvpClient;
|
|
22
24
|
/**
|
|
23
25
|
* License tier resolver — injectable for testing.
|
|
24
26
|
* Defaults to `getLicenseTier()` from the license module.
|
|
25
27
|
*/
|
|
26
28
|
_getLicenseTier: () => LicenseTier;
|
|
27
|
-
constructor(config: ValidatedConfig, runDir?: string);
|
|
29
|
+
constructor(config: ValidatedConfig, runDir?: string, agentMvpClient?: AgentMvpClient);
|
|
28
30
|
/** Register an agent instance for a given agent ID. */
|
|
29
31
|
registerAgent(agentId: number, agent: BaseAgent): void;
|
|
30
32
|
/** Register health checks to run before agent dispatch. */
|
|
@@ -42,6 +44,13 @@ export declare class Orchestrator {
|
|
|
42
44
|
* Iterates up to MAX_FIX_LOOP_ITERATIONS times to prevent infinite heal/fix loops.
|
|
43
45
|
*/
|
|
44
46
|
private runFixLoop;
|
|
47
|
+
/**
|
|
48
|
+
* After a phase completes, send scoring events to Agent-MVP for each agent
|
|
49
|
+
* that produced results. Passed agents receive +1.0, failed agents receive -0.5.
|
|
50
|
+
*/
|
|
51
|
+
private scoreAgentsInMvp;
|
|
52
|
+
/** Determine the worst (most severe) finding severity from a list. */
|
|
53
|
+
private pickWorstSeverity;
|
|
45
54
|
/** Get the run directory path. */
|
|
46
55
|
getRunDir(): string;
|
|
47
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAW,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAW,MAAM,SAAS,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,OAAO,KAAK,EAAE,cAAc,EAAmB,MAAM,sBAAsB,CAAC;AAwB5E,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,CAAC;CACnD;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAiBD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IAEvD;;;OAGG;IACH,eAAe,EAAE,MAAM,WAAW,CAA0B;gBAEhD,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc;IAMrF,uDAAuD;IACvD,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI;IAItD,2DAA2D;IAC3D,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI;IAIjD,uEAAuE;IACvE,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,iBAAiB,EAAE;IAazC,qFAAqF;IAC/E,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;IAyLrD;;;;;;;OAOG;YACW,UAAU;IAwDxB;;;OAGG;YACW,gBAAgB;IAmC9B,sEAAsE;IACtE,OAAO,CAAC,iBAAiB;IAyBzB,kCAAkC;IAClC,SAAS,IAAI,MAAM;CAGpB"}
|
|
@@ -43,14 +43,16 @@ export class Orchestrator {
|
|
|
43
43
|
agents = new Map();
|
|
44
44
|
healthChecks = [];
|
|
45
45
|
runDir;
|
|
46
|
+
agentMvpClient;
|
|
46
47
|
/**
|
|
47
48
|
* License tier resolver — injectable for testing.
|
|
48
49
|
* Defaults to `getLicenseTier()` from the license module.
|
|
49
50
|
*/
|
|
50
51
|
_getLicenseTier = () => getLicenseTier();
|
|
51
|
-
constructor(config, runDir) {
|
|
52
|
+
constructor(config, runDir, agentMvpClient) {
|
|
52
53
|
this.config = config;
|
|
53
54
|
this.runDir = runDir ?? path.join(process.cwd(), '.run', `run-${Date.now()}`);
|
|
55
|
+
this.agentMvpClient = agentMvpClient ?? null;
|
|
54
56
|
}
|
|
55
57
|
/** Register an agent instance for a given agent ID. */
|
|
56
58
|
registerAgent(agentId, agent) {
|
|
@@ -228,6 +230,8 @@ export class Orchestrator {
|
|
|
228
230
|
// Step 6: Evaluate the phase gate
|
|
229
231
|
const scheduledForPhase = new Set(PHASE_DISPATCH[phase]);
|
|
230
232
|
const gate = evaluateGate(phase, this.config.agentClassification, agentResults, this.config.disabledAgentSet, scheduledForPhase);
|
|
233
|
+
// Step 7: Score agents in Agent-MVP (if connected)
|
|
234
|
+
await this.scoreAgentsInMvp(phase, agentResults);
|
|
231
235
|
return { gate, agentResults, skippedAgents, costTracker };
|
|
232
236
|
}
|
|
233
237
|
/**
|
|
@@ -285,6 +289,61 @@ export class Orchestrator {
|
|
|
285
289
|
return;
|
|
286
290
|
}
|
|
287
291
|
}
|
|
292
|
+
/**
|
|
293
|
+
* After a phase completes, send scoring events to Agent-MVP for each agent
|
|
294
|
+
* that produced results. Passed agents receive +1.0, failed agents receive -0.5.
|
|
295
|
+
*/
|
|
296
|
+
async scoreAgentsInMvp(phase, agentResults) {
|
|
297
|
+
if (!this.agentMvpClient)
|
|
298
|
+
return;
|
|
299
|
+
const events = [];
|
|
300
|
+
for (const [agentId, result] of Object.entries(agentResults)) {
|
|
301
|
+
if (result.status === 'skipped')
|
|
302
|
+
continue;
|
|
303
|
+
const isPassed = result.status === 'passed';
|
|
304
|
+
const findingsCount = result.findings.length;
|
|
305
|
+
const worstSeverity = this.pickWorstSeverity(result.findings);
|
|
306
|
+
events.push({
|
|
307
|
+
agent_id: `agent-${agentId}`,
|
|
308
|
+
task_type: result.agentName,
|
|
309
|
+
outcome: isPassed ? 'success' : 'failure',
|
|
310
|
+
score_delta: isPassed ? 1.0 : -0.5,
|
|
311
|
+
phase,
|
|
312
|
+
findings_count: findingsCount > 0 ? findingsCount : undefined,
|
|
313
|
+
finding_severity: worstSeverity ?? undefined,
|
|
314
|
+
});
|
|
315
|
+
}
|
|
316
|
+
if (events.length > 0) {
|
|
317
|
+
try {
|
|
318
|
+
await this.agentMvpClient.scoreAgents(events);
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
// Graceful -- Agent-MVP scoring is non-critical
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
/** Determine the worst (most severe) finding severity from a list. */
|
|
326
|
+
pickWorstSeverity(findings) {
|
|
327
|
+
if (findings.length === 0)
|
|
328
|
+
return null;
|
|
329
|
+
const rank = {
|
|
330
|
+
critical: 5,
|
|
331
|
+
high: 4,
|
|
332
|
+
medium: 3,
|
|
333
|
+
low: 2,
|
|
334
|
+
info: 1,
|
|
335
|
+
};
|
|
336
|
+
let worst = null;
|
|
337
|
+
let worstRank = 0;
|
|
338
|
+
for (const finding of findings) {
|
|
339
|
+
const currentRank = rank[finding.severity] ?? 0;
|
|
340
|
+
if (currentRank > worstRank) {
|
|
341
|
+
worstRank = currentRank;
|
|
342
|
+
worst = finding.severity;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return worst;
|
|
346
|
+
}
|
|
288
347
|
/** Get the run directory path. */
|
|
289
348
|
getRunDir() {
|
|
290
349
|
return this.runDir;
|