@senpi/runtime 3.0.6-dev.runtime-phase-2.20260630134145 → 3.0.6-dev.runtime-phase-2.20260630134327

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.
Files changed (140) hide show
  1. package/dist/actions/close-position/close-position.action.d.ts +1 -1
  2. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  3. package/dist/actions/close-position/close-position.action.js +109 -78
  4. package/dist/actions/close-position/close-position.action.js.map +1 -1
  5. package/dist/actions/decision-engine.d.ts.map +1 -1
  6. package/dist/actions/decision-engine.js +40 -28
  7. package/dist/actions/decision-engine.js.map +1 -1
  8. package/dist/actions/event-derivation.d.ts +60 -0
  9. package/dist/actions/event-derivation.d.ts.map +1 -0
  10. package/dist/actions/event-derivation.js +179 -0
  11. package/dist/actions/event-derivation.js.map +1 -0
  12. package/dist/actions/llm-decision/anthropic-llm-decision.d.ts.map +1 -1
  13. package/dist/actions/llm-decision/anthropic-llm-decision.js +1 -2
  14. package/dist/actions/llm-decision/anthropic-llm-decision.js.map +1 -1
  15. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -1
  16. package/dist/actions/llm-decision/openclaw-llm-decision.js +1 -2
  17. package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -1
  18. package/dist/actions/open-position/open-position.action.d.ts +1 -1
  19. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  20. package/dist/actions/open-position/open-position.action.js +283 -217
  21. package/dist/actions/open-position/open-position.action.js.map +1 -1
  22. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  23. package/dist/actions/position-tracker/position-tracker.action.js +2 -4
  24. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  25. package/dist/actions/tracking-helpers.d.ts +41 -3
  26. package/dist/actions/tracking-helpers.d.ts.map +1 -1
  27. package/dist/actions/tracking-helpers.js +100 -11
  28. package/dist/actions/tracking-helpers.js.map +1 -1
  29. package/dist/dsl/monitor/create-monitor.d.ts +3 -0
  30. package/dist/dsl/monitor/create-monitor.d.ts.map +1 -1
  31. package/dist/dsl/monitor/create-monitor.js +76 -28
  32. package/dist/dsl/monitor/create-monitor.js.map +1 -1
  33. package/dist/dsl/monitor/process-one-position.d.ts +2 -1
  34. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  35. package/dist/dsl/monitor/process-one-position.js +84 -38
  36. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  37. package/dist/dsl/plugin/index.d.ts +10 -0
  38. package/dist/dsl/plugin/index.d.ts.map +1 -1
  39. package/dist/dsl/plugin/index.js +42 -4
  40. package/dist/dsl/plugin/index.js.map +1 -1
  41. package/dist/dsl/plugin/options.d.ts +3 -0
  42. package/dist/dsl/plugin/options.d.ts.map +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -2
  45. package/dist/index.js.map +1 -1
  46. package/dist/recording/otel/attributes.d.ts +2 -0
  47. package/dist/recording/otel/attributes.d.ts.map +1 -1
  48. package/dist/recording/otel/attributes.js +1 -1
  49. package/dist/recording/otel/attributes.js.map +1 -1
  50. package/dist/recording/otel/mappers.d.ts.map +1 -1
  51. package/dist/recording/otel/mappers.js +1 -0
  52. package/dist/recording/otel/mappers.js.map +1 -1
  53. package/dist/recording/records.d.ts +7 -1
  54. package/dist/recording/records.d.ts.map +1 -1
  55. package/dist/recording/wiring/record-builders.d.ts.map +1 -1
  56. package/dist/recording/wiring/record-builders.js +5 -2
  57. package/dist/recording/wiring/record-builders.js.map +1 -1
  58. package/dist/runtime/auto-update/coordinator.js +2 -2
  59. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  60. package/dist/runtime/create-actions.d.ts.map +1 -1
  61. package/dist/runtime/create-actions.js +40 -15
  62. package/dist/runtime/create-actions.js.map +1 -1
  63. package/dist/runtime/create-scanner-module.d.ts +2 -1
  64. package/dist/runtime/create-scanner-module.d.ts.map +1 -1
  65. package/dist/runtime/create-scanner-module.js +2 -1
  66. package/dist/runtime/create-scanner-module.js.map +1 -1
  67. package/dist/runtime/domain-events.d.ts +43 -0
  68. package/dist/runtime/domain-events.d.ts.map +1 -0
  69. package/dist/runtime/domain-events.js +181 -0
  70. package/dist/runtime/domain-events.js.map +1 -0
  71. package/dist/runtime/lifecycle-events.d.ts +43 -0
  72. package/dist/runtime/lifecycle-events.d.ts.map +1 -0
  73. package/dist/runtime/lifecycle-events.js +139 -0
  74. package/dist/runtime/lifecycle-events.js.map +1 -0
  75. package/dist/runtime/notifications.js +2 -2
  76. package/dist/runtime/notifications.js.map +1 -1
  77. package/dist/runtime/runtime-schema.d.ts +120 -120
  78. package/dist/runtime/runtime.d.ts +11 -0
  79. package/dist/runtime/runtime.d.ts.map +1 -1
  80. package/dist/runtime/runtime.js +159 -88
  81. package/dist/runtime/runtime.js.map +1 -1
  82. package/dist/runtime/strategy-lifecycle.d.ts.map +1 -1
  83. package/dist/runtime/strategy-lifecycle.js +13 -1
  84. package/dist/runtime/strategy-lifecycle.js.map +1 -1
  85. package/dist/runtime-api/routes/signals.d.ts +1 -1
  86. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  87. package/dist/runtime-api/routes/signals.js +2 -8
  88. package/dist/runtime-api/routes/signals.js.map +1 -1
  89. package/dist/scanners/engine/data-providers.d.ts +3 -0
  90. package/dist/scanners/engine/data-providers.d.ts.map +1 -1
  91. package/dist/scanners/engine/data-providers.js.map +1 -1
  92. package/dist/scanners/engine/engine.d.ts +18 -0
  93. package/dist/scanners/engine/engine.d.ts.map +1 -1
  94. package/dist/scanners/engine/engine.js +93 -2
  95. package/dist/scanners/engine/engine.js.map +1 -1
  96. package/dist/scanners/engine/input-resolver.d.ts.map +1 -1
  97. package/dist/scanners/engine/input-resolver.js +9 -7
  98. package/dist/scanners/engine/input-resolver.js.map +1 -1
  99. package/dist/scanners/runtime-module.d.ts +3 -0
  100. package/dist/scanners/runtime-module.d.ts.map +1 -1
  101. package/dist/scanners/runtime-module.js +1 -0
  102. package/dist/scanners/runtime-module.js.map +1 -1
  103. package/dist/senpi/client.d.ts.map +1 -1
  104. package/dist/senpi/client.js +7 -5
  105. package/dist/senpi/client.js.map +1 -1
  106. package/dist/skills-manager/coordinator.js +3 -3
  107. package/dist/skills-manager/coordinator.js.map +1 -1
  108. package/dist/telemetry/otel-sdk.d.ts +8 -2
  109. package/dist/telemetry/otel-sdk.d.ts.map +1 -1
  110. package/dist/telemetry/otel-sdk.js +17 -4
  111. package/dist/telemetry/otel-sdk.js.map +1 -1
  112. package/dist/telemetry/trace-identity.d.ts +32 -0
  113. package/dist/telemetry/trace-identity.d.ts.map +1 -0
  114. package/dist/telemetry/trace-identity.js +59 -0
  115. package/dist/telemetry/trace-identity.js.map +1 -0
  116. package/dist/telemetry/tracing.d.ts +32 -0
  117. package/dist/telemetry/tracing.d.ts.map +1 -0
  118. package/dist/telemetry/tracing.js +70 -0
  119. package/dist/telemetry/tracing.js.map +1 -0
  120. package/dist/tracking/context.d.ts +6 -0
  121. package/dist/tracking/context.d.ts.map +1 -1
  122. package/dist/tracking/context.js.map +1 -1
  123. package/dist/tracking/spans/plugin-span-tracker.d.ts.map +1 -1
  124. package/dist/tracking/spans/plugin-span-tracker.js +12 -12
  125. package/dist/tracking/spans/plugin-span-tracker.js.map +1 -1
  126. package/dist/tracking/spans/redact-pii.d.ts +3 -3
  127. package/dist/tracking/spans/redact-pii.d.ts.map +1 -1
  128. package/dist/tracking/spans/redact-pii.js +6 -7
  129. package/dist/tracking/spans/redact-pii.js.map +1 -1
  130. package/dist/types/scanner.d.ts +2 -0
  131. package/dist/types/scanner.d.ts.map +1 -1
  132. package/dist/utils/event-catalog.d.ts +269 -0
  133. package/dist/utils/event-catalog.d.ts.map +1 -0
  134. package/dist/utils/event-catalog.js +91 -0
  135. package/dist/utils/event-catalog.js.map +1 -0
  136. package/dist/utils/logger.d.ts +58 -5
  137. package/dist/utils/logger.d.ts.map +1 -1
  138. package/dist/utils/logger.js +359 -27
  139. package/dist/utils/logger.js.map +1 -1
  140. package/package.json +5 -1
@@ -7,7 +7,7 @@ export declare class ClosePositionAction implements Action {
7
7
  readonly actionType: "CLOSE_POSITION";
8
8
  private decisionEngine;
9
9
  constructor(config: ActionConfig, context: RuntimeContext);
10
- private trackingCtx;
10
+ private eventCtx;
11
11
  handle(event: HookEvent): Promise<ActionResult>;
12
12
  private normalizeSignals;
13
13
  private handleSignals;
@@ -1 +1 @@
1
- {"version":3,"file":"close-position.action.d.ts","sourceRoot":"","sources":["../../../src/actions/close-position/close-position.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,SAAS,EAEV,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAa3D,qBAAa,mBAAoB,YAAW,MAAM;IAO9C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAPjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAG,gBAAgB,CAAU;IAEhD,OAAO,CAAC,cAAc,CAAiB;gBAG7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,cAAc;IASjC,OAAO,CAAC,WAAW;IAWb,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAuMrD,OAAO,CAAC,gBAAgB;YAQV,aAAa;CA8H5B;AAID,eAAO,MAAM,oBAAoB,EAAE,aACO,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,cAMnC,CAAC"}
1
+ {"version":3,"file":"close-position.action.d.ts","sourceRoot":"","sources":["../../../src/actions/close-position/close-position.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,SAAS,EAEV,MAAM,aAAa,CAAC;AAIrB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAe3D,qBAAa,mBAAoB,YAAW,MAAM;IAO9C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IAPjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAG,gBAAgB,CAAU;IAEhD,OAAO,CAAC,cAAc,CAAiB;gBAG7B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,cAAc;IASjC,OAAO,CAAC,QAAQ;IAYV,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IAuMrD,OAAO,CAAC,gBAAgB;YAQV,aAAa;CAuJ5B;AAID,eAAO,MAAM,oBAAoB,EAAE,aACO,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,cAMnC,CAAC"}
@@ -5,8 +5,10 @@ import { interpolatePrompt } from '../../context/interpolate.js';
5
5
  import { formatDecisionErrorNotification } from '../../runtime/notifications.js';
6
6
  import { createLogger } from '../../utils/logger.js';
7
7
  import { resolveCloseOrderType, resolveFeeOptimizedLimitOptions } from '../../utils/resolve-order-type.js';
8
- import { emitTrackingDecision, emitTrackingActionResult, emitOrderPlaced, emitOrderFilled, emitOrderFailed } from '../tracking-helpers.js';
8
+ import { emitTrackingDecision, emitTrackingActionResult, emitOrderPlaced, emitOrderFilled, emitOrderFailed, buildActionEventContext } from '../tracking-helpers.js';
9
9
  import { parseCloseFillDetail } from '../../senpi/client.js';
10
+ import { withSpan } from '../../telemetry/tracing.js';
11
+ import { SpanStatusCode } from '@opentelemetry/api';
10
12
  const logger = createLogger('[actions][close-position]');
11
13
  // ─── Close Position Action ───────────────────────────────────────────────────
12
14
  export class ClosePositionAction {
@@ -24,15 +26,16 @@ export class ClosePositionAction {
24
26
  this.decisionEngine.register(new RuleDecisionStrategy());
25
27
  this.decisionEngine.register(new NoDecisionStrategy());
26
28
  }
27
- trackingCtx() {
28
- return {
29
+ eventCtx() {
30
+ return buildActionEventContext({
29
31
  hookSystem: this.context.hookSystem,
30
32
  actionName: this.name,
31
33
  actionType: this.actionType,
32
34
  decisionMode: this.config.decision_mode,
33
35
  decisionModel: this.config.decision_model,
34
36
  minConfidence: this.config.min_confidence,
35
- };
37
+ positionIdRegistry: this.context.positionIdRegistry,
38
+ });
36
39
  }
37
40
  async handle(event) {
38
41
  // Telemetry: pass start = "action began handling the scan event" (NOT "LLM call dispatched").
@@ -129,8 +132,8 @@ export class ClosePositionAction {
129
132
  model: this.config.decision_model,
130
133
  });
131
134
  await this.context.notifications.notify(notificationMessage).catch(() => { });
132
- const trackingCtx = this.trackingCtx();
133
- emitTrackingDecision(trackingCtx, event, address, scanResult, { error: message }, undefined, interpolatedPrompt, contextData);
135
+ const eventCtx = this.eventCtx();
136
+ emitTrackingDecision(eventCtx, event, address, scanResult, { error: message }, undefined, interpolatedPrompt, contextData);
134
137
  const errorResult = {
135
138
  success: false,
136
139
  action_type: this.actionType,
@@ -149,14 +152,14 @@ export class ClosePositionAction {
149
152
  _decisionPrompt: interpolatedPrompt ?? null,
150
153
  },
151
154
  };
152
- emitTrackingActionResult(trackingCtx, event, address, errorResult, { scanResult, decisionStartedAt, decisionEndedAt });
155
+ emitTrackingActionResult(eventCtx, event, address, errorResult, { scanResult, decisionStartedAt, decisionEndedAt });
153
156
  return errorResult;
154
157
  }
155
- const trackingCtx = this.trackingCtx();
158
+ const eventCtx = this.eventCtx();
156
159
  const minConfidence = this.config.min_confidence ?? 1;
157
160
  const trackingExtras = { scanResult, decisionStartedAt, decisionEndedAt, minConfidence };
158
161
  const isBelowConfidence = decision.execute && decision.confidence < minConfidence;
159
- emitTrackingDecision(trackingCtx, event, address, scanResult, decision, minConfidence, interpolatedPrompt, contextData, isBelowConfidence ? 'below_confidence' : undefined);
162
+ emitTrackingDecision(eventCtx, event, address, scanResult, decision, minConfidence, interpolatedPrompt, contextData, isBelowConfidence ? 'below_confidence' : undefined);
160
163
  if (!decision.execute) {
161
164
  logger.info('decision no execute', decision);
162
165
  const rejectedResult = {
@@ -172,7 +175,7 @@ export class ClosePositionAction {
172
175
  _decisionPrompt: interpolatedPrompt ?? null,
173
176
  },
174
177
  };
175
- emitTrackingActionResult(trackingCtx, event, address, rejectedResult, trackingExtras);
178
+ emitTrackingActionResult(eventCtx, event, address, rejectedResult, trackingExtras);
176
179
  return rejectedResult;
177
180
  }
178
181
  if (isBelowConfidence) {
@@ -189,7 +192,7 @@ export class ClosePositionAction {
189
192
  _decisionPrompt: interpolatedPrompt ?? null,
190
193
  },
191
194
  };
192
- emitTrackingActionResult(trackingCtx, event, address, belowConfResult, trackingExtras);
195
+ emitTrackingActionResult(eventCtx, event, address, belowConfResult, trackingExtras);
193
196
  return belowConfResult;
194
197
  }
195
198
  // ── Unified signals path ──
@@ -203,7 +206,7 @@ export class ClosePositionAction {
203
206
  error: 'invalid_payload',
204
207
  data: { _decisionMeta: meta, _decisionPrompt: interpolatedPrompt ?? null },
205
208
  };
206
- emitTrackingActionResult(trackingCtx, event, address, invalidPayloadResult, trackingExtras);
209
+ emitTrackingActionResult(eventCtx, event, address, invalidPayloadResult, trackingExtras);
207
210
  return invalidPayloadResult;
208
211
  }
209
212
  return this.handleSignals(signals, address, event, strategyState, meta, interpolatedPrompt, trackingExtras);
@@ -225,76 +228,104 @@ export class ClosePositionAction {
225
228
  ? resolveFeeOptimizedLimitOptions(this.config.params?.fee_optimized_limit_options)
226
229
  : undefined;
227
230
  for (const signal of signals) {
228
- // Telemetry: per-signal work window — every result entry below carries startedAt/endedAt.
229
- const signalStartedAt = Date.now();
230
231
  const asset = signal.asset;
231
- const signalDex = signal.dex;
232
- const dexForHook = typeof signalDex === 'string' && signalDex.trim() !== '' ? signalDex.trim() : undefined;
233
- const reason = signal.reason ?? signal.signalType ?? 'action_close';
234
- if (!strategyState.hasOpenPosition(asset, dexForHook)) {
235
- results.push({ asset, dex: dexForHook ?? null, orderType, success: true, reason: 'no_open_position', startedAt: signalStartedAt, endedAt: Date.now() });
236
- continue;
237
- }
238
- try {
239
- logger.info('closing position', { wallet: address, asset });
240
- const closeResult = await this.context.senpi.closePosition(address, asset, { reason, dex: dexForHook, orderType, feeOptimizedLimitOptions });
241
- // Closing-order detail (venue order id, fill price/size) — data-only stamps for the
242
- // lifecycle/signal telemetry; the venue order id is the ledger join key.
243
- const fill = parseCloseFillDetail(closeResult);
244
- await this.context.hookSystem.fire({
245
- type: HOOK_EVENT.ON_POSITION_CLOSED,
246
- runtimeName: event.runtimeName,
247
- address,
248
- data: {
249
- asset,
250
- wallet: address,
251
- reason: 'action_close',
252
- closeReason: reason,
253
- orderType,
254
- ...(dexForHook != null ? { dex: dexForHook } : {}),
255
- ...fill,
256
- __correlationId: event.data.__correlationId,
257
- },
258
- timestamp: new Date().toISOString(),
259
- });
260
- results.push({ asset, dex: dexForHook ?? null, orderType, closeReason: reason, success: true, reason, ...fill, startedAt: signalStartedAt, endedAt: Date.now() });
261
- // Task 8a order-event log (additive, fire-and-forget). A close is a reduce-only order;
262
- // close signals may lack a direction, so it is omitted. Emits placed + filled from `fill`.
263
- emitOrderPlaced(this.context.hookSystem, event, address, {
264
- orderId: fill.orderId,
265
- orderType,
266
- asset,
267
- size: fill.closedSize,
268
- reduceOnly: true,
269
- });
270
- // Only a confirmed fill is `order.filled` — a fee-optimized-limit close the venue accepts
271
- // but leaves resting returns no closedPrice/closedSize, so emitting filled there would be a
272
- // phantom fill (mirrors open-position's `if (submittedOrder?.filled)` guard).
273
- if (fill.closedPrice !== undefined && fill.closedSize !== undefined) {
274
- emitOrderFilled(this.context.hookSystem, event, address, {
232
+ await withSpan('signal.evaluation', { 'senpi.signal.asset': asset }, async (span) => {
233
+ // Stamp the per-terminal outcome on the evaluation span; ERROR status carries the reason.
234
+ const outcome = (result, reasonCode, errorMessage) => {
235
+ span.setAttribute('senpi.outcome.result', result);
236
+ span.setAttribute('senpi.outcome.reason_code', reasonCode);
237
+ if (errorMessage !== undefined) {
238
+ span.setStatus({ code: SpanStatusCode.ERROR, message: errorMessage });
239
+ }
240
+ };
241
+ // Telemetry: per-signal work window — every result entry below carries startedAt/endedAt.
242
+ const signalStartedAt = Date.now();
243
+ const signalDex = signal.dex;
244
+ const dexForHook = typeof signalDex === 'string' && signalDex.trim() !== '' ? signalDex.trim() : undefined;
245
+ const reason = signal.reason ?? signal.signalType ?? 'action_close';
246
+ if (!strategyState.hasOpenPosition(asset, dexForHook)) {
247
+ results.push({ asset, dex: dexForHook ?? null, orderType, success: true, reason: 'no_open_position', startedAt: signalStartedAt, endedAt: Date.now() });
248
+ outcome('skipped', 'no_open_position');
249
+ return;
250
+ }
251
+ try {
252
+ logger.info('closing position', { wallet: address, asset });
253
+ // Closing-order detail (venue order id, fill price/size) — data-only stamps for the
254
+ // lifecycle/signal telemetry; the venue order id is the ledger join key.
255
+ const fill = await withSpan('mcp.closePosition', { 'senpi.signal.asset': asset }, async (mcpSpan) => {
256
+ const closeResult = await this.context.senpi.closePosition(address, asset, { reason, dex: dexForHook, orderType, feeOptimizedLimitOptions });
257
+ // A throw signals failure (no success flag) and is auto-recorded by withSpan;
258
+ // only the success case is annotated here.
259
+ const f = parseCloseFillDetail(closeResult);
260
+ if (f.orderId !== undefined)
261
+ mcpSpan.setAttribute('senpi.order.id', f.orderId);
262
+ if (f.closedSize !== undefined)
263
+ mcpSpan.setAttribute('senpi.order.size', f.closedSize);
264
+ if (f.executionAsMaker != null)
265
+ mcpSpan.setAttribute('senpi.outcome.execution_as_maker', f.executionAsMaker);
266
+ mcpSpan.addEvent('order.placed');
267
+ if (f.closedPrice !== undefined && f.closedSize !== undefined) {
268
+ mcpSpan.addEvent('order.filled');
269
+ }
270
+ return f;
271
+ });
272
+ await this.context.hookSystem.fire({
273
+ type: HOOK_EVENT.ON_POSITION_CLOSED,
274
+ runtimeName: event.runtimeName,
275
+ address,
276
+ data: {
277
+ asset,
278
+ wallet: address,
279
+ reason: 'action_close',
280
+ closeReason: reason,
281
+ orderType,
282
+ ...(dexForHook != null ? { dex: dexForHook } : {}),
283
+ ...fill,
284
+ __correlationId: event.data.__correlationId,
285
+ },
286
+ timestamp: new Date().toISOString(),
287
+ });
288
+ results.push({ asset, dex: dexForHook ?? null, orderType, closeReason: reason, success: true, reason, ...fill, startedAt: signalStartedAt, endedAt: Date.now() });
289
+ outcome('closed', reason);
290
+ // Task 8a order-event log (additive, fire-and-forget). A close is a reduce-only order;
291
+ // close signals may lack a direction, so it is omitted. Emits placed + filled from `fill`.
292
+ emitOrderPlaced(this.context.hookSystem, event, address, {
275
293
  orderId: fill.orderId,
294
+ orderType,
295
+ asset,
296
+ size: fill.closedSize,
297
+ reduceOnly: true,
298
+ });
299
+ // Only a confirmed fill is `order.filled` — a fee-optimized-limit close the venue accepts
300
+ // but leaves resting returns no closedPrice/closedSize, so emitting filled there would be a
301
+ // phantom fill (mirrors open-position's `if (submittedOrder?.filled)` guard).
302
+ if (fill.closedPrice !== undefined && fill.closedSize !== undefined) {
303
+ emitOrderFilled(this.context.hookSystem, event, address, {
304
+ orderId: fill.orderId,
305
+ asset,
306
+ fillPrice: fill.closedPrice,
307
+ fillSize: fill.closedSize,
308
+ executionAsMaker: fill.executionAsMaker,
309
+ });
310
+ }
311
+ closedCount++;
312
+ }
313
+ catch (error) {
314
+ const message = error instanceof Error ? error.message : String(error);
315
+ logger.error('close failed', error, { asset });
316
+ results.push({ asset, dex: dexForHook ?? null, orderType, closeReason: reason, success: false, reason, error: message, startedAt: signalStartedAt, endedAt: Date.now() });
317
+ outcome('failed', reason, message);
318
+ // Task 8a: the close submit threw.
319
+ emitOrderFailed(this.context.hookSystem, event, address, {
276
320
  asset,
277
- fillPrice: fill.closedPrice,
278
- fillSize: fill.closedSize,
279
- executionAsMaker: fill.executionAsMaker,
321
+ reason: 'exception',
322
+ error: message,
323
+ errorName: error instanceof Error ? error.name : undefined,
324
+ reduceOnly: true,
280
325
  });
326
+ failedCount++;
281
327
  }
282
- closedCount++;
283
- }
284
- catch (error) {
285
- const message = error instanceof Error ? error.message : String(error);
286
- logger.error('close failed', { asset, err: message });
287
- results.push({ asset, dex: dexForHook ?? null, orderType, closeReason: reason, success: false, reason, error: message, startedAt: signalStartedAt, endedAt: Date.now() });
288
- // Task 8a: the close submit threw.
289
- emitOrderFailed(this.context.hookSystem, event, address, {
290
- asset,
291
- reason: 'exception',
292
- error: message,
293
- errorName: error instanceof Error ? error.name : undefined,
294
- reduceOnly: true,
295
- });
296
- failedCount++;
297
- }
328
+ });
298
329
  }
299
330
  const skippedCount = results.length - closedCount - failedCount;
300
331
  const summary = `Close: ${closedCount} closed, ${failedCount} failed, ${skippedCount} skipped`;
@@ -322,7 +353,7 @@ export class ClosePositionAction {
322
353
  ...(fromDecisionPath ? { _decisionPrompt: decisionPrompt ?? null } : {}),
323
354
  },
324
355
  };
325
- emitTrackingActionResult(this.trackingCtx(), event, address, actionResult, trackingExtras);
356
+ emitTrackingActionResult(this.eventCtx(), event, address, actionResult, trackingExtras);
326
357
  return actionResult;
327
358
  }
328
359
  }
@@ -1 +1 @@
1
- {"version":3,"file":"close-position.action.js","sourceRoot":"","sources":["../../../src/actions/close-position/close-position.action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"close-position.action.js","sourceRoot":"","sources":["../../../src/actions/close-position/close-position.action.ts"],"names":[],"mappings":"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"}
@@ -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;AAIpB,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;CAwChE;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
+ {"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 response = await this.llmDecision.decide({
27
- prompt: request.prompt,
28
- context: request.context,
29
- model: request.model,
30
- });
31
- const decision = response.decision;
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":"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"}
1
+ {"version":3,"file":"decision-engine.js","sourceRoot":"","sources":["../../src/actions/decision-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Pure derivation of the `decision.made` + `signal.outcome` event-log events from the ONE assembled
3
+ * action-result pass. Same single source the recording subscriber reads (`tracking.action_result`),
4
+ * but here as a pure `(input) => EmittableEvent[]` mapper rather than a bus subscriber — the call
5
+ * site emits the returned array in one synchronous loop, so there is no partial pair on throw.
6
+ *
7
+ * The outcome classification, decision-window selection, and field projection are NOT reimplemented:
8
+ * we reuse the recording builders ({@link buildSignalEvaluated} → {@link buildDecisionMade} /
9
+ * {@link buildSignalOutcomes}), which are pure and already battle-tested, then project their records
10
+ * onto the event contract. Body lines are deterministic narratives; reasoning (decision.made) and any
11
+ * error text reach `redact`; the raw scanner `meta` bag is dropped.
12
+ */
13
+ import { type PositionIdResolver } from "../recording/wiring/record-builders.js";
14
+ import { type AttrsFor, type EventName } from "../utils/event-catalog.js";
15
+ import type { Logger, LogLevel } from "../utils/logger.js";
16
+ /**
17
+ * A fully-built event ready to hand to `logger.event(name, level, { body, attributes, redact })`.
18
+ *
19
+ * Distributive over the event name so the `attributes` bag is the per-event {@link AttrsFor} shape,
20
+ * not a loose scalar map: a builder that constructs an `EmittableEvent<"order.placed">` is checked
21
+ * against `OrderEventAttrs` at construction, and a misnamed/wrong-typed attribute is a compile error
22
+ * at the builder. The default `N = EventName` is the full union — what a heterogeneous array carries.
23
+ */
24
+ export type EmittableEvent<N extends EventName = EventName> = N extends EventName ? {
25
+ readonly name: N;
26
+ readonly level: LogLevel;
27
+ readonly body: string;
28
+ readonly attributes?: AttrsFor<N>;
29
+ readonly redact?: Record<string, string>;
30
+ } : never;
31
+ /**
32
+ * Build then emit a single {@link EmittableEvent} through a logger, with build + emit guarded as one
33
+ * unit so neither a throwing builder nor a telemetry failure can disturb the host (trading/scan/
34
+ * lifecycle) path. The builder runs INSIDE the guard (passed as a thunk, not evaluated at the call
35
+ * site), so call sites need no surrounding try/catch. A `null` build result is a no-op — builders
36
+ * that drop an event (no asset, no summary) return `null` and need no separate check. The event
37
+ * carries its name alongside the matching typed `attributes` bag, so they flow straight into
38
+ * `logger.event`'s `AttrsFor<N>` contract with NO cast. `logger.event` is itself internally guarded.
39
+ */
40
+ export declare function emitEvent(logger: Logger, build: () => EmittableEvent | null): void;
41
+ /**
42
+ * Build then emit an array of events in order, with the build and the whole loop guarded as one unit
43
+ * (see {@link emitEvent}). The builder runs inside the guard, so call sites need no surrounding
44
+ * try/catch. A throw during build or any emit aborts the rest silently — telemetry never throws into
45
+ * the host path.
46
+ */
47
+ export declare function emitEvents(logger: Logger, build: () => readonly EmittableEvent[]): void;
48
+ /** The action-result pass, in the same envelope `emitTrackingActionResult` puts on the bus. */
49
+ export interface ActionResultEventInput {
50
+ readonly payload: unknown;
51
+ readonly nowMs: number;
52
+ readonly resolvePositionId?: PositionIdResolver;
53
+ }
54
+ /**
55
+ * Build the full event array for one action-result pass: `decision.made` first (when the pass carried
56
+ * a decision), then one `signal.outcome` per evaluated signal. A failed outcome escalates the
57
+ * signal.outcome level to `error` (the catalog floor is INFO); the error text rides `redact`.
58
+ */
59
+ export declare function deriveActionResultEvents(input: ActionResultEventInput): EmittableEvent[];
60
+ //# 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;;;;;;;;;;;GAWG;AAEH,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,wCAAwC,CAAC;AAChD,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;CAC1C,GACD,KAAK,CAAC;AAEV;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAalF;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,cAAc,EAAE,GAAG,IAAI,CAYvF;AAED,+FAA+F;AAC/F,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"}