@senpi/runtime 3.0.6-dev.skill-manager-v2.20260629194505 → 3.0.9-dev.runtime-phase-2.20260707070820
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/actions/action-events.d.ts +67 -0
- package/dist/actions/action-events.d.ts.map +1 -0
- package/dist/actions/action-events.js +164 -0
- package/dist/actions/action-events.js.map +1 -0
- package/dist/actions/close-position/close-position.action.d.ts +1 -1
- package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
- package/dist/actions/close-position/close-position.action.js +108 -86
- package/dist/actions/close-position/close-position.action.js.map +1 -1
- package/dist/actions/decision-engine.d.ts.map +1 -1
- package/dist/actions/decision-engine.js +40 -28
- package/dist/actions/decision-engine.js.map +1 -1
- package/dist/actions/event-derivation.d.ts +61 -0
- package/dist/actions/event-derivation.d.ts.map +1 -0
- package/dist/actions/event-derivation.js +180 -0
- package/dist/actions/event-derivation.js.map +1 -0
- package/dist/actions/llm-decision/anthropic-llm-decision.d.ts +5 -9
- package/dist/actions/llm-decision/anthropic-llm-decision.d.ts.map +1 -1
- package/dist/actions/llm-decision/anthropic-llm-decision.js +6 -87
- package/dist/actions/llm-decision/anthropic-llm-decision.js.map +1 -1
- package/dist/actions/llm-decision/factory.d.ts +0 -6
- package/dist/actions/llm-decision/factory.d.ts.map +1 -1
- package/dist/actions/llm-decision/factory.js +0 -2
- package/dist/actions/llm-decision/factory.js.map +1 -1
- package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -1
- package/dist/actions/llm-decision/openclaw-llm-decision.js +26 -7
- package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -1
- package/dist/actions/open-position/open-position.action.d.ts +1 -1
- package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
- package/dist/actions/open-position/open-position.action.js +282 -224
- package/dist/actions/open-position/open-position.action.js.map +1 -1
- package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
- package/dist/actions/position-tracker/position-tracker.action.js +3 -6
- package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
- package/dist/cli/guide-commands.d.ts.map +1 -1
- package/dist/cli/guide-commands.js +61 -0
- package/dist/cli/guide-commands.js.map +1 -1
- package/dist/cli/senpi-commands.d.ts +14 -0
- package/dist/cli/senpi-commands.d.ts.map +1 -1
- package/dist/cli/senpi-commands.js +390 -2
- package/dist/cli/senpi-commands.js.map +1 -1
- package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
- package/dist/dsl/engine-client/event-mapping.js +0 -3
- package/dist/dsl/engine-client/event-mapping.js.map +1 -1
- package/dist/dsl/events/build-closed-event.d.ts.map +1 -1
- package/dist/dsl/events/build-closed-event.js +0 -1
- package/dist/dsl/events/build-closed-event.js.map +1 -1
- package/dist/dsl/events/handlers.d.ts.map +1 -1
- package/dist/dsl/events/handlers.js +2 -4
- package/dist/dsl/events/handlers.js.map +1 -1
- package/dist/dsl/events/initial-state.d.ts.map +1 -1
- package/dist/dsl/events/initial-state.js +1 -0
- package/dist/dsl/events/initial-state.js.map +1 -1
- package/dist/dsl/monitor/create-monitor.d.ts +3 -0
- package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
- package/dist/dsl/monitor/create-monitor.js +76 -58
- package/dist/dsl/monitor/create-monitor.js.map +1 -1
- package/dist/dsl/monitor/dsl-failure-events.d.ts +42 -0
- package/dist/dsl/monitor/dsl-failure-events.d.ts.map +1 -0
- package/dist/dsl/monitor/dsl-failure-events.js +73 -0
- package/dist/dsl/monitor/dsl-failure-events.js.map +1 -0
- package/dist/dsl/monitor/process-one-position.d.ts +2 -1
- package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
- package/dist/dsl/monitor/process-one-position.js +130 -196
- package/dist/dsl/monitor/process-one-position.js.map +1 -1
- package/dist/dsl/plugin/index.d.ts +10 -0
- package/dist/dsl/plugin/index.d.ts.map +1 -1
- package/dist/dsl/plugin/index.js +48 -4
- package/dist/dsl/plugin/index.js.map +1 -1
- package/dist/dsl/plugin/options.d.ts +3 -0
- package/dist/dsl/plugin/options.d.ts.map +1 -1
- package/dist/health/types.d.ts +14 -0
- package/dist/health/types.d.ts.map +1 -1
- package/dist/health/types.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +255 -77
- package/dist/index.js.map +1 -1
- package/dist/risk/risk-audit-log.d.ts +7 -0
- package/dist/risk/risk-audit-log.d.ts.map +1 -1
- package/dist/risk/risk-audit-log.js +48 -1
- package/dist/risk/risk-audit-log.js.map +1 -1
- package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts +2 -0
- package/dist/runtime/__tests__/helpers/runtime-gateway-harness.d.ts.map +1 -1
- package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js +24 -3
- package/dist/runtime/__tests__/helpers/runtime-gateway-harness.js.map +1 -1
- package/dist/runtime/auto-update/coordinator.js +2 -2
- package/dist/runtime/auto-update/coordinator.js.map +1 -1
- package/dist/runtime/create-actions.d.ts.map +1 -1
- package/dist/runtime/create-actions.js +40 -15
- package/dist/runtime/create-actions.js.map +1 -1
- package/dist/runtime/create-runtime-context.d.ts +1 -1
- package/dist/runtime/create-runtime-context.d.ts.map +1 -1
- package/dist/runtime/create-scanner-module.d.ts +2 -1
- package/dist/runtime/create-scanner-module.d.ts.map +1 -1
- package/dist/runtime/create-scanner-module.js +2 -1
- package/dist/runtime/create-scanner-module.js.map +1 -1
- package/dist/runtime/domain-events.d.ts +43 -0
- package/dist/runtime/domain-events.d.ts.map +1 -0
- package/dist/runtime/domain-events.js +181 -0
- package/dist/runtime/domain-events.js.map +1 -0
- package/dist/runtime/lifecycle-events.d.ts +86 -0
- package/dist/runtime/lifecycle-events.d.ts.map +1 -0
- package/dist/runtime/lifecycle-events.js +200 -0
- package/dist/runtime/lifecycle-events.js.map +1 -0
- package/dist/runtime/notifications.js +2 -2
- package/dist/runtime/notifications.js.map +1 -1
- package/dist/{tracking → runtime}/position-id-registry.d.ts +14 -1
- package/dist/runtime/position-id-registry.d.ts.map +1 -0
- package/dist/{tracking → runtime}/position-id-registry.js +20 -3
- package/dist/runtime/position-id-registry.js.map +1 -0
- package/dist/runtime/run.d.ts +2 -4
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js.map +1 -1
- package/dist/runtime/runtime-schema.d.ts +276 -588
- package/dist/runtime/runtime-schema.d.ts.map +1 -1
- package/dist/runtime/runtime-schema.js +8 -28
- package/dist/runtime/runtime-schema.js.map +1 -1
- package/dist/runtime/runtime.d.ts +23 -9
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +276 -248
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/strategy-lifecycle.d.ts.map +1 -1
- package/dist/runtime/strategy-lifecycle.js +13 -1
- package/dist/runtime/strategy-lifecycle.js.map +1 -1
- package/dist/runtime/supervisor/long-running-supervisor.d.ts +3 -0
- package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
- package/dist/runtime/supervisor/long-running-supervisor.js +27 -53
- package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
- package/dist/runtime-api/intake/intake-events.d.ts +44 -0
- package/dist/runtime-api/intake/intake-events.d.ts.map +1 -0
- package/dist/runtime-api/intake/intake-events.js +131 -0
- package/dist/runtime-api/intake/intake-events.js.map +1 -0
- package/dist/runtime-api/intake/scanner-launcher.d.ts +2 -0
- package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
- package/dist/runtime-api/intake/scanner-launcher.js +58 -15
- package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
- package/dist/runtime-api/intake/scanner-registry.d.ts +3 -0
- package/dist/runtime-api/intake/scanner-registry.d.ts.map +1 -1
- package/dist/runtime-api/intake/scanner-registry.js +3 -0
- package/dist/runtime-api/intake/scanner-registry.js.map +1 -1
- package/dist/runtime-api/intake/supervisor-events.d.ts +61 -0
- package/dist/runtime-api/intake/supervisor-events.d.ts.map +1 -0
- package/dist/runtime-api/intake/supervisor-events.js +173 -0
- package/dist/runtime-api/intake/supervisor-events.js.map +1 -0
- package/dist/runtime-api/routes/signals.d.ts +1 -1
- package/dist/runtime-api/routes/signals.d.ts.map +1 -1
- package/dist/runtime-api/routes/signals.js +121 -35
- package/dist/runtime-api/routes/signals.js.map +1 -1
- package/dist/runtime-api/server.d.ts.map +1 -1
- package/dist/runtime-api/server.js +10 -1
- package/dist/runtime-api/server.js.map +1 -1
- package/dist/scanners/engine/data-providers.d.ts +3 -0
- package/dist/scanners/engine/data-providers.d.ts.map +1 -1
- package/dist/scanners/engine/data-providers.js.map +1 -1
- package/dist/scanners/engine/engine.d.ts +18 -0
- package/dist/scanners/engine/engine.d.ts.map +1 -1
- package/dist/scanners/engine/engine.js +96 -2
- package/dist/scanners/engine/engine.js.map +1 -1
- package/dist/scanners/engine/input-resolver.d.ts.map +1 -1
- package/dist/scanners/engine/input-resolver.js +9 -7
- package/dist/scanners/engine/input-resolver.js.map +1 -1
- package/dist/scanners/runtime-module.d.ts +3 -0
- package/dist/scanners/runtime-module.d.ts.map +1 -1
- package/dist/scanners/runtime-module.js +7 -0
- package/dist/scanners/runtime-module.js.map +1 -1
- package/dist/senpi/client.d.ts +10 -0
- package/dist/senpi/client.d.ts.map +1 -1
- package/dist/senpi/client.js +113 -46
- package/dist/senpi/client.js.map +1 -1
- package/dist/skills-manager/bootstrap.d.ts.map +1 -1
- package/dist/skills-manager/bootstrap.js +22 -33
- package/dist/skills-manager/bootstrap.js.map +1 -1
- package/dist/skills-manager/clone-groups.d.ts +20 -0
- package/dist/skills-manager/clone-groups.d.ts.map +1 -0
- package/dist/skills-manager/clone-groups.js +45 -0
- package/dist/skills-manager/clone-groups.js.map +1 -0
- package/dist/skills-manager/coordinator.d.ts.map +1 -1
- package/dist/skills-manager/coordinator.js +111 -75
- package/dist/skills-manager/coordinator.js.map +1 -1
- package/dist/skills-manager/manifest.d.ts +24 -0
- package/dist/skills-manager/manifest.d.ts.map +1 -1
- package/dist/skills-manager/manifest.js +23 -10
- package/dist/skills-manager/manifest.js.map +1 -1
- package/dist/skills-manager/skills-manifest.json +12 -7
- package/dist/skills-manager/types.d.ts +12 -0
- package/dist/skills-manager/types.d.ts.map +1 -1
- package/dist/state/state-events.d.ts +13 -0
- package/dist/state/state-events.d.ts.map +1 -0
- package/dist/state/state-events.js +22 -0
- package/dist/state/state-events.js.map +1 -0
- package/dist/state/state-manager.d.ts.map +1 -1
- package/dist/state/state-manager.js +14 -1
- package/dist/state/state-manager.js.map +1 -1
- package/dist/telemetry/attributes.d.ts +13 -0
- package/dist/telemetry/attributes.d.ts.map +1 -0
- package/dist/telemetry/attributes.js +22 -0
- package/dist/telemetry/attributes.js.map +1 -0
- package/dist/{tracking → telemetry}/context.d.ts +12 -5
- package/dist/telemetry/context.d.ts.map +1 -0
- package/dist/{tracking → telemetry}/context.js +4 -4
- package/dist/telemetry/context.js.map +1 -0
- package/dist/{recording/records.d.ts → telemetry/event-builders.d.ts} +145 -33
- package/dist/telemetry/event-builders.d.ts.map +1 -0
- package/dist/{recording/wiring/record-builders.js → telemetry/event-builders.js} +94 -40
- package/dist/telemetry/event-builders.js.map +1 -0
- package/dist/telemetry/event-store.d.ts +66 -0
- package/dist/telemetry/event-store.d.ts.map +1 -0
- package/dist/telemetry/event-store.js +202 -0
- package/dist/telemetry/event-store.js.map +1 -0
- package/dist/telemetry/identity.d.ts +72 -0
- package/dist/telemetry/identity.d.ts.map +1 -0
- package/dist/{recording/wiring → telemetry}/identity.js +6 -2
- package/dist/telemetry/identity.js.map +1 -0
- package/dist/telemetry/metrics.d.ts +169 -0
- package/dist/telemetry/metrics.d.ts.map +1 -0
- package/dist/telemetry/metrics.js +437 -0
- package/dist/telemetry/metrics.js.map +1 -0
- package/dist/telemetry/otel-sdk.d.ts +93 -0
- package/dist/telemetry/otel-sdk.d.ts.map +1 -0
- package/dist/telemetry/otel-sdk.js +297 -0
- package/dist/telemetry/otel-sdk.js.map +1 -0
- package/dist/telemetry/spans/constants.d.ts +12 -0
- package/dist/telemetry/spans/constants.d.ts.map +1 -0
- package/dist/telemetry/spans/constants.js +12 -0
- package/dist/telemetry/spans/constants.js.map +1 -0
- package/dist/telemetry/spans/gen-ai.d.ts +74 -0
- package/dist/telemetry/spans/gen-ai.d.ts.map +1 -0
- package/dist/telemetry/spans/gen-ai.js +339 -0
- package/dist/telemetry/spans/gen-ai.js.map +1 -0
- package/dist/telemetry/spans/index.d.ts +11 -0
- package/dist/telemetry/spans/index.d.ts.map +1 -0
- package/dist/telemetry/spans/index.js +11 -0
- package/dist/telemetry/spans/index.js.map +1 -0
- package/dist/{tracking → telemetry}/spans/redact-pii.d.ts +19 -21
- package/dist/telemetry/spans/redact-pii.d.ts.map +1 -0
- package/dist/{tracking → telemetry}/spans/redact-pii.js +35 -32
- package/dist/telemetry/spans/redact-pii.js.map +1 -0
- package/dist/telemetry/spans/sanitize-payload.d.ts.map +1 -0
- package/dist/telemetry/spans/sanitize-payload.js.map +1 -0
- package/dist/telemetry/spans/span-hooks.d.ts +18 -0
- package/dist/telemetry/spans/span-hooks.d.ts.map +1 -0
- package/dist/telemetry/spans/span-hooks.js +764 -0
- package/dist/telemetry/spans/span-hooks.js.map +1 -0
- package/dist/telemetry/tool-plane.d.ts +31 -0
- package/dist/telemetry/tool-plane.d.ts.map +1 -0
- package/dist/telemetry/tool-plane.js +70 -0
- package/dist/telemetry/tool-plane.js.map +1 -0
- package/dist/telemetry/trace-identity.d.ts +32 -0
- package/dist/telemetry/trace-identity.d.ts.map +1 -0
- package/dist/telemetry/trace-identity.js +62 -0
- package/dist/telemetry/trace-identity.js.map +1 -0
- package/dist/telemetry/tracing.d.ts +33 -0
- package/dist/telemetry/tracing.d.ts.map +1 -0
- package/dist/telemetry/tracing.js +70 -0
- package/dist/telemetry/tracing.js.map +1 -0
- package/dist/types/dsl/index.d.ts +8 -9
- package/dist/types/dsl/index.d.ts.map +1 -1
- package/dist/types/runtime.d.ts +1 -1
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/types/scanner.d.ts +2 -0
- package/dist/types/scanner.d.ts.map +1 -1
- package/dist/utils/event-catalog.d.ts +506 -0
- package/dist/utils/event-catalog.d.ts.map +1 -0
- package/dist/utils/event-catalog.js +142 -0
- package/dist/utils/event-catalog.js.map +1 -0
- package/dist/utils/logger.d.ts +63 -5
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +360 -27
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/wallet-address.d.ts +3 -0
- package/dist/utils/wallet-address.d.ts.map +1 -0
- package/dist/utils/wallet-address.js +17 -0
- package/dist/utils/wallet-address.js.map +1 -0
- package/openclaw.plugin.json +20 -6
- package/package.json +10 -2
- package/dist/actions/tracking-helpers.d.ts +0 -28
- package/dist/actions/tracking-helpers.d.ts.map +0 -1
- package/dist/actions/tracking-helpers.js +0 -93
- package/dist/actions/tracking-helpers.js.map +0 -1
- package/dist/recording/emitter.d.ts +0 -27
- package/dist/recording/emitter.d.ts.map +0 -1
- package/dist/recording/emitter.js +0 -2
- package/dist/recording/emitter.js.map +0 -1
- package/dist/recording/identity.d.ts +0 -34
- package/dist/recording/identity.d.ts.map +0 -1
- package/dist/recording/identity.js +0 -2
- package/dist/recording/identity.js.map +0 -1
- package/dist/recording/index.d.ts +0 -11
- package/dist/recording/index.d.ts.map +0 -1
- package/dist/recording/index.js +0 -2
- package/dist/recording/index.js.map +0 -1
- package/dist/recording/noop-emitter.d.ts +0 -23
- package/dist/recording/noop-emitter.d.ts.map +0 -1
- package/dist/recording/noop-emitter.js +0 -22
- package/dist/recording/noop-emitter.js.map +0 -1
- package/dist/recording/otel/attributes.d.ts +0 -35
- package/dist/recording/otel/attributes.d.ts.map +0 -1
- package/dist/recording/otel/attributes.js +0 -131
- package/dist/recording/otel/attributes.js.map +0 -1
- package/dist/recording/otel/constants.d.ts +0 -123
- package/dist/recording/otel/constants.d.ts.map +0 -1
- package/dist/recording/otel/constants.js +0 -172
- package/dist/recording/otel/constants.js.map +0 -1
- package/dist/recording/otel/ids.d.ts +0 -25
- package/dist/recording/otel/ids.d.ts.map +0 -1
- package/dist/recording/otel/ids.js +0 -37
- package/dist/recording/otel/ids.js.map +0 -1
- package/dist/recording/otel/index.d.ts +0 -13
- package/dist/recording/otel/index.d.ts.map +0 -1
- package/dist/recording/otel/index.js +0 -9
- package/dist/recording/otel/index.js.map +0 -1
- package/dist/recording/otel/mappers.d.ts +0 -100
- package/dist/recording/otel/mappers.d.ts.map +0 -1
- package/dist/recording/otel/mappers.js +0 -683
- package/dist/recording/otel/mappers.js.map +0 -1
- package/dist/recording/otel/otel-emitter.d.ts +0 -43
- package/dist/recording/otel/otel-emitter.d.ts.map +0 -1
- package/dist/recording/otel/otel-emitter.js +0 -99
- package/dist/recording/otel/otel-emitter.js.map +0 -1
- package/dist/recording/otel/redaction.d.ts +0 -47
- package/dist/recording/otel/redaction.d.ts.map +0 -1
- package/dist/recording/otel/redaction.js +0 -88
- package/dist/recording/otel/redaction.js.map +0 -1
- package/dist/recording/records.d.ts.map +0 -1
- package/dist/recording/records.js +0 -14
- package/dist/recording/records.js.map +0 -1
- package/dist/recording/transport/batcher.d.ts +0 -59
- package/dist/recording/transport/batcher.d.ts.map +0 -1
- package/dist/recording/transport/batcher.js +0 -234
- package/dist/recording/transport/batcher.js.map +0 -1
- package/dist/recording/transport/client.d.ts +0 -41
- package/dist/recording/transport/client.d.ts.map +0 -1
- package/dist/recording/transport/client.js +0 -69
- package/dist/recording/transport/client.js.map +0 -1
- package/dist/recording/transport/config.d.ts +0 -53
- package/dist/recording/transport/config.d.ts.map +0 -1
- package/dist/recording/transport/config.js +0 -41
- package/dist/recording/transport/config.js.map +0 -1
- package/dist/recording/transport/index.d.ts +0 -16
- package/dist/recording/transport/index.d.ts.map +0 -1
- package/dist/recording/transport/index.js +0 -12
- package/dist/recording/transport/index.js.map +0 -1
- package/dist/recording/transport/rows.d.ts +0 -88
- package/dist/recording/transport/rows.d.ts.map +0 -1
- package/dist/recording/transport/rows.js +0 -15
- package/dist/recording/transport/rows.js.map +0 -1
- package/dist/recording/wiring/emitter-factory.d.ts +0 -39
- package/dist/recording/wiring/emitter-factory.d.ts.map +0 -1
- package/dist/recording/wiring/emitter-factory.js +0 -62
- package/dist/recording/wiring/emitter-factory.js.map +0 -1
- package/dist/recording/wiring/identity.d.ts +0 -27
- package/dist/recording/wiring/identity.d.ts.map +0 -1
- package/dist/recording/wiring/identity.js.map +0 -1
- package/dist/recording/wiring/index.d.ts +0 -12
- package/dist/recording/wiring/index.d.ts.map +0 -1
- package/dist/recording/wiring/index.js +0 -9
- package/dist/recording/wiring/index.js.map +0 -1
- package/dist/recording/wiring/record-builders.d.ts +0 -107
- package/dist/recording/wiring/record-builders.d.ts.map +0 -1
- package/dist/recording/wiring/record-builders.js.map +0 -1
- package/dist/recording/wiring/subscriber.d.ts +0 -28
- package/dist/recording/wiring/subscriber.d.ts.map +0 -1
- package/dist/recording/wiring/subscriber.js +0 -173
- package/dist/recording/wiring/subscriber.js.map +0 -1
- package/dist/recording/wiring/values.d.ts +0 -19
- package/dist/recording/wiring/values.d.ts.map +0 -1
- package/dist/recording/wiring/values.js +0 -49
- package/dist/recording/wiring/values.js.map +0 -1
- package/dist/tracking/build-rehydrate-items.d.ts +0 -15
- package/dist/tracking/build-rehydrate-items.d.ts.map +0 -1
- package/dist/tracking/build-rehydrate-items.js +0 -19
- package/dist/tracking/build-rehydrate-items.js.map +0 -1
- package/dist/tracking/constants.d.ts +0 -24
- package/dist/tracking/constants.d.ts.map +0 -1
- package/dist/tracking/constants.js +0 -52
- package/dist/tracking/constants.js.map +0 -1
- package/dist/tracking/context.d.ts.map +0 -1
- package/dist/tracking/context.js.map +0 -1
- package/dist/tracking/index.d.ts +0 -16
- package/dist/tracking/index.d.ts.map +0 -1
- package/dist/tracking/index.js +0 -11
- package/dist/tracking/index.js.map +0 -1
- package/dist/tracking/plugin-event-tracker.d.ts +0 -13
- package/dist/tracking/plugin-event-tracker.d.ts.map +0 -1
- package/dist/tracking/plugin-event-tracker.js +0 -27
- package/dist/tracking/plugin-event-tracker.js.map +0 -1
- package/dist/tracking/position-id-registry.d.ts.map +0 -1
- package/dist/tracking/position-id-registry.js.map +0 -1
- package/dist/tracking/spans/constants.d.ts +0 -19
- package/dist/tracking/spans/constants.d.ts.map +0 -1
- package/dist/tracking/spans/constants.js +0 -31
- package/dist/tracking/spans/constants.js.map +0 -1
- package/dist/tracking/spans/fan-out-span-transport.d.ts +0 -22
- package/dist/tracking/spans/fan-out-span-transport.d.ts.map +0 -1
- package/dist/tracking/spans/fan-out-span-transport.js +0 -49
- package/dist/tracking/spans/fan-out-span-transport.js.map +0 -1
- package/dist/tracking/spans/index.d.ts +0 -13
- package/dist/tracking/spans/index.d.ts.map +0 -1
- package/dist/tracking/spans/index.js +0 -16
- package/dist/tracking/spans/index.js.map +0 -1
- package/dist/tracking/spans/otel/fit-row-budget.d.ts +0 -22
- package/dist/tracking/spans/otel/fit-row-budget.d.ts.map +0 -1
- package/dist/tracking/spans/otel/fit-row-budget.js +0 -91
- package/dist/tracking/spans/otel/fit-row-budget.js.map +0 -1
- package/dist/tracking/spans/otel/map-span-to-trace-row.d.ts +0 -16
- package/dist/tracking/spans/otel/map-span-to-trace-row.d.ts.map +0 -1
- package/dist/tracking/spans/otel/map-span-to-trace-row.js +0 -227
- package/dist/tracking/spans/otel/map-span-to-trace-row.js.map +0 -1
- package/dist/tracking/spans/otel/recording-span-transport.d.ts +0 -43
- package/dist/tracking/spans/otel/recording-span-transport.d.ts.map +0 -1
- package/dist/tracking/spans/otel/recording-span-transport.js +0 -67
- package/dist/tracking/spans/otel/recording-span-transport.js.map +0 -1
- package/dist/tracking/spans/otel/span-ids.d.ts +0 -22
- package/dist/tracking/spans/otel/span-ids.d.ts.map +0 -1
- package/dist/tracking/spans/otel/span-ids.js +0 -32
- package/dist/tracking/spans/otel/span-ids.js.map +0 -1
- package/dist/tracking/spans/plugin-span-tracker.d.ts +0 -9
- package/dist/tracking/spans/plugin-span-tracker.d.ts.map +0 -1
- package/dist/tracking/spans/plugin-span-tracker.js +0 -115
- package/dist/tracking/spans/plugin-span-tracker.js.map +0 -1
- package/dist/tracking/spans/redact-pii.d.ts.map +0 -1
- package/dist/tracking/spans/redact-pii.js.map +0 -1
- package/dist/tracking/spans/sanitize-payload.d.ts.map +0 -1
- package/dist/tracking/spans/sanitize-payload.js.map +0 -1
- package/dist/tracking/spans/span-hooks.d.ts +0 -28
- package/dist/tracking/spans/span-hooks.d.ts.map +0 -1
- package/dist/tracking/spans/span-hooks.js +0 -409
- package/dist/tracking/spans/span-hooks.js.map +0 -1
- package/dist/tracking/spans/span-tracker.d.ts +0 -133
- package/dist/tracking/spans/span-tracker.d.ts.map +0 -1
- package/dist/tracking/spans/span-tracker.js +0 -721
- package/dist/tracking/spans/span-tracker.js.map +0 -1
- package/dist/tracking/spans/span-transport.d.ts +0 -71
- package/dist/tracking/spans/span-transport.d.ts.map +0 -1
- package/dist/tracking/spans/span-transport.js +0 -240
- package/dist/tracking/spans/span-transport.js.map +0 -1
- package/dist/tracking/spans/types.d.ts +0 -101
- package/dist/tracking/spans/types.d.ts.map +0 -1
- package/dist/tracking/spans/types.js +0 -6
- package/dist/tracking/spans/types.js.map +0 -1
- package/dist/tracking/tracker.d.ts +0 -30
- package/dist/tracking/tracker.d.ts.map +0 -1
- package/dist/tracking/tracker.js +0 -66
- package/dist/tracking/tracker.js.map +0 -1
- package/dist/tracking/tracking-handler.d.ts +0 -12
- package/dist/tracking/tracking-handler.d.ts.map +0 -1
- package/dist/tracking/tracking-handler.js +0 -148
- package/dist/tracking/tracking-handler.js.map +0 -1
- package/dist/tracking/transport.d.ts +0 -35
- package/dist/tracking/transport.d.ts.map +0 -1
- package/dist/tracking/transport.js +0 -133
- package/dist/tracking/transport.js.map +0 -1
- package/dist/tracking/types.d.ts +0 -21
- package/dist/tracking/types.d.ts.map +0 -1
- package/dist/tracking/types.js +0 -6
- package/dist/tracking/types.js.map +0 -1
- /package/dist/{tracking → telemetry}/spans/sanitize-payload.d.ts +0 -0
- /package/dist/{tracking → telemetry}/spans/sanitize-payload.js +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure builders for the signal-intake boundary's event-log events — the pre-decision acceptance fact
|
|
3
|
+
* at the process edge (did a scanner's POSTed signal get in, and why not), distinct from the
|
|
4
|
+
* post-decision `signal.outcome`. {@link buildSignalDispositionEvent} maps a per-signal disposition
|
|
5
|
+
* (accepted/rejected/expired/superseded) onto the `signal.*` family; {@link buildSignalRejectedEvent}
|
|
6
|
+
* covers a whole-request reject (unknown scanner, oversized batch) at request grain; and
|
|
7
|
+
* {@link buildScaffoldErrorEvent} maps a scaffold `/errors` POST onto `scaffold.tick_error` /
|
|
8
|
+
* `scaffold.tick_timeout`.
|
|
9
|
+
*
|
|
10
|
+
* Pure `(input) => EmittableEvent`; the route emits the result through `emitEvent`'s guard, so a
|
|
11
|
+
* throwing build or a telemetry failure can never disturb request handling. Free-text — a reject
|
|
12
|
+
* reason, a scaffold exception message — rides the `redact` slot, never an attribute.
|
|
13
|
+
*/
|
|
14
|
+
import { EVENT_NAME, eventAttrs } from "../../utils/event-catalog.js";
|
|
15
|
+
/** The id/name/wallet attributes every intake event carries. */
|
|
16
|
+
function baseAttrs(ctx) {
|
|
17
|
+
return {
|
|
18
|
+
"senpi.scanner.id": ctx.scannerId,
|
|
19
|
+
"senpi.scanner.name": ctx.scannerName,
|
|
20
|
+
// Addresses are case-insensitive; lowercase to match the identity join key.
|
|
21
|
+
"senpi.strategy.address": ctx.wallet ? ctx.wallet.toLowerCase() : undefined,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** A label for the scanner in a narrative body — its name when resolved, else the id. */
|
|
25
|
+
function scannerLabel(ctx) {
|
|
26
|
+
return ctx.scannerName ?? ctx.scannerId;
|
|
27
|
+
}
|
|
28
|
+
/** Map one per-signal disposition to its `signal.*` event-log record. */
|
|
29
|
+
export function buildSignalDispositionEvent(status, asset, ctx) {
|
|
30
|
+
const base = baseAttrs(ctx);
|
|
31
|
+
const label = scannerLabel(ctx);
|
|
32
|
+
switch (status.status) {
|
|
33
|
+
case "accepted":
|
|
34
|
+
return {
|
|
35
|
+
name: EVENT_NAME.signalAccepted,
|
|
36
|
+
level: "info",
|
|
37
|
+
body: `Signal accepted: ${asset} from ${label}`,
|
|
38
|
+
attributes: eventAttrs({
|
|
39
|
+
...base,
|
|
40
|
+
"senpi.signal.asset": asset,
|
|
41
|
+
"senpi.signal.correlation_id": status.correlationId,
|
|
42
|
+
}),
|
|
43
|
+
};
|
|
44
|
+
case "rejected":
|
|
45
|
+
return {
|
|
46
|
+
name: EVENT_NAME.signalRejected,
|
|
47
|
+
level: "info",
|
|
48
|
+
body: `Signal rejected: ${asset} from ${label}`,
|
|
49
|
+
attributes: eventAttrs({
|
|
50
|
+
...base,
|
|
51
|
+
"senpi.signal.asset": asset,
|
|
52
|
+
}),
|
|
53
|
+
...(status.reason ? { redact: { reason: status.reason } } : {}),
|
|
54
|
+
};
|
|
55
|
+
case "expired":
|
|
56
|
+
return {
|
|
57
|
+
name: EVENT_NAME.signalExpired,
|
|
58
|
+
level: "info",
|
|
59
|
+
body: `Signal expired: ${asset} from ${label}`,
|
|
60
|
+
attributes: eventAttrs({
|
|
61
|
+
...base,
|
|
62
|
+
"senpi.signal.asset": asset,
|
|
63
|
+
}),
|
|
64
|
+
};
|
|
65
|
+
case "superseded":
|
|
66
|
+
return {
|
|
67
|
+
name: EVENT_NAME.signalSuperseded,
|
|
68
|
+
level: "info",
|
|
69
|
+
body: `Signal superseded: ${asset} from ${label}`,
|
|
70
|
+
attributes: eventAttrs({
|
|
71
|
+
...base,
|
|
72
|
+
"senpi.signal.asset": asset,
|
|
73
|
+
}),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Build the request-level `signal.rejected` event — the whole POST was refused before any per-signal
|
|
79
|
+
* work (an unknown `scanner_id` or an oversized batch), so it carries a coded reason and no asset.
|
|
80
|
+
*/
|
|
81
|
+
export function buildSignalRejectedEvent(reasonCode, ctx) {
|
|
82
|
+
return {
|
|
83
|
+
name: EVENT_NAME.signalRejected,
|
|
84
|
+
level: "info",
|
|
85
|
+
body: `Signal POST rejected: ${reasonCode} (scanner ${scannerLabel(ctx)})`,
|
|
86
|
+
attributes: eventAttrs({
|
|
87
|
+
...baseAttrs(ctx),
|
|
88
|
+
"senpi.intake.reason_code": reasonCode,
|
|
89
|
+
}),
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Map one scaffold `/errors` POST onto its `scaffold.*` event (both `warn`). A `type: "timeout"` body
|
|
94
|
+
* is a tick that blew its wall-clock budget; anything else (a Python exception, `state_persist_failed`)
|
|
95
|
+
* is a `tick_error` whose failure class rides `senpi.scaffold.error_type`. The raw message rides `redact`.
|
|
96
|
+
*/
|
|
97
|
+
export function buildScaffoldErrorEvent(error, ctx) {
|
|
98
|
+
const base = baseAttrs(ctx);
|
|
99
|
+
const label = scannerLabel(ctx);
|
|
100
|
+
const message = typeof error.message === "string" ? error.message : undefined;
|
|
101
|
+
const isTimeout = error.type === "timeout";
|
|
102
|
+
if (isTimeout) {
|
|
103
|
+
return {
|
|
104
|
+
name: EVENT_NAME.scaffoldTickTimeout,
|
|
105
|
+
level: "warn",
|
|
106
|
+
body: `Scanner ${label} tick timed out`,
|
|
107
|
+
attributes: eventAttrs({ ...base }),
|
|
108
|
+
...(message ? { redact: { message } } : {}),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// `error_type` is the Python exception class for a thrown tick; for a non-exception failure
|
|
112
|
+
// (`state_persist_failed`) the discriminator `type` is the only class available. The bare `error`
|
|
113
|
+
// discriminator carries nothing the event name doesn't, so it is not surfaced as an error_type.
|
|
114
|
+
const rawType = typeof error.type === "string" ? error.type : undefined;
|
|
115
|
+
const errorType = typeof error.error_type === "string"
|
|
116
|
+
? error.error_type
|
|
117
|
+
: rawType && rawType !== "error"
|
|
118
|
+
? rawType
|
|
119
|
+
: undefined;
|
|
120
|
+
return {
|
|
121
|
+
name: EVENT_NAME.scaffoldTickError,
|
|
122
|
+
level: "warn",
|
|
123
|
+
body: `Scanner ${label} tick failed`,
|
|
124
|
+
attributes: eventAttrs({
|
|
125
|
+
...base,
|
|
126
|
+
"senpi.scaffold.error_type": errorType,
|
|
127
|
+
}),
|
|
128
|
+
...(message ? { redact: { message } } : {}),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=intake-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intake-events.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/intake-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -54,6 +54,8 @@ export interface ExternalScannerSpec {
|
|
|
54
54
|
* `SupervisorContract` names the behavioral agreement itself.
|
|
55
55
|
*/
|
|
56
56
|
export interface SupervisorContract extends EventEmitter {
|
|
57
|
+
/** Stable id of this supervisor instance — the join key to its free-text logs and lifecycle events. */
|
|
58
|
+
readonly supervisorId: string;
|
|
57
59
|
spec: LongRunningSpec;
|
|
58
60
|
start(): void;
|
|
59
61
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner-launcher.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"scanner-launcher.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,OAAO,KAAK,EACV,eAAe,EAEhB,MAAM,qDAAqD,CAAC;AAQ7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,eAAe,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAChD,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,kGAAkG;IAClG,4BAA4B,EAAE,MAAM,CAAC;IACrC,kGAAkG;IAClG,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,uGAAuG;IACvG,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,QAAQ,EAAE,eAAe,CAAC;IAC1B,uEAAuE;IACvE,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,aAAa,CAAC;IACxB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,yEAAyE;IACzE,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,KAAK,kBAAkB,CAAC;IACjF,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACxF,sEAAsE;IACtE,iBAAiB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9C;AAYD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAkBjB;IAEJ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C;;;;OAIG;IACH,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,EAAE,mBAAmB;IAIxC;;;;;;;;;;OAUG;IACH,iBAAiB,IAAI,IAAI;IAyOnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
|
|
@@ -15,6 +15,8 @@ import * as fs from "node:fs";
|
|
|
15
15
|
import * as path from "node:path";
|
|
16
16
|
import { LongRunningSupervisor } from "../../runtime/supervisor/long-running-supervisor.js";
|
|
17
17
|
import { makeId } from "../../runtime/supervisor/supervisor-utils.js";
|
|
18
|
+
import { emitEvent } from "../../actions/event-derivation.js";
|
|
19
|
+
import { buildScannerLifecycleEvent, buildScannerLaunchFailedEvent, recordScannerLifecycleMetrics, } from "./supervisor-events.js";
|
|
18
20
|
// ── ScannerLauncher ────────────────────────────────────────────────────────────
|
|
19
21
|
export class ScannerLauncher {
|
|
20
22
|
deps;
|
|
@@ -56,9 +58,12 @@ export class ScannerLauncher {
|
|
|
56
58
|
const onSupervisorEvent = this.deps.onSupervisorEvent;
|
|
57
59
|
// Track ids registered in this call so we can roll back on partial failure.
|
|
58
60
|
const registeredInThisCall = [];
|
|
61
|
+
// The scanner being wired when a failure throws — names it on the launch-failed event.
|
|
62
|
+
let failingScanner;
|
|
59
63
|
try {
|
|
60
64
|
for (let i = 0; i < scanners.length; i++) {
|
|
61
65
|
const scanner = scanners[i];
|
|
66
|
+
failingScanner = scanner.name;
|
|
62
67
|
if (!scanner.path) {
|
|
63
68
|
throw new Error(`ScannerLauncher: scanner "${scanner.name}" is missing required field "path"`);
|
|
64
69
|
}
|
|
@@ -150,26 +155,56 @@ export class ScannerLauncher {
|
|
|
150
155
|
onSupervisorEvent(e);
|
|
151
156
|
});
|
|
152
157
|
}
|
|
158
|
+
// Telemetry bridge: translate each lifecycle event into its `scanner.*` catalog event and its
|
|
159
|
+
// health metric. Read the scanner id fresh from the holder so it reflects the run being
|
|
160
|
+
// reported — this is wired BEFORE the remint listener below, so a `restarting` event still
|
|
161
|
+
// carries the exiting run's id.
|
|
162
|
+
supervisor.on("event", (e) => {
|
|
163
|
+
const evt = e;
|
|
164
|
+
const lifecycleCtx = {
|
|
165
|
+
scannerName: scanner.name,
|
|
166
|
+
scannerId: idHolder.value,
|
|
167
|
+
supervisorId: supervisor.supervisorId,
|
|
168
|
+
wallet,
|
|
169
|
+
};
|
|
170
|
+
emitEvent(logger, () => buildScannerLifecycleEvent(evt, lifecycleCtx));
|
|
171
|
+
recordScannerLifecycleMetrics(evt, lifecycleCtx);
|
|
172
|
+
});
|
|
153
173
|
// 6. Subscribe to restarting for remint.
|
|
154
174
|
supervisor.on("event", (e) => {
|
|
155
175
|
const evt = e;
|
|
156
176
|
if (evt.type === "restarting") {
|
|
157
177
|
const oldId = idHolder.value;
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
178
|
+
try {
|
|
179
|
+
registry.unregister(oldId);
|
|
180
|
+
const newId = mintScannerId();
|
|
181
|
+
idHolder.value = newId;
|
|
182
|
+
registry.register({
|
|
183
|
+
scannerId: newId,
|
|
184
|
+
runtimeId,
|
|
185
|
+
scannerName: scanner.name,
|
|
186
|
+
wallet,
|
|
187
|
+
fields: scanner.fields,
|
|
188
|
+
});
|
|
189
|
+
// Rewrite env so the next spawn carries the new id.
|
|
190
|
+
supervisor.spec.env = {
|
|
191
|
+
...supervisor.spec.env,
|
|
192
|
+
EXTERNAL_SCANNER_ID: newId,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
// A failed re-mint breaks the zombie fence — the scanner can be left with no registry
|
|
197
|
+
// entry, so its signals are refused (UNKNOWN_SCANNER). Surface it rather than let the
|
|
198
|
+
// supervisor's safeEmit swallow it as a generic listener throw.
|
|
199
|
+
emitEvent(logger, () => buildScannerLaunchFailedEvent({
|
|
200
|
+
scannerName: scanner.name,
|
|
201
|
+
phase: "remint",
|
|
202
|
+
wallet,
|
|
203
|
+
scannerId: oldId,
|
|
204
|
+
supervisorId: supervisor.supervisorId,
|
|
205
|
+
error: err,
|
|
206
|
+
}));
|
|
207
|
+
}
|
|
173
208
|
}
|
|
174
209
|
});
|
|
175
210
|
this.active.push({ currentId: idHolder, supervisor });
|
|
@@ -179,6 +214,14 @@ export class ScannerLauncher {
|
|
|
179
214
|
this._initialized = true;
|
|
180
215
|
}
|
|
181
216
|
catch (err) {
|
|
217
|
+
// First-class record: this runtime's supervised scanner failed to wire up and will produce no
|
|
218
|
+
// signals. Emitted before the rollback/rethrow, inside emitEvent's guard.
|
|
219
|
+
emitEvent(logger, () => buildScannerLaunchFailedEvent({
|
|
220
|
+
scannerName: failingScanner ?? "unknown",
|
|
221
|
+
phase: "wire",
|
|
222
|
+
wallet,
|
|
223
|
+
error: err,
|
|
224
|
+
}));
|
|
182
225
|
// All-or-nothing: roll back every registration made in this call so the
|
|
183
226
|
// registry stays clean and a retry does not see stale or duplicate ids.
|
|
184
227
|
for (const id of registeredInThisCall) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner-launcher.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-launcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner-launcher.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@ export interface ScannerRegistry {
|
|
|
19
19
|
resolve(scannerId: string): ScannerRegistryEntry | undefined;
|
|
20
20
|
register(entry: ScannerRegistryEntry): void;
|
|
21
21
|
unregister(scannerId: string): void;
|
|
22
|
+
/** All live entries — lets a reader resolve scannerName → current (ephemeral) scanner_id. */
|
|
23
|
+
entries(): ScannerRegistryEntry[];
|
|
22
24
|
}
|
|
23
25
|
/**
|
|
24
26
|
* Default Map-backed implementation of ScannerRegistry.
|
|
@@ -32,5 +34,6 @@ export declare class MapScannerRegistry implements ScannerRegistry {
|
|
|
32
34
|
resolve(scannerId: string): ScannerRegistryEntry | undefined;
|
|
33
35
|
register(entry: ScannerRegistryEntry): void;
|
|
34
36
|
unregister(scannerId: string): void;
|
|
37
|
+
entries(): ScannerRegistryEntry[];
|
|
35
38
|
}
|
|
36
39
|
//# sourceMappingURL=scanner-registry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner-registry.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"scanner-registry.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAEpF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS,CAAC;IAC7D,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,6FAA6F;IAC7F,OAAO,IAAI,oBAAoB,EAAE,CAAC;CACnC;AAED;;;;;;GAMG;AACH,qBAAa,kBAAmB,YAAW,eAAe;IACxD,OAAO,CAAC,KAAK,CAA2C;IAExD,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAI5D,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI;IAI3C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAInC,OAAO,IAAI,oBAAoB,EAAE;CAGlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner-registry.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"scanner-registry.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/scanner-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH;;;;;;GAMG;AACH,MAAM,OAAO,kBAAkB;IACrB,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IAExD,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ,CAAC,KAA2B;QAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO;QACL,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The supervised-scanner substrate's telemetry bridge: it translates the vendor-neutral
|
|
3
|
+
* `LongRunningSupervisor "event"` channel into our catalog events and health metrics, the only
|
|
4
|
+
* catalog/metric-aware seam (the supervisor stays vendor-neutral). {@link buildScannerLifecycleEvent}
|
|
5
|
+
* maps the channel into the `scanner.*` catalog family so the boundary — child spawn/exit/crash-loop/
|
|
6
|
+
* silence-kill — is observable (graceful `stopped` is intentionally not catalogued; it is covered by
|
|
7
|
+
* `runtime.stopped`). {@link buildScannerLaunchFailedEvent} covers the launcher-side failures that
|
|
8
|
+
* never reach the supervisor's channel: a scanner that fails to wire up at all, or fails to re-mint
|
|
9
|
+
* its id on relaunch. {@link recordScannerLifecycleMetrics} is the metric side — the restart counter
|
|
10
|
+
* and degraded gauge that page an operator without a trace or log scan.
|
|
11
|
+
*
|
|
12
|
+
* The builders are pure `(input) => EmittableEvent | null`; the launcher emits the result through
|
|
13
|
+
* `emitEvent`'s guard, so a throwing build or a telemetry failure can never disturb the supervisor's
|
|
14
|
+
* run loop or the wiring. The metric recorder is a guarded side-effect (the instruments swallow throws).
|
|
15
|
+
*/
|
|
16
|
+
import type { LongRunningEvent } from "../../runtime/supervisor/long-running-supervisor.js";
|
|
17
|
+
import { EVENT_NAME } from "../../utils/event-catalog.js";
|
|
18
|
+
import type { EmittableEvent } from "../../actions/event-derivation.js";
|
|
19
|
+
/** The catalog names this bridge emits. */
|
|
20
|
+
type ScannerLifecycleName = typeof EVENT_NAME.scannerSpawned | typeof EVENT_NAME.scannerExited | typeof EVENT_NAME.scannerRestarted | typeof EVENT_NAME.scannerDegraded | typeof EVENT_NAME.scannerRecovered | typeof EVENT_NAME.scannerSilenceKilled | typeof EVENT_NAME.scannerOrphanSwept;
|
|
21
|
+
/** The scanner-instance identity the launcher pins onto every lifecycle event. */
|
|
22
|
+
export interface ScannerLifecycleContext {
|
|
23
|
+
/** The recipe-declared scanner name (stable across relaunch). */
|
|
24
|
+
scannerName: string;
|
|
25
|
+
/** The current ephemeral scanner id (re-minted on relaunch — read at emit time). */
|
|
26
|
+
scannerId: string;
|
|
27
|
+
/** The owning supervisor's id — the join key to its free-text logs. */
|
|
28
|
+
supervisorId: string;
|
|
29
|
+
/** Strategy wallet; omitted/empty → not stamped. */
|
|
30
|
+
wallet?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Map one supervisor lifecycle event to its event-log record, or `null` for `stopped` (not
|
|
34
|
+
* catalogued). The switch is exhaustive over {@link LongRunningEvent}: a new transition added to the
|
|
35
|
+
* union without a case here is a compile error.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildScannerLifecycleEvent(event: LongRunningEvent, ctx: ScannerLifecycleContext): EmittableEvent<ScannerLifecycleName> | null;
|
|
38
|
+
/**
|
|
39
|
+
* Record the metric side of a lifecycle event: the `scanner.restarts` counter on each restart, and
|
|
40
|
+
* the `scanner.degraded` up/down gauge across the crash-loop edge (+1 on `degraded`, −1 on
|
|
41
|
+
* `recovered`). A teardown while degraded never emits `recovered`, so `stopped` carries `wasDegraded`
|
|
42
|
+
* and balances the gauge with its own −1 — otherwise a partial teardown (hot-uninstall, single-scanner
|
|
43
|
+
* stop) would leak a permanent +1 for that name+wallet. Dimensioned by the stable scanner name +
|
|
44
|
+
* wallet, not the ephemeral id. Other transitions carry no metric.
|
|
45
|
+
*/
|
|
46
|
+
export declare function recordScannerLifecycleMetrics(event: LongRunningEvent, ctx: ScannerLifecycleContext): void;
|
|
47
|
+
/** A launcher-side wiring failure — the scanner produces no signals. */
|
|
48
|
+
export interface ScannerLaunchFailure {
|
|
49
|
+
scannerName: string;
|
|
50
|
+
/** `wire` (initial launch) | `remint` (relaunch id rotation). */
|
|
51
|
+
phase: "wire" | "remint";
|
|
52
|
+
wallet?: string;
|
|
53
|
+
/** The old id + owning supervisor — known only on a `remint` failure. */
|
|
54
|
+
scannerId?: string;
|
|
55
|
+
supervisorId?: string;
|
|
56
|
+
error: unknown;
|
|
57
|
+
}
|
|
58
|
+
/** Build the `scanner.launch_failed` event (warn) for a launch/remint failure, with the exception attached. */
|
|
59
|
+
export declare function buildScannerLaunchFailedEvent(failure: ScannerLaunchFailure): EmittableEvent<typeof EVENT_NAME.scannerLaunchFailed>;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=supervisor-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor-events.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/intake/supervisor-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,EAAE,UAAU,EAA6B,MAAM,8BAA8B,CAAC;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGxE,2CAA2C;AAC3C,KAAK,oBAAoB,GACrB,OAAO,UAAU,CAAC,cAAc,GAChC,OAAO,UAAU,CAAC,aAAa,GAC/B,OAAO,UAAU,CAAC,gBAAgB,GAClC,OAAO,UAAU,CAAC,eAAe,GACjC,OAAO,UAAU,CAAC,gBAAgB,GAClC,OAAO,UAAU,CAAC,oBAAoB,GACtC,OAAO,UAAU,CAAC,kBAAkB,CAAC;AAEzC,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,uBAAuB,GAC3B,cAAc,CAAC,oBAAoB,CAAC,GAAG,IAAI,CA6F7C;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,uBAAuB,GAC3B,IAAI,CAoBN;AAED,wEAAwE;AACxE,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,+GAA+G;AAC/G,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,oBAAoB,GAC5B,cAAc,CAAC,OAAO,UAAU,CAAC,mBAAmB,CAAC,CAevD"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The supervised-scanner substrate's telemetry bridge: it translates the vendor-neutral
|
|
3
|
+
* `LongRunningSupervisor "event"` channel into our catalog events and health metrics, the only
|
|
4
|
+
* catalog/metric-aware seam (the supervisor stays vendor-neutral). {@link buildScannerLifecycleEvent}
|
|
5
|
+
* maps the channel into the `scanner.*` catalog family so the boundary — child spawn/exit/crash-loop/
|
|
6
|
+
* silence-kill — is observable (graceful `stopped` is intentionally not catalogued; it is covered by
|
|
7
|
+
* `runtime.stopped`). {@link buildScannerLaunchFailedEvent} covers the launcher-side failures that
|
|
8
|
+
* never reach the supervisor's channel: a scanner that fails to wire up at all, or fails to re-mint
|
|
9
|
+
* its id on relaunch. {@link recordScannerLifecycleMetrics} is the metric side — the restart counter
|
|
10
|
+
* and degraded gauge that page an operator without a trace or log scan.
|
|
11
|
+
*
|
|
12
|
+
* The builders are pure `(input) => EmittableEvent | null`; the launcher emits the result through
|
|
13
|
+
* `emitEvent`'s guard, so a throwing build or a telemetry failure can never disturb the supervisor's
|
|
14
|
+
* run loop or the wiring. The metric recorder is a guarded side-effect (the instruments swallow throws).
|
|
15
|
+
*/
|
|
16
|
+
import { EVENT_NAME, eventAttrs } from "../../utils/event-catalog.js";
|
|
17
|
+
import { recordScannerRestart, recordScannerDegradedDelta } from "../../telemetry/metrics.js";
|
|
18
|
+
/** The id/name/supervisor/wallet attributes every lifecycle event carries. */
|
|
19
|
+
function baseAttrs(ctx) {
|
|
20
|
+
return {
|
|
21
|
+
"senpi.scanner.id": ctx.scannerId,
|
|
22
|
+
"senpi.scanner.name": ctx.scannerName,
|
|
23
|
+
"senpi.supervisor.id": ctx.supervisorId,
|
|
24
|
+
// Addresses are case-insensitive; lowercase to match the identity join key.
|
|
25
|
+
"senpi.strategy.address": ctx.wallet ? ctx.wallet.toLowerCase() : undefined,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Map one supervisor lifecycle event to its event-log record, or `null` for `stopped` (not
|
|
30
|
+
* catalogued). The switch is exhaustive over {@link LongRunningEvent}: a new transition added to the
|
|
31
|
+
* union without a case here is a compile error.
|
|
32
|
+
*/
|
|
33
|
+
export function buildScannerLifecycleEvent(event, ctx) {
|
|
34
|
+
const base = baseAttrs(ctx);
|
|
35
|
+
const { scannerName } = ctx;
|
|
36
|
+
switch (event.type) {
|
|
37
|
+
case "spawned":
|
|
38
|
+
return {
|
|
39
|
+
name: EVENT_NAME.scannerSpawned,
|
|
40
|
+
level: "info",
|
|
41
|
+
body: `Scanner ${scannerName} spawned (pid ${event.pid}, attempt ${event.attempt})`,
|
|
42
|
+
attributes: eventAttrs({
|
|
43
|
+
...base,
|
|
44
|
+
"senpi.supervisor.run_id": event.runId,
|
|
45
|
+
"senpi.scanner.pid": event.pid,
|
|
46
|
+
"senpi.scanner.attempt": event.attempt,
|
|
47
|
+
}),
|
|
48
|
+
};
|
|
49
|
+
case "exited": {
|
|
50
|
+
// A child that never ran (spawn throw / ENOENT) carries the exception — surface it as a warn
|
|
51
|
+
// exit with the stack on the event, rather than a plain info exit.
|
|
52
|
+
const failed = event.error !== undefined;
|
|
53
|
+
const exitDesc = event.exitCode !== null ? `code ${event.exitCode}` : `signal ${event.signal ?? "unknown"}`;
|
|
54
|
+
return {
|
|
55
|
+
name: EVENT_NAME.scannerExited,
|
|
56
|
+
level: failed ? "warn" : "info",
|
|
57
|
+
body: failed
|
|
58
|
+
? `Scanner ${scannerName} failed to start`
|
|
59
|
+
: `Scanner ${scannerName} exited (${exitDesc}) after ${event.durationMs}ms`,
|
|
60
|
+
attributes: eventAttrs({
|
|
61
|
+
...base,
|
|
62
|
+
"senpi.supervisor.run_id": event.runId,
|
|
63
|
+
"senpi.scanner.pid": event.pid,
|
|
64
|
+
"senpi.scanner.exit_code": event.exitCode ?? undefined,
|
|
65
|
+
"senpi.scanner.signal": event.signal,
|
|
66
|
+
"senpi.scanner.duration_ms": event.durationMs,
|
|
67
|
+
}),
|
|
68
|
+
...(failed ? { error: event.error } : {}),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
case "restarting":
|
|
72
|
+
return {
|
|
73
|
+
name: EVENT_NAME.scannerRestarted,
|
|
74
|
+
level: "info",
|
|
75
|
+
body: `Scanner ${scannerName} restarting in ${event.backoffMs}ms (attempt ${event.attempt})`,
|
|
76
|
+
attributes: eventAttrs({
|
|
77
|
+
...base,
|
|
78
|
+
"senpi.supervisor.run_id": event.runId,
|
|
79
|
+
"senpi.scanner.backoff_ms": event.backoffMs,
|
|
80
|
+
"senpi.scanner.attempt": event.attempt,
|
|
81
|
+
}),
|
|
82
|
+
};
|
|
83
|
+
case "degraded":
|
|
84
|
+
return {
|
|
85
|
+
name: EVENT_NAME.scannerDegraded,
|
|
86
|
+
level: "warn",
|
|
87
|
+
body: `Scanner ${scannerName} degraded — ${event.reason}`,
|
|
88
|
+
attributes: eventAttrs({
|
|
89
|
+
...base,
|
|
90
|
+
"senpi.scanner.rapid_failures": event.rapidFailures,
|
|
91
|
+
}),
|
|
92
|
+
};
|
|
93
|
+
case "recovered":
|
|
94
|
+
return {
|
|
95
|
+
name: EVENT_NAME.scannerRecovered,
|
|
96
|
+
level: "info",
|
|
97
|
+
body: `Scanner ${scannerName} recovered to healthy`,
|
|
98
|
+
attributes: eventAttrs({ ...base }),
|
|
99
|
+
};
|
|
100
|
+
case "silence-killed":
|
|
101
|
+
return {
|
|
102
|
+
name: EVENT_NAME.scannerSilenceKilled,
|
|
103
|
+
level: "warn",
|
|
104
|
+
body: `Scanner ${scannerName} silent for ${event.silenceMs}ms — killed (pid ${event.pid})`,
|
|
105
|
+
attributes: eventAttrs({
|
|
106
|
+
...base,
|
|
107
|
+
"senpi.supervisor.run_id": event.runId,
|
|
108
|
+
"senpi.scanner.pid": event.pid,
|
|
109
|
+
"senpi.scanner.silence_ms": event.silenceMs,
|
|
110
|
+
}),
|
|
111
|
+
};
|
|
112
|
+
case "swept-orphan":
|
|
113
|
+
return {
|
|
114
|
+
name: EVENT_NAME.scannerOrphanSwept,
|
|
115
|
+
level: "info",
|
|
116
|
+
body: `Swept orphaned scanner process (pid ${event.pid})`,
|
|
117
|
+
attributes: eventAttrs({
|
|
118
|
+
...base,
|
|
119
|
+
"senpi.scanner.pid": event.pid,
|
|
120
|
+
}),
|
|
121
|
+
};
|
|
122
|
+
case "stopped":
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Record the metric side of a lifecycle event: the `scanner.restarts` counter on each restart, and
|
|
128
|
+
* the `scanner.degraded` up/down gauge across the crash-loop edge (+1 on `degraded`, −1 on
|
|
129
|
+
* `recovered`). A teardown while degraded never emits `recovered`, so `stopped` carries `wasDegraded`
|
|
130
|
+
* and balances the gauge with its own −1 — otherwise a partial teardown (hot-uninstall, single-scanner
|
|
131
|
+
* stop) would leak a permanent +1 for that name+wallet. Dimensioned by the stable scanner name +
|
|
132
|
+
* wallet, not the ephemeral id. Other transitions carry no metric.
|
|
133
|
+
*/
|
|
134
|
+
export function recordScannerLifecycleMetrics(event, ctx) {
|
|
135
|
+
const dims = {
|
|
136
|
+
scannerName: ctx.scannerName,
|
|
137
|
+
strategyAddress: ctx.wallet ? ctx.wallet.toLowerCase() : undefined,
|
|
138
|
+
};
|
|
139
|
+
switch (event.type) {
|
|
140
|
+
case "restarting":
|
|
141
|
+
recordScannerRestart(dims);
|
|
142
|
+
break;
|
|
143
|
+
case "degraded":
|
|
144
|
+
recordScannerDegradedDelta(1, dims);
|
|
145
|
+
break;
|
|
146
|
+
case "recovered":
|
|
147
|
+
recordScannerDegradedDelta(-1, dims);
|
|
148
|
+
break;
|
|
149
|
+
case "stopped":
|
|
150
|
+
// Balance the gauge on a teardown that happened while degraded (no `recovered` was emitted).
|
|
151
|
+
if (event.wasDegraded)
|
|
152
|
+
recordScannerDegradedDelta(-1, dims);
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/** Build the `scanner.launch_failed` event (warn) for a launch/remint failure, with the exception attached. */
|
|
157
|
+
export function buildScannerLaunchFailedEvent(failure) {
|
|
158
|
+
const verb = failure.phase === "remint" ? "failed to re-mint on relaunch" : "failed to wire up";
|
|
159
|
+
return {
|
|
160
|
+
name: EVENT_NAME.scannerLaunchFailed,
|
|
161
|
+
level: "warn",
|
|
162
|
+
body: `Scanner ${failure.scannerName} ${verb}`,
|
|
163
|
+
attributes: eventAttrs({
|
|
164
|
+
"senpi.scanner.name": failure.scannerName,
|
|
165
|
+
"senpi.scanner.launch_phase": failure.phase,
|
|
166
|
+
"senpi.strategy.address": failure.wallet ? failure.wallet.toLowerCase() : undefined,
|
|
167
|
+
"senpi.scanner.id": failure.scannerId,
|
|
168
|
+
"senpi.supervisor.id": failure.supervisorId,
|
|
169
|
+
}),
|
|
170
|
+
error: failure.error,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=supervisor-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supervisor-events.js","sourceRoot":"","sources":["../../../src/runtime-api/intake/supervisor-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import type { FastifyInstance } from "fastify";
|
|
6
6
|
import type { ScannerRegistry } from "../intake/scanner-registry.js";
|
|
7
7
|
import type { AcceptanceRecord } from "../intake/acceptance-record.js";
|
|
8
|
-
import type
|
|
8
|
+
import { type Logger } from "../../utils/logger.js";
|
|
9
9
|
export interface RegisterSignalsRouteOpts {
|
|
10
10
|
registry: ScannerRegistry;
|
|
11
11
|
record: AcceptanceRecord;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/routes/signals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/routes/signals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAO7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAc,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAahE,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;IACjC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7E,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACtE;;;;OAIG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,wBAAwB,GAC7B,IAAI,CAmON"}
|