upstream-radar 0.36.0 → 0.38.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/README.md CHANGED
@@ -63,15 +63,15 @@ baseline report, and defined in [`schemas/upstream-downstream-ir.schema.json`](s
63
63
 
64
64
  ```bash
65
65
  # No DSH profile, API key, or network state required
66
- npx --yes upstream-radar@0.36.0 demo
66
+ npx --yes upstream-radar@0.38.0 demo
67
67
 
68
68
  # Scan a public DSH plugin repository without installing it
69
- npx --yes upstream-radar@0.36.0 scan \
69
+ npx --yes upstream-radar@0.38.0 scan \
70
70
  https://github.com/PlutoKeating/dsh-lark-bot \
71
71
  --fail-on never
72
72
 
73
73
  # Review a real browser plugin users would install, then check two DSH releases
74
- npx --yes upstream-radar@0.36.0 review dsh-plugin dsh-cloudflare-browser-run@0.1.1 \
74
+ npx --yes upstream-radar@0.38.0 review dsh-plugin dsh-cloudflare-browser-run@0.1.1 \
75
75
  --dsh-version 0.1.0-rc.6,0.1.0-rc.7
76
76
  ```
77
77
 
@@ -84,13 +84,37 @@ These are real, reproducible cases in this repository—not synthetic “vulnera
84
84
  | Case | Finding | Why it matters |
85
85
  | --- | --- | --- |
86
86
  | [`dsh-cloudflare-browser-run@0.1.1`](examples/reports/dsh-cloudflare-browser-run-0.1.1.txt) | 18 resolved packages, 2 unresolved optional Cordis edges, 0 known vulnerabilities, and DSH rc.6/rc.7 both loaded the bundle | A real browser plugin demonstrates the DSH admission boundary and why incomplete edges stay visible. |
87
- | [50-plugin batch](examples/dsh/reports/dsh-batch-50-2026-08-17.md) | 0 confirmed runtime dependency vulnerabilities; 3 lockfile root-version mismatches | Monitoring can be wrong even when the vulnerability count is zero. |
87
+ | [50-plugin batch](examples/dsh/reports/dsh-batch-50-2026-08-17.md) / [real graph corpus](examples/dsh/first-batch/README.md) | 50 source scans, 30 exact npm reviews, 37 real plugin graphs indexed; 13 targets kept as missing evidence | The reverse index is now built from real DSH plugins, and missing graphs are not treated as clean. |
88
88
  | [`dsh-feishu-bot@0.15.8`](examples/dsh/reports/dsh-feishu-bot-0.15.8-review-2026-08-18.md) | 89-package graph, 12 unresolved optional edges, reachable `protobufjs` `postinstall`, DSH rc.6/rc.7 compatible | “No known CVE” is not the same as “no installation trust boundary.” |
89
89
  | [DSH-TUI source vs npm](examples/dsh/reports/dsh-tui-source-vs-npm-2026-08-18.md) | Source has `prepare`; published artifact does not | Source-only and artifact-only reviews answer different questions. |
90
90
  | [dsh-composer-expand](examples/dsh/reports/dsh-composer-expand-lockfile-feedback.md) | Committed lockfile root says `0.1.0` while source says `0.1.2` | A small author-fix can restore the identity of the monitored graph. |
91
91
 
92
92
  We report a confirmed vulnerability only when the affected exact version and runtime path are supported by the available evidence. Development-only hits, missing data, and advisory-source outages remain visibly different states.
93
93
 
94
+ ## Monitor the findings we already found
95
+
96
+ The repository now has a focused watch for seven real DSH plugins from the first
97
+ batch. It re-runs the source scan and the exact npm artifact review, then stores
98
+ only trusted observations in [`state.json`](examples/dsh/finding-watch/state.json)
99
+ and writes the current author-facing result to
100
+ [`report.md`](examples/dsh/finding-watch/report.md).
101
+
102
+ ```bash
103
+ pnpm run monitor:dsh-findings
104
+ ```
105
+
106
+ The watch distinguishes `persisting`, `added`, `resolved`, `changed`, and
107
+ `unknown`. A failed registry request never becomes “resolved”; a source fix also
108
+ does not erase a finding that remains in the published npm artifact. The same
109
+ loop runs daily in [the dedicated GitHub Actions workflow](.github/workflows/dsh-finding-watch.yml)
110
+ and commits the state only when a trusted observation changes. It does not install
111
+ plugins, execute lifecycle scripts, load DSH, or call an LLM.
112
+
113
+ The current run is already useful: `dsh-msg-hub@0.1.8` has removed the old source
114
+ lockfile findings, but its npm artifact still reaches `protobufjs@7.6.5` with a
115
+ `postinstall`; `dsh-wsl-workspace` now resolves `koffi@3.1.6`, while the native
116
+ install step remains. The other reviewed install/lifecycle findings persist.
117
+
94
118
  ## The dependency graph behind every alert
95
119
 
96
120
  ```text
@@ -107,12 +131,15 @@ Two copies of `parser` are different nodes. An alert names the exact version and
107
131
  For a collection of saved reports, build the reverse index that turns an upstream package update into affected plugins:
108
132
 
109
133
  ```bash
110
- npx --yes upstream-radar@0.36.0 graph reverse ./reports \
134
+ npx --yes upstream-radar@0.38.0 graph reverse ./reports \
111
135
  --output reverse-dependency-index.json
112
136
 
113
137
  # Ask: which plugins currently depend on this exact package?
114
- npx --yes upstream-radar@0.36.0 graph reverse ./reports \
138
+ npx --yes upstream-radar@0.38.0 graph reverse ./reports \
115
139
  --package parser@2.9.0
140
+
141
+ # Rebuild the checked-in index from the real first 50 DSH plugin reports
142
+ pnpm run refresh:dsh-batch
116
143
  ```
117
144
 
118
145
  The generated JSON preserves exact paths such as:
@@ -127,7 +154,7 @@ To route an upstream old → new change to that index, pass it to the always-on
127
154
  observer:
128
155
 
129
156
  ```bash
130
- npx --yes upstream-radar@0.36.0 observe ./targets.yml \
157
+ npx --yes upstream-radar@0.38.0 observe ./targets.yml \
131
158
  --reverse-index ./reverse-dependency-index.json \
132
159
  --state ./observations.json \
133
160
  --report ./upstream-radar-observer.md
@@ -141,12 +168,19 @@ is an evidence-based routing signal, not a claim that the plugin is already
141
168
  broken. See the persisted index definition in
142
169
  [`schemas/reverse-dependency-index.schema.json`](schemas/reverse-dependency-index.schema.json).
143
170
 
171
+ The checked-in real-corpus replay makes this concrete: an observed
172
+ `@deepseek-ai/cordis@4.0.1 → 4.0.2` change routes to 17 DSH plugins from the
173
+ first 50-plugin batch. The route is marked `incomplete` because 26 of the 37
174
+ reconstructed graphs contain unresolved edges; the other 13 targets are kept
175
+ outside the index as missing evidence. Run `pnpm run showcase:observer` to
176
+ replay baseline → one Agent task → quiet run without network access.
177
+
144
178
  ## GitHub Action
145
179
 
146
180
  The repository already contains a reusable, composite Action in [`action.yml`](action.yml). It runs the same frozen Radar check in CI and writes a short Job Summary.
147
181
 
148
182
  ```yaml
149
- - uses: MicroMilo/upstream-radar@v0.36.0
183
+ - uses: MicroMilo/upstream-radar@v0.38.0
150
184
  with:
151
185
  config: upstream-radar.config.json
152
186
  fail-on: high
@@ -170,7 +204,7 @@ See the [consumer workflow](examples/github-actions/consumer/README.md) for conf
170
204
  pnpm add upstream-radar
171
205
 
172
206
  # Generate a reviewable DSH profile inventory from the installed profile
173
- npx --yes upstream-radar@0.36.0 setup
207
+ npx --yes upstream-radar@0.38.0 setup
174
208
  ```
175
209
 
176
210
  For Feishu/webhook routing, DSH Agent handoff, observer state, report schemas, and troubleshooting, use the [full Chinese guide](docs/README.zh-CN.md). The [architecture notes](docs/architecture.md) explain the boundaries and evidence model.
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-index.d.ts","sourceRoot":"","sources":["../../src/dependency-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependency-index.d.ts","sourceRoot":"","sources":["../../src/dependency-index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { findDependencyPaths } from './graph.js';
2
1
  export const REVERSE_DEPENDENCY_INDEX_SCHEMA = 'upstream-radar.reverse-dependency-index/v1alpha1';
3
2
  const MAX_PATHS_PER_DEPENDENCY = 8;
4
3
  const MAX_PATH_DEPTH = 64;
@@ -237,21 +236,16 @@ export function parseReverseDependencyObservations(value, source) {
237
236
  function packageKey(packageCoordinate) {
238
237
  return `${packageCoordinate.name}@${packageCoordinate.version}`;
239
238
  }
240
- function pathKinds(graph, path) {
239
+ function pathKinds(path, edgeKinds) {
241
240
  const kinds = [];
242
241
  for (let index = 0; index < path.length - 1; index += 1) {
243
- const edge = graph.edges
244
- .filter(candidate => candidate.from === path[index] && candidate.to === path[index + 1])
245
- .sort((left, right) => left.kind.localeCompare(right.kind))[0];
246
- if (edge === undefined)
242
+ const kind = edgeKinds.get(`${path[index]}\0${path[index + 1]}`);
243
+ if (kind === undefined)
247
244
  throw new Error('dependency graph path references a missing edge');
248
- kinds.push(edge.kind);
245
+ kinds.push(kind);
249
246
  }
250
247
  return kinds;
251
248
  }
252
- function labelsForPath(path) {
253
- return path.map(node => `${node.name}@${node.version}`);
254
- }
255
249
  function addUnique(items, value) {
256
250
  if (!items.some(item => JSON.stringify(item) === JSON.stringify(value)))
257
251
  items.push(value);
@@ -268,6 +262,68 @@ function mergeReverseDependencyUse(target, source) {
268
262
  for (const path of source.paths)
269
263
  addUnique(target.paths, path);
270
264
  }
265
+ /**
266
+ * Compute bounded root-to-node paths in one propagation pass.
267
+ *
268
+ * Calling a DFS once per node can revisit the same high-branching graph an
269
+ * exponential number of times. A real DSH profile can contain hundreds of
270
+ * nodes, so keep at most the same bounded path budget per node while sharing
271
+ * the traversal across all targets.
272
+ */
273
+ function boundedPathsByNode(graph, maxPaths = MAX_PATHS_PER_DEPENDENCY, maxDepth = MAX_PATH_DEPTH) {
274
+ const nodes = new Map(graph.nodes.map(node => [node.id, node]));
275
+ if (!nodes.has(graph.rootNodeId))
276
+ throw new Error('dependency graph root node is missing');
277
+ const outgoing = new Map();
278
+ const edgeKinds = new Map();
279
+ for (const edge of graph.edges) {
280
+ if (!nodes.has(edge.from) || !nodes.has(edge.to))
281
+ throw new Error('dependency graph edge references a missing node');
282
+ const list = outgoing.get(edge.from) ?? [];
283
+ list.push({ to: edge.to, kind: edge.kind });
284
+ outgoing.set(edge.from, list);
285
+ const key = `${edge.from}\0${edge.to}`;
286
+ const previous = edgeKinds.get(key);
287
+ if (previous === undefined || edge.kind.localeCompare(previous) < 0)
288
+ edgeKinds.set(key, edge.kind);
289
+ }
290
+ for (const list of outgoing.values()) {
291
+ list.sort((left, right) => {
292
+ const leftNode = nodes.get(left.to);
293
+ const rightNode = nodes.get(right.to);
294
+ return `${leftNode?.name ?? ''}@${leftNode?.version ?? ''}:${left.to}`
295
+ .localeCompare(`${rightNode?.name ?? ''}@${rightNode?.version ?? ''}:${right.to}`)
296
+ || left.kind.localeCompare(right.kind);
297
+ });
298
+ }
299
+ const pathsByNode = new Map([[graph.rootNodeId, [[graph.rootNodeId]]]]);
300
+ const queue = [graph.rootNodeId];
301
+ for (let cursor = 0; cursor < queue.length; cursor += 1) {
302
+ const current = queue[cursor];
303
+ if (current === undefined)
304
+ continue;
305
+ const paths = pathsByNode.get(current) ?? [];
306
+ if (paths.length === 0)
307
+ continue;
308
+ for (const path of paths) {
309
+ if (path.length >= maxDepth)
310
+ continue;
311
+ const seen = new Set(path);
312
+ for (const edge of outgoing.get(current) ?? []) {
313
+ if (seen.has(edge.to))
314
+ continue;
315
+ const nextPath = [...path, edge.to];
316
+ const targetPaths = pathsByNode.get(edge.to) ?? [];
317
+ if (targetPaths.length >= maxPaths || targetPaths.some(item => JSON.stringify(item) === JSON.stringify(nextPath)))
318
+ continue;
319
+ targetPaths.push(nextPath);
320
+ pathsByNode.set(edge.to, targetPaths);
321
+ queue.push(edge.to);
322
+ }
323
+ }
324
+ }
325
+ return { pathsByNode, edgeKinds };
326
+ }
271
327
  /** Build a deterministic dependency -> plugin index from bounded graph observations. */
272
328
  export function buildReverseDependencyIndex(observations, options = {}) {
273
329
  const dependencies = new Map();
@@ -299,13 +355,12 @@ export function buildReverseDependencyIndex(observations, options = {}) {
299
355
  const root = observation.graph.nodes.find(node => node.id === observation.graph.rootNodeId);
300
356
  if (root === undefined)
301
357
  throw new Error(`${observation.source} graph root node is missing`);
358
+ const nodesById = new Map(observation.graph.nodes.map(node => [node.id, node]));
359
+ const { pathsByNode, edgeKinds } = boundedPathsByNode(observation.graph);
302
360
  for (const node of observation.graph.nodes) {
303
361
  if (node.id === observation.graph.rootNodeId)
304
362
  continue;
305
- const paths = findDependencyPaths(observation.graph, node.id, {
306
- maxPaths: MAX_PATHS_PER_DEPENDENCY,
307
- maxDepth: MAX_PATH_DEPTH,
308
- });
363
+ const paths = pathsByNode.get(node.id) ?? [];
309
364
  if (paths.length === 0)
310
365
  continue;
311
366
  const dependency = { ecosystem: 'npm', name: node.name, version: node.version };
@@ -323,8 +378,13 @@ export function buildReverseDependencyIndex(observations, options = {}) {
323
378
  if (coverage === 'incomplete')
324
379
  target.coverage = 'incomplete';
325
380
  for (const path of paths) {
326
- const labels = labelsForPath(path);
327
- addUnique(target.paths, { nodes: labels, kinds: pathKinds(observation.graph, path.map(item => item.id)) });
381
+ const labels = path.map(id => {
382
+ const pathNode = nodesById.get(id);
383
+ if (pathNode === undefined)
384
+ throw new Error(`${observation.source} graph path references a missing node`);
385
+ return `${pathNode.name}@${pathNode.version}`;
386
+ });
387
+ addUnique(target.paths, { nodes: labels, kinds: pathKinds(path, edgeKinds) });
328
388
  }
329
389
  if (dependent === undefined)
330
390
  dependencyEntry.dependents.push(target);
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-index.js","sourceRoot":"","sources":["../../src/dependency-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGhD,MAAM,CAAC,MAAM,+BAA+B,GAAG,kDAA2D,CAAA;AAE1G,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAClC,MAAM,cAAc,GAAG,EAAE,CAAA;AAoFzB,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACzF,OAAO,KAAmB,CAAA;AAC5B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAC1E,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,0CAA0C;QAAE,OAAO,SAAS,CAAA;IACxG,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACxH,OAAO,KAAmC,CAAA;AAC5C,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAiB;IAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACzC,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IAC5C,OAAO,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AACpE,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAiB;IAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACjE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC5C,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAiB,EAAE,MAAc,EAAE,OAAsC;IACrG,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;IACxC,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;IAC1D,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAA;IAC9H,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,KAAa;IAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,SAAS,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAA;IACpI,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC5C,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAC/B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnC,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,4BAA4B,CAAC,CAAA;IACjG,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;AACrB,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAc,EAAE,KAAa;IAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtH,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,2BAA2B,CAAC,CAAA;IACtD,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,KAAK,cAAc,CAAC,CAAA;QACzG,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAiB,CAAC,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IAC5G,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC7C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAsB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,KAAK,cAAc,CAAC,CAAA;QACjI,OAAO,IAAsB,CAAA;IAC/B,CAAC,CAAC,CAAA;IACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AACzB,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc,EAAE,KAAa;IAC9D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC3C,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,mCAAmC,CAAC,CAAA;IAC5J,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,cAAc,CAAC,CAAA;QAC3G,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC,IAAI,EAAE,GAAG,KAAK,UAAU,KAAK,GAAG,CAAC,CAAC,CAAA;IAC7G,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;IAChC,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,sBAAsB,CAAC,CAAA;IACzG,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,CAAA;IAChE,OAAO;QACL,QAAQ;QACR,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,KAAK,SAAS,CAAC;QAChE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QAC7C,OAAO;QACP,QAAQ;QACR,KAAK;KACN,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,2BAA2B,CAAC,KAAc,EAAE,MAAM,GAAG,0BAA0B;IAC7F,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,+BAA+B;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,4BAA4B,CAAC,CAAA;IACrI,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAChD,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,yBAAyB,CAAC,CAAA;IAC/H,MAAM,YAAY,GAAG,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IAC/F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,0BAA0B,CAAC,CAAA;IAC7G,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,OAAO,MAAM,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IAC3E,MAAM,WAAW,GAAG,OAAO,MAAM,EAAE,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IAC7F,MAAM,YAAY,GAAG,MAAM,EAAE,OAAO,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/H,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,oBAAoB,CAAC,CAAA;IAChD,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACvC,IAAI,aAAa,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,mBAAmB,KAAK,cAAc,CAAC,CAAA;QACzH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;IAC1C,CAAC,CAAC,CAAA;IACF,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/C,MAAM,oBAAoB,GAAG,OAAO,aAAa,EAAE,oBAAoB,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IACtI,MAAM,sBAAsB,GAAG,OAAO,aAAa,EAAE,sBAAsB,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IAC5I,MAAM,eAAe,GAAG,OAAO,aAAa,EAAE,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IACvH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,oBAAoB,GAAG,CAAC;WAClE,CAAC,MAAM,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,sBAAsB,GAAG,CAAC;WACvE,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,sBAAsB,CAAC,CAAA;IAClD,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,qCAAqC,CAAC,CAAA;IAC1I,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QACrC,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,YAAY,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,YAAY,KAAK,cAAc,CAAC,CAAA;QAC7H,MAAM,kBAAkB,GAAG,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,gBAAgB,EAAE,EAAE;YACzF,MAAM,iBAAiB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;YAC/C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAA;YAC7D,MAAM,WAAW,GAAG,iBAAiB,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAA;YACtH,MAAM,QAAQ,GAAG,iBAAiB,EAAE,QAAQ,CAAA;YAC5C,MAAM,UAAU,GAAG,OAAO,iBAAiB,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;YAChH,IAAI,iBAAiB,KAAK,SAAS,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,iBAAiB,EAAE,WAAW,KAAK,SAAS,CAAC;mBAC7G,CAAC,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC/G,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,YAAY,KAAK,kBAAkB,gBAAgB,cAAc,CAAC,CAAA;YAC7F,CAAC;YACD,MAAM,mBAAmB,GAAG,QAAqC,CAAA;YACjE,OAAO;gBACL,MAAM,EAAE,iBAAiB;gBACzB,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;gBACrD,QAAQ,EAAE,mBAAmB;gBAC7B,UAAU;aACX,CAAA;QACH,CAAC,CAAC,CAAA;QACF,MAAM,OAAO,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,KAAK,WAAW,CAAC,CAAA;QAC1F,OAAO;YACL,EAAE;YACF,MAAM,EAAE,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,KAAK,UAAU,CAAC;YAC1F,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;YAC7C,YAAY,EAAE,kBAAkB;SACjC,CAAA;IACH,CAAC,CAAC,CAAA;IACF,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3D,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,iBAAiB,KAAK,cAAc,CAAC,CAAA;QAChH,OAAO;YACL,UAAU,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,MAAM,iBAAiB,KAAK,cAAc,CAAC;YAC9G,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,EAAE,CAAC,yBAAyB,CAAC,SAAS,EAAE,GAAG,MAAM,iBAAiB,KAAK,gBAAgB,cAAc,GAAG,CAAC,CAAC;SACnL,CAAA;IACH,CAAC,CAAC,CAAA;IACF,OAAO;QACL,MAAM,EAAE,+BAA+B;QACvC,WAAW;QACX,YAAY;QACZ,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE;QACvC,QAAQ,EAAE,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,eAAe,EAAE;QAC3E,OAAO;QACP,YAAY;KACb,CAAA;AACH,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,kCAAkC,CAAC,KAAc,EAAE,MAAc;IAC/E,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,uBAAuB,CAAC,CAAA;IAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACtC,IAAI,MAAM,KAAK,8BAA8B;QAAE,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1F,IAAI,MAAM,KAAK,2CAA2C,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC9C,OAAO,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,GAAG,MAAM,aAAa,CAAC,CAAA;IACjG,CAAC;IACD,IAAI,MAAM,KAAK,sCAAsC,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,wBAAwB,CAAC,CAAA;QACvF,MAAM,YAAY,GAAmC,EAAE,CAAA;QACvD,KAAK,MAAM,CAAC,YAAY,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACrE,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;YAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;YAC3C,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,YAAY,YAAY,iBAAiB,CAAC,CAAA;YAC7H,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;YAClF,KAAK,MAAM,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3D,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;gBAC1C,MAAM,aAAa,GAAG,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;gBACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;gBAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;gBAChD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;gBAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACvE,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,YAAY,YAAY,WAAW,WAAW,uCAAuC,CAAC,CAAA;gBACjH,CAAC;gBACD,YAAY,CAAC,IAAI,CAAC;oBAChB,MAAM,EAAE,GAAG,MAAM,aAAa,YAAY,YAAY,WAAW,EAAE;oBACnE,QAAQ,EAAE,GAAG,SAAS,IAAI,IAAI,IAAI,OAAO,EAAE;oBAC3C,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC3C,OAAO,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE;oBAC7C,KAAK;iBACN,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QACD,OAAO,YAAY,CAAA;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,GAAG,MAAM,2BAA2B,MAAM,IAAI,WAAW,EAAE,CAAC,CAAA;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,iBAAoC;IACtD,OAAO,GAAG,iBAAiB,CAAC,IAAI,IAAI,iBAAiB,CAAC,OAAO,EAAE,CAAA;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,KAAsB,EAAE,IAAc;IACvD,MAAM,KAAK,GAAqB,EAAE,CAAA;IAClC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK;aACrB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;aACvF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAChE,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QAC1F,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvB,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,aAAa,CAAC,IAA8C;IACnE,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;AACzD,CAAC;AAED,SAAS,SAAS,CAAI,KAAU,EAAE,KAAQ;IACxC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC5F,CAAC;AAED,SAAS,eAAe,CAAC,KAAe,EAAE,MAAyB;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM;QAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC3E,CAAC;AAED,SAAS,yBAAyB,CAAC,MAA4B,EAAE,MAA4B;IAC3F,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,MAAM,CAAC,QAAQ,KAAK,YAAY;QAAE,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAA;IACpE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;QAAE,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;AAChE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,2BAA2B,CACzC,YAAqD,EACrD,OAAO,GAAoE,EAAE;IAE7E,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkC,CAAA;IAC9D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAmC,CAAA;IAC1D,IAAI,oBAAoB,GAAG,CAAC,CAAA;IAC5B,IAAI,sBAAsB,GAAG,CAAC,CAAA;IAC9B,IAAI,eAAe,GAAG,CAAC,CAAA;IAEvB,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,CAAA;QAC5D,MAAM,QAAQ,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAA;QAC7D,IAAI,QAAQ,KAAK,UAAU;YAAE,oBAAoB,IAAI,CAAC,CAAA;;YACjD,sBAAsB,IAAI,CAAC,CAAA;QAChC,eAAe,IAAI,UAAU,CAAA;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI;YAClD,EAAE,EAAE,WAAW,CAAC,QAAQ;YACxB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9E,YAAY,EAAE,EAAE;SACjB,CAAA;QACD,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC;YACvB,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC5F,QAAQ;YACR,UAAU;SACX,CAAC,CAAA;QACF,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAEzC,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC3F,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,WAAW,CAAC,MAAM,6BAA6B,CAAC,CAAA;QAC3F,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,EAAE,KAAK,WAAW,CAAC,KAAK,CAAC,UAAU;gBAAE,SAAQ;YACtD,MAAM,KAAK,GAAG,mBAAmB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;gBAC5D,QAAQ,EAAE,wBAAwB;gBAClC,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAA;YACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAQ;YAChC,MAAM,UAAU,GAAG,EAAE,SAAS,EAAE,KAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAA;YACxF,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE,CAAA;YAClG,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAA;YACjG,MAAM,MAAM,GAAG,SAAS,IAAI;gBAC1B,QAAQ,EAAE,WAAW,CAAC,QAAQ;gBAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC;gBAC9E,OAAO,EAAE,EAAE;gBACX,QAAQ;gBACR,KAAK,EAAE,EAAE;aACV,CAAA;YACD,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;YAC7C,IAAI,QAAQ,KAAK,YAAY;gBAAE,MAAM,CAAC,QAAQ,GAAG,YAAY,CAAA;YAC7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;gBAClC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;YAC5G,CAAC;YACD,IAAI,SAAS,KAAK,SAAS;gBAAE,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACpE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC,CAAA;QAC3D,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IAClG,MAAM,kBAAkB,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACpJ,KAAK,MAAM,UAAU,IAAI,kBAAkB,EAAE,CAAC;QAC5C,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxF,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YAC9C,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;YACxB,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAClG,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,+BAA+B;QACvC,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5D,YAAY,EAAE,YAAY,CAAC,MAAM;QACjC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QACvG,QAAQ,EAAE,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,eAAe,EAAE;QAC3E,OAAO,EAAE,aAAa;QACtB,YAAY,EAAE,kBAAkB;KACjC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAA6B,EAC7B,iBAAoC;IAEpC,OAAO,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;AACvG,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAC1C,KAA6B,EAC7B,OAAkD;IAElD,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0C,CAAA;IAChE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE;YAAE,SAAQ;QAC9D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE;gBACtB,SAAS,EAAE,KAAK;gBAChB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,cAAc,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE;gBAC1D,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE;aACzD,CAAC,CAAA;YACF,SAAQ;QACV,CAAC;QACD,eAAe,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;QAC/D,eAAe,CAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAA;QAC7D,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QAC9B,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IAC/B,CAAC;IAED,MAAM,OAAO,GAA8B,EAAE,CAAA;IAC7C,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACrG,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACrD,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY;aAC/B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,KAAK,KAAK;eAChD,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;YACxC,oEAAoE;YACpE,qEAAqE;YACrE,iEAAiE;YACjE,qDAAqD;eAClD,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;aAChF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;QACzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAElC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAgC,CAAA;QAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;gBACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAA;gBAClE,CAAC;qBAAM,CAAC;oBACN,yBAAyB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,aAAa,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QACnH,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;QAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAA;QACvG,OAAO,CAAC,IAAI,CAAC;YACX,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;YACnD,WAAW,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;YACvC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC;YACpC,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;YAChE,QAAQ;YACR,UAAU;YACV,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM;SACpD,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
1
+ {"version":3,"file":"dependency-index.js","sourceRoot":"","sources":["../../src/dependency-index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export declare const FINDING_WATCH_SCHEMA: 'upstream-radar.finding-watch/v1alpha1';
2
+ export type FindingWatchTransitionStatus = 'added' | 'resolved' | 'changed' | 'persisting';
3
+ export interface FindingWatchRecord {
4
+ code: string;
5
+ severity: string;
6
+ summary: string;
7
+ detail?: string;
8
+ evidence?: unknown;
9
+ fingerprint: string;
10
+ }
11
+ export interface FindingWatchTransition {
12
+ code: string;
13
+ status: FindingWatchTransitionStatus;
14
+ previousCount: number;
15
+ currentCount: number;
16
+ }
17
+ export interface FindingWatchDelta {
18
+ changed: boolean;
19
+ transitions: FindingWatchTransition[];
20
+ }
21
+ export interface FindingWatchInput {
22
+ code?: unknown;
23
+ severity?: unknown;
24
+ summary?: unknown;
25
+ detail?: unknown;
26
+ evidence?: unknown;
27
+ }
28
+ export declare function normalizeFinding(input: FindingWatchInput): FindingWatchRecord | undefined;
29
+ export declare function normalizeFindings(inputs: readonly FindingWatchInput[], watchedCodes: readonly string[]): FindingWatchRecord[];
30
+ export declare function compareFindings(previous: readonly FindingWatchRecord[] | undefined, current: readonly FindingWatchRecord[], watchedCodes: readonly string[]): FindingWatchDelta;
31
+ //# sourceMappingURL=finding-watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finding-watch.d.ts","sourceRoot":"","sources":["../../src/finding-watch.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB,EAAG,uCAAgD,CAAA;AAEpF,MAAM,MAAM,4BAA4B,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,CAAA;AAE1F,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,4BAA4B,CAAA;IACpC,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,sBAAsB,EAAE,CAAA;CACtC;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAgBD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,GAAG,SAAS,CAWzF;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAM7H;AAaD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,EACnD,OAAO,EAAE,SAAS,kBAAkB,EAAE,EACtC,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,iBAAiB,CAmBnB"}
@@ -0,0 +1,70 @@
1
+ import { createHash } from 'node:crypto';
2
+ export const FINDING_WATCH_SCHEMA = 'upstream-radar.finding-watch/v1alpha1';
3
+ function canonicalize(value) {
4
+ if (Array.isArray(value))
5
+ return value.map(canonicalize);
6
+ if (typeof value !== 'object' || value === null)
7
+ return value;
8
+ return Object.fromEntries(Object.entries(value)
9
+ .sort(([left], [right]) => left.localeCompare(right))
10
+ .map(([key, item]) => [key, canonicalize(item)]));
11
+ }
12
+ function fingerprint(value) {
13
+ return `sha256:${createHash('sha256').update(JSON.stringify(canonicalize(value))).digest('hex')}`;
14
+ }
15
+ export function normalizeFinding(input) {
16
+ if (typeof input.code !== 'string' || input.code === '')
17
+ return undefined;
18
+ const severity = typeof input.severity === 'string' && input.severity !== '' ? input.severity : 'unknown';
19
+ const summary = typeof input.summary === 'string' && input.summary !== '' ? input.summary : input.code;
20
+ const detail = typeof input.detail === 'string' && input.detail !== '' ? input.detail : undefined;
21
+ const evidence = input.evidence;
22
+ const identity = { code: input.code, severity, summary, ...(detail === undefined ? {} : { detail }), ...(evidence === undefined ? {} : { evidence }) };
23
+ return {
24
+ ...identity,
25
+ fingerprint: fingerprint(identity),
26
+ };
27
+ }
28
+ export function normalizeFindings(inputs, watchedCodes) {
29
+ const watched = new Set(watchedCodes);
30
+ return inputs
31
+ .map(normalizeFinding)
32
+ .filter((finding) => finding !== undefined && watched.has(finding.code))
33
+ .sort((left, right) => left.code.localeCompare(right.code) || left.fingerprint.localeCompare(right.fingerprint));
34
+ }
35
+ function groupedFingerprints(findings) {
36
+ const groups = new Map();
37
+ for (const finding of findings) {
38
+ const current = groups.get(finding.code) ?? [];
39
+ current.push(finding.fingerprint);
40
+ groups.set(finding.code, current);
41
+ }
42
+ for (const values of groups.values())
43
+ values.sort();
44
+ return groups;
45
+ }
46
+ export function compareFindings(previous, current, watchedCodes) {
47
+ const oldGroups = groupedFingerprints(previous ?? []);
48
+ const currentGroups = groupedFingerprints(current);
49
+ const codes = [...new Set([...watchedCodes, ...oldGroups.keys(), ...currentGroups.keys()])].sort();
50
+ const transitions = [];
51
+ for (const code of codes) {
52
+ const oldValues = oldGroups.get(code) ?? [];
53
+ const currentValues = currentGroups.get(code) ?? [];
54
+ let status;
55
+ if (oldValues.length === 0 && currentValues.length > 0)
56
+ status = 'added';
57
+ else if (oldValues.length > 0 && currentValues.length === 0)
58
+ status = 'resolved';
59
+ else if (JSON.stringify(oldValues) !== JSON.stringify(currentValues))
60
+ status = 'changed';
61
+ else
62
+ status = 'persisting';
63
+ transitions.push({ code, status, previousCount: oldValues.length, currentCount: currentValues.length });
64
+ }
65
+ return {
66
+ changed: transitions.some(item => item.status !== 'persisting'),
67
+ transitions,
68
+ };
69
+ }
70
+ //# sourceMappingURL=finding-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finding-watch.js","sourceRoot":"","sources":["../../src/finding-watch.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const TOOL_VERSION = "0.36.0";
1
+ export declare const TOOL_VERSION = "0.38.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,2 +1,2 @@
1
- export const TOOL_VERSION = '0.36.0';
1
+ export const TOOL_VERSION = '0.38.0';
2
2
  //# sourceMappingURL=version.js.map
@@ -48,6 +48,7 @@ npx --yes upstream-radar@latest quickstart
48
48
  | --- | --- | --- |
49
49
  | 让在线 DSH Agent 持续跟进 | [`setup`](#安装到-dsh) | 自动刷新 profile 里的实际依赖图,只把有变化的事件交给对应项目的 Agent。 |
50
50
  | 观察 DSH 插件上游变化 | [`observe`](#观察-dsh-插件的上游变化) | 定时比较 GitHub commit、npm 发布物、manifest 和可选锁文件依赖图,只把重要变化交给 Agent。 |
51
+ | 监控已经发现的问题 | [DSH known finding watch](../examples/dsh/finding-watch/README.md) | 对第一批 7 个真实插件重复检查源码与精确 npm 发布物,把问题标成持续、修复、变化或无法确认。 |
51
52
  | 30 秒开始监控一个公开插件 | [最小 GitHub Actions workflow](../examples/github-actions/upstream-observer-minimal.yml) | 复制一个文件、改仓库地址,每天得到报告,不需要安装或构建 Radar。 |
52
53
  | 收到第一条告警后知道先做什么 | [`radar next`](#安装到-dsh) | 一个只读命令选出最高优先级事件,并指向 DSH task、已验证分析或下一轮检查。 |
53
54
  | 启动 DSH 前检查 profile | [`profile-check`](#启动-dsh-前先检查-profile) | 读取实际锁文件和 patch,提前拦住缺失 loader 包、重复 loader id 以及 release-age 回退风险。 |
@@ -96,7 +97,7 @@ FIRST EPSS estimated exploitation probability: 97.2% (percentile 100.0%)
96
97
  想立即检查一个真实发布的 DSH 插件,可以在空目录直接运行:
97
98
 
98
99
  ```bash
99
- npx --yes upstream-radar@0.36.0 inspect dsh-feishu-bot@0.15.8 --deep
100
+ npx --yes upstream-radar@0.38.0 inspect dsh-feishu-bot@0.15.8 --deep
100
101
  ```
101
102
 
102
103
  它会直接输出简短的准入结论、覆盖情况、依赖数量、漏洞数量和下一步,不需要先
@@ -109,7 +110,7 @@ npx --yes upstream-radar@0.36.0 inspect dsh-feishu-bot@0.15.8 --deep
109
110
  npm 解析环境中目前无法建立完整依赖图:
110
111
 
111
112
  ```bash
112
- npx --yes upstream-radar@0.36.0 inspect \
113
+ npx --yes upstream-radar@0.38.0 inspect \
113
114
  @sanqi-normal/dsh-webui-market-plugin@0.5.4 \
114
115
  --deep --fail-on never
115
116
  ```
@@ -280,6 +281,23 @@ OpenAI-compatible 模型,先设置
280
281
  这是新的上游变化闭环:Radar 不在每轮都重复做一次大扫描,而是为每个
281
282
  插件保存一个观察点,然后回答“从上次观察到现在到底变了什么”。
282
283
 
284
+ ### 只监控已经发现的问题
285
+
286
+ 如果目标不是重新发现所有问题,而是持续回答“上次报告的这条问题现在还在不在”,运行仓库内置的专用观察清单:
287
+
288
+ ```bash
289
+ pnpm run monitor:dsh-findings
290
+ ```
291
+
292
+ 它会对 `examples/dsh/finding-watch/targets.json` 中的 7 个真实 DSH 插件分别做两次检查:
293
+
294
+ 1. 扫描公开 GitHub 源码,不安装依赖、不运行插件;
295
+ 2. 按源码当前版本检查精确 npm 发布物,依赖解析使用禁用 lifecycle script 的环境。
296
+
297
+ 它把源码和发布物分开保存,因为维护者可能已经修了 GitHub 仓库,但还没有重新发布 npm 包。每条观察结果只有在检查成功时才会推进;网络失败是 `unknown`,不会被写成“已修复”。状态保存在 [`state.json`](../examples/dsh/finding-watch/state.json),可读报告在 [`report.md`](../examples/dsh/finding-watch/report.md),每日 workflow 是 [`dsh-finding-watch.yml`](../.github/workflows/dsh-finding-watch.yml)。
298
+
299
+ 当前真实结果中,`dsh-msg-hub@0.1.8` 的源码侧已经没有旧的 lockfile 图不可用/根版本过期问题,但同版本 npm 发布物仍可达 `protobufjs@7.6.5` 的 `postinstall`;`dsh-wsl-workspace` 由 `koffi@3.1.5` 变成了 `3.1.6`,但安装脚本仍然存在。这个入口的用途是监控这些已知问题的生命周期,不把每次定时运行都伪装成新的漏洞发现。
300
+
283
301
  ```text
284
302
  targets.yml
285
303
 
@@ -317,9 +335,9 @@ npm: dsh-feishu-bot@0.15.8
317
335
  会继续显示为 `incomplete`,不会被当成已经确认的故障。
318
336
 
319
337
  ```bash
320
- npx --yes upstream-radar@0.36.0 graph reverse ./plugin-reports \
338
+ npx --yes upstream-radar@0.38.0 graph reverse ./plugin-reports \
321
339
  --output ./reverse-dependency-index.json
322
- npx --yes upstream-radar@0.36.0 observe ./targets.yml \
340
+ npx --yes upstream-radar@0.38.0 observe ./targets.yml \
323
341
  --reverse-index ./reverse-dependency-index.json \
324
342
  --state ./observations.json --report ./upstream-radar-observer.md
325
343
  ```
@@ -328,6 +346,12 @@ npx --yes upstream-radar@0.36.0 observe ./targets.yml \
328
346
  always-on 的上游变化任务上。索引结构见
329
347
  [`reverse-dependency-index.schema.json`](../schemas/reverse-dependency-index.schema.json)。
330
348
 
349
+ 仓库已经把这条链路接到第一批真实样本:50 个公开 DSH 插件源码扫描、30 个同名同版本
350
+ npm 发布物复核,最终建立 37 个插件、1025 个依赖坐标的反向索引;13 个无法重建图的目标
351
+ 保留为证据缺失。`pnpm run showcase:observer` 会用真实的
352
+ `@deepseek-ai/cordis@4.0.1 → 4.0.2` 变化找到 17 个下游插件,并展示 baseline、一次
353
+ Agent 任务和无变化时静默的完整状态机。
354
+
331
355
  可以从[可复制的真实 targets 示例](../examples/upstream-observer/targets.yml)开始。它默认观察公开的 DSH/飞书插件 `PlutoKeating/dsh-lark-bot`,不是模拟项目:
332
356
 
333
357
  ```yaml
@@ -351,7 +375,7 @@ Radar 会在三层目录内自动找到它;npm 名称和源码 manifest 不一
351
375
  想明确选择锁文件时再加 `--lockfile`:
352
376
 
353
377
  ```bash
354
- npx --yes upstream-radar@0.36.0 observe \
378
+ npx --yes upstream-radar@0.38.0 observe \
355
379
  https://github.com/PlutoKeating/dsh-lark-bot \
356
380
  --state ./observations.json --report ./upstream-radar-observer.md
357
381
  ```
@@ -374,7 +398,7 @@ workspace 边保留为未解析证据;不会安装或启动 DSH。
374
398
  会额外指定 `--package`:
375
399
 
376
400
  ```bash
377
- npx --yes upstream-radar@0.36.0 observe \
401
+ npx --yes upstream-radar@0.38.0 observe \
378
402
  https://github.com/PlutoKeating/dsh-lark-bot \
379
403
  --package dsh-feishu-bot \
380
404
  --lockfile pnpm-lock.yaml --lockfile-type pnpm \
@@ -652,7 +676,7 @@ cd my-dsh-plugin
652
676
  pnpm install --ignore-scripts
653
677
 
654
678
  # 把插件放进 DSH profile 前,先读取精确依赖图。
655
- pnpm dlx --package=upstream-radar@0.36.0 upstream-radar graph pnpm-lock pnpm-lock.yaml --json
679
+ pnpm dlx --package=upstream-radar@0.38.0 upstream-radar graph pnpm-lock pnpm-lock.yaml --json
656
680
  ```
657
681
 
658
682
  这棵图会保留精确的 DSH 包版本,也会把未解析的可选 peer 明确显示出来;它不会加载生成的插件,也不会运行 lifecycle script。审查后,把下面这个完整 workflow 复制到 `.github/workflows/upstream-radar.yml`:
@@ -674,7 +698,7 @@ jobs:
674
698
  runs-on: ubuntu-latest
675
699
  steps:
676
700
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
677
- - uses: MicroMilo/upstream-radar@v0.36.0
701
+ - uses: MicroMilo/upstream-radar@v0.38.0
678
702
  with:
679
703
  fail-on: high
680
704
  fail-on-compatibility: breaking
@@ -685,7 +709,7 @@ Action 会自动识别唯一的 `pnpm-lock.yaml`,检查同一棵精确依赖
685
709
  也可以直接检查一个真实发布的 DSH 包:
686
710
 
687
711
  ```bash
688
- npx --yes upstream-radar@0.36.0 inspect dsh-feishu-bot@0.15.8 --deep
712
+ npx --yes upstream-radar@0.38.0 inspect dsh-feishu-bot@0.15.8 --deep
689
713
  ```
690
714
 
691
715
  这次检查的结论是 `REVIEW`:registry 完整性、签名、provenance 和 89 个已解析包都
@@ -698,7 +722,7 @@ npx --yes upstream-radar@0.36.0 inspect dsh-feishu-bot@0.15.8 --deep
698
722
  如果不想分别执行 `inspect`、打包和 `probe`,可以用一个命令完成一次 DSH 插件审查:
699
723
 
700
724
  ```bash
701
- pnpm dlx --package=upstream-radar@0.36.0 upstream-radar review dsh-plugin \
725
+ pnpm dlx --package=upstream-radar@0.38.0 upstream-radar review dsh-plugin \
702
726
  dsh-cloudflare-browser-run@0.1.1 \
703
727
  --dsh-version 0.1.0-rc.6,0.1.0-rc.7
704
728
  ```
@@ -864,7 +888,7 @@ pnpm run try:dsh
864
888
  在把项目接入兼容性门禁前,可以先运行离线规则 benchmark:
865
889
 
866
890
  ```bash
867
- pnpm dlx --package=upstream-radar@0.36.0 upstream-radar benchmark compatibility
891
+ pnpm dlx --package=upstream-radar@0.38.0 upstream-radar benchmark compatibility
868
892
  ```
869
893
 
870
894
  它覆盖六类契约:安全补丁、只需要项目分析的变化、不兼容的 DSH peer、发布者明确声明 breaking、候选传递依赖漏洞,以及候选依赖图不完整。这个命令不会联网、安装包、加载插件或启动 DSH;它验证的是 Radar 的确定性规则以及 `breaking`/`any` 门禁行为,不是运行时兼容性证明。
@@ -877,7 +901,7 @@ pnpm dlx --package=upstream-radar@0.36.0 upstream-radar benchmark compatibility
877
901
  # 打包精确版本,并明确不运行它的 lifecycle script。
878
902
  npm pack --ignore-scripts dsh-plugin@1.2.3
879
903
 
880
- pnpm dlx --package=upstream-radar@0.36.0 upstream-radar probe dsh-load \
904
+ pnpm dlx --package=upstream-radar@0.38.0 upstream-radar probe dsh-load \
881
905
  ./dsh-plugin-1.2.3.tgz \
882
906
  --dsh-version 0.1.0-rc.6
883
907
  ```
@@ -903,7 +927,7 @@ pnpm run showcase:dsh-probe
903
927
  如果要比较多个 DSH 版本,可以使用矩阵入口:
904
928
 
905
929
  ```bash
906
- pnpm dlx --package=upstream-radar@0.36.0 upstream-radar probe dsh-matrix \
930
+ pnpm dlx --package=upstream-radar@0.38.0 upstream-radar probe dsh-matrix \
907
931
  ./dsh-plugin-1.2.3.tgz \
908
932
  --dsh-version 0.1.0-rc.3 \
909
933
  --dsh-version 0.1.0-rc.6 \
@@ -921,7 +945,7 @@ JSON 结果结构见[矩阵结果 schema](../schemas/dsh-load-matrix.schema.json
921
945
  ```yaml
922
946
  steps:
923
947
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
924
- - uses: MicroMilo/upstream-radar@v0.36.0
948
+ - uses: MicroMilo/upstream-radar@v0.38.0
925
949
  with:
926
950
  fail-on: high
927
951
  # 可选:把确定性的 DSH/插件兼容性破坏也作为 CI 失败条件
@@ -930,12 +954,12 @@ steps:
930
954
  threat-intel: true
931
955
  ```
932
956
 
933
- 这个 Action 只是 `radar check --frozen --state :memory: --fail-on high --fail-on-compatibility breaking --json` 的薄封装。`--frozen` 是有意的:它只使用配置文件里的依赖图,不会尝试读取 runner 上不存在的本地 DSH profile。`threat-intel` 默认是 `false`,这样普通 CI 门禁不会因为额外查询变重;设置为 `true` 后,Job Summary 和原始 JSON 会包含 CISA KEV 与 FIRST EPSS 的优先级证据。每次运行彼此独立;发现达到阈值的漏洞或选择的兼容性变化时返回 `2`,运行或漏洞源出错时返回 `1`。`breaking` 只拦截有 confirmed/strong 信号的兼容性事件,`any` 会拦截所有活动兼容性事件,默认值是 `never`。除了原始 JSON 日志,Action 还会把经过转义的简短摘要写入 GitHub Job Summary,定时任务失败时可以直接看到受影响的包、准确依赖路径、已经发布的修复版本(如果有)、一行优先级证据和建议的下一步。这个入口不会投递 DSH Agent 任务,也不会修改分支;需要持续监控和项目级分析时,仍使用原生 DSH bundle。建议把 Action 固定到类似 `v0.36.0` 的发布标签,并根据团队策略固定 checkout Action。
957
+ 这个 Action 只是 `radar check --frozen --state :memory: --fail-on high --fail-on-compatibility breaking --json` 的薄封装。`--frozen` 是有意的:它只使用配置文件里的依赖图,不会尝试读取 runner 上不存在的本地 DSH profile。`threat-intel` 默认是 `false`,这样普通 CI 门禁不会因为额外查询变重;设置为 `true` 后,Job Summary 和原始 JSON 会包含 CISA KEV 与 FIRST EPSS 的优先级证据。每次运行彼此独立;发现达到阈值的漏洞或选择的兼容性变化时返回 `2`,运行或漏洞源出错时返回 `1`。`breaking` 只拦截有 confirmed/strong 信号的兼容性事件,`any` 会拦截所有活动兼容性事件,默认值是 `never`。除了原始 JSON 日志,Action 还会把经过转义的简短摘要写入 GitHub Job Summary,定时任务失败时可以直接看到受影响的包、准确依赖路径、已经发布的修复版本(如果有)、一行优先级证据和建议的下一步。这个入口不会投递 DSH Agent 任务,也不会修改分支;需要持续监控和项目级分析时,仍使用原生 DSH bundle。建议把 Action 固定到类似 `v0.38.0` 的发布标签,并根据团队策略固定 checkout Action。
934
958
 
935
959
  如果仓库还没有提交 Radar 配置,最短接入方式是省略 `config`、`pnpm-lock` 和 `npm-lock`。checkout 之后,Action 会自动使用唯一存在的 `pnpm-lock.yaml` 或 `package-lock.json`,生成临时的审查清单,再执行同一个 frozen 检查:
936
960
 
937
961
  ```yaml
938
- - uses: MicroMilo/upstream-radar@v0.36.0
962
+ - uses: MicroMilo/upstream-radar@v0.38.0
939
963
  with:
940
964
  fail-on: high
941
965
  ```
@@ -945,7 +969,7 @@ steps:
945
969
  如果要在插件进入 DSH 前审查精确发布物,可以增加 `inspect-package`:
946
970
 
947
971
  ```yaml
948
- - uses: MicroMilo/upstream-radar@v0.36.0
972
+ - uses: MicroMilo/upstream-radar@v0.38.0
949
973
  with:
950
974
  inspect-package: dsh-cloudflare-browser-run@0.1.1
951
975
  # review 是安全默认值;只有允许覆盖不完整时才使用 block
@@ -957,7 +981,7 @@ steps:
957
981
  如果仓库只有 pnpm 锁文件,还没有提交 Radar 配置,可以让 Action 在同一个 job 中生成配置;可直接复制[pnpm workflow 示例](../examples/github-actions/upstream-radar-pnpm.yml):
958
982
 
959
983
  ```yaml
960
- - uses: MicroMilo/upstream-radar@v0.36.0
984
+ - uses: MicroMilo/upstream-radar@v0.38.0
961
985
  with:
962
986
  pnpm-lock: pnpm-lock.yaml
963
987
  fail-on: high
@@ -971,7 +995,7 @@ npm 项目可以改用 `npm-lock: package-lock.json`;`pnpm-lock` 和 `npm-lock
971
995
  调用方需要先 checkout 仓库。这个 Action 不会安装项目依赖,也不会执行项目的 lifecycle script;它只读取提交到仓库的依赖图并查询配置中的上游漏洞源。如果需要完全显式的底层命令,等价写法是:
972
996
 
973
997
  ```bash
974
- pnpm dlx --package=upstream-radar@0.36.0 upstream-radar radar check \
998
+ pnpm dlx --package=upstream-radar@0.38.0 upstream-radar radar check \
975
999
  ./upstream-radar.config.json --frozen --state :memory: --fail-on high \
976
1000
  --fail-on-compatibility breaking --json
977
1001
  ```
@@ -979,7 +1003,7 @@ pnpm dlx --package=upstream-radar@0.36.0 upstream-radar radar check \
979
1003
  如果还要检查一个已发布插件能否跨多个 DSH 版本加载,可以增加三个 input:
980
1004
 
981
1005
  ```yaml
982
- - uses: MicroMilo/upstream-radar@v0.36.0
1006
+ - uses: MicroMilo/upstream-radar@v0.38.0
983
1007
  id: radar
984
1008
  with:
985
1009
  config: upstream-radar.config.json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "upstream-radar",
3
- "version": "0.36.0",
3
+ "version": "0.38.0",
4
4
  "description": "Always-on dependency security monitoring for DeepSeek Harness (DSH) plugins: find exact installed or candidate transitive vulnerable paths and breaking updates, then route evidence to a DSH Agent.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -95,6 +95,8 @@
95
95
  "showcase:dsh-case": "pnpm run build && node scripts/dsh-case-showcase.mjs",
96
96
  "showcase:dsh-case:report": "pnpm run build && node scripts/dsh-case-showcase.mjs --write-report",
97
97
  "showcase:observer": "pnpm run build && node scripts/upstream-observer-showcase.mjs",
98
+ "monitor:dsh-findings": "pnpm run build && node scripts/monitor-dsh-findings.mjs",
99
+ "refresh:dsh-batch": "pnpm run build && node scripts/refresh-dsh-batch-index.mjs",
98
100
  "showcase:pnpm-lock": "pnpm run build && node scripts/pnpm-lock-showcase.mjs",
99
101
  "showcase:pnpm-lock:monitor": "pnpm run build && node scripts/pnpm-lock-monitor-showcase.mjs",
100
102
  "showcase:npm-lock:monitor": "pnpm run build && node scripts/npm-lock-monitor-showcase.mjs",