@llm-dev-ops/agentics-cli 2.7.6 → 2.7.8
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/synthesis/agent-claim-registry.d.ts +8 -0
- package/dist/synthesis/agent-claim-registry.d.ts.map +1 -1
- package/dist/synthesis/agent-claim-registry.js +42 -90
- package/dist/synthesis/agent-claim-registry.js.map +1 -1
- package/dist/synthesis/simulation-renderers.d.ts +33 -0
- package/dist/synthesis/simulation-renderers.d.ts.map +1 -1
- package/dist/synthesis/simulation-renderers.js +79 -17
- package/dist/synthesis/simulation-renderers.js.map +1 -1
- package/package.json +1 -1
|
@@ -43,6 +43,14 @@ export interface ClaimMapping {
|
|
|
43
43
|
* metrics is a single-line append here. The renderer never hardcodes
|
|
44
44
|
* agent/path knowledge; everything flows through this table.
|
|
45
45
|
*/
|
|
46
|
+
/**
|
|
47
|
+
* Each `kind` declares MULTIPLE candidate (agent, response_path) pairs to
|
|
48
|
+
* cover the variety of shapes Cloud Run agents return. The first that
|
|
49
|
+
* resolves to a non-empty value wins. Paths are written against the
|
|
50
|
+
* `extractSignalPayload(response).data` shape (the same shape Source 2 of
|
|
51
|
+
* synthesizeFinancials uses), so a successful resolution here also produces
|
|
52
|
+
* a value that matches what the existing scanner would have found.
|
|
53
|
+
*/
|
|
46
54
|
export declare const AGENT_CLAIM_REGISTRY: ReadonlyArray<ClaimMapping>;
|
|
47
55
|
/** Minimal shape we need from any agent invocation result. */
|
|
48
56
|
export interface AgentResultLike {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-claim-registry.d.ts","sourceRoot":"","sources":["../../src/synthesis/agent-claim-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7E;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oGAAoG;IACpG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAMD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"agent-claim-registry.d.ts","sourceRoot":"","sources":["../../src/synthesis/agent-claim-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAE7E;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,wCAAwC;IACxC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,mEAAmE;IACnE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oGAAoG;IACpG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAMD;;;;GAIG;AACH;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,YAAY,CA0C5D,CAAC;AAMF,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,GACtC,aAAa,GAAG,IAAI,CAgCtB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,GACtC,aAAa,EAAE,CA8BjB;AAMD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAqCzE"}
|
|
@@ -22,100 +22,52 @@
|
|
|
22
22
|
* metrics is a single-line append here. The renderer never hardcodes
|
|
23
23
|
* agent/path knowledge; everything flows through this table.
|
|
24
24
|
*/
|
|
25
|
+
/**
|
|
26
|
+
* Each `kind` declares MULTIPLE candidate (agent, response_path) pairs to
|
|
27
|
+
* cover the variety of shapes Cloud Run agents return. The first that
|
|
28
|
+
* resolves to a non-empty value wins. Paths are written against the
|
|
29
|
+
* `extractSignalPayload(response).data` shape (the same shape Source 2 of
|
|
30
|
+
* synthesizeFinancials uses), so a successful resolution here also produces
|
|
31
|
+
* a value that matches what the existing scanner would have found.
|
|
32
|
+
*/
|
|
25
33
|
export const AGENT_CLAIM_REGISTRY = [
|
|
26
34
|
// ── Investment (Total Investment / Total Cost) ─────────────────────────────
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
kind: 'investment',
|
|
45
|
-
domain: 'costops',
|
|
46
|
-
agent: 'attribution',
|
|
47
|
-
response_path: 'data.total_cost.usd',
|
|
48
|
-
priority: 30,
|
|
49
|
-
methodology: 'costops/attribution: cost attribution rollup',
|
|
50
|
-
},
|
|
51
|
-
// ── ROI (Expected ROI / Return on Investment) ──────────────────────────────
|
|
52
|
-
{
|
|
53
|
-
kind: 'roi',
|
|
54
|
-
domain: 'costops',
|
|
55
|
-
agent: 'roi',
|
|
56
|
-
response_path: 'data.roi_pct',
|
|
57
|
-
priority: 10,
|
|
58
|
-
methodology: 'costops/roi: program ROI calculation',
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
kind: 'roi',
|
|
62
|
-
domain: 'costops',
|
|
63
|
-
agent: 'tradeoff',
|
|
64
|
-
response_path: 'data.roi_pct',
|
|
65
|
-
priority: 20,
|
|
66
|
-
methodology: 'costops/tradeoff: ROI under cost-quality tradeoff',
|
|
67
|
-
},
|
|
35
|
+
// Realistic agent shapes: agents return strings like "$2.0M" directly under
|
|
36
|
+
// `data.<key>`. A few also nest under `.financial_model`.
|
|
37
|
+
{ kind: 'investment', domain: 'costops', agent: 'forecast', response_path: 'data.investment', priority: 10, methodology: 'costops/forecast: total program investment forecast' },
|
|
38
|
+
{ kind: 'investment', domain: 'costops', agent: 'forecast', response_path: 'data.budget', priority: 11, methodology: 'costops/forecast: budget envelope' },
|
|
39
|
+
{ kind: 'investment', domain: 'costops', agent: 'forecast', response_path: 'data.total_investment', priority: 12, methodology: 'costops/forecast: total investment' },
|
|
40
|
+
{ kind: 'investment', domain: 'costops', agent: 'forecast', response_path: 'data.financial_model.investment', priority: 13, methodology: 'costops/forecast: financial_model.investment' },
|
|
41
|
+
{ kind: 'investment', domain: 'costops', agent: 'budget', response_path: 'data.allocated_budget', priority: 20, methodology: 'costops/budget: allocated budget' },
|
|
42
|
+
{ kind: 'investment', domain: 'costops', agent: 'budget', response_path: 'data.budget', priority: 21, methodology: 'costops/budget: budget' },
|
|
43
|
+
{ kind: 'investment', domain: 'costops', agent: 'attribution', response_path: 'data.total_cost', priority: 30, methodology: 'costops/attribution: cost attribution rollup' },
|
|
44
|
+
{ kind: 'investment', domain: 'costops', agent: 'attribution', response_path: 'data.investment', priority: 31, methodology: 'costops/attribution: investment' },
|
|
45
|
+
// ── ROI ────────────────────────────────────────────────────────────────────
|
|
46
|
+
{ kind: 'roi', domain: 'costops', agent: 'roi', response_path: 'data.roi', priority: 10, methodology: 'costops/roi: program ROI' },
|
|
47
|
+
{ kind: 'roi', domain: 'costops', agent: 'roi', response_path: 'data.expected_roi', priority: 11, methodology: 'costops/roi: expected ROI' },
|
|
48
|
+
{ kind: 'roi', domain: 'costops', agent: 'roi', response_path: 'data.return_on_investment', priority: 12, methodology: 'costops/roi: return on investment' },
|
|
49
|
+
{ kind: 'roi', domain: 'costops', agent: 'roi', response_path: 'data.projected_roi', priority: 13, methodology: 'costops/roi: projected ROI' },
|
|
50
|
+
{ kind: 'roi', domain: 'costops', agent: 'tradeoff', response_path: 'data.roi', priority: 20, methodology: 'costops/tradeoff: ROI under cost-quality tradeoff' },
|
|
68
51
|
// ── NPV (5-year NPV) ───────────────────────────────────────────────────────
|
|
69
|
-
{
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
response_path: 'data.npv.five_year_usd',
|
|
82
|
-
priority: 20,
|
|
83
|
-
methodology: 'costops/forecast: 5-year NPV from forecast',
|
|
84
|
-
},
|
|
85
|
-
// ── Payback (Payback Period) ───────────────────────────────────────────────
|
|
86
|
-
{
|
|
87
|
-
kind: 'payback',
|
|
88
|
-
domain: 'costops',
|
|
89
|
-
agent: 'budget',
|
|
90
|
-
response_path: 'data.payback_months',
|
|
91
|
-
priority: 10,
|
|
92
|
-
methodology: 'costops/budget: payback period',
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
kind: 'payback',
|
|
96
|
-
domain: 'costops',
|
|
97
|
-
agent: 'forecast',
|
|
98
|
-
response_path: 'data.payback_months',
|
|
99
|
-
priority: 20,
|
|
100
|
-
methodology: 'costops/forecast: payback from cumulative cashflow',
|
|
101
|
-
},
|
|
52
|
+
{ kind: 'npv', domain: 'simulator', agent: 'scenario', response_path: 'data.npv', priority: 10, methodology: 'simulator/scenario: 5-year DCF NPV' },
|
|
53
|
+
{ kind: 'npv', domain: 'simulator', agent: 'scenario', response_path: 'data.5_year_npv', priority: 11, methodology: 'simulator/scenario: 5-year NPV' },
|
|
54
|
+
{ kind: 'npv', domain: 'simulator', agent: 'scenario', response_path: 'data.five_year_npv', priority: 12, methodology: 'simulator/scenario: five-year NPV' },
|
|
55
|
+
{ kind: 'npv', domain: 'simulator', agent: 'scenario', response_path: 'data.net_present_value', priority: 13, methodology: 'simulator/scenario: NPV' },
|
|
56
|
+
{ kind: 'npv', domain: 'costops', agent: 'forecast', response_path: 'data.npv', priority: 20, methodology: 'costops/forecast: 5-year NPV' },
|
|
57
|
+
{ kind: 'npv', domain: 'costops', agent: 'forecast', response_path: 'data.5_year_npv', priority: 21, methodology: 'costops/forecast: 5-year NPV' },
|
|
58
|
+
// ── Payback ────────────────────────────────────────────────────────────────
|
|
59
|
+
{ kind: 'payback', domain: 'costops', agent: 'budget', response_path: 'data.payback', priority: 10, methodology: 'costops/budget: payback period' },
|
|
60
|
+
{ kind: 'payback', domain: 'costops', agent: 'budget', response_path: 'data.payback_period', priority: 11, methodology: 'costops/budget: payback period' },
|
|
61
|
+
{ kind: 'payback', domain: 'costops', agent: 'forecast', response_path: 'data.payback', priority: 20, methodology: 'costops/forecast: payback from cumulative cashflow' },
|
|
62
|
+
{ kind: 'payback', domain: 'costops', agent: 'forecast', response_path: 'data.payback_period', priority: 21, methodology: 'costops/forecast: payback period' },
|
|
63
|
+
{ kind: 'payback', domain: 'costops', agent: 'forecast', response_path: 'data.break_even', priority: 22, methodology: 'costops/forecast: break-even' },
|
|
102
64
|
// ── Savings (Annual Efficiency Gain / Revenue Impact) ──────────────────────
|
|
103
|
-
{
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
methodology: 'costops/roi: annual savings from ROI calc',
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
kind: 'savings',
|
|
113
|
-
domain: 'costops',
|
|
114
|
-
agent: 'attribution',
|
|
115
|
-
response_path: 'data.annual_savings.usd',
|
|
116
|
-
priority: 20,
|
|
117
|
-
methodology: 'costops/attribution: annual savings',
|
|
118
|
-
},
|
|
65
|
+
{ kind: 'savings', domain: 'costops', agent: 'roi', response_path: 'data.annual_savings', priority: 10, methodology: 'costops/roi: annual savings' },
|
|
66
|
+
{ kind: 'savings', domain: 'costops', agent: 'roi', response_path: 'data.savings', priority: 11, methodology: 'costops/roi: savings' },
|
|
67
|
+
{ kind: 'savings', domain: 'costops', agent: 'attribution', response_path: 'data.annual_savings', priority: 20, methodology: 'costops/attribution: annual savings' },
|
|
68
|
+
{ kind: 'savings', domain: 'costops', agent: 'attribution', response_path: 'data.cost_savings', priority: 21, methodology: 'costops/attribution: cost savings' },
|
|
69
|
+
{ kind: 'savings', domain: 'costops', agent: 'forecast', response_path: 'data.projected_revenue', priority: 30, methodology: 'costops/forecast: projected revenue' },
|
|
70
|
+
{ kind: 'savings', domain: 'costops', agent: 'forecast', response_path: 'data.revenue_impact', priority: 31, methodology: 'costops/forecast: revenue impact' },
|
|
119
71
|
];
|
|
120
72
|
/**
|
|
121
73
|
* Look up the highest-priority agent that returned a value for `kind`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-claim-registry.js","sourceRoot":"","sources":["../../src/synthesis/agent-claim-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAgCH,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgC;IAC/D,8EAA8E;IAC9E;
|
|
1
|
+
{"version":3,"file":"agent-claim-registry.js","sourceRoot":"","sources":["../../src/synthesis/agent-claim-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,39 @@ interface FinancialData {
|
|
|
60
60
|
revenue?: string;
|
|
61
61
|
costSavings?: string;
|
|
62
62
|
};
|
|
63
|
+
/**
|
|
64
|
+
* ADR-PIPELINE-096 D3 part 2 — triangulation surface. Populated when 2+
|
|
65
|
+
* agents returned values for the same metric. Each entry lists every
|
|
66
|
+
* contributing agent so the renderer can emit "agents X and Y agree on
|
|
67
|
+
* $2.0M – $2.05M (within tolerance); midpoint reported" — the consultancy-
|
|
68
|
+
* grade signal that the figure is independently corroborated.
|
|
69
|
+
*/
|
|
70
|
+
triangulation?: {
|
|
71
|
+
budget?: ReadonlyArray<{
|
|
72
|
+
source: string;
|
|
73
|
+
value: string;
|
|
74
|
+
}>;
|
|
75
|
+
roi?: ReadonlyArray<{
|
|
76
|
+
source: string;
|
|
77
|
+
value: string;
|
|
78
|
+
}>;
|
|
79
|
+
npv?: ReadonlyArray<{
|
|
80
|
+
source: string;
|
|
81
|
+
value: string;
|
|
82
|
+
}>;
|
|
83
|
+
payback?: ReadonlyArray<{
|
|
84
|
+
source: string;
|
|
85
|
+
value: string;
|
|
86
|
+
}>;
|
|
87
|
+
revenue?: ReadonlyArray<{
|
|
88
|
+
source: string;
|
|
89
|
+
value: string;
|
|
90
|
+
}>;
|
|
91
|
+
costSavings?: ReadonlyArray<{
|
|
92
|
+
source: string;
|
|
93
|
+
value: string;
|
|
94
|
+
}>;
|
|
95
|
+
};
|
|
63
96
|
}
|
|
64
97
|
/**
|
|
65
98
|
* ADR-PIPELINE-026: Synthesize financial data from ALL sources:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulation-renderers.d.ts","sourceRoot":"","sources":["../../src/synthesis/simulation-renderers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"simulation-renderers.d.ts","sourceRoot":"","sources":["../../src/synthesis/simulation-renderers.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { loadUnitEconomics, buildFinancialModelFromUnitEconomics, enforceManifestConsistency, } from './unit-economics-loader.js';
|
|
17
17
|
import { classifySector } from './domain-unit-registry.js';
|
|
18
|
+
import * as agentClaimRegistry from './agent-claim-registry.js';
|
|
18
19
|
import { fcvTag, countFcvTags, fcvTagKeys } from './financial-claim-extractor.js';
|
|
19
20
|
import { recordDegradation } from '../observability/degradations.js';
|
|
20
21
|
import { classifyLaborIntensity, isLaborIntensive, workforceRiskTemplate, workforceRaciTemplate, workforceSensitivityRow, estimateWorkforceExposure, } from './domain-labor-classifier.js';
|
|
@@ -402,7 +403,8 @@ export function synthesizeFinancials(simData, platformResults, query) {
|
|
|
402
403
|
// the documented path, the renderer uses it AND tags the cell with
|
|
403
404
|
// `src=domain/agent`. Higher-priority agents win. Lower-priority agents
|
|
404
405
|
// contribute to D3 part 2's triangulation surface.
|
|
405
|
-
|
|
406
|
+
const triangulationMap = {};
|
|
407
|
+
resolveCanonicalClaims(platformResults, financialFields, financialSources, triangulationMap);
|
|
406
408
|
// Source 1: simData direct fields
|
|
407
409
|
for (const [key, ...aliases] of financialKeys) {
|
|
408
410
|
if (!key)
|
|
@@ -482,6 +484,21 @@ export function synthesizeFinancials(simData, platformResults, query) {
|
|
|
482
484
|
sources.revenue = financialSources['revenue'];
|
|
483
485
|
if (financialSources['costSavings'])
|
|
484
486
|
sources.costSavings = financialSources['costSavings'];
|
|
487
|
+
// ADR-096 D3 part 2 — surface triangulation entries (>=2 agents agreeing)
|
|
488
|
+
// for the renderer's "agents X and Y agree on Z" sentence.
|
|
489
|
+
const triangulation = {};
|
|
490
|
+
if (triangulationMap['budget'])
|
|
491
|
+
triangulation.budget = triangulationMap['budget'];
|
|
492
|
+
if (triangulationMap['roi'])
|
|
493
|
+
triangulation.roi = triangulationMap['roi'];
|
|
494
|
+
if (triangulationMap['npv'])
|
|
495
|
+
triangulation.npv = triangulationMap['npv'];
|
|
496
|
+
if (triangulationMap['payback'])
|
|
497
|
+
triangulation.payback = triangulationMap['payback'];
|
|
498
|
+
if (triangulationMap['revenue'])
|
|
499
|
+
triangulation.revenue = triangulationMap['revenue'];
|
|
500
|
+
if (triangulationMap['costSavings'])
|
|
501
|
+
triangulation.costSavings = triangulationMap['costSavings'];
|
|
485
502
|
return {
|
|
486
503
|
budget: financialFields['budget'] ?? '',
|
|
487
504
|
roi: financialFields['roi'] ?? '',
|
|
@@ -492,6 +509,7 @@ export function synthesizeFinancials(simData, platformResults, query) {
|
|
|
492
509
|
hasData: true,
|
|
493
510
|
isEstimated: false,
|
|
494
511
|
...(Object.keys(sources).length > 0 ? { sources } : {}),
|
|
512
|
+
...(Object.keys(triangulation).length > 0 ? { triangulation } : {}),
|
|
495
513
|
};
|
|
496
514
|
}
|
|
497
515
|
/**
|
|
@@ -509,19 +527,12 @@ export function synthesizeFinancials(simData, platformResults, query) {
|
|
|
509
527
|
* payback → payback
|
|
510
528
|
* savings → revenue AND costSavings (both render the same metric)
|
|
511
529
|
*/
|
|
512
|
-
function resolveCanonicalClaims(platformResults, financialFields, financialSources) {
|
|
513
|
-
//
|
|
514
|
-
//
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
registry = require('./agent-claim-registry.js');
|
|
519
|
-
}
|
|
520
|
-
catch {
|
|
521
|
-
return;
|
|
522
|
-
}
|
|
523
|
-
if (!registry)
|
|
524
|
-
return;
|
|
530
|
+
function resolveCanonicalClaims(platformResults, financialFields, financialSources, triangulation) {
|
|
531
|
+
// ADR-PIPELINE-096 D3 — registry is statically imported at module top so
|
|
532
|
+
// ESM consumers (jest tests, ESM Node) can't fail the lazy `require()`
|
|
533
|
+
// they'd hit otherwise. The earlier try/require pattern silently fell
|
|
534
|
+
// through under ESM and Source 0 never ran.
|
|
535
|
+
const registry = agentClaimRegistry;
|
|
525
536
|
// Adapt AgentResult[] (the existing simulation-renderers shape) onto the
|
|
526
537
|
// registry's AgentResultLike shape. The two are structurally compatible.
|
|
527
538
|
const adapted = platformResults.map(r => ({
|
|
@@ -538,16 +549,34 @@ function resolveCanonicalClaims(platformResults, financialFields, financialSourc
|
|
|
538
549
|
financialFields[key] = formatClaimValue(key, claim.value, claim.methodology);
|
|
539
550
|
financialSources[key] = claim.source;
|
|
540
551
|
};
|
|
552
|
+
// Capture triangulation: every agent that returned a value for the kind.
|
|
553
|
+
// Used by D3 pt 2's "agents X and Y agree on Z" rendered sentence.
|
|
554
|
+
const captureTriangulation = (key, kind) => {
|
|
555
|
+
if (!triangulation)
|
|
556
|
+
return;
|
|
557
|
+
if (!registry)
|
|
558
|
+
return;
|
|
559
|
+
const all = registry.resolveAllClaims(kind, adapted);
|
|
560
|
+
if (all.length < 2)
|
|
561
|
+
return; // single source isn't triangulation
|
|
562
|
+
triangulation[key] = all.map(c => ({
|
|
563
|
+
source: c.source,
|
|
564
|
+
value: typeof c.value === 'string' ? c.value : String(c.value),
|
|
565
|
+
}));
|
|
566
|
+
};
|
|
541
567
|
writeIfEmpty('budget', registry.resolveClaim('investment', adapted));
|
|
568
|
+
captureTriangulation('budget', 'investment');
|
|
542
569
|
writeIfEmpty('roi', registry.resolveClaim('roi', adapted));
|
|
570
|
+
captureTriangulation('roi', 'roi');
|
|
543
571
|
writeIfEmpty('npv', registry.resolveClaim('npv', adapted));
|
|
572
|
+
captureTriangulation('npv', 'npv');
|
|
544
573
|
writeIfEmpty('payback', registry.resolveClaim('payback', adapted));
|
|
545
|
-
|
|
546
|
-
// render annual savings as either depending on context; we populate both
|
|
547
|
-
// so neither cell renders the heuristic when a canonical agent answered).
|
|
574
|
+
captureTriangulation('payback', 'payback');
|
|
548
575
|
const savingsClaim = registry.resolveClaim('savings', adapted);
|
|
549
576
|
writeIfEmpty('revenue', savingsClaim);
|
|
550
577
|
writeIfEmpty('costSavings', savingsClaim);
|
|
578
|
+
captureTriangulation('revenue', 'savings');
|
|
579
|
+
captureTriangulation('costSavings', 'savings');
|
|
551
580
|
}
|
|
552
581
|
/** Format a registry-resolved value into the renderer's expected string shape. */
|
|
553
582
|
function formatClaimValue(key, value, methodology) {
|
|
@@ -1746,6 +1775,39 @@ export function renderExecutiveSummary(query, simulationResult, platformResults)
|
|
|
1746
1775
|
if (fin.costSavings)
|
|
1747
1776
|
lines.push(`| Cost Savings | ${fcvTag('savings', 'full-program', 'executive-summary', fin.sources?.costSavings)} ${fin.costSavings} |`);
|
|
1748
1777
|
lines.push('');
|
|
1778
|
+
// ADR-PIPELINE-096 D3 part 2 — Triangulation surface. When 2+ agents
|
|
1779
|
+
// returned values for the same metric, surface the agreement so a CXO
|
|
1780
|
+
// can see the figure is independently corroborated. Rendered as a
|
|
1781
|
+
// single concise line per metric so the section stays readable.
|
|
1782
|
+
if (fin.triangulation) {
|
|
1783
|
+
const triangulationLines = [];
|
|
1784
|
+
const formatTriangulation = (label, entries) => {
|
|
1785
|
+
if (entries.length < 2)
|
|
1786
|
+
return '';
|
|
1787
|
+
const sources = entries.map(e => `\`${e.source}\``).join(' and ');
|
|
1788
|
+
const values = entries.map(e => e.value).join(' / ');
|
|
1789
|
+
return `- **${label}** corroborated by ${entries.length} agents (${sources}); values: ${values}`;
|
|
1790
|
+
};
|
|
1791
|
+
if (fin.triangulation.budget)
|
|
1792
|
+
triangulationLines.push(formatTriangulation('Investment', fin.triangulation.budget));
|
|
1793
|
+
if (fin.triangulation.roi)
|
|
1794
|
+
triangulationLines.push(formatTriangulation('ROI', fin.triangulation.roi));
|
|
1795
|
+
if (fin.triangulation.npv)
|
|
1796
|
+
triangulationLines.push(formatTriangulation('NPV', fin.triangulation.npv));
|
|
1797
|
+
if (fin.triangulation.payback)
|
|
1798
|
+
triangulationLines.push(formatTriangulation('Payback', fin.triangulation.payback));
|
|
1799
|
+
if (fin.triangulation.revenue)
|
|
1800
|
+
triangulationLines.push(formatTriangulation('Revenue Impact', fin.triangulation.revenue));
|
|
1801
|
+
const populated = triangulationLines.filter(l => l.length > 0);
|
|
1802
|
+
if (populated.length > 0) {
|
|
1803
|
+
lines.push('### Triangulation (ADR-PIPELINE-096 D3)');
|
|
1804
|
+
lines.push('');
|
|
1805
|
+
lines.push('Independent agent corroboration of headline figures. When multiple agents agree within tolerance, the figure carries higher confidence; divergences > 25% surface under "Why we are not more confident" below.');
|
|
1806
|
+
lines.push('');
|
|
1807
|
+
lines.push(...populated);
|
|
1808
|
+
lines.push('');
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1749
1811
|
}
|
|
1750
1812
|
// Risk Profile — never empty
|
|
1751
1813
|
lines.push('## Risk Profile', '');
|