upstream-radar 0.35.0 → 0.37.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.
@@ -1 +1 @@
1
- {"version":3,"file":"upstream-observer.d.ts","sourceRoot":"","sources":["../../src/upstream-observer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upstream-observer.d.ts","sourceRoot":"","sources":["../../src/upstream-observer.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { createHash, randomUUID } from 'node:crypto';
2
2
  import { mkdir, readFile, rename, rm, writeFile } from 'node:fs/promises';
3
3
  import { spawn } from 'node:child_process';
4
4
  import { dirname, resolve } from 'node:path';
5
+ import { findReverseDependencyImpacts } from './dependency-index.js';
5
6
  import { parseNpmLockGraph, parsePnpmLockGraph } from './graph.js';
6
7
  import { parsePackageManifestSnapshot } from './inventory.js';
7
8
  import { buildUpstreamDownstreamIR, parseUpstreamDownstreamIR } from './upstream-alignment.js';
@@ -1112,6 +1113,38 @@ function graphChanges(before, after) {
1112
1113
  removedUnresolved: [...beforeUnresolved].filter(edge => !afterUnresolved.has(edge)).sort(),
1113
1114
  };
1114
1115
  }
1116
+ function addObservedPackageVersion(versions, side, name, version) {
1117
+ if (name === undefined || version === undefined || name === '' || version === '')
1118
+ return;
1119
+ const entry = versions.get(name) ?? { before: new Set(), after: new Set() };
1120
+ entry[side].add(version);
1121
+ versions.set(name, entry);
1122
+ }
1123
+ function addSnapshotPackages(versions, side, snapshot) {
1124
+ addObservedPackageVersion(versions, side, snapshot.manifest.name, snapshot.manifest.version);
1125
+ addObservedPackageVersion(versions, side, snapshot.package?.name, snapshot.package?.version);
1126
+ for (const node of snapshot.graph?.nodes ?? [])
1127
+ addObservedPackageVersion(versions, side, node.name, node.version);
1128
+ }
1129
+ /** Convert two complete snapshots into package-name changes for downstream lookup. */
1130
+ function reverseDependencyChanges(before, after) {
1131
+ const versions = new Map();
1132
+ addSnapshotPackages(versions, 'before', before);
1133
+ addSnapshotPackages(versions, 'after', after);
1134
+ return [...versions.entries()]
1135
+ .filter(([, value]) => {
1136
+ const beforeVersions = [...value.before].sort();
1137
+ const afterVersions = [...value.after].sort();
1138
+ return JSON.stringify(beforeVersions) !== JSON.stringify(afterVersions);
1139
+ })
1140
+ .map(([name, value]) => ({
1141
+ ecosystem: 'npm',
1142
+ name,
1143
+ beforeVersions: [...value.before].sort(),
1144
+ afterVersions: [...value.after].sort(),
1145
+ }))
1146
+ .sort((left, right) => left.name.localeCompare(right.name));
1147
+ }
1115
1148
  function packageChanged(before, after) {
1116
1149
  if (before.package?.name !== after.package?.name || before.package?.version !== after.package?.version)
1117
1150
  return true;
@@ -1165,10 +1198,13 @@ function meaningfulChange(sourceChange, before, after) {
1165
1198
  function createTaskId(targetId, beforeCommit, afterCommit, packageVersion, graphDigest) {
1166
1199
  return `upstream-task-${hash([targetId, beforeCommit, afterCommit, packageVersion ?? '', graphDigest ?? ''].join('\0'))}`;
1167
1200
  }
1168
- function createChange(target, before, after, sourceChange) {
1201
+ function createChange(target, before, after, sourceChange, reverseDependencyIndex) {
1169
1202
  const manifest = manifestChanges(before.manifest, after.manifest);
1170
1203
  const graph = graphChanges(before.graph, after.graph);
1171
1204
  const decision = meaningfulChange(sourceChange, before, after);
1205
+ const reverseDependencyImpacts = reverseDependencyIndex === undefined
1206
+ ? []
1207
+ : findReverseDependencyImpacts(reverseDependencyIndex, reverseDependencyChanges(before, after));
1172
1208
  const taskId = decision.meaningful
1173
1209
  ? createTaskId(target.id, before.source.commit, after.source.commit, after.package?.version, after.graph?.digest)
1174
1210
  : undefined;
@@ -1183,6 +1219,7 @@ function createChange(target, before, after, sourceChange) {
1183
1219
  ...(graph === undefined ? {} : { graph }),
1184
1220
  reasons: decision.reasons,
1185
1221
  meaningful: decision.meaningful,
1222
+ ...(reverseDependencyImpacts.length === 0 ? {} : { reverseDependencyImpacts }),
1186
1223
  ...(taskId === undefined ? {} : { taskId }),
1187
1224
  };
1188
1225
  }
@@ -1227,7 +1264,8 @@ export function renderUpstreamChangeAgentPrompt(task) {
1227
1264
  3. 如果需要项目代码证据,只读取当前项目已经存在的文件;不要为了验证结论安装包或执行上游代码。
1228
1265
  4. 区分源码变化、发布包变化、依赖图变化和模型判断。只有明确指出文件、配置、符号或“不知道缺少什么证据”,结论才算完整。
1229
1266
  5. breaking_change 只能在有明确入口、导出、DSH bundle、peer/API 或发布说明证据时判断;不因为版本号变化就直接断言。
1230
- 6. 返回严格 JSON 对象,字段只能是 impact、confidence、evidence、breaking_change、dependency_risk、recommended_action、urgency、reasoning_summary。
1267
+ 6. 如果 change_json.reverseDependencyImpacts 存在,它表示静态反向索引找到的下游插件和依赖路径;把它当作影响范围证据,不要把“可能受影响”写成“已经损坏”。
1268
+ 7. 返回严格 JSON 对象,字段只能是 impact、confidence、evidence、breaking_change、dependency_risk、recommended_action、urgency、reasoning_summary。
1231
1269
 
1232
1270
  expected_output:
1233
1271
  ${JSON.stringify(task.expectedOutput, null, 2)}
@@ -1558,7 +1596,7 @@ export async function runObserver(config, previousState, options = {}) {
1558
1596
  nonRuntimeFiles: [],
1559
1597
  }
1560
1598
  : await source.compare(current.source.repository, before.source.commit, current.source.commit);
1561
- const change = createChange(configuredTarget, before, current, sourceChange);
1599
+ const change = createChange(configuredTarget, before, current, sourceChange, options.reverseDependencyIndex);
1562
1600
  if (change.reasons.length === 0)
1563
1601
  continue;
1564
1602
  let reviewedChange = change;
@@ -1628,6 +1666,16 @@ export async function runObserver(config, previousState, options = {}) {
1628
1666
  targetsChecked: config.targets.length,
1629
1667
  baselineTargets,
1630
1668
  alignmentFindings,
1669
+ ...(options.reverseDependencyIndex === undefined ? {} : {
1670
+ reverseDependencyIndex: {
1671
+ observations: options.reverseDependencyIndex.observations,
1672
+ plugins: options.reverseDependencyIndex.plugins.length,
1673
+ dependencies: options.reverseDependencyIndex.dependencies.length,
1674
+ completeObservations: options.reverseDependencyIndex.coverage.completeObservations,
1675
+ incompleteObservations: options.reverseDependencyIndex.coverage.incompleteObservations,
1676
+ unresolvedEdges: options.reverseDependencyIndex.coverage.unresolvedEdges,
1677
+ },
1678
+ }),
1631
1679
  changes,
1632
1680
  pendingTasks: pendingTasks.map(task => task.id),
1633
1681
  pendingTaskDetails: pendingTasks.map(summarizePendingTask),
@@ -1693,6 +1741,7 @@ function summarizePendingTask(task) {
1693
1741
  removedEdges: (change.graph?.removedEdges ?? []).slice(0, 24),
1694
1742
  addedUnresolved: (change.graph?.addedUnresolved ?? []).slice(0, 24),
1695
1743
  removedUnresolved: (change.graph?.removedUnresolved ?? []).slice(0, 24),
1744
+ ...(change.reverseDependencyImpacts === undefined ? {} : { reverseDependencyImpacts: structuredClone(change.reverseDependencyImpacts) }),
1696
1745
  ...(change.artifactReview === undefined ? {} : { artifactReview: structuredClone(change.artifactReview) }),
1697
1746
  };
1698
1747
  }
@@ -1707,11 +1756,31 @@ function renderAlignment(lines, alignment, label) {
1707
1756
  lines.push(` Alignment next step: ${check.remediation}`);
1708
1757
  }
1709
1758
  }
1759
+ function renderReverseDependencyImpacts(lines, impacts, label = 'Downstream impact') {
1760
+ for (const impact of impacts.slice(0, 32)) {
1761
+ const from = impact.changedFrom.length === 0 ? 'not observed' : impact.changedFrom.join(', ');
1762
+ const to = impact.changedTo.length === 0 ? 'not observed' : impact.changedTo.join(', ');
1763
+ lines.push(`${label}: ${impact.dependency.name} (${from} → ${to}); ${impact.dependents.length}${impact.truncated ? '+' : ''} downstream plugin(s); coverage ${impact.coverage}`);
1764
+ for (const dependent of impact.dependents.slice(0, 8)) {
1765
+ const project = dependent.project === undefined ? '' : ` [${dependent.project.name}]`;
1766
+ lines.push(` ${dependent.plugin.name}@${dependent.plugin.version}${project} (${dependent.coverage})`);
1767
+ for (const path of dependent.paths.slice(0, 2))
1768
+ lines.push(` ${path.nodes.join(' → ')}`);
1769
+ if (dependent.paths.length > 2)
1770
+ lines.push(` ... ${dependent.paths.length - 2} more path(s)`);
1771
+ }
1772
+ if (impact.truncated)
1773
+ lines.push(' ... additional downstream plugins omitted from this bounded report');
1774
+ }
1775
+ }
1710
1776
  export function renderObserverReport(report) {
1711
1777
  const lines = [];
1712
1778
  const alignmentFindings = report.alignmentFindings.filter(item => item.alignment.status !== 'aligned');
1713
1779
  if (report.changes.length === 0 && report.errors.length === 0 && report.pendingTasks.length === 0 && alignmentFindings.length === 0) {
1714
1780
  lines.push(`No meaningful upstream changes. Checked ${report.targetsChecked} target(s); DSH Agent was not called.`);
1781
+ if (report.reverseDependencyIndex !== undefined) {
1782
+ lines.push(`Loaded downstream reverse index: ${report.reverseDependencyIndex.plugins} plugin(s), ${report.reverseDependencyIndex.dependencies} dependency coordinate(s); coverage ${report.reverseDependencyIndex.completeObservations} complete / ${report.reverseDependencyIndex.incompleteObservations} incomplete.`);
1783
+ }
1715
1784
  if (report.baselineTargets.length > 0)
1716
1785
  lines.push(`Created baseline for: ${report.baselineTargets.join(', ')}.`);
1717
1786
  return `${lines.join('\n')}\n`;
@@ -1720,6 +1789,9 @@ export function renderObserverReport(report) {
1720
1789
  lines.push('');
1721
1790
  lines.push(`Checked at: ${report.checkedAt}`);
1722
1791
  lines.push(`Targets: ${report.targetsChecked}; baselines: ${report.baselineTargets.length}; changes: ${report.changes.length}`);
1792
+ if (report.reverseDependencyIndex !== undefined) {
1793
+ lines.push(`Downstream reverse index: ${report.reverseDependencyIndex.plugins} plugin(s), ${report.reverseDependencyIndex.dependencies} dependency coordinate(s); coverage ${report.reverseDependencyIndex.completeObservations} complete / ${report.reverseDependencyIndex.incompleteObservations} incomplete.`);
1794
+ }
1723
1795
  lines.push('');
1724
1796
  if (report.baselineTargets.length > 0) {
1725
1797
  lines.push(`Baseline created: ${report.baselineTargets.join(', ')}`);
@@ -1767,6 +1839,8 @@ export function renderObserverReport(report) {
1767
1839
  lines.push(`Coverage change: resolved dependency edges: ${removedUnresolved.slice(0, 8).join(', ')}`);
1768
1840
  }
1769
1841
  }
1842
+ if (change.reverseDependencyImpacts !== undefined)
1843
+ renderReverseDependencyImpacts(lines, change.reverseDependencyImpacts);
1770
1844
  if (change.reasons.length > 0)
1771
1845
  lines.push(`Reasons: ${change.reasons.join('; ')}`);
1772
1846
  if (change.current.package !== undefined) {
@@ -1833,6 +1907,8 @@ export function renderObserverReport(report) {
1833
1907
  lines.push(`New unresolved dependency edges: ${task.addedUnresolved.join(', ')}`);
1834
1908
  if (task.removedUnresolved.length > 0)
1835
1909
  lines.push(`Resolved dependency edges: ${task.removedUnresolved.join(', ')}`);
1910
+ if (task.reverseDependencyImpacts !== undefined)
1911
+ renderReverseDependencyImpacts(lines, task.reverseDependencyImpacts, 'Downstream impact');
1836
1912
  if (task.reasons.length > 0)
1837
1913
  lines.push(`Reasons: ${task.reasons.join('; ')}`);
1838
1914
  if (task.artifactReview !== undefined) {