agentblueprint 0.6.28 → 0.6.31
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/__tests__/cli.test.js +8 -0
- package/dist/__tests__/cli.test.js.map +1 -1
- package/dist/__tests__/mcp-setup.test.d.ts +1 -0
- package/dist/__tests__/mcp-setup.test.js +214 -0
- package/dist/__tests__/mcp-setup.test.js.map +1 -0
- package/dist/__tests__/renderers.test.js +7 -118
- package/dist/__tests__/renderers.test.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/download.d.ts +1 -0
- package/dist/download.js +9 -2
- package/dist/download.js.map +1 -1
- package/dist/mcp-setup.d.ts +8 -0
- package/dist/mcp-setup.js +137 -0
- package/dist/mcp-setup.js.map +1 -0
- package/dist/renderers.d.ts +0 -1
- package/dist/renderers.js +4 -131
- package/dist/renderers.js.map +1 -1
- package/package.json +1 -1
package/dist/renderers.js
CHANGED
|
@@ -1145,7 +1145,7 @@ function hasImplementationData(input) {
|
|
|
1145
1145
|
const agents = arr(sd.agents);
|
|
1146
1146
|
return agents.some((a) => str(rec(a).status) !== 'not_started');
|
|
1147
1147
|
}
|
|
1148
|
-
|
|
1148
|
+
function hasProgressData(input) {
|
|
1149
1149
|
if (!input.progress)
|
|
1150
1150
|
return false;
|
|
1151
1151
|
return input.progress.actuals.length > 0;
|
|
@@ -1268,121 +1268,6 @@ function buildCurrentState(input) {
|
|
|
1268
1268
|
}
|
|
1269
1269
|
return lines.join('\n');
|
|
1270
1270
|
}
|
|
1271
|
-
// =============================================================================
|
|
1272
|
-
// RECOMMENDATIONS.md (new file on return visits)
|
|
1273
|
-
// =============================================================================
|
|
1274
|
-
function buildRecommendations(input) {
|
|
1275
|
-
const lines = [];
|
|
1276
|
-
lines.push('# Recommendations', '');
|
|
1277
|
-
lines.push('> Prioritized next actions based on implementation state and performance data.', '');
|
|
1278
|
-
let recNum = 0;
|
|
1279
|
-
const bp = rec(input.blueprintData);
|
|
1280
|
-
const team = arr(bp.enhancedDigitalTeam);
|
|
1281
|
-
const bc = rec(input.businessCaseData);
|
|
1282
|
-
// --- Section 1: Unimplemented agents ---
|
|
1283
|
-
if (hasImplementationData(input)) {
|
|
1284
|
-
const sd = rec(input.implementationState.stateData);
|
|
1285
|
-
const stateAgents = arr(sd.agents);
|
|
1286
|
-
const unimplemented = [];
|
|
1287
|
-
for (const sa of stateAgents) {
|
|
1288
|
-
const a = rec(sa);
|
|
1289
|
-
const status = str(a.status);
|
|
1290
|
-
if (status === 'implemented' || status === 'modified' || status === 'skipped')
|
|
1291
|
-
continue;
|
|
1292
|
-
const name = str(a.name);
|
|
1293
|
-
const bpAgent = team.find((t) => str(rec(t).name).toLowerCase().trim() === name.toLowerCase().trim());
|
|
1294
|
-
const role = bpAgent ? str(rec(bpAgent).role) || str(rec(bpAgent).agentRole) : '-';
|
|
1295
|
-
unimplemented.push({ name, role, status });
|
|
1296
|
-
}
|
|
1297
|
-
if (unimplemented.length > 0) {
|
|
1298
|
-
lines.push('## Next Agents to Implement', '');
|
|
1299
|
-
for (const agent of unimplemented) {
|
|
1300
|
-
recNum++;
|
|
1301
|
-
const statusLabel = agent.status === 'in_progress' ? ' (in progress)' : '';
|
|
1302
|
-
lines.push(`### ${recNum}. ${agent.status === 'in_progress' ? 'Continue' : 'Implement'} ${agent.name}${statusLabel}`, '');
|
|
1303
|
-
lines.push(`Role: ${agent.role}`);
|
|
1304
|
-
lines.push(`Read agent spec in \`references/agent-specifications.md\`.`, '');
|
|
1305
|
-
}
|
|
1306
|
-
}
|
|
1307
|
-
}
|
|
1308
|
-
// --- Section 2: Metric deviations ---
|
|
1309
|
-
if (hasProgressData(input)) {
|
|
1310
|
-
const progress = input.progress;
|
|
1311
|
-
const deviating = progress.actuals
|
|
1312
|
-
.filter(a => a.status === 'major_deviation' || a.status === 'minor_deviation')
|
|
1313
|
-
.sort((a, b) => {
|
|
1314
|
-
// Major before minor
|
|
1315
|
-
if (a.status !== b.status)
|
|
1316
|
-
return a.status === 'major_deviation' ? -1 : 1;
|
|
1317
|
-
// Then by absolute deviation descending
|
|
1318
|
-
const absA = Math.abs(a.deviationPercent ?? 0);
|
|
1319
|
-
const absB = Math.abs(b.deviationPercent ?? 0);
|
|
1320
|
-
return absB - absA;
|
|
1321
|
-
});
|
|
1322
|
-
if (deviating.length > 0) {
|
|
1323
|
-
lines.push('## Metrics Requiring Attention', '');
|
|
1324
|
-
for (const metric of deviating) {
|
|
1325
|
-
recNum++;
|
|
1326
|
-
const devPct = metric.deviationPercent != null ? `${metric.deviationPercent > 0 ? '+' : ''}${metric.deviationPercent.toFixed(1)}%` : '-';
|
|
1327
|
-
lines.push(`### ${recNum}. Address ${metric.metricName} deviation`, '');
|
|
1328
|
-
lines.push(`Target: ${metric.predictedValue} | Actual: ${metric.actualValue} | Deviation: ${devPct}`);
|
|
1329
|
-
lines.push(`Status: ${metric.status}`);
|
|
1330
|
-
// Financial context
|
|
1331
|
-
const quantifiedROI = rec(rec(bc.benefits).quantifiedROI);
|
|
1332
|
-
if (metric.metricType === 'financial' && str(quantifiedROI.roi)) {
|
|
1333
|
-
lines.push(`Financial impact: This metric is tracked against the projected ${str(quantifiedROI.roi)} ROI in the business case.`);
|
|
1334
|
-
}
|
|
1335
|
-
else if (str(quantifiedROI.roi)) {
|
|
1336
|
-
const annualSavings = str(rec(rec(quantifiedROI.laborCostDetail).projectedSavings).costSavingsAnnual);
|
|
1337
|
-
if (annualSavings) {
|
|
1338
|
-
lines.push(`Financial context: Operational metrics drive the projected ${annualSavings} annual savings in the business case.`);
|
|
1339
|
-
}
|
|
1340
|
-
}
|
|
1341
|
-
lines.push('');
|
|
1342
|
-
}
|
|
1343
|
-
}
|
|
1344
|
-
}
|
|
1345
|
-
// --- Section 3: Spec deviations ---
|
|
1346
|
-
if (hasImplementationData(input)) {
|
|
1347
|
-
const sd = rec(input.implementationState.stateData);
|
|
1348
|
-
const stateAgents = arr(sd.agents);
|
|
1349
|
-
const agentsWithDeviations = stateAgents
|
|
1350
|
-
.map((a) => rec(a))
|
|
1351
|
-
.filter(a => arr(a.deviations).length > 0);
|
|
1352
|
-
if (agentsWithDeviations.length > 0) {
|
|
1353
|
-
lines.push('## Deviations to Review', '');
|
|
1354
|
-
for (const agent of agentsWithDeviations) {
|
|
1355
|
-
recNum++;
|
|
1356
|
-
const name = str(agent.name);
|
|
1357
|
-
const bpAgent = team.find((t) => str(rec(t).name).toLowerCase().trim() === name.toLowerCase().trim());
|
|
1358
|
-
const role = bpAgent ? str(rec(bpAgent).role) || str(rec(bpAgent).agentRole) : '-';
|
|
1359
|
-
lines.push(`### ${recNum}. Review deviations: ${name}`, '');
|
|
1360
|
-
lines.push(`Planned role: ${role}`, '');
|
|
1361
|
-
for (const d of arr(agent.deviations)) {
|
|
1362
|
-
lines.push(`- ${str(d)}`);
|
|
1363
|
-
}
|
|
1364
|
-
lines.push('');
|
|
1365
|
-
lines.push('Check if these deviations affect the agent\'s success metrics in `references/evaluation-criteria.md`.', '');
|
|
1366
|
-
}
|
|
1367
|
-
}
|
|
1368
|
-
}
|
|
1369
|
-
// --- Section 4: Financial impact note ---
|
|
1370
|
-
if (hasProgressData(input)) {
|
|
1371
|
-
const progress = input.progress;
|
|
1372
|
-
const deviationCount = progress.summary.minorDeviation + progress.summary.majorDeviation;
|
|
1373
|
-
const quantifiedROI = rec(rec(bc.benefits).quantifiedROI);
|
|
1374
|
-
if (deviationCount > 0 && str(quantifiedROI.roi)) {
|
|
1375
|
-
lines.push('## Financial Impact Note', '');
|
|
1376
|
-
const payback = str(quantifiedROI.paybackPeriod);
|
|
1377
|
-
lines.push(`${deviationCount} metric${deviationCount > 1 ? 's are' : ' is'} deviating from targets. The business case projected ${str(quantifiedROI.roi)} ROI${payback ? ` and ${payback} payback period` : ''}.`);
|
|
1378
|
-
lines.push('Track whether deviations affect these projections using Agent Blueprint\'s performance monitoring.', '');
|
|
1379
|
-
}
|
|
1380
|
-
}
|
|
1381
|
-
if (recNum === 0) {
|
|
1382
|
-
lines.push('All agents implemented and metrics on track. No action items at this time.', '');
|
|
1383
|
-
}
|
|
1384
|
-
return lines.join('\n');
|
|
1385
|
-
}
|
|
1386
1271
|
function buildEvaluationCriteria(input) {
|
|
1387
1272
|
const { blueprintData, businessCaseData } = input;
|
|
1388
1273
|
const bp = rec(blueprintData);
|
|
@@ -1583,7 +1468,7 @@ function buildGettingStartedReturnVisit(input) {
|
|
|
1583
1468
|
lines.push('');
|
|
1584
1469
|
lines.push('YOU ARE CONTINUING AN IMPLEMENTATION. Implementation state has been synced');
|
|
1585
1470
|
lines.push('back to Agent Blueprint. Read `CURRENT-STATE.md` for where things stand');
|
|
1586
|
-
lines.push('
|
|
1471
|
+
lines.push('for where things stand.');
|
|
1587
1472
|
lines.push('');
|
|
1588
1473
|
lines.push('## Current status');
|
|
1589
1474
|
lines.push('');
|
|
@@ -1623,15 +1508,7 @@ function buildGettingStartedReturnVisit(input) {
|
|
|
1623
1508
|
lines.push('- Performance against targets (if metrics have been reported)');
|
|
1624
1509
|
lines.push('');
|
|
1625
1510
|
// Step 2
|
|
1626
|
-
lines.push('## Step 2:
|
|
1627
|
-
lines.push('');
|
|
1628
|
-
lines.push('Read `RECOMMENDATIONS.md` for prioritized next actions:');
|
|
1629
|
-
lines.push('- Agents to implement next');
|
|
1630
|
-
lines.push('- Metrics that need attention (deviations from targets)');
|
|
1631
|
-
lines.push('- Deviations from spec that warrant review');
|
|
1632
|
-
lines.push('');
|
|
1633
|
-
// Step 3
|
|
1634
|
-
lines.push('## Step 3: Continue implementation');
|
|
1511
|
+
lines.push('## Step 2: Continue implementation');
|
|
1635
1512
|
lines.push('');
|
|
1636
1513
|
if (inProgressNames.length > 0) {
|
|
1637
1514
|
lines.push(`Agent${inProgressNames.length > 1 ? 's' : ''} in progress: ${inProgressNames.join(', ')}. Pick up where you left off.`);
|
|
@@ -2452,12 +2329,11 @@ function buildAgentsMd(input) {
|
|
|
2452
2329
|
lines.push('When you deviate from the spec (different tool, different approach, skipped an agent):');
|
|
2453
2330
|
lines.push('1. Update the agent\'s `deviations` array in implementation-state.yaml');
|
|
2454
2331
|
lines.push('2. Include a brief reason (e.g., "Used Flow Designer instead of Workflow -- better parallel support")');
|
|
2455
|
-
lines.push('3. Sync so Agent Blueprint can track spec drift
|
|
2332
|
+
lines.push('3. Sync so Agent Blueprint can track spec drift');
|
|
2456
2333
|
lines.push('');
|
|
2457
2334
|
lines.push('## Why this matters');
|
|
2458
2335
|
lines.push('');
|
|
2459
2336
|
lines.push('Each sync creates a versioned snapshot. Agent Blueprint uses your progress to:');
|
|
2460
|
-
lines.push('- Generate prioritized next-step recommendations');
|
|
2461
2337
|
lines.push('- Track spec drift and surface deviations that need attention');
|
|
2462
2338
|
lines.push('- Compare actual performance against predicted targets');
|
|
2463
2339
|
lines.push('- Improve future blueprints based on real-world outcomes');
|
|
@@ -2563,9 +2439,6 @@ export function renderSkillDirectory(input) {
|
|
|
2563
2439
|
if (hasImplementationData(input)) {
|
|
2564
2440
|
files.set('CURRENT-STATE.md', buildCurrentState(input));
|
|
2565
2441
|
}
|
|
2566
|
-
if (hasImplementationData(input) || hasProgressData(input)) {
|
|
2567
|
-
files.set('RECOMMENDATIONS.md', buildRecommendations(input));
|
|
2568
|
-
}
|
|
2569
2442
|
return files;
|
|
2570
2443
|
}
|
|
2571
2444
|
//# sourceMappingURL=renderers.js.map
|