@superblocksteam/telemetry 2.0.171 → 2.0.173-next.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/dist/browser/console-logging.js +2 -7
- package/dist/browser/console-logging.js.map +1 -1
- package/dist/browser/early-console-buffer.js +12 -14
- package/dist/browser/early-console-buffer.js.map +1 -1
- package/dist/browser/index.js +12 -41
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/init.d.ts +1 -1
- package/dist/browser/init.d.ts.map +1 -1
- package/dist/browser/init.js +42 -52
- package/dist/browser/init.js.map +1 -1
- package/dist/browser/instrumentations.js +11 -15
- package/dist/browser/instrumentations.js.map +1 -1
- package/dist/browser/logs.d.ts +1 -1
- package/dist/browser/logs.d.ts.map +1 -1
- package/dist/browser/logs.js +11 -18
- package/dist/browser/logs.js.map +1 -1
- package/dist/browser/metrics.js +9 -12
- package/dist/browser/metrics.js.map +1 -1
- package/dist/browser/resilient-exporter.d.ts +1 -1
- package/dist/browser/resilient-exporter.d.ts.map +1 -1
- package/dist/browser/resilient-exporter.js +8 -12
- package/dist/browser/resilient-exporter.js.map +1 -1
- package/dist/browser/sanitizer.js +2 -6
- package/dist/browser/sanitizer.js.map +1 -1
- package/dist/browser/traced-socket.js +14 -18
- package/dist/browser/traced-socket.js.map +1 -1
- package/dist/common/contracts/tier2-traces.js +33 -44
- package/dist/common/contracts/tier2-traces.js.map +1 -1
- package/dist/common/deployment-type.js +5 -8
- package/dist/common/deployment-type.js.map +1 -1
- package/dist/common/guardrails.js +26 -38
- package/dist/common/guardrails.js.map +1 -1
- package/dist/common/index.js +8 -24
- package/dist/common/index.js.map +1 -1
- package/dist/common/log-sanitizer.js +37 -55
- package/dist/common/log-sanitizer.js.map +1 -1
- package/dist/common/policy-evaluator.d.ts +1 -1
- package/dist/common/policy-evaluator.d.ts.map +1 -1
- package/dist/common/policy-evaluator.js +5 -9
- package/dist/common/policy-evaluator.js.map +1 -1
- package/dist/common/resource.js +18 -25
- package/dist/common/resource.js.map +1 -1
- package/dist/common/tier-hints.js +12 -22
- package/dist/common/tier-hints.js.map +1 -1
- package/dist/common/trace-sanitizer.js +6 -10
- package/dist/common/trace-sanitizer.js.map +1 -1
- package/dist/common/traced-socket-types.js +1 -2
- package/dist/common/traced-socket-types.js.map +1 -1
- package/dist/index.js +6 -38
- package/dist/index.js.map +1 -1
- package/dist/lint/forbidden-attributes.js +19 -24
- package/dist/lint/forbidden-attributes.js.map +1 -1
- package/dist/lint/index.js +1 -8
- package/dist/lint/index.js.map +1 -1
- package/dist/llmobs/index.js +2 -9
- package/dist/llmobs/index.js.map +1 -1
- package/dist/llmobs/tier1-exporter.js +6 -12
- package/dist/llmobs/tier1-exporter.js.map +1 -1
- package/dist/llmobs/tier2-summarizer.js +1 -5
- package/dist/llmobs/tier2-summarizer.js.map +1 -1
- package/dist/node/dynamic-attribute-processor.js +2 -7
- package/dist/node/dynamic-attribute-processor.js.map +1 -1
- package/dist/node/exporters/resilient-exporter.d.ts +1 -1
- package/dist/node/exporters/resilient-exporter.d.ts.map +1 -1
- package/dist/node/exporters/resilient-exporter.js +8 -12
- package/dist/node/exporters/resilient-exporter.js.map +1 -1
- package/dist/node/index.js +7 -26
- package/dist/node/index.js.map +1 -1
- package/dist/node/init.d.ts +3 -3
- package/dist/node/init.d.ts.map +1 -1
- package/dist/node/init.js +66 -72
- package/dist/node/init.js.map +1 -1
- package/dist/node/local-obs-mode.js +1 -4
- package/dist/node/local-obs-mode.js.map +1 -1
- package/dist/node/log-processor.d.ts +1 -1
- package/dist/node/log-processor.d.ts.map +1 -1
- package/dist/node/log-processor.js +47 -55
- package/dist/node/log-processor.js.map +1 -1
- package/dist/node/metrics-client.js +1 -5
- package/dist/node/metrics-client.js.map +1 -1
- package/dist/node/safe-logger.js +8 -12
- package/dist/node/safe-logger.js.map +1 -1
- package/dist/node/sanitizing-processor.d.ts +2 -2
- package/dist/node/sanitizing-processor.d.ts.map +1 -1
- package/dist/node/sanitizing-processor.js +6 -10
- package/dist/node/sanitizing-processor.js.map +1 -1
- package/dist/node/service-tracers.js +7 -10
- package/dist/node/service-tracers.js.map +1 -1
- package/dist/node/traced-socket.d.ts +3 -3
- package/dist/node/traced-socket.d.ts.map +1 -1
- package/dist/node/traced-socket.js +48 -52
- package/dist/node/traced-socket.js.map +1 -1
- package/dist/npm-registry/emitter.js +34 -47
- package/dist/npm-registry/emitter.js.map +1 -1
- package/dist/npm-registry/index.js +3 -19
- package/dist/npm-registry/index.js.map +1 -1
- package/dist/npm-registry/sanitize.js +16 -27
- package/dist/npm-registry/sanitize.js.map +1 -1
- package/dist/npm-registry/spans.js +7 -12
- package/dist/npm-registry/spans.js.map +1 -1
- package/dist/testing/in-memory-exporter.d.ts +1 -1
- package/dist/testing/in-memory-exporter.d.ts.map +1 -1
- package/dist/testing/in-memory-exporter.js +6 -12
- package/dist/testing/in-memory-exporter.js.map +1 -1
- package/dist/testing/index.js +3 -15
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/metrics-capture.js +12 -15
- package/dist/testing/metrics-capture.js.map +1 -1
- package/dist/testing/test-init.js +24 -31
- package/dist/testing/test-init.js.map +1 -1
- package/dist/types/index.js +1 -17
- package/dist/types/index.js.map +1 -1
- package/dist/types/policy.js +21 -24
- package/dist/types/policy.js.map +1 -1
- package/package.json +11 -17
- package/dist-esm/browser/console-logging.d.ts +0 -18
- package/dist-esm/browser/console-logging.d.ts.map +0 -1
- package/dist-esm/browser/console-logging.js +0 -27
- package/dist-esm/browser/console-logging.js.map +0 -1
- package/dist-esm/browser/early-console-buffer.d.ts +0 -49
- package/dist-esm/browser/early-console-buffer.d.ts.map +0 -1
- package/dist-esm/browser/early-console-buffer.js +0 -181
- package/dist-esm/browser/early-console-buffer.js.map +0 -1
- package/dist-esm/browser/index.d.ts +0 -18
- package/dist-esm/browser/index.d.ts.map +0 -1
- package/dist-esm/browser/index.js +0 -23
- package/dist-esm/browser/index.js.map +0 -1
- package/dist-esm/browser/init.d.ts +0 -100
- package/dist-esm/browser/init.d.ts.map +0 -1
- package/dist-esm/browser/init.js +0 -317
- package/dist-esm/browser/init.js.map +0 -1
- package/dist-esm/browser/instrumentations.d.ts +0 -67
- package/dist-esm/browser/instrumentations.d.ts.map +0 -1
- package/dist-esm/browser/instrumentations.js +0 -79
- package/dist-esm/browser/instrumentations.js.map +0 -1
- package/dist-esm/browser/logs.d.ts +0 -57
- package/dist-esm/browser/logs.d.ts.map +0 -1
- package/dist-esm/browser/logs.js +0 -80
- package/dist-esm/browser/logs.js.map +0 -1
- package/dist-esm/browser/metrics.d.ts +0 -29
- package/dist-esm/browser/metrics.d.ts.map +0 -1
- package/dist-esm/browser/metrics.js +0 -46
- package/dist-esm/browser/metrics.js.map +0 -1
- package/dist-esm/browser/resilient-exporter.d.ts +0 -43
- package/dist-esm/browser/resilient-exporter.d.ts.map +0 -1
- package/dist-esm/browser/resilient-exporter.js +0 -84
- package/dist-esm/browser/resilient-exporter.js.map +0 -1
- package/dist-esm/browser/sanitizer.d.ts +0 -35
- package/dist-esm/browser/sanitizer.d.ts.map +0 -1
- package/dist-esm/browser/sanitizer.js +0 -207
- package/dist-esm/browser/sanitizer.js.map +0 -1
- package/dist-esm/browser/traced-socket.d.ts +0 -102
- package/dist-esm/browser/traced-socket.d.ts.map +0 -1
- package/dist-esm/browser/traced-socket.js +0 -199
- package/dist-esm/browser/traced-socket.js.map +0 -1
- package/dist-esm/common/contracts/tier2-traces.d.ts +0 -116
- package/dist-esm/common/contracts/tier2-traces.d.ts.map +0 -1
- package/dist-esm/common/contracts/tier2-traces.js +0 -725
- package/dist-esm/common/contracts/tier2-traces.js.map +0 -1
- package/dist-esm/common/deployment-type.d.ts +0 -18
- package/dist-esm/common/deployment-type.d.ts.map +0 -1
- package/dist-esm/common/deployment-type.js +0 -27
- package/dist-esm/common/deployment-type.js.map +0 -1
- package/dist-esm/common/guardrails.d.ts +0 -132
- package/dist-esm/common/guardrails.d.ts.map +0 -1
- package/dist-esm/common/guardrails.js +0 -230
- package/dist-esm/common/guardrails.js.map +0 -1
- package/dist-esm/common/index.d.ts +0 -17
- package/dist-esm/common/index.d.ts.map +0 -1
- package/dist-esm/common/index.js +0 -17
- package/dist-esm/common/index.js.map +0 -1
- package/dist-esm/common/log-sanitizer.d.ts +0 -163
- package/dist-esm/common/log-sanitizer.d.ts.map +0 -1
- package/dist-esm/common/log-sanitizer.js +0 -745
- package/dist-esm/common/log-sanitizer.js.map +0 -1
- package/dist-esm/common/policy-evaluator.d.ts +0 -103
- package/dist-esm/common/policy-evaluator.d.ts.map +0 -1
- package/dist-esm/common/policy-evaluator.js +0 -196
- package/dist-esm/common/policy-evaluator.js.map +0 -1
- package/dist-esm/common/resource.d.ts +0 -79
- package/dist-esm/common/resource.d.ts.map +0 -1
- package/dist-esm/common/resource.js +0 -121
- package/dist-esm/common/resource.js.map +0 -1
- package/dist-esm/common/tier-hints.d.ts +0 -182
- package/dist-esm/common/tier-hints.d.ts.map +0 -1
- package/dist-esm/common/tier-hints.js +0 -199
- package/dist-esm/common/tier-hints.js.map +0 -1
- package/dist-esm/common/trace-sanitizer.d.ts +0 -82
- package/dist-esm/common/trace-sanitizer.d.ts.map +0 -1
- package/dist-esm/common/trace-sanitizer.js +0 -230
- package/dist-esm/common/trace-sanitizer.js.map +0 -1
- package/dist-esm/common/traced-socket-types.d.ts +0 -43
- package/dist-esm/common/traced-socket-types.d.ts.map +0 -1
- package/dist-esm/common/traced-socket-types.js +0 -16
- package/dist-esm/common/traced-socket-types.js.map +0 -1
- package/dist-esm/index.d.ts +0 -45
- package/dist-esm/index.d.ts.map +0 -1
- package/dist-esm/index.js +0 -56
- package/dist-esm/index.js.map +0 -1
- package/dist-esm/lint/forbidden-attributes.d.ts +0 -149
- package/dist-esm/lint/forbidden-attributes.d.ts.map +0 -1
- package/dist-esm/lint/forbidden-attributes.js +0 -210
- package/dist-esm/lint/forbidden-attributes.js.map +0 -1
- package/dist-esm/lint/index.d.ts +0 -9
- package/dist-esm/lint/index.d.ts.map +0 -1
- package/dist-esm/lint/index.js +0 -9
- package/dist-esm/lint/index.js.map +0 -1
- package/dist-esm/llmobs/index.d.ts +0 -22
- package/dist-esm/llmobs/index.d.ts.map +0 -1
- package/dist-esm/llmobs/index.js +0 -22
- package/dist-esm/llmobs/index.js.map +0 -1
- package/dist-esm/llmobs/tier1-exporter.d.ts +0 -146
- package/dist-esm/llmobs/tier1-exporter.d.ts.map +0 -1
- package/dist-esm/llmobs/tier1-exporter.js +0 -193
- package/dist-esm/llmobs/tier1-exporter.js.map +0 -1
- package/dist-esm/llmobs/tier2-summarizer.d.ts +0 -268
- package/dist-esm/llmobs/tier2-summarizer.d.ts.map +0 -1
- package/dist-esm/llmobs/tier2-summarizer.js +0 -652
- package/dist-esm/llmobs/tier2-summarizer.js.map +0 -1
- package/dist-esm/node/dynamic-attribute-processor.d.ts +0 -43
- package/dist-esm/node/dynamic-attribute-processor.d.ts.map +0 -1
- package/dist-esm/node/dynamic-attribute-processor.js +0 -74
- package/dist-esm/node/dynamic-attribute-processor.js.map +0 -1
- package/dist-esm/node/exporters/resilient-exporter.d.ts +0 -91
- package/dist-esm/node/exporters/resilient-exporter.d.ts.map +0 -1
- package/dist-esm/node/exporters/resilient-exporter.js +0 -132
- package/dist-esm/node/exporters/resilient-exporter.js.map +0 -1
- package/dist-esm/node/index.d.ts +0 -13
- package/dist-esm/node/index.d.ts.map +0 -1
- package/dist-esm/node/index.js +0 -13
- package/dist-esm/node/index.js.map +0 -1
- package/dist-esm/node/init.d.ts +0 -97
- package/dist-esm/node/init.d.ts.map +0 -1
- package/dist-esm/node/init.js +0 -359
- package/dist-esm/node/init.js.map +0 -1
- package/dist-esm/node/local-obs-mode.d.ts +0 -17
- package/dist-esm/node/local-obs-mode.d.ts.map +0 -1
- package/dist-esm/node/local-obs-mode.js +0 -19
- package/dist-esm/node/local-obs-mode.js.map +0 -1
- package/dist-esm/node/log-processor.d.ts +0 -132
- package/dist-esm/node/log-processor.d.ts.map +0 -1
- package/dist-esm/node/log-processor.js +0 -389
- package/dist-esm/node/log-processor.js.map +0 -1
- package/dist-esm/node/metrics-client.d.ts +0 -88
- package/dist-esm/node/metrics-client.d.ts.map +0 -1
- package/dist-esm/node/metrics-client.js +0 -205
- package/dist-esm/node/metrics-client.js.map +0 -1
- package/dist-esm/node/safe-logger.d.ts +0 -55
- package/dist-esm/node/safe-logger.d.ts.map +0 -1
- package/dist-esm/node/safe-logger.js +0 -154
- package/dist-esm/node/safe-logger.js.map +0 -1
- package/dist-esm/node/sanitizing-processor.d.ts +0 -67
- package/dist-esm/node/sanitizing-processor.d.ts.map +0 -1
- package/dist-esm/node/sanitizing-processor.js +0 -163
- package/dist-esm/node/sanitizing-processor.js.map +0 -1
- package/dist-esm/node/service-tracers.d.ts +0 -52
- package/dist-esm/node/service-tracers.d.ts.map +0 -1
- package/dist-esm/node/service-tracers.js +0 -78
- package/dist-esm/node/service-tracers.js.map +0 -1
- package/dist-esm/node/traced-socket.d.ts +0 -120
- package/dist-esm/node/traced-socket.d.ts.map +0 -1
- package/dist-esm/node/traced-socket.js +0 -334
- package/dist-esm/node/traced-socket.js.map +0 -1
- package/dist-esm/npm-registry/emitter.d.ts +0 -330
- package/dist-esm/npm-registry/emitter.d.ts.map +0 -1
- package/dist-esm/npm-registry/emitter.js +0 -546
- package/dist-esm/npm-registry/emitter.js.map +0 -1
- package/dist-esm/npm-registry/index.d.ts +0 -12
- package/dist-esm/npm-registry/index.d.ts.map +0 -1
- package/dist-esm/npm-registry/index.js +0 -12
- package/dist-esm/npm-registry/index.js.map +0 -1
- package/dist-esm/npm-registry/sanitize.d.ts +0 -174
- package/dist-esm/npm-registry/sanitize.d.ts.map +0 -1
- package/dist-esm/npm-registry/sanitize.js +0 -331
- package/dist-esm/npm-registry/sanitize.js.map +0 -1
- package/dist-esm/npm-registry/spans.d.ts +0 -61
- package/dist-esm/npm-registry/spans.d.ts.map +0 -1
- package/dist-esm/npm-registry/spans.js +0 -86
- package/dist-esm/npm-registry/spans.js.map +0 -1
- package/dist-esm/package.json +0 -1
- package/dist-esm/testing/in-memory-exporter.d.ts +0 -179
- package/dist-esm/testing/in-memory-exporter.d.ts.map +0 -1
- package/dist-esm/testing/in-memory-exporter.js +0 -250
- package/dist-esm/testing/in-memory-exporter.js.map +0 -1
- package/dist-esm/testing/index.d.ts +0 -9
- package/dist-esm/testing/index.d.ts.map +0 -1
- package/dist-esm/testing/index.js +0 -9
- package/dist-esm/testing/index.js.map +0 -1
- package/dist-esm/testing/metrics-capture.d.ts +0 -29
- package/dist-esm/testing/metrics-capture.d.ts.map +0 -1
- package/dist-esm/testing/metrics-capture.js +0 -71
- package/dist-esm/testing/metrics-capture.js.map +0 -1
- package/dist-esm/testing/test-init.d.ts +0 -80
- package/dist-esm/testing/test-init.d.ts.map +0 -1
- package/dist-esm/testing/test-init.js +0 -137
- package/dist-esm/testing/test-init.js.map +0 -1
- package/dist-esm/types/index.d.ts +0 -84
- package/dist-esm/types/index.d.ts.map +0 -1
- package/dist-esm/types/index.js +0 -7
- package/dist-esm/types/index.js.map +0 -1
- package/dist-esm/types/policy.d.ts +0 -92
- package/dist-esm/types/policy.d.ts.map +0 -1
- package/dist-esm/types/policy.js +0 -122
- package/dist-esm/types/policy.js.map +0 -1
|
@@ -1,330 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NPM Registry Metrics Emitter (APPS-4378 / APPS-4189)
|
|
3
|
-
*
|
|
4
|
-
* One emitter for the whole npm-registry subsystem. It owns every
|
|
5
|
-
* `superblocks.npm.*` metric and centralizes the sanitize-at-emit-boundary
|
|
6
|
-
* discipline: no raw registry hostname, package name, or token can escape via
|
|
7
|
-
* a metric label because every dimension is coerced to a closed enum or a
|
|
8
|
-
* bounded bucket here, the moment before it reaches an OTel instrument.
|
|
9
|
-
*
|
|
10
|
-
* Wiring follows the rest of the npm subsystem: the meter is resolved lazily
|
|
11
|
-
* from the OTel global (`metrics.getMeter`) and instruments are cached and
|
|
12
|
-
* re-bound when the global MeterProvider changes (the typical case is a test
|
|
13
|
-
* installing its own provider for isolation). The emitter is therefore a
|
|
14
|
-
* zero-config process singleton (`npmRegistryEmitter`) — no DI plumbing
|
|
15
|
-
* through AiServiceConfig / NpmRegistryClientDeps.
|
|
16
|
-
*
|
|
17
|
-
* Metrics (all `superblocks.npm.*`, durations in seconds):
|
|
18
|
-
*
|
|
19
|
-
* - `config.lookup_total` counter {result}
|
|
20
|
-
* - `config.lookup_duration_seconds` histogram {result} buckets [0.05,0.25,1,3,10,30]
|
|
21
|
-
* - `config.policy_fallback_total` counter {branch} lastKnownPolicy supplied the policy
|
|
22
|
-
* - `sync_home_npmrc.outcome_total` counter {outcome} CLI boot home npmrc materialization
|
|
23
|
-
* - `sync_project_npmrc.outcome_total` counter {outcome} project-dir .npmrc reconcile (boot + install)
|
|
24
|
-
* - `install.outcome_total` counter {outcome, configured, registry_host, runner, package_manager}
|
|
25
|
-
* - `install.duration_seconds`histogram {…same…} buckets [0.5,2,5,15,60,300]
|
|
26
|
-
* - `install.status` gauge {…same…} last-seen 1=success/0=else
|
|
27
|
-
* - `probe.outcome_total` counter {outcome, registry_host}
|
|
28
|
-
* - `probe.duration_seconds` histogram {…same…} buckets [0.1,0.5,1,3,10,30]
|
|
29
|
-
* - `lookup.calls_total` counter {outcome, registry_host}
|
|
30
|
-
* - `lookup.duration_seconds` histogram {…same…} buckets [0.05,0.25,1,3,10,30]
|
|
31
|
-
* - `killswitch.enabled` gauge {} 1 when the feature is suppressed
|
|
32
|
-
*
|
|
33
|
-
* Cardinality budget (documented contract — must not regress without a
|
|
34
|
-
* migration plan; every dashboard / Datadog facet pins on these):
|
|
35
|
-
*
|
|
36
|
-
* - registry_host ≤ 3 (`public_npm | private | unknown`)
|
|
37
|
-
* - install.outcome ≤ 9 (`NPM_INSTALL_OUTCOMES`)
|
|
38
|
-
* - probe.outcome ≤ 5 (`NPM_PROBE_OUTCOMES`)
|
|
39
|
-
* - lookup.outcome ≤ 3 (`NPM_LOOKUP_TOOL_OUTCOMES`)
|
|
40
|
-
* - config.result ≤ 5 (`NPM_CONFIG_LOOKUP_RESULTS`)
|
|
41
|
-
* - config.force_refresh ≤ 2 (boolean)
|
|
42
|
-
* - config.policy_fallback.branch ≤ 2 (`NPM_POLICY_FALLBACK_BRANCHES`)
|
|
43
|
-
* - sync_home_npmrc.outcome ≤ 5 (`NPM_SYNC_HOME_NPMRC_OUTCOMES`)
|
|
44
|
-
* - sync_project_npmrc.outcome ≤ 5 (`NPM_SYNC_PROJECT_NPMRC_OUTCOMES`)
|
|
45
|
-
* - configured ≤ 2, runner ≤ 6 (`NPM_INSTALL_RUNNERS`)
|
|
46
|
-
* - package_manager ≤ 3 (`NPM_INSTALL_PACKAGE_MANAGERS`)
|
|
47
|
-
*
|
|
48
|
-
* Worst-case distinct series across every instrument is ≈ 2996: the three
|
|
49
|
-
* install instruments (status gauge + counter + histogram) dominate at
|
|
50
|
-
* outcome×configured×registry_host×runner×package_manager = 9×2×3×6×3 = 972
|
|
51
|
-
* each → 2916, plus
|
|
52
|
-
* probe 5×3×2=30, config 5×2(force_refresh)×2(counter+histogram)=20, lookup
|
|
53
|
-
* 3×3×2=18, the policy-fallback counter 2, the sync-home-npmrc counter 5,
|
|
54
|
-
* the sync-project-npmrc counter 5, and the killswitch gauge 1. How it grew
|
|
55
|
-
* over time: the runner count went from 3 to 4 (`auto_upgrade`) then 5
|
|
56
|
-
* (`uninstall`) then 6 (`update`), adding `config.force_refresh` grew config from 8 to 16,
|
|
57
|
-
* adding `stale` as its own config result grew it from 16 to 20, and the
|
|
58
|
-
* policy-fallback (2 series), sync-home-npmrc (5 series), and
|
|
59
|
-
* sync-project-npmrc (5 series) counters were added. Outcomes grew to 9, and
|
|
60
|
-
* adding `package_manager` tripled the install instruments. Adding a label value
|
|
61
|
-
* must increase the count, not decrease it.
|
|
62
|
-
* Still well under the internal 150K flag and the Datadog billing boundary.
|
|
63
|
-
* Per-pod `host` is stripped at the collector for the `superblocks.npm.*`
|
|
64
|
-
* family so series are aggregated by `service.name`.
|
|
65
|
-
*
|
|
66
|
-
* Each path has its OWN closed outcome enum + `normalize*` coercer because the
|
|
67
|
-
* paths legitimately diverge (probe has `ok`/`invalid_response`, install has
|
|
68
|
-
* `tls_failed`/`lockfile_url_mismatch`, …). `auth_failed` is deliberately a
|
|
69
|
-
* first-class outcome on install/probe — an expected, fast-failing
|
|
70
|
-
* customer-config mode — kept separable from infra failures (`unreachable` /
|
|
71
|
-
* `tls_failed`) so a future alert can page on infra spikes while routing auth
|
|
72
|
-
* to a dashboard. These short names diverge from the long-form `NPM_OUTCOMES`
|
|
73
|
-
* in `./sanitize` (which stays as the audit-event surface): the install path
|
|
74
|
-
* normalizes the long `NpmInstallBlocked.reason` values to the short forms.
|
|
75
|
-
*/
|
|
76
|
-
import { type NpmRegistryBucket } from "./sanitize.js";
|
|
77
|
-
/**
|
|
78
|
-
* Closed enum of npm install call sites that emit metrics. One value per call
|
|
79
|
-
* site Superblocks owns; renaming a value breaks every dashboard split on
|
|
80
|
-
* `runner`, so additions/removals need a migration plan.
|
|
81
|
-
*
|
|
82
|
-
* - `install_all` — full install from package.json (no specific
|
|
83
|
-
* packages). Covers both `AppShell.runNpmInstall`
|
|
84
|
-
* and `AppShell.runPackageManagerInstall`.
|
|
85
|
-
* - `install_specific` — `AppShell.installSpecificPackages` (`npm add`).
|
|
86
|
-
* - `prefetch` — `installTemplateModules` (template `node_modules`
|
|
87
|
-
* prefetch during AiService construction).
|
|
88
|
-
* - `auto_upgrade` — `upgradeCliWithPackageManager` in the CLI SDK
|
|
89
|
-
* (`automatic-upgrades.ts`). Owns the dev-server
|
|
90
|
-
* self-upgrade install; a perimeter block here
|
|
91
|
-
* crash-loops the live-edit pod, so the metric is
|
|
92
|
-
* the only signal that distinguishes that from a
|
|
93
|
-
* working upgrade. APPS-4544.
|
|
94
|
-
* - `uninstall` — `AppShell.uninstallPackages` (`npm uninstall` /
|
|
95
|
-
* `pnpm remove`). Same registry and script-policy
|
|
96
|
-
* wrappers as install; a distinct runner so
|
|
97
|
-
* dashboards can split remove from add.
|
|
98
|
-
* - `update` — `AppShell.updatePackages` (`npm update` /
|
|
99
|
-
* `pnpm update`). Same gate and audit as install.
|
|
100
|
-
*/
|
|
101
|
-
export declare const NPM_INSTALL_RUNNERS: readonly ["auto_upgrade", "install_all", "install_specific", "prefetch", "uninstall", "update"];
|
|
102
|
-
export type NpmInstallRunner = (typeof NPM_INSTALL_RUNNERS)[number];
|
|
103
|
-
/**
|
|
104
|
-
* Which package manager ran an install. `other` is any other package manager
|
|
105
|
-
* (local dev can detect yarn or bun) and an install that failed before one was
|
|
106
|
-
* picked.
|
|
107
|
-
*/
|
|
108
|
-
export declare const NPM_INSTALL_PACKAGE_MANAGERS: readonly ["npm", "pnpm", "other"];
|
|
109
|
-
export type NpmInstallPackageManager = (typeof NPM_INSTALL_PACKAGE_MANAGERS)[number];
|
|
110
|
-
export declare function normalizeInstallPackageManager(input: string | null | undefined): NpmInstallPackageManager;
|
|
111
|
-
/**
|
|
112
|
-
* `config.lookup_total` result. Derived inside `NpmRegistryClient.getConfig`
|
|
113
|
-
* (the only place that knows cache hit vs miss): in-TTL non-empty hit → `hit`;
|
|
114
|
-
* fresh fetch with a configured registry → `miss`; empty / 404 / flag-off →
|
|
115
|
-
* `not_configured`; serving last-known-good config during an outage → `stale`;
|
|
116
|
-
* no usable cache during an outage / any throw → `error`.
|
|
117
|
-
*
|
|
118
|
-
* `stale` means the client is still serving a real configured registry from
|
|
119
|
-
* cache, just past the point where it would normally refresh. On-call needs to
|
|
120
|
-
* tell this apart from a real failure, so it is its own result instead of
|
|
121
|
-
* folding into `error` (which used to mix "still working off cache" with
|
|
122
|
-
* "broken"). The age of the cached value rides on the WARN log only, never as
|
|
123
|
-
* a metric label, so it adds no metric series.
|
|
124
|
-
*/
|
|
125
|
-
export declare const NPM_CONFIG_LOOKUP_RESULTS: readonly ["hit", "miss", "not_configured", "stale", "error"];
|
|
126
|
-
export type NpmConfigLookupResult = (typeof NPM_CONFIG_LOOKUP_RESULTS)[number];
|
|
127
|
-
/** Unknown config-lookup states are an error condition, not a new series. */
|
|
128
|
-
export declare function normalizeConfigLookupResult(input: string | null | undefined): NpmConfigLookupResult;
|
|
129
|
-
/**
|
|
130
|
-
* `config.policy_fallback_total` branch. Records where the in-memory cache
|
|
131
|
-
* could not supply an `npmAllowInstallScripts` policy, so
|
|
132
|
-
* `NpmRegistryClient.lastKnownPolicy` was used instead. That happens when an
|
|
133
|
-
* earlier auth-failure or 4xx branch wiped the cache, which is a sign
|
|
134
|
-
* something went wrong, so it is worth alerting on.
|
|
135
|
-
*
|
|
136
|
-
* - `not_configured_404`: the branch of `getConfig` that keeps the policy on a 404.
|
|
137
|
-
* - `unreachable`: the no-usable-cache branch of `serveStaleOrUnconfigured`.
|
|
138
|
-
*/
|
|
139
|
-
export declare const NPM_POLICY_FALLBACK_BRANCHES: readonly ["not_configured_404", "unreachable"];
|
|
140
|
-
export type NpmPolicyFallbackBranch = (typeof NPM_POLICY_FALLBACK_BRANCHES)[number];
|
|
141
|
-
/**
|
|
142
|
-
* `sync_home_npmrc.outcome_total` outcome. Mirrors the `SyncHomeNpmrcOutcome`
|
|
143
|
-
* union in the CLI's `home-npmrc.mts` and the `outcome` span attribute, so the
|
|
144
|
-
* metric and the `npm_registry.sync_home_npmrc` span join on the same value.
|
|
145
|
-
* Keep this list in sync with that union; an unknown value folds to `error`
|
|
146
|
-
* rather than adding a new series.
|
|
147
|
-
*/
|
|
148
|
-
export declare const NPM_SYNC_HOME_NPMRC_OUTCOMES: readonly ["written", "restored-not-configured", "skipped-unreachable", "skipped-snapshot-failed", "error"];
|
|
149
|
-
export type NpmSyncHomeNpmrcOutcome = (typeof NPM_SYNC_HOME_NPMRC_OUTCOMES)[number];
|
|
150
|
-
export declare function normalizeSyncHomeNpmrcOutcome(input: string | null | undefined): NpmSyncHomeNpmrcOutcome;
|
|
151
|
-
/**
|
|
152
|
-
* `sync_project_npmrc.outcome_total` outcome. Mirrors project-dir reconcile
|
|
153
|
-
* in `maybeWriteNpmrcForDir` (boot + install). Keep in sync with that call
|
|
154
|
-
* site; unknown values fold to `error`.
|
|
155
|
-
*
|
|
156
|
-
* - `written`: configured rewrite with a fresh JWT
|
|
157
|
-
* - `restored-not-configured`: restored from a clean backup, or noop
|
|
158
|
-
* - `deleted-not-configured`: removed a Superblocks-authored stale file
|
|
159
|
-
* - `skipped-unreachable`: fail-closed leave-alone on cold-cache outage
|
|
160
|
-
* - `error`: unexpected failure (gitignore refuse, unlink/restore miss, boot catch)
|
|
161
|
-
*/
|
|
162
|
-
export declare const NPM_SYNC_PROJECT_NPMRC_OUTCOMES: readonly ["written", "restored-not-configured", "deleted-not-configured", "skipped-unreachable", "error"];
|
|
163
|
-
export type NpmSyncProjectNpmrcOutcome = (typeof NPM_SYNC_PROJECT_NPMRC_OUTCOMES)[number];
|
|
164
|
-
export declare function normalizeSyncProjectNpmrcOutcome(input: string | null | undefined): NpmSyncProjectNpmrcOutcome;
|
|
165
|
-
/**
|
|
166
|
-
* `install.outcome_total` outcome. Short forms; the install path normalizes
|
|
167
|
-
* the long `NpmInstallBlocked.reason` values (`registry_auth_failed`,
|
|
168
|
-
* `registry_unreachable`) to these via {@link normalizeInstallOutcome}.
|
|
169
|
-
*/
|
|
170
|
-
export declare const NPM_INSTALL_OUTCOMES: readonly ["success", "auth_failed", "not_in_registry", "unreachable", "tls_failed", "lockfile_url_mismatch", "package_substituted", "vulnerable_package", "other"];
|
|
171
|
-
export type NpmInstallOutcome = (typeof NPM_INSTALL_OUTCOMES)[number];
|
|
172
|
-
export declare function normalizeInstallOutcome(input: string | null | undefined): NpmInstallOutcome;
|
|
173
|
-
/** `probe.outcome_total` outcome. Mapped from the server `ProbeResult`. */
|
|
174
|
-
export declare const NPM_PROBE_OUTCOMES: readonly ["ok", "auth_failed", "unreachable", "tls_failed", "invalid_response"];
|
|
175
|
-
export type NpmProbeOutcome = (typeof NPM_PROBE_OUTCOMES)[number];
|
|
176
|
-
/**
|
|
177
|
-
* Unknown → `unreachable`: the typed call site maps the closed `ProbeReason`
|
|
178
|
-
* exhaustively, so this floor only fires on a non-typed (JS) caller, where
|
|
179
|
-
* "we couldn't classify the probe" is safest reported as a connectivity
|
|
180
|
-
* failure rather than silently dropped or minted as a new series.
|
|
181
|
-
*/
|
|
182
|
-
export declare function normalizeProbeOutcome(input: string | null | undefined): NpmProbeOutcome;
|
|
183
|
-
/** `lookup.calls_total` outcome (the Clark `lookupNpmPackage` tool). */
|
|
184
|
-
export declare const NPM_LOOKUP_TOOL_OUTCOMES: readonly ["in_registry", "not_in_registry", "error"];
|
|
185
|
-
export type NpmLookupToolOutcome = (typeof NPM_LOOKUP_TOOL_OUTCOMES)[number];
|
|
186
|
-
/** Auth / unreachable / fail-closed / throw all collapse to `error` here. */
|
|
187
|
-
export declare function normalizeLookupToolOutcome(input: string | null | undefined): NpmLookupToolOutcome;
|
|
188
|
-
export interface NpmInstallMetricInput {
|
|
189
|
-
/** Which install call site emitted this event. */
|
|
190
|
-
runner: NpmInstallRunner;
|
|
191
|
-
/**
|
|
192
|
-
* Registry URL or bare hostname (`null`/`undefined` → `unknown`). Always
|
|
193
|
-
* bucketed via `bucketNpmRegistryHost`, so raw hostnames cannot leak.
|
|
194
|
-
*/
|
|
195
|
-
registryHost: string | null | undefined;
|
|
196
|
-
/**
|
|
197
|
-
* Outcome key. Free-form on input; coerced to {@link NPM_INSTALL_OUTCOMES}
|
|
198
|
-
* at the emit boundary (long `NpmInstallBlocked.reason` forms are mapped to
|
|
199
|
-
* their short equivalents; unknown → `other`). Use `"success"` on the happy
|
|
200
|
-
* path.
|
|
201
|
-
*/
|
|
202
|
-
outcome: string | null | undefined;
|
|
203
|
-
/**
|
|
204
|
-
* Whether the org had a private registry configured for this install
|
|
205
|
-
* (`result.config.configured`). Lets dashboards separate
|
|
206
|
-
* configured-but-failed from never-configured.
|
|
207
|
-
*/
|
|
208
|
-
configured: boolean;
|
|
209
|
-
/**
|
|
210
|
-
* Package manager that ran the install (`npm`, `pnpm`); anything else, or
|
|
211
|
-
* nothing, is reported as `other`.
|
|
212
|
-
*/
|
|
213
|
-
packageManager?: string | null;
|
|
214
|
-
/** Elapsed wall-clock time in milliseconds; clamped at 0, emitted as seconds. */
|
|
215
|
-
durationMs: number;
|
|
216
|
-
}
|
|
217
|
-
export interface NpmProbeMetricInput {
|
|
218
|
-
registryHost: string | null | undefined;
|
|
219
|
-
outcome: string | null | undefined;
|
|
220
|
-
durationMs: number;
|
|
221
|
-
}
|
|
222
|
-
export interface NpmLookupToolMetricInput {
|
|
223
|
-
registryHost: string | null | undefined;
|
|
224
|
-
outcome: string | null | undefined;
|
|
225
|
-
durationMs: number;
|
|
226
|
-
}
|
|
227
|
-
/**
|
|
228
|
-
* Attribute set shaped for `llmobs.annotate({ tags })`. Returned by
|
|
229
|
-
* `recordInstall` so the active install span carries the exact values that
|
|
230
|
-
* went into the metric pipeline.
|
|
231
|
-
*/
|
|
232
|
-
export interface NpmInstallSpanAttributes {
|
|
233
|
-
"npm.registry_host": NpmRegistryBucket;
|
|
234
|
-
"npm.outcome": NpmInstallOutcome;
|
|
235
|
-
"npm.package_manager": NpmInstallPackageManager;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* The npm-registry metrics emitter. Constructed once as the
|
|
239
|
-
* {@link npmRegistryEmitter} singleton; no `Meter` is injected — instruments
|
|
240
|
-
* resolve lazily from the OTel global and re-bind on provider change.
|
|
241
|
-
*/
|
|
242
|
-
export declare class NpmRegistryEmitter {
|
|
243
|
-
/**
|
|
244
|
-
* Last-seen install status keyed by the attribute tuple. The observable
|
|
245
|
-
* gauge reads this each collection cycle. Every key component is coerced to
|
|
246
|
-
* a closed enum / bounded bucket at the emit boundary
|
|
247
|
-
* (`normalizeInstallOutcome`, `bucketNpmRegistryHost`, the `NpmInstallRunner`
|
|
248
|
-
* union, a boolean), so the map is **bounded by construction** at
|
|
249
|
-
* runner(6) × configured(2) × registry_host(3) × outcome(9) ×
|
|
250
|
-
* package_manager(3) = 972 entries —
|
|
251
|
-
* it cannot grow with traffic, only with deliberate enum changes. Entries
|
|
252
|
-
* persist until process exit / `_resetForTesting` (a "last-seen for
|
|
253
|
-
* dashboards" gauge must not drop a combo and lie about the most recent
|
|
254
|
-
* outcome); no eviction is needed at this bound. The cardinality regression
|
|
255
|
-
* test pins the resulting series count.
|
|
256
|
-
*/
|
|
257
|
-
private readonly lastInstallStatus;
|
|
258
|
-
/** Returns `true` when the kill-switch is asserting (feature suppressed). */
|
|
259
|
-
private killswitchState;
|
|
260
|
-
private cachedMeter;
|
|
261
|
-
private cachedInstruments;
|
|
262
|
-
/**
|
|
263
|
-
* Lazy instrument factory. Re-creates instruments and re-registers the
|
|
264
|
-
* observable-gauge callbacks when the global MeterProvider changes (a stale
|
|
265
|
-
* instrument bound to a replaced provider silently drops data).
|
|
266
|
-
*/
|
|
267
|
-
private getInstruments;
|
|
268
|
-
/**
|
|
269
|
-
* Emit one `config.lookup_total` + `config.lookup_duration_seconds`
|
|
270
|
-
* observation. `durationMs` is the time `getConfig` spent resolving — sub-ms
|
|
271
|
-
* for a cache hit, the network round-trip (+ any JWT-refresh retry) for a
|
|
272
|
-
* miss — so dashboards can tell fast cache hits from slow cold fetches.
|
|
273
|
-
* `forceRefresh` records whether the caller bypassed the TTL cache hit, so
|
|
274
|
-
* forced just-in-time refreshes can be split from organic TTL-expiry misses.
|
|
275
|
-
*/
|
|
276
|
-
recordConfigLookup(result: string | null | undefined, durationMs: number, forceRefresh?: boolean): void;
|
|
277
|
-
/**
|
|
278
|
-
* Emit one `config.policy_fallback_total` observation. Call from the
|
|
279
|
-
* `getConfig` 404 branch and the `serveStaleOrUnconfigured` no-cache branch
|
|
280
|
-
* when `lastKnownPolicy` supplied a value the cache could not. That means an
|
|
281
|
-
* earlier auth or 4xx branch wiped the cache, which is a sign something went
|
|
282
|
-
* wrong and is worth alerting on.
|
|
283
|
-
*/
|
|
284
|
-
recordPolicyFallback(branch: NpmPolicyFallbackBranch): void;
|
|
285
|
-
/**
|
|
286
|
-
* Emit one `sync_home_npmrc.outcome_total` observation alongside the
|
|
287
|
-
* `npm_registry.sync_home_npmrc` span, so the health of writing the npmrc at
|
|
288
|
-
* boot can be alerted on per `service.name` without querying traces.
|
|
289
|
-
* `outcome` is the `SyncHomeNpmrcOutcome`; an unknown value folds to `error`.
|
|
290
|
-
*/
|
|
291
|
-
recordSyncHomeNpmrc(outcome: string | null | undefined): void;
|
|
292
|
-
/**
|
|
293
|
-
* Emit one `sync_project_npmrc.outcome_total` observation for project-dir
|
|
294
|
-
* `.npmrc` reconcile (boot + install). Unknown outcomes fold to `error`.
|
|
295
|
-
*/
|
|
296
|
-
recordSyncProjectNpmrc(outcome: string | null | undefined): void;
|
|
297
|
-
/**
|
|
298
|
-
* Emit the install outcome counter + duration histogram + last-seen status
|
|
299
|
-
* gauge, and return the matching span-attribute pair for `llmobs.annotate`.
|
|
300
|
-
* Safe to call from a `finally` block.
|
|
301
|
-
*/
|
|
302
|
-
recordInstall(input: NpmInstallMetricInput): NpmInstallSpanAttributes;
|
|
303
|
-
/** Emit one `probe.outcome_total` + `probe.duration_seconds` observation. */
|
|
304
|
-
recordProbe(input: NpmProbeMetricInput): void;
|
|
305
|
-
/** Emit one `lookup.calls_total` + `lookup.duration_seconds` observation. */
|
|
306
|
-
recordLookupTool(input: NpmLookupToolMetricInput): void;
|
|
307
|
-
/**
|
|
308
|
-
* Register the kill-switch state source. `getCurrentState` returns `true`
|
|
309
|
-
* when the feature is suppressed (LD flag off). Idempotent — the latest
|
|
310
|
-
* source wins; the observable gauge reads it on each scrape. Calling this
|
|
311
|
-
* also ensures the instruments (and thus the gauge callback) are wired.
|
|
312
|
-
*/
|
|
313
|
-
setKillswitch(getCurrentState: () => boolean): void;
|
|
314
|
-
/**
|
|
315
|
-
* Test-only: drop cached instruments, last-seen status, and the kill-switch
|
|
316
|
-
* source so the next emit re-binds to a freshly-installed test provider.
|
|
317
|
-
*/
|
|
318
|
-
_resetForTesting(): void;
|
|
319
|
-
}
|
|
320
|
-
/** Process-wide singleton. All npm-registry call sites emit through this. */
|
|
321
|
-
export declare const npmRegistryEmitter: NpmRegistryEmitter;
|
|
322
|
-
/**
|
|
323
|
-
* Back-compat free function for the install path (APPS-4189 call sites in
|
|
324
|
-
* `shell.ts` / `template-renderer.ts`). Delegates to the singleton and returns
|
|
325
|
-
* the span-attribute pair for `llmobs.annotate`.
|
|
326
|
-
*/
|
|
327
|
-
export declare function recordNpmInstall(input: NpmInstallMetricInput): NpmInstallSpanAttributes;
|
|
328
|
-
/** Test-only reset for the singleton (see {@link NpmRegistryEmitter._resetForTesting}). */
|
|
329
|
-
export declare function _resetNpmRegistryEmitterForTesting(): void;
|
|
330
|
-
//# sourceMappingURL=emitter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/npm-registry/emitter.ts"],"names":[],"mappings":"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"}
|