@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-engine.d.ts","sourceRoot":"","sources":["../../src/actions/decision-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EAGZ,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"decision-engine.d.ts","sourceRoot":"","sources":["../../src/actions/decision-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,EAGZ,MAAM,YAAY,CAAC;AAKpB,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CAC3D;AAID,qBAAa,cAAc;IACzB,OAAO,CAAC,UAAU,CAA6C;IAE/D,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAIpC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAOpF;AAID,qBAAa,mBAAoB,YAAW,gBAAgB;IAG9C,OAAO,CAAC,WAAW;IAF/B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAS;gBAEhB,WAAW,EAAE,WAAW;IAEtC,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAoDhE;AAID,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAU;IAE/B,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CA0ChE;AAID,qBAAa,kBAAmB,YAAW,gBAAgB;IACzD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAU;IAE/B,MAAM,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAShE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { withSpan } from '../telemetry/tracing.js';
|
|
1
2
|
// ─── Decision Engine ────────────────────────────────────────────────────────
|
|
2
3
|
export class DecisionEngine {
|
|
3
4
|
strategies = new Map();
|
|
@@ -23,35 +24,46 @@ export class LlmDecisionStrategy {
|
|
|
23
24
|
if (!request.prompt) {
|
|
24
25
|
throw new Error('LLM decision mode requires a prompt');
|
|
25
26
|
}
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
if (typeof decision.execute !== 'boolean') {
|
|
33
|
-
throw new Error('LLM decision missing required field: execute');
|
|
34
|
-
}
|
|
35
|
-
if (typeof decision.confidence !== 'number' ||
|
|
36
|
-
decision.confidence < 1 ||
|
|
37
|
-
decision.confidence > 10) {
|
|
38
|
-
throw new Error('LLM decision confidence must be a number between 1 and 10');
|
|
39
|
-
}
|
|
40
|
-
if (typeof decision.reasoning !== 'string') {
|
|
41
|
-
throw new Error('LLM decision missing required field: reasoning');
|
|
42
|
-
}
|
|
43
|
-
return {
|
|
44
|
-
execute: decision.execute,
|
|
45
|
-
actionType: decision.actionType ?? request.actionType,
|
|
46
|
-
confidence: decision.confidence,
|
|
47
|
-
reasoning: decision.reasoning,
|
|
48
|
-
payload: decision.payload ?? {},
|
|
49
|
-
decisionTelemetry: {
|
|
50
|
-
durationMs: response.latencyMs,
|
|
51
|
-
tokensUsed: response.tokensUsed,
|
|
27
|
+
const prompt = request.prompt;
|
|
28
|
+
// Span wraps the provider call so the auto-instrumented HTTP child nests under it.
|
|
29
|
+
return withSpan('decision.llm', {}, async (span) => {
|
|
30
|
+
const response = await this.llmDecision.decide({
|
|
31
|
+
prompt,
|
|
32
|
+
context: request.context,
|
|
52
33
|
model: request.model,
|
|
53
|
-
}
|
|
54
|
-
|
|
34
|
+
});
|
|
35
|
+
const decision = response.decision;
|
|
36
|
+
if (typeof decision.execute !== 'boolean') {
|
|
37
|
+
throw new Error('LLM decision missing required field: execute');
|
|
38
|
+
}
|
|
39
|
+
if (typeof decision.confidence !== 'number' ||
|
|
40
|
+
decision.confidence < 1 ||
|
|
41
|
+
decision.confidence > 10) {
|
|
42
|
+
throw new Error('LLM decision confidence must be a number between 1 and 10');
|
|
43
|
+
}
|
|
44
|
+
if (typeof decision.reasoning !== 'string') {
|
|
45
|
+
throw new Error('LLM decision missing required field: reasoning');
|
|
46
|
+
}
|
|
47
|
+
span.setAttribute('senpi.decision.confidence', decision.confidence);
|
|
48
|
+
if (request.model) {
|
|
49
|
+
span.setAttribute('senpi.decision.model', request.model);
|
|
50
|
+
}
|
|
51
|
+
if (typeof response.tokensUsed === 'number') {
|
|
52
|
+
span.setAttribute('senpi.decision.tokens_used', response.tokensUsed);
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
execute: decision.execute,
|
|
56
|
+
actionType: decision.actionType ?? request.actionType,
|
|
57
|
+
confidence: decision.confidence,
|
|
58
|
+
reasoning: decision.reasoning,
|
|
59
|
+
payload: decision.payload ?? {},
|
|
60
|
+
decisionTelemetry: {
|
|
61
|
+
durationMs: response.latencyMs,
|
|
62
|
+
tokensUsed: response.tokensUsed,
|
|
63
|
+
model: request.model,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
});
|
|
55
67
|
}
|
|
56
68
|
}
|
|
57
69
|
// ─── Rule Decision Strategy ─────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-engine.js","sourceRoot":"","sources":["../../src/actions/decision-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decision-engine.js","sourceRoot":"","sources":["../../src/actions/decision-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure derivation of the `decision.made` + `signal.outcome` event-log events from the ONE assembled
|
|
3
|
+
* action-result pass — a pure `(input) => EmittableEvent[]` mapper, so the call
|
|
4
|
+
* site emits the returned array in one synchronous loop and there is no partial pair on throw.
|
|
5
|
+
*
|
|
6
|
+
* The outcome classification, decision-window selection, and field projection are NOT reimplemented:
|
|
7
|
+
* we reuse the pure builders ({@link buildSignalEvaluated} → {@link buildDecisionMade} /
|
|
8
|
+
* {@link buildSignalOutcomes}), which are pure and already battle-tested, then project their records
|
|
9
|
+
* onto the event contract. Body lines are deterministic narratives; reasoning (decision.made) and any
|
|
10
|
+
* error text reach `redact`; the raw scanner `meta` bag is dropped.
|
|
11
|
+
*/
|
|
12
|
+
import { type PositionIdResolver } from "../telemetry/event-builders.js";
|
|
13
|
+
import { type AttrsFor, type EventName } from "../utils/event-catalog.js";
|
|
14
|
+
import type { Logger, LogLevel } from "../utils/logger.js";
|
|
15
|
+
/**
|
|
16
|
+
* A fully-built event ready to hand to `logger.event(name, level, { body, attributes, redact })`.
|
|
17
|
+
*
|
|
18
|
+
* Distributive over the event name so the `attributes` bag is the per-event {@link AttrsFor} shape,
|
|
19
|
+
* not a loose scalar map: a builder that constructs an `EmittableEvent<"order.placed">` is checked
|
|
20
|
+
* against `OrderEventAttrs` at construction, and a misnamed/wrong-typed attribute is a compile error
|
|
21
|
+
* at the builder. The default `N = EventName` is the full union — what a heterogeneous array carries.
|
|
22
|
+
*/
|
|
23
|
+
export type EmittableEvent<N extends EventName = EventName> = N extends EventName ? {
|
|
24
|
+
readonly name: N;
|
|
25
|
+
readonly level: LogLevel;
|
|
26
|
+
readonly body: string;
|
|
27
|
+
readonly attributes?: AttrsFor<N>;
|
|
28
|
+
readonly redact?: Record<string, string>;
|
|
29
|
+
/** A thrown value when this event is also a fault — folded onto the record as `exception.*`. */
|
|
30
|
+
readonly error?: unknown;
|
|
31
|
+
} : never;
|
|
32
|
+
/**
|
|
33
|
+
* Build then emit a single {@link EmittableEvent} through a logger, with build + emit guarded as one
|
|
34
|
+
* unit so neither a throwing builder nor a telemetry failure can disturb the host (trading/scan/
|
|
35
|
+
* lifecycle) path. The builder runs INSIDE the guard (passed as a thunk, not evaluated at the call
|
|
36
|
+
* site), so call sites need no surrounding try/catch. A `null` build result is a no-op — builders
|
|
37
|
+
* that drop an event (no asset, no summary) return `null` and need no separate check. The event
|
|
38
|
+
* carries its name alongside the matching typed `attributes` bag, so they flow straight into
|
|
39
|
+
* `logger.event`'s `AttrsFor<N>` contract with NO cast. `logger.event` is itself internally guarded.
|
|
40
|
+
*/
|
|
41
|
+
export declare function emitEvent(logger: Logger, build: () => EmittableEvent | null): void;
|
|
42
|
+
/**
|
|
43
|
+
* Build then emit an array of events in order, with the build and the whole loop guarded as one unit
|
|
44
|
+
* (see {@link emitEvent}). The builder runs inside the guard, so call sites need no surrounding
|
|
45
|
+
* try/catch. A throw during build or any emit aborts the rest silently — telemetry never throws into
|
|
46
|
+
* the host path.
|
|
47
|
+
*/
|
|
48
|
+
export declare function emitEvents(logger: Logger, build: () => readonly EmittableEvent[]): void;
|
|
49
|
+
/** The action-result pass, in the envelope `emitActionResultEvents` assembles. */
|
|
50
|
+
export interface ActionResultEventInput {
|
|
51
|
+
readonly payload: unknown;
|
|
52
|
+
readonly nowMs: number;
|
|
53
|
+
readonly resolvePositionId?: PositionIdResolver;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build the full event array for one action-result pass: `decision.made` first (when the pass carried
|
|
57
|
+
* a decision), then one `signal.outcome` per evaluated signal. A failed outcome escalates the
|
|
58
|
+
* signal.outcome level to `error` (the catalog floor is INFO); the error text rides `redact`.
|
|
59
|
+
*/
|
|
60
|
+
export declare function deriveActionResultEvents(input: ActionResultEventInput): EmittableEvent[];
|
|
61
|
+
//# sourceMappingURL=event-derivation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-derivation.d.ts","sourceRoot":"","sources":["../../src/actions/event-derivation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAmD,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3H,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAO3D;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,CAAC,SAAS,SAAS,GAC7E;IACE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IACjB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gGAAgG;IAChG,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,GACD,KAAK,CAAC;AAEV;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAclF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,cAAc,EAAE,GAAG,IAAI,CAavF;AAED,kFAAkF;AAClF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;CACjD;AAsFD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,sBAAsB,GAAG,cAAc,EAAE,CAqCxF"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure derivation of the `decision.made` + `signal.outcome` event-log events from the ONE assembled
|
|
3
|
+
* action-result pass — a pure `(input) => EmittableEvent[]` mapper, so the call
|
|
4
|
+
* site emits the returned array in one synchronous loop and there is no partial pair on throw.
|
|
5
|
+
*
|
|
6
|
+
* The outcome classification, decision-window selection, and field projection are NOT reimplemented:
|
|
7
|
+
* we reuse the pure builders ({@link buildSignalEvaluated} → {@link buildDecisionMade} /
|
|
8
|
+
* {@link buildSignalOutcomes}), which are pure and already battle-tested, then project their records
|
|
9
|
+
* onto the event contract. Body lines are deterministic narratives; reasoning (decision.made) and any
|
|
10
|
+
* error text reach `redact`; the raw scanner `meta` bag is dropped.
|
|
11
|
+
*/
|
|
12
|
+
import { buildDecisionMade, buildSignalEvaluated, buildSignalOutcomes, } from "../telemetry/event-builders.js";
|
|
13
|
+
import { EVENT_NAME, JOIN_ATTR, eventAttrs, fmtThousands } from "../utils/event-catalog.js";
|
|
14
|
+
/**
|
|
15
|
+
* Build then emit a single {@link EmittableEvent} through a logger, with build + emit guarded as one
|
|
16
|
+
* unit so neither a throwing builder nor a telemetry failure can disturb the host (trading/scan/
|
|
17
|
+
* lifecycle) path. The builder runs INSIDE the guard (passed as a thunk, not evaluated at the call
|
|
18
|
+
* site), so call sites need no surrounding try/catch. A `null` build result is a no-op — builders
|
|
19
|
+
* that drop an event (no asset, no summary) return `null` and need no separate check. The event
|
|
20
|
+
* carries its name alongside the matching typed `attributes` bag, so they flow straight into
|
|
21
|
+
* `logger.event`'s `AttrsFor<N>` contract with NO cast. `logger.event` is itself internally guarded.
|
|
22
|
+
*/
|
|
23
|
+
export function emitEvent(logger, build) {
|
|
24
|
+
try {
|
|
25
|
+
const ev = build();
|
|
26
|
+
if (ev) {
|
|
27
|
+
logger.event(ev.name, ev.level, {
|
|
28
|
+
body: ev.body,
|
|
29
|
+
...(ev.attributes ? { attributes: ev.attributes } : {}),
|
|
30
|
+
...(ev.redact ? { redact: ev.redact } : {}),
|
|
31
|
+
...(ev.error !== undefined ? { error: ev.error } : {}),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Telemetry must never throw into the host path.
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Build then emit an array of events in order, with the build and the whole loop guarded as one unit
|
|
41
|
+
* (see {@link emitEvent}). The builder runs inside the guard, so call sites need no surrounding
|
|
42
|
+
* try/catch. A throw during build or any emit aborts the rest silently — telemetry never throws into
|
|
43
|
+
* the host path.
|
|
44
|
+
*/
|
|
45
|
+
export function emitEvents(logger, build) {
|
|
46
|
+
try {
|
|
47
|
+
for (const ev of build()) {
|
|
48
|
+
logger.event(ev.name, ev.level, {
|
|
49
|
+
body: ev.body,
|
|
50
|
+
...(ev.attributes ? { attributes: ev.attributes } : {}),
|
|
51
|
+
...(ev.redact ? { redact: ev.redact } : {}),
|
|
52
|
+
...(ev.error !== undefined ? { error: ev.error } : {}),
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// Telemetry must never throw into the host path.
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const INTENT_VERB = { open: "OPEN", close: "CLOSE", none: "EVAL" };
|
|
61
|
+
/** "Decided OPEN LONG ETH — confidence 0.82 ≥ 0.70, via llm" (clauses present only when known). */
|
|
62
|
+
function decisionBody(d) {
|
|
63
|
+
const verb = INTENT_VERB[d.actionIntent] ?? d.actionIntent.toUpperCase();
|
|
64
|
+
let line = `Decided ${verb}`;
|
|
65
|
+
if (d.confidence !== undefined) {
|
|
66
|
+
const cmp = d.confidenceThreshold !== undefined
|
|
67
|
+
? `${d.confidence} ${d.confidence >= d.confidenceThreshold ? "≥" : "<"} ${d.confidenceThreshold}`
|
|
68
|
+
: `${d.confidence}`;
|
|
69
|
+
line += ` — confidence ${cmp}`;
|
|
70
|
+
}
|
|
71
|
+
if (d.mode)
|
|
72
|
+
line += `, via ${d.mode}`;
|
|
73
|
+
return line;
|
|
74
|
+
}
|
|
75
|
+
/** decision.made attributes: the decision's safe scalars; reasoning goes to `redact`, not here. */
|
|
76
|
+
function decisionAttributes(d) {
|
|
77
|
+
return eventAttrs({
|
|
78
|
+
"senpi.decision.mode": d.mode,
|
|
79
|
+
"senpi.decision.by_llm": d.byLlm,
|
|
80
|
+
"senpi.decision.intent": d.actionIntent,
|
|
81
|
+
// Always a number off the record builder (`num(...) ?? 0`); the fallback mirrors that and keeps
|
|
82
|
+
// confidence a required, always-queryable scalar.
|
|
83
|
+
"senpi.decision.confidence": d.confidence ?? 0,
|
|
84
|
+
"senpi.decision.confidence_threshold": d.confidenceThreshold,
|
|
85
|
+
"senpi.decision.model": d.model,
|
|
86
|
+
"senpi.decision.tokens_used": d.tokensUsed ?? undefined,
|
|
87
|
+
"senpi.decision.duration_ms": d.durationMs,
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const DISPOSITION_NARRATIVE = {
|
|
91
|
+
accepted: "executed",
|
|
92
|
+
rejected: "rejected",
|
|
93
|
+
blocked: "blocked",
|
|
94
|
+
error: "errored",
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* "ETH LONG signal (score 0.9) → executed: filled 0.5 @ 2,400" — the trailing detail clause is
|
|
98
|
+
* tailored to the disposition: the entry fill on an accept, the granular reason code on an
|
|
99
|
+
* error/block/reject. The fill size/price come from the evaluation's outcome (dropped from the scalar
|
|
100
|
+
* attribute set's queryable surface but safe to template into the deterministic body). The raw error
|
|
101
|
+
* text is not templated — it rides the scrubbed `redact` slot.
|
|
102
|
+
*/
|
|
103
|
+
function outcomeBody(o, ev) {
|
|
104
|
+
const dir = o.direction ?? "";
|
|
105
|
+
const head = `${o.asset}${dir ? ` ${dir}` : ""} signal`;
|
|
106
|
+
const score = o.score !== undefined ? ` (score ${o.score})` : "";
|
|
107
|
+
const verb = DISPOSITION_NARRATIVE[o.result] ?? o.result;
|
|
108
|
+
let detail = "";
|
|
109
|
+
if (o.result === "accepted" && o.size !== undefined) {
|
|
110
|
+
const at = ev.outcome.entryPrice !== undefined ? ` @ ${fmtThousands(ev.outcome.entryPrice)}` : "";
|
|
111
|
+
detail = `: filled ${o.size}${at}`;
|
|
112
|
+
}
|
|
113
|
+
else if (o.reasonCode) {
|
|
114
|
+
detail = `: ${o.reasonCode}`;
|
|
115
|
+
}
|
|
116
|
+
return `${head}${score} → ${verb}${detail}`;
|
|
117
|
+
}
|
|
118
|
+
/** signal.outcome attributes: the queryable scalar surface; the raw `meta` bag is dropped. */
|
|
119
|
+
function outcomeAttributes(o) {
|
|
120
|
+
return eventAttrs({
|
|
121
|
+
[JOIN_ATTR.positionId]: o.positionId,
|
|
122
|
+
[JOIN_ATTR.orderId]: o.orderId,
|
|
123
|
+
"senpi.scanner.id": o.scannerId,
|
|
124
|
+
"senpi.signal.type": o.signalType,
|
|
125
|
+
"senpi.signal.asset": o.asset,
|
|
126
|
+
"senpi.signal.direction": o.direction ?? undefined,
|
|
127
|
+
// Always a number off the record builder (`num(...) ?? 0`); the fallback mirrors that and keeps
|
|
128
|
+
// score a required, always-queryable scalar.
|
|
129
|
+
"senpi.signal.score": o.score ?? 0,
|
|
130
|
+
"senpi.outcome.result": o.result,
|
|
131
|
+
"senpi.outcome.reason_code": o.reasonCode,
|
|
132
|
+
"senpi.outcome.margin_amount": o.marginAmount,
|
|
133
|
+
"senpi.outcome.margin_source": o.marginSource,
|
|
134
|
+
"senpi.outcome.margin_pct": o.marginPct,
|
|
135
|
+
"senpi.outcome.leverage": o.leverage,
|
|
136
|
+
"senpi.outcome.notional_value": o.notionalValue,
|
|
137
|
+
"senpi.outcome.size": o.size,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Build the full event array for one action-result pass: `decision.made` first (when the pass carried
|
|
142
|
+
* a decision), then one `signal.outcome` per evaluated signal. A failed outcome escalates the
|
|
143
|
+
* signal.outcome level to `error` (the catalog floor is INFO); the error text rides `redact`.
|
|
144
|
+
*/
|
|
145
|
+
export function deriveActionResultEvents(input) {
|
|
146
|
+
const { payload, nowMs, resolvePositionId } = input;
|
|
147
|
+
const pass = buildSignalEvaluated(payload, nowMs, resolvePositionId);
|
|
148
|
+
if (pass === null)
|
|
149
|
+
return [];
|
|
150
|
+
const events = [];
|
|
151
|
+
const decision = buildDecisionMade(pass);
|
|
152
|
+
if (decision !== null) {
|
|
153
|
+
events.push({
|
|
154
|
+
name: EVENT_NAME.decisionMade,
|
|
155
|
+
level: "info",
|
|
156
|
+
body: decisionBody(decision),
|
|
157
|
+
attributes: decisionAttributes(decision),
|
|
158
|
+
...(decision.reasoning ? { redact: { reasoning: decision.reasoning } } : {}),
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
// buildSignalOutcomes and pass.evaluations are both one-per-evaluation, same order — zipped so the
|
|
162
|
+
// narrative can template the fill (entryPrice) and the error text rides `redact` from the same
|
|
163
|
+
// evaluation. The record carries the queryable scalar surface (no raw `meta`); the evaluation
|
|
164
|
+
// carries the free-text error and the entry fill the body templates.
|
|
165
|
+
const outcomes = buildSignalOutcomes(pass);
|
|
166
|
+
outcomes.forEach((outcome, i) => {
|
|
167
|
+
const ev = pass.evaluations[i];
|
|
168
|
+
const isError = outcome.result === "error";
|
|
169
|
+
events.push({
|
|
170
|
+
name: EVENT_NAME.signalOutcome,
|
|
171
|
+
// ERROR when the outcome failed (the level arg escalates above the INFO floor).
|
|
172
|
+
level: isError ? "error" : "info",
|
|
173
|
+
body: outcomeBody(outcome, ev),
|
|
174
|
+
attributes: outcomeAttributes(outcome),
|
|
175
|
+
...(isError && ev.outcome.error ? { redact: { error: ev.outcome.error } } : {}),
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
return events;
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=event-derivation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-derivation.js","sourceRoot":"","sources":["../../src/actions/event-derivation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
import type { LlmDecision, LlmDecisionRequest, LlmDecisionResponse } from '../types.js';
|
|
2
|
-
import type { SpanTracker } from '../../tracking/spans/index.js';
|
|
3
2
|
export interface AnthropicLlmDecisionOptions {
|
|
4
3
|
apiKey?: string;
|
|
5
4
|
defaultModel?: string;
|
|
6
|
-
/**
|
|
7
|
-
* Optional SpanTracker for manual span emission. The direct-SDK path
|
|
8
|
-
* bypasses OpenClaw, so we have to capture the LLM call ourselves.
|
|
9
|
-
* When omitted, no spans are emitted (existing behavior preserved).
|
|
10
|
-
*/
|
|
11
|
-
spanTracker?: SpanTracker;
|
|
12
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Direct-Anthropic decision path. Retained as a standalone fallback; the production
|
|
8
|
+
* LLM provider is litellm via OpenClaw (see OpenClawLlmDecision), whose hooks emit the
|
|
9
|
+
* gen_ai spans. This path therefore carries no telemetry of its own.
|
|
10
|
+
*/
|
|
13
11
|
export declare class AnthropicLlmDecision implements LlmDecision {
|
|
14
12
|
private readonly client;
|
|
15
13
|
private readonly defaultModel;
|
|
16
|
-
private readonly spanTracker;
|
|
17
14
|
constructor(options?: AnthropicLlmDecisionOptions);
|
|
18
15
|
decide<T>(request: LlmDecisionRequest): Promise<LlmDecisionResponse<T>>;
|
|
19
|
-
private emitSpan;
|
|
20
16
|
}
|
|
21
17
|
//# sourceMappingURL=anthropic-llm-decision.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-llm-decision.d.ts","sourceRoot":"","sources":["../../../src/actions/llm-decision/anthropic-llm-decision.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"anthropic-llm-decision.d.ts","sourceRoot":"","sources":["../../../src/actions/llm-decision/anthropic-llm-decision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGxF,MAAM,WAAW,2BAA2B;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,WAAW;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,CAAC,EAAE,2BAA2B;IAM3C,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CA+C9E"}
|
|
@@ -1,32 +1,25 @@
|
|
|
1
1
|
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
-
import { randomUUID } from 'node:crypto';
|
|
3
2
|
import { ACTION_DECISION_SCHEMA, SYSTEM_PROMPT } from './shared.js';
|
|
4
|
-
import { getTrackingContext } from '../../tracking/context.js';
|
|
5
|
-
import { createLogger } from '../../utils/logger.js';
|
|
6
|
-
const logger = createLogger('[actions][anthropic-llm-decision]');
|
|
7
3
|
const DEFAULT_MODEL = 'claude-sonnet-4-20250514';
|
|
8
4
|
const DEFAULT_MAX_TOKENS = 1024;
|
|
5
|
+
/**
|
|
6
|
+
* Direct-Anthropic decision path. Retained as a standalone fallback; the production
|
|
7
|
+
* LLM provider is litellm via OpenClaw (see OpenClawLlmDecision), whose hooks emit the
|
|
8
|
+
* gen_ai spans. This path therefore carries no telemetry of its own.
|
|
9
|
+
*/
|
|
9
10
|
export class AnthropicLlmDecision {
|
|
10
11
|
client;
|
|
11
12
|
defaultModel;
|
|
12
|
-
spanTracker;
|
|
13
13
|
constructor(options) {
|
|
14
14
|
const apiKey = options?.apiKey?.replace(/\s+/g, '');
|
|
15
15
|
this.client = new Anthropic(apiKey ? { apiKey } : undefined);
|
|
16
16
|
this.defaultModel = options?.defaultModel ?? DEFAULT_MODEL;
|
|
17
|
-
this.spanTracker = options?.spanTracker ?? null;
|
|
18
17
|
}
|
|
19
18
|
async decide(request) {
|
|
20
19
|
const startedAt = Date.now();
|
|
21
20
|
const model = request.model ?? this.defaultModel;
|
|
22
21
|
const userContent = `## Task\n${request.prompt}\n\n## Context\n${JSON.stringify(request.context, null, 2)}`;
|
|
23
|
-
// Per-call synthetic ids: session_key groups all direct-path spans from
|
|
24
|
-
// this runtime boot; run_id makes each call individually identifiable.
|
|
25
|
-
const ctx = getTrackingContext();
|
|
26
|
-
const synthSessionKey = `direct:${ctx?.runtimeBootId ?? 'unknown'}`;
|
|
27
|
-
const synthRunId = `direct:${randomUUID()}`;
|
|
28
22
|
let response;
|
|
29
|
-
let errorForSpan;
|
|
30
23
|
try {
|
|
31
24
|
response = await this.client.messages.create({
|
|
32
25
|
model,
|
|
@@ -45,48 +38,15 @@ export class AnthropicLlmDecision {
|
|
|
45
38
|
});
|
|
46
39
|
}
|
|
47
40
|
catch (error) {
|
|
48
|
-
errorForSpan = error;
|
|
49
|
-
// Capture the failed call as a span before rethrowing.
|
|
50
|
-
this.emitSpan({
|
|
51
|
-
startedAt,
|
|
52
|
-
endedAt: Date.now(),
|
|
53
|
-
model,
|
|
54
|
-
synthSessionKey,
|
|
55
|
-
synthRunId,
|
|
56
|
-
userContent,
|
|
57
|
-
error: error,
|
|
58
|
-
});
|
|
59
41
|
throw classifyAnthropicError(error);
|
|
60
42
|
}
|
|
61
|
-
const
|
|
62
|
-
const latencyMs = endedAt - startedAt;
|
|
43
|
+
const latencyMs = Date.now() - startedAt;
|
|
63
44
|
const toolBlock = response.content.find((block) => block.type === 'tool_use');
|
|
64
45
|
if (!toolBlock) {
|
|
65
|
-
// No tool_use block — capture as a span-with-error before throwing.
|
|
66
|
-
this.emitSpan({
|
|
67
|
-
startedAt,
|
|
68
|
-
endedAt,
|
|
69
|
-
model,
|
|
70
|
-
synthSessionKey,
|
|
71
|
-
synthRunId,
|
|
72
|
-
userContent,
|
|
73
|
-
response,
|
|
74
|
-
error: 'Anthropic response contained no tool_use block',
|
|
75
|
-
});
|
|
76
46
|
throw new Error('Anthropic response contained no tool_use block');
|
|
77
47
|
}
|
|
78
48
|
const decision = toolBlock.input;
|
|
79
49
|
const tokensUsed = response.usage.input_tokens + response.usage.output_tokens;
|
|
80
|
-
this.emitSpan({
|
|
81
|
-
startedAt,
|
|
82
|
-
endedAt,
|
|
83
|
-
model,
|
|
84
|
-
synthSessionKey,
|
|
85
|
-
synthRunId,
|
|
86
|
-
userContent,
|
|
87
|
-
response,
|
|
88
|
-
});
|
|
89
|
-
void errorForSpan; // (kept for symmetry — unused in success path)
|
|
90
50
|
return {
|
|
91
51
|
decision,
|
|
92
52
|
rawResponse: JSON.stringify(response.content),
|
|
@@ -94,47 +54,6 @@ export class AnthropicLlmDecision {
|
|
|
94
54
|
latencyMs,
|
|
95
55
|
};
|
|
96
56
|
}
|
|
97
|
-
emitSpan(args) {
|
|
98
|
-
// This method is invoked inside catch blocks before rethrow and inside
|
|
99
|
-
// success paths before return. If it throws, it would mask the real
|
|
100
|
-
// outcome — replacing the Anthropic error with our span-emission error,
|
|
101
|
-
// or turning a successful decision into a failure. Wrap the body so any
|
|
102
|
-
// throw here (serialization, tracker bug, etc.) is logged and swallowed.
|
|
103
|
-
try {
|
|
104
|
-
if (!this.spanTracker)
|
|
105
|
-
return;
|
|
106
|
-
const ctx = getTrackingContext();
|
|
107
|
-
const usage = args.response?.usage;
|
|
108
|
-
this.spanTracker.captureLlmSpan({
|
|
109
|
-
sessionKey: args.synthSessionKey,
|
|
110
|
-
runId: args.synthRunId,
|
|
111
|
-
startedAt: args.startedAt,
|
|
112
|
-
endedAt: args.endedAt,
|
|
113
|
-
model: args.response?.model ?? args.model,
|
|
114
|
-
tokensIn: usage?.input_tokens ?? null,
|
|
115
|
-
tokensOut: usage?.output_tokens ?? null,
|
|
116
|
-
costUsd: null,
|
|
117
|
-
input: {
|
|
118
|
-
system: SYSTEM_PROMPT,
|
|
119
|
-
messages: [{ role: 'user', content: args.userContent }],
|
|
120
|
-
},
|
|
121
|
-
...(args.response ? { output: { content: args.response.content } } : {}),
|
|
122
|
-
...(args.error !== undefined ? { error: args.error } : {}),
|
|
123
|
-
correlationId: ctx?.correlationId ?? null,
|
|
124
|
-
address: ctx?.address ?? null,
|
|
125
|
-
recipeName: ctx?.recipeName ?? null,
|
|
126
|
-
runtimeId: ctx?.runtimeId ?? null,
|
|
127
|
-
runtimeVersion: ctx?.runtimeVersion ?? null,
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
catch (spanErr) {
|
|
131
|
-
logger.warn('emitSpan threw — original call outcome preserved', {
|
|
132
|
-
err: spanErr instanceof Error ? spanErr.message : String(spanErr),
|
|
133
|
-
model: args.model,
|
|
134
|
-
synthRunId: args.synthRunId,
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
57
|
}
|
|
139
58
|
// ─── Error classification ───────────────────────────────────────────────────
|
|
140
59
|
function classifyAnthropicError(error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-llm-decision.js","sourceRoot":"","sources":["../../../src/actions/llm-decision/anthropic-llm-decision.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-llm-decision.js","sourceRoot":"","sources":["../../../src/actions/llm-decision/anthropic-llm-decision.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import type { LlmDecision } from '../types.js';
|
|
2
|
-
import { type SpanTracker } from '../../tracking/spans/index.js';
|
|
3
2
|
export interface LlmDecisionOptions {
|
|
4
3
|
provider?: 'anthropic' | 'openclaw';
|
|
5
4
|
anthropicApiKey?: string;
|
|
6
5
|
defaultModel?: string;
|
|
7
6
|
gatewayUrl?: string;
|
|
8
7
|
gatewayToken?: string;
|
|
9
|
-
/**
|
|
10
|
-
* Optional SpanTracker; when present, the direct-SDK path emits LLM spans
|
|
11
|
-
* for every call. The OpenClaw path uses hook-based capture and ignores this.
|
|
12
|
-
*/
|
|
13
|
-
spanTracker?: SpanTracker;
|
|
14
8
|
}
|
|
15
9
|
/**
|
|
16
10
|
* Create an LlmDecision client based on the given options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/actions/llm-decision/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/actions/llm-decision/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAoB/E"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { getDefaultSpanTracker, } from '../../tracking/spans/index.js';
|
|
2
1
|
import { AnthropicLlmDecision } from './anthropic-llm-decision.js';
|
|
3
2
|
import { OpenClawLlmDecision } from './openclaw-llm-decision.js';
|
|
4
3
|
/**
|
|
@@ -16,7 +15,6 @@ export function createLlmDecision(options = {}) {
|
|
|
16
15
|
return new AnthropicLlmDecision({
|
|
17
16
|
apiKey: options.anthropicApiKey,
|
|
18
17
|
defaultModel: options.defaultModel,
|
|
19
|
-
spanTracker: options.spanTracker ?? getDefaultSpanTracker() ?? undefined,
|
|
20
18
|
});
|
|
21
19
|
case 'openclaw':
|
|
22
20
|
return new OpenClawLlmDecision({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/actions/llm-decision/factory.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/actions/llm-decision/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAUjE;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA8B,EAAE;IAChE,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;QAChB,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAExF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,WAAW;YACd,OAAO,IAAI,oBAAoB,CAAC;gBAC9B,MAAM,EAAE,OAAO,CAAC,eAAe;gBAC/B,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC,CAAC;QACL,KAAK,UAAU;YACb,OAAO,IAAI,mBAAmB,CAAC;gBAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,YAAY,EAAE,OAAO,CAAC,YAAY;aACnC,CAAC,CAAC;QACL;YACE,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAkB,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-llm-decision.d.ts","sourceRoot":"","sources":["../../../src/actions/llm-decision/openclaw-llm-decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"openclaw-llm-decision.d.ts","sourceRoot":"","sources":["../../../src/actions/llm-decision/openclaw-llm-decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAuBxF,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CASjG;AAED,qBAAa,mBAAoB,YAAW,WAAW;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAS;gBAE3B,OAAO,CAAC,EAAE,0BAA0B;IAM1C,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;CAyF9E"}
|