@smthrs/observability 0.33.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/LICENSE +21 -0
- package/docker-compose.otel.yml +104 -0
- package/grafana/dashboards/smithers-dashboard.json +453 -0
- package/grafana/provisioning/dashboards/dashboards.yml +12 -0
- package/grafana/provisioning/datasources/datasources.yml +49 -0
- package/loki/loki-config.yaml +35 -0
- package/otel-collector-config.yml +38 -0
- package/package.json +47 -0
- package/prometheus/prometheus.yml +8 -0
- package/src/MetricName.ts +1 -0
- package/src/MetricsServiceLive.js +9 -0
- package/src/README.md +28 -0
- package/src/ResolvedSmithersObservabilityOptions.ts +12 -0
- package/src/SmithersEvent.ts +773 -0
- package/src/SmithersLogFormat.ts +1 -0
- package/src/SmithersMetricDefinition.ts +15 -0
- package/src/SmithersMetricType.ts +1 -0
- package/src/SmithersMetricUnit.ts +1 -0
- package/src/SmithersObservability.js +15 -0
- package/src/SmithersObservabilityOptions.ts +12 -0
- package/src/SmithersObservabilityService.ts +13 -0
- package/src/_coreCorrelation/CorrelationContext.ts +10 -0
- package/src/_coreCorrelation/CorrelationContextLive.js +11 -0
- package/src/_coreCorrelation/CorrelationContextService.js +15 -0
- package/src/_coreCorrelation/CorrelationContextServiceShape.ts +12 -0
- package/src/_coreCorrelation/CorrelationPatch.ts +3 -0
- package/src/_coreCorrelation/README.md +20 -0
- package/src/_coreCorrelation/_correlationStorage.js +4 -0
- package/src/_coreCorrelation/correlationContextFiberRef.js +5 -0
- package/src/_coreCorrelation/correlationContextToLogAnnotations.js +18 -0
- package/src/_coreCorrelation/getCurrentCorrelationContext.js +9 -0
- package/src/_coreCorrelation/getCurrentCorrelationContextEffect.js +11 -0
- package/src/_coreCorrelation/index.js +14 -0
- package/src/_coreCorrelation/mergeCorrelationContext.js +51 -0
- package/src/_coreCorrelation/runWithCorrelationContext.js +14 -0
- package/src/_coreCorrelation/updateCurrentCorrelationContext.js +17 -0
- package/src/_coreCorrelation/withCorrelationContext.js +38 -0
- package/src/_coreCorrelation/withCurrentCorrelationContext.js +11 -0
- package/src/_coreMetrics.js +14 -0
- package/src/_coreMetricsShape.ts +44 -0
- package/src/_corePrometheus.js +91 -0
- package/src/_corePrometheusShape.ts +11 -0
- package/src/_coreTracing.js +132 -0
- package/src/_coreTracingShape.ts +17 -0
- package/src/_otelLogBuilders.js +102 -0
- package/src/_sessionFileResolvers.js +164 -0
- package/src/_smithersSpanAttributeAliases.js +19 -0
- package/src/_smithersTraceSpanStorage.js +3 -0
- package/src/_traceEventNormalizers.js +499 -0
- package/src/_traceRedaction.js +162 -0
- package/src/agentSessionEventToOtelLogRecord.js +55 -0
- package/src/agentTrace.ts +144 -0
- package/src/agentTraceCapabilities.js +151 -0
- package/src/annotateSmithersTrace.js +11 -0
- package/src/canonicalTraceEventToOtelLogRecord.js +55 -0
- package/src/correlation.js +56 -0
- package/src/createSmithersObservabilityLayer.js +59 -0
- package/src/createSmithersOtelLayer.js +23 -0
- package/src/createSmithersRuntimeLayer.js +2 -0
- package/src/detectAgentFamily.js +26 -0
- package/src/detectCaptureMode.js +24 -0
- package/src/emitOtelLogRecord.js +19 -0
- package/src/getCurrentSmithersTraceAnnotations.js +14 -0
- package/src/getCurrentSmithersTraceSpan.js +7 -0
- package/src/index.d.ts +1321 -0
- package/src/index.js +136 -0
- package/src/kindPhase.js +17 -0
- package/src/logging.js +248 -0
- package/src/makeSmithersSpanAttributes.js +20 -0
- package/src/metrics/README.md +22 -0
- package/src/metrics/SmithersMetricDefinition.ts +17 -0
- package/src/metrics/SmithersMetricType.ts +1 -0
- package/src/metrics/SmithersMetricUnit.ts +1 -0
- package/src/metrics/_asyncExternalWaitCounts.js +4 -0
- package/src/metrics/_buckets.js +37 -0
- package/src/metrics/_incrementGauge.js +11 -0
- package/src/metrics/_processStartMs.js +1 -0
- package/src/metrics/activeNodes.js +2 -0
- package/src/metrics/activeRuns.js +2 -0
- package/src/metrics/agentActionsTotal.js +2 -0
- package/src/metrics/agentDurationMs.js +3 -0
- package/src/metrics/agentErrorsTotal.js +2 -0
- package/src/metrics/agentEventsTotal.js +2 -0
- package/src/metrics/agentInvocationsTotal.js +2 -0
- package/src/metrics/agentRetriesTotal.js +2 -0
- package/src/metrics/agentSessionsTotal.js +2 -0
- package/src/metrics/agentTokensTotal.js +2 -0
- package/src/metrics/alertDeliveriesAttempted.js +2 -0
- package/src/metrics/alertDeliveriesSuppressed.js +2 -0
- package/src/metrics/alertsAcknowledgedTotal.js +2 -0
- package/src/metrics/alertsActive.js +2 -0
- package/src/metrics/alertsEscalatedTotal.js +2 -0
- package/src/metrics/alertsFiredTotal.js +2 -0
- package/src/metrics/alertsReopenedTotal.js +2 -0
- package/src/metrics/alertsResolvedTotal.js +2 -0
- package/src/metrics/alertsSilencedTotal.js +2 -0
- package/src/metrics/approvalPending.js +2 -0
- package/src/metrics/approvalWaitDuration.js +5 -0
- package/src/metrics/approvalsDenied.js +2 -0
- package/src/metrics/approvalsGranted.js +2 -0
- package/src/metrics/approvalsRequested.js +2 -0
- package/src/metrics/attemptDuration.js +3 -0
- package/src/metrics/attentionBacklog.js +2 -0
- package/src/metrics/cacheHits.js +2 -0
- package/src/metrics/cacheMisses.js +2 -0
- package/src/metrics/dbQueryDuration.js +3 -0
- package/src/metrics/dbRetries.js +2 -0
- package/src/metrics/dbTransactionDuration.js +3 -0
- package/src/metrics/dbTransactionRetries.js +2 -0
- package/src/metrics/dbTransactionRollbacks.js +2 -0
- package/src/metrics/devtoolsActiveSubscribers.js +2 -0
- package/src/metrics/devtoolsBackpressureDisconnectTotal.js +2 -0
- package/src/metrics/devtoolsDeltaBuildMs.js +3 -0
- package/src/metrics/devtoolsEventBytes.js +3 -0
- package/src/metrics/devtoolsEventTotal.js +2 -0
- package/src/metrics/devtoolsSnapshotBuildMs.js +5 -0
- package/src/metrics/devtoolsSubscribeTotal.js +2 -0
- package/src/metrics/errorsTotal.js +2 -0
- package/src/metrics/eventsEmittedTotal.js +2 -0
- package/src/metrics/externalWaitAsyncPending.js +2 -0
- package/src/metrics/gatewayApprovalDecisionsTotal.js +2 -0
- package/src/metrics/gatewayAuthEventsTotal.js +2 -0
- package/src/metrics/gatewayConnectionsActive.js +2 -0
- package/src/metrics/gatewayConnectionsClosedTotal.js +2 -0
- package/src/metrics/gatewayConnectionsTotal.js +2 -0
- package/src/metrics/gatewayCronTriggersTotal.js +2 -0
- package/src/metrics/gatewayErrorsTotal.js +2 -0
- package/src/metrics/gatewayHeartbeatTicksTotal.js +2 -0
- package/src/metrics/gatewayMessagesReceivedTotal.js +2 -0
- package/src/metrics/gatewayMessagesSentTotal.js +2 -0
- package/src/metrics/gatewayRpcCallsTotal.js +2 -0
- package/src/metrics/gatewayRpcDuration.js +3 -0
- package/src/metrics/gatewayRunEventBackpressureDisconnectTotal.js +4 -0
- package/src/metrics/gatewayRunsCompletedTotal.js +2 -0
- package/src/metrics/gatewayRunsStartedTotal.js +2 -0
- package/src/metrics/gatewaySignalsTotal.js +2 -0
- package/src/metrics/gatewayWebhooksReceivedTotal.js +2 -0
- package/src/metrics/gatewayWebhooksRejectedTotal.js +2 -0
- package/src/metrics/gatewayWebhooksVerifiedTotal.js +2 -0
- package/src/metrics/heartbeatDataSizeBytes.js +5 -0
- package/src/metrics/heartbeatIntervalMs.js +3 -0
- package/src/metrics/hotReloadDuration.js +3 -0
- package/src/metrics/hotReloadFailures.js +2 -0
- package/src/metrics/hotReloads.js +2 -0
- package/src/metrics/httpRequestDuration.js +3 -0
- package/src/metrics/httpRequests.js +2 -0
- package/src/metrics/index.d.ts +1163 -0
- package/src/metrics/index.js +168 -0
- package/src/metrics/memoryFactReads.js +3 -0
- package/src/metrics/memoryFactWrites.js +3 -0
- package/src/metrics/memoryMessageSaves.js +3 -0
- package/src/metrics/memoryRecallDuration.js +11 -0
- package/src/metrics/memoryRecallQueries.js +3 -0
- package/src/metrics/metricsServiceAdapter.js +181 -0
- package/src/metrics/nodeDuration.js +3 -0
- package/src/metrics/nodeRetriesTotal.js +2 -0
- package/src/metrics/nodesFailed.js +2 -0
- package/src/metrics/nodesFinished.js +2 -0
- package/src/metrics/nodesStarted.js +2 -0
- package/src/metrics/openApiToolCallErrorsTotal.js +3 -0
- package/src/metrics/openApiToolCallsTotal.js +3 -0
- package/src/metrics/openApiToolDuration.js +9 -0
- package/src/metrics/processHeapUsedBytes.js +2 -0
- package/src/metrics/processMemoryRssBytes.js +2 -0
- package/src/metrics/processUptimeSeconds.js +2 -0
- package/src/metrics/promptSizeBytes.js +3 -0
- package/src/metrics/replaysStarted.js +3 -0
- package/src/metrics/responseSizeBytes.js +3 -0
- package/src/metrics/rewindDurationMs.js +3 -0
- package/src/metrics/rewindFramesDeleted.js +3 -0
- package/src/metrics/rewindRollbackTotal.js +2 -0
- package/src/metrics/rewindSandboxesReverted.js +3 -0
- package/src/metrics/rewindTotal.js +2 -0
- package/src/metrics/runDuration.js +3 -0
- package/src/metrics/runForksCreated.js +3 -0
- package/src/metrics/runsAncestryDepth.js +3 -0
- package/src/metrics/runsCancelledTotal.js +2 -0
- package/src/metrics/runsCarriedStateBytes.js +5 -0
- package/src/metrics/runsContinuedTotal.js +2 -0
- package/src/metrics/runsFailedTotal.js +2 -0
- package/src/metrics/runsFinishedTotal.js +2 -0
- package/src/metrics/runsResumedTotal.js +2 -0
- package/src/metrics/runsTotal.js +2 -0
- package/src/metrics/sandboxActive.js +2 -0
- package/src/metrics/sandboxBundleSizeBytes.js +5 -0
- package/src/metrics/sandboxCompletedTotal.js +2 -0
- package/src/metrics/sandboxCreatedTotal.js +2 -0
- package/src/metrics/sandboxDurationMs.js +3 -0
- package/src/metrics/sandboxPatchCount.js +3 -0
- package/src/metrics/sandboxTransportDurationMs.js +5 -0
- package/src/metrics/schedulerConcurrencyUtilization.js +2 -0
- package/src/metrics/schedulerQueueDepth.js +2 -0
- package/src/metrics/schedulerWaitDuration.js +5 -0
- package/src/metrics/scorerDuration.js +9 -0
- package/src/metrics/scorerEventsFailed.js +2 -0
- package/src/metrics/scorerEventsFinished.js +2 -0
- package/src/metrics/scorerEventsStarted.js +2 -0
- package/src/metrics/scorersFailed.js +3 -0
- package/src/metrics/scorersFinished.js +3 -0
- package/src/metrics/scorersStarted.js +3 -0
- package/src/metrics/smithersMetricCatalog.js +893 -0
- package/src/metrics/smithersMetricCatalogByKey.js +2 -0
- package/src/metrics/smithersMetricCatalogByName.js +2 -0
- package/src/metrics/smithersMetricCatalogByPrometheusName.js +4 -0
- package/src/metrics/snapshotDuration.js +9 -0
- package/src/metrics/snapshotsCaptured.js +3 -0
- package/src/metrics/supervisorPollDuration.js +5 -0
- package/src/metrics/supervisorPollsTotal.js +2 -0
- package/src/metrics/supervisorResumeLag.js +5 -0
- package/src/metrics/supervisorResumedTotal.js +2 -0
- package/src/metrics/supervisorSkippedTotal.js +2 -0
- package/src/metrics/supervisorStaleDetected.js +2 -0
- package/src/metrics/taskHeartbeatTimeoutTotal.js +2 -0
- package/src/metrics/taskHeartbeatsTotal.js +2 -0
- package/src/metrics/timerDelayDuration.js +3 -0
- package/src/metrics/timersCancelled.js +2 -0
- package/src/metrics/timersCreated.js +2 -0
- package/src/metrics/timersFired.js +2 -0
- package/src/metrics/timersPending.js +2 -0
- package/src/metrics/toPrometheusMetricName.js +8 -0
- package/src/metrics/tokensCacheReadTotal.js +2 -0
- package/src/metrics/tokensCacheWriteTotal.js +2 -0
- package/src/metrics/tokensContextWindowBucketTotal.js +2 -0
- package/src/metrics/tokensContextWindowPerCall.js +5 -0
- package/src/metrics/tokensInputPerCall.js +3 -0
- package/src/metrics/tokensInputTotal.js +2 -0
- package/src/metrics/tokensOutputPerCall.js +3 -0
- package/src/metrics/tokensOutputTotal.js +2 -0
- package/src/metrics/tokensReasoningTotal.js +2 -0
- package/src/metrics/toolCallErrorsTotal.js +2 -0
- package/src/metrics/toolCallsTotal.js +2 -0
- package/src/metrics/toolDuration.js +3 -0
- package/src/metrics/toolOutputTruncatedTotal.js +2 -0
- package/src/metrics/trackEvent.js +608 -0
- package/src/metrics/updateAsyncExternalWaitPending.js +18 -0
- package/src/metrics/updateProcessMetrics.js +20 -0
- package/src/metrics/vcsDuration.js +3 -0
- package/src/normalizeStructuredEvent.js +15 -0
- package/src/prometheusContentType.js +1 -0
- package/src/renderPrometheusMetrics.js +212 -0
- package/src/resolveAgentTraceCapabilities.js +59 -0
- package/src/resolveSmithersObservabilityOptions.js +109 -0
- package/src/smithersMetrics.js +2 -0
- package/src/smithersSpanNames.js +6 -0
- package/src/unsupportedKindsForCapabilities.js +32 -0
- package/src/withSmithersSpan.js +17 -0
- package/tempo/tempo.yml +17 -0
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
receivers:
|
|
2
|
+
otlp:
|
|
3
|
+
protocols:
|
|
4
|
+
grpc:
|
|
5
|
+
endpoint: "0.0.0.0:4317"
|
|
6
|
+
http:
|
|
7
|
+
endpoint: "0.0.0.0:4318"
|
|
8
|
+
|
|
9
|
+
exporters:
|
|
10
|
+
prometheus:
|
|
11
|
+
endpoint: "0.0.0.0:8889"
|
|
12
|
+
namespace: smithers
|
|
13
|
+
otlp_grpc/tempo:
|
|
14
|
+
endpoint: "tempo:4317"
|
|
15
|
+
tls:
|
|
16
|
+
insecure: true
|
|
17
|
+
otlp_http/loki:
|
|
18
|
+
endpoint: "http://loki:3100/otlp"
|
|
19
|
+
|
|
20
|
+
processors:
|
|
21
|
+
batch:
|
|
22
|
+
timeout: 5s
|
|
23
|
+
send_batch_size: 1024
|
|
24
|
+
|
|
25
|
+
service:
|
|
26
|
+
pipelines:
|
|
27
|
+
metrics:
|
|
28
|
+
receivers: [otlp]
|
|
29
|
+
processors: [batch]
|
|
30
|
+
exporters: [prometheus]
|
|
31
|
+
traces:
|
|
32
|
+
receivers: [otlp]
|
|
33
|
+
processors: [batch]
|
|
34
|
+
exporters: [otlp_grpc/tempo]
|
|
35
|
+
logs:
|
|
36
|
+
receivers: [otlp]
|
|
37
|
+
processors: [batch]
|
|
38
|
+
exporters: [otlp_http/loki]
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@smthrs/observability",
|
|
3
|
+
"version": "0.33.0",
|
|
4
|
+
"description": "Concrete Smithers metrics, logging, tracing, and observability integrations",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"sideEffects": false,
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./src/index.d.ts",
|
|
10
|
+
"import": "./src/index.js",
|
|
11
|
+
"default": "./src/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./metrics": {
|
|
14
|
+
"types": "./src/metrics/index.d.ts",
|
|
15
|
+
"import": "./src/metrics/index.js",
|
|
16
|
+
"default": "./src/metrics/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./*": {
|
|
19
|
+
"types": "./src/index.d.ts",
|
|
20
|
+
"import": "./src/*.js",
|
|
21
|
+
"default": "./src/*.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"src/",
|
|
26
|
+
"docker-compose.otel.yml",
|
|
27
|
+
"otel-collector-config.yml",
|
|
28
|
+
"prometheus/",
|
|
29
|
+
"tempo/",
|
|
30
|
+
"loki/",
|
|
31
|
+
"grafana/"
|
|
32
|
+
],
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@effect/opentelemetry": "4.0.0-beta.102",
|
|
35
|
+
"@effect/platform-bun": "4.0.0-beta.102",
|
|
36
|
+
"effect": "4.0.0-beta.102"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/bun": "latest",
|
|
40
|
+
"typescript": "~6.0.3"
|
|
41
|
+
},
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "rm -f src/index.d.ts src/metrics/index.d.ts src/*-*.d.ts && tsup --dts-only",
|
|
44
|
+
"test": "bun test tests",
|
|
45
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type MetricName = string;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { MetricsService } from "./_coreMetrics.js";
|
|
2
|
+
import { Effect, Layer } from "effect";
|
|
3
|
+
import { metricsServiceAdapter } from "./metrics/index.js";
|
|
4
|
+
import { renderPrometheusMetrics } from "./renderPrometheusMetrics.js";
|
|
5
|
+
/** @type {Layer.Layer<MetricsService, never, never>} */
|
|
6
|
+
export const MetricsServiceLive = Layer.succeed(MetricsService, {
|
|
7
|
+
...metricsServiceAdapter,
|
|
8
|
+
renderPrometheus: () => Effect.sync(renderPrometheusMetrics),
|
|
9
|
+
});
|
package/src/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @smthrs/observability — src
|
|
2
|
+
|
|
3
|
+
The concrete observability implementation: Effect-based metrics, logging, and
|
|
4
|
+
tracing services, OTLP layer wiring (`createSmithersObservabilityLayer`,
|
|
5
|
+
`createSmithersOtelLayer`, `createSmithersRuntimeLayer`), the agent-trace
|
|
6
|
+
pipeline (`detectAgentFamily`, `detectCaptureMode`, `_traceEventNormalizers`,
|
|
7
|
+
`_traceRedaction`, the `*ToOtelLogRecord` builders, `_sessionFileResolvers`),
|
|
8
|
+
and Prometheus text rendering.
|
|
9
|
+
|
|
10
|
+
Conventions: one export per file, with type-only `.ts` sidecars next to the
|
|
11
|
+
`.js` implementations. `package.json` exposes a `./*` wildcard onto `src/`, so
|
|
12
|
+
EVERY file here is an importable public subpath — `packages/engine` imports the
|
|
13
|
+
underscore modules directly (e.g. `observability/_traceEventNormalizers`). Do
|
|
14
|
+
not rename, move, or delete files. `_core*` modules hold shared implementations
|
|
15
|
+
behind the root shim files that `index.js` re-exports. The correlation context
|
|
16
|
+
is dual-tracked (AsyncLocalStorage for imperative reads, FiberRef for Effect
|
|
17
|
+
code) under `_coreCorrelation/`.
|
|
18
|
+
|
|
19
|
+
Entry points: `index.js` (main export), `metrics/index.js` (the `./metrics`
|
|
20
|
+
subpath), `createSmithersObservabilityLayer.js` (layer composition), and
|
|
21
|
+
`logging.js` (fire-and-forget logs with a pluggable runtime via
|
|
22
|
+
`setSmithersLogRunner`).
|
|
23
|
+
|
|
24
|
+
Gotchas: `index.d.ts`, `metrics/index.d.ts`, and the hash-suffixed `*-*.d.ts`
|
|
25
|
+
chunks are build artifacts of `tsup --dts-only` (the build script `rm`s them
|
|
26
|
+
first) — never edit them. `correlation.js`'s `updateCurrentCorrelationContext`
|
|
27
|
+
is a deliberately mutating legacy shim, distinct from the Effect version in
|
|
28
|
+
`_coreCorrelation/`.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LogLevel } from "effect";
|
|
2
|
+
import type { SmithersLogFormat } from "./SmithersLogFormat";
|
|
3
|
+
|
|
4
|
+
export type ResolvedSmithersObservabilityOptions = {
|
|
5
|
+
readonly enabled: boolean;
|
|
6
|
+
readonly endpoint: string;
|
|
7
|
+
readonly headers: Record<string, string> | undefined;
|
|
8
|
+
readonly serviceName: string;
|
|
9
|
+
readonly logFormat: SmithersLogFormat;
|
|
10
|
+
readonly logLevel: LogLevel.LogLevel;
|
|
11
|
+
readonly installLogger: boolean;
|
|
12
|
+
};
|