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/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
- export function hasProgressData(input) {
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('and `RECOMMENDATIONS.md` for what to do next.');
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: Follow recommendations');
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 and adjust recommendations');
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