@senpi/runtime 1.1.0-dev.runtime-phase-2.20260609123811 → 1.1.0-dev.runtime-phase-2.20260609132603

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 (100) hide show
  1. package/dist/actions/close-position/close-position.action.d.ts +16 -0
  2. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  3. package/dist/actions/close-position/close-position.action.js +299 -38
  4. package/dist/actions/close-position/close-position.action.js.map +1 -1
  5. package/dist/actions/decision-engine.d.ts +2 -0
  6. package/dist/actions/decision-engine.d.ts.map +1 -1
  7. package/dist/actions/decision-engine.js.map +1 -1
  8. package/dist/actions/llm-decision/factory.d.ts +3 -0
  9. package/dist/actions/llm-decision/factory.d.ts.map +1 -1
  10. package/dist/actions/llm-decision/factory.js +1 -0
  11. package/dist/actions/llm-decision/factory.js.map +1 -1
  12. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts +13 -0
  13. package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -1
  14. package/dist/actions/llm-decision/openclaw-llm-decision.js +195 -68
  15. package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -1
  16. package/dist/actions/open-position/open-position.action.d.ts +12 -0
  17. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  18. package/dist/actions/open-position/open-position.action.js +346 -123
  19. package/dist/actions/open-position/open-position.action.js.map +1 -1
  20. package/dist/actions/otel-helpers.d.ts +65 -0
  21. package/dist/actions/otel-helpers.d.ts.map +1 -0
  22. package/dist/actions/otel-helpers.js +122 -0
  23. package/dist/actions/otel-helpers.js.map +1 -0
  24. package/dist/actions/position-tracker/position-tracker.action.d.ts +6 -0
  25. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  26. package/dist/actions/position-tracker/position-tracker.action.js +48 -0
  27. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  28. package/dist/otel/context.d.ts +24 -0
  29. package/dist/otel/context.d.ts.map +1 -0
  30. package/dist/otel/context.js +29 -0
  31. package/dist/otel/context.js.map +1 -0
  32. package/dist/otel/emitter.d.ts +73 -0
  33. package/dist/otel/emitter.d.ts.map +1 -0
  34. package/dist/otel/emitter.js +248 -0
  35. package/dist/otel/emitter.js.map +1 -0
  36. package/dist/otel/encode.d.ts +48 -0
  37. package/dist/otel/encode.d.ts.map +1 -0
  38. package/dist/otel/encode.js +100 -0
  39. package/dist/otel/encode.js.map +1 -0
  40. package/dist/otel/index.d.ts +13 -0
  41. package/dist/otel/index.d.ts.map +1 -0
  42. package/dist/otel/index.js +10 -0
  43. package/dist/otel/index.js.map +1 -0
  44. package/dist/otel/transport.d.ts +57 -0
  45. package/dist/otel/transport.d.ts.map +1 -0
  46. package/dist/otel/transport.js +208 -0
  47. package/dist/otel/transport.js.map +1 -0
  48. package/dist/otel/types.d.ts +62 -0
  49. package/dist/otel/types.d.ts.map +1 -0
  50. package/dist/otel/types.js +2 -0
  51. package/dist/otel/types.js.map +1 -0
  52. package/dist/runtime/create-actions.d.ts.map +1 -1
  53. package/dist/runtime/create-actions.js +2 -0
  54. package/dist/runtime/create-actions.js.map +1 -1
  55. package/dist/runtime/create-runtime-context.d.ts +2 -0
  56. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  57. package/dist/runtime/create-runtime-context.js +1 -0
  58. package/dist/runtime/create-runtime-context.js.map +1 -1
  59. package/dist/runtime/create-scanner-module.d.ts +1 -1
  60. package/dist/runtime/create-scanner-module.d.ts.map +1 -1
  61. package/dist/runtime/create-scanner-module.js +2 -1
  62. package/dist/runtime/create-scanner-module.js.map +1 -1
  63. package/dist/runtime/runtime-schema.d.ts +24 -0
  64. package/dist/runtime/runtime-schema.d.ts.map +1 -1
  65. package/dist/runtime/runtime-schema.js +1 -0
  66. package/dist/runtime/runtime-schema.js.map +1 -1
  67. package/dist/runtime/runtime.d.ts +5 -0
  68. package/dist/runtime/runtime.d.ts.map +1 -1
  69. package/dist/runtime/runtime.js +127 -4
  70. package/dist/runtime/runtime.js.map +1 -1
  71. package/dist/scanners/engine/data-providers.d.ts +2 -0
  72. package/dist/scanners/engine/data-providers.d.ts.map +1 -1
  73. package/dist/scanners/engine/data-providers.js.map +1 -1
  74. package/dist/scanners/engine/engine.d.ts.map +1 -1
  75. package/dist/scanners/engine/engine.js +68 -9
  76. package/dist/scanners/engine/engine.js.map +1 -1
  77. package/dist/scanners/runtime-module.d.ts +2 -0
  78. package/dist/scanners/runtime-module.d.ts.map +1 -1
  79. package/dist/scanners/runtime-module.js +1 -0
  80. package/dist/scanners/runtime-module.js.map +1 -1
  81. package/dist/senpi/client.d.ts +2 -2
  82. package/dist/senpi/client.d.ts.map +1 -1
  83. package/dist/senpi/client.js +120 -20
  84. package/dist/senpi/client.js.map +1 -1
  85. package/dist/senpi/types.d.ts +68 -1
  86. package/dist/senpi/types.d.ts.map +1 -1
  87. package/dist/strategy/strategy-state.d.ts +1 -1
  88. package/dist/strategy/strategy-state.d.ts.map +1 -1
  89. package/dist/tracking/spans/plugin-span-tracker.d.ts.map +1 -1
  90. package/dist/tracking/spans/plugin-span-tracker.js +4 -24
  91. package/dist/tracking/spans/plugin-span-tracker.js.map +1 -1
  92. package/dist/tracking/spans/redact-pii.d.ts +10 -0
  93. package/dist/tracking/spans/redact-pii.d.ts.map +1 -1
  94. package/dist/tracking/spans/redact-pii.js +80 -2
  95. package/dist/tracking/spans/redact-pii.js.map +1 -1
  96. package/dist/types/runtime.d.ts +3 -0
  97. package/dist/types/runtime.d.ts.map +1 -1
  98. package/dist/types/strategy.d.ts +2 -2
  99. package/dist/types/strategy.d.ts.map +1 -1
  100. package/package.json +1 -1
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Fire-and-forget HTTP transport with micro-batching.
3
+ *
4
+ * Records are buffered in memory and flushed to the consumer when either:
5
+ * - the buffer reaches `maxBatch` records, OR
6
+ * - `maxAgeMs` elapse since the first record landed (timer-driven).
7
+ *
8
+ * Each flush issues one POST containing `{ spans: [...] }` / `{ logs: [...] }`.
9
+ * The consumer already accepts an array; single-record posts (the prior
10
+ * behavior) were just N=1 batches. Trade-off: per-record latency up to
11
+ * `maxAgeMs` (default 250ms); SIGKILL loses the in-flight buffer. Graceful
12
+ * shutdown via `shutdown()` drains.
13
+ *
14
+ * Oversize guard: if the serialized batch exceeds `MAX_RECORD_BYTES`, splits
15
+ * the batch in halves and re-flushes recursively until each fragment fits.
16
+ * For singletons that still overflow, the blob-strip fallback kicks in
17
+ * (`gen_ai.message.body`, `senpi.order_response.body`, `decision.reasoning`,
18
+ * and log Body get cleared; row tagged `senpi.degraded=true`).
19
+ *
20
+ * Failure modes are fail-open: redactor throws → warn + emit un-redacted;
21
+ * fetch fails → warn + drop the batch; oversize singleton → warn + drop.
22
+ * Nothing in this layer blocks the trade path.
23
+ */
24
+ import { createLogger } from "../utils/logger.js";
25
+ import { redactSensitiveFields } from "../tracking/spans/redact-pii.js";
26
+ const logger = createLogger("[senpi-core][otel-transport]");
27
+ const MAX_RECORD_BYTES = 8_000_000;
28
+ const DEFAULT_MAX_BATCH = 100;
29
+ const DEFAULT_MAX_AGE_MS = 250;
30
+ export class OtelHttpTransport {
31
+ url;
32
+ apiKey;
33
+ kind;
34
+ maxBatch;
35
+ maxAgeMs;
36
+ buf = [];
37
+ flushTimer = null;
38
+ inFlight = new Set();
39
+ constructor(opts) {
40
+ this.url = opts.url;
41
+ this.apiKey = opts.apiKey;
42
+ this.kind = opts.kind;
43
+ this.maxBatch = opts.maxBatch ?? DEFAULT_MAX_BATCH;
44
+ this.maxAgeMs = opts.maxAgeMs ?? DEFAULT_MAX_AGE_MS;
45
+ }
46
+ /**
47
+ * Enqueue a record for the next flush. Synchronous, never throws, never
48
+ * blocks. Triggers an immediate flush when the buffer reaches `maxBatch`.
49
+ */
50
+ emit(record) {
51
+ this.buf.push(record);
52
+ if (this.buf.length >= this.maxBatch) {
53
+ this.flush();
54
+ return;
55
+ }
56
+ if (this.flushTimer === null) {
57
+ this.flushTimer = setTimeout(() => this.flush(), this.maxAgeMs);
58
+ // Don't keep the event loop alive solely for a buffered batch.
59
+ this.flushTimer.unref?.();
60
+ }
61
+ }
62
+ /** Drain the buffer and await all in-flight POSTs. Idempotent. */
63
+ async shutdown() {
64
+ this.flush();
65
+ if (this.inFlight.size > 0) {
66
+ await Promise.allSettled([...this.inFlight]);
67
+ }
68
+ }
69
+ flush() {
70
+ if (this.flushTimer !== null) {
71
+ clearTimeout(this.flushTimer);
72
+ this.flushTimer = null;
73
+ }
74
+ if (this.buf.length === 0)
75
+ return;
76
+ const batch = this.buf;
77
+ this.buf = [];
78
+ const promise = this.dispatch(batch);
79
+ this.inFlight.add(promise);
80
+ void promise.finally(() => this.inFlight.delete(promise));
81
+ }
82
+ async dispatch(batch) {
83
+ try {
84
+ // Redaction per record — independent failures shouldn't poison the
85
+ // whole batch.
86
+ await Promise.all(batch.map(async (r) => {
87
+ try {
88
+ await redactSensitiveFields(r);
89
+ }
90
+ catch (err) {
91
+ logger.warn("otel redact threw; emitting un-redacted", {
92
+ kind: this.kind,
93
+ err: err instanceof Error ? err.message : String(err),
94
+ });
95
+ }
96
+ }));
97
+ await this.dispatchSerialized(batch);
98
+ }
99
+ catch (err) {
100
+ logger.warn("otel emit error", {
101
+ kind: this.kind,
102
+ err: err instanceof Error ? err.message : String(err),
103
+ });
104
+ }
105
+ }
106
+ async dispatchSerialized(batch) {
107
+ let body = this.buildEnvelope(batch);
108
+ if (body.length > MAX_RECORD_BYTES) {
109
+ // Try to split first — cheaper than blob-stripping when the batch as
110
+ // a whole is large but individual records are reasonable.
111
+ if (batch.length > 1) {
112
+ const mid = batch.length >> 1;
113
+ await this.dispatchSerialized(batch.slice(0, mid));
114
+ await this.dispatchSerialized(batch.slice(mid));
115
+ return;
116
+ }
117
+ // Singleton oversize → strip known blob fields and retry once.
118
+ const stripped = stripBlobFields(batch[0]);
119
+ if (stripped.changed) {
120
+ body = this.buildEnvelope([stripped.record]);
121
+ if (body.length > MAX_RECORD_BYTES) {
122
+ logger.warn("otel record oversized after blob strip; dropping", {
123
+ kind: this.kind,
124
+ bytes: body.length,
125
+ });
126
+ return;
127
+ }
128
+ }
129
+ else {
130
+ logger.warn("otel record oversized; dropping", {
131
+ kind: this.kind,
132
+ bytes: body.length,
133
+ });
134
+ return;
135
+ }
136
+ }
137
+ const headers = { "Content-Type": "application/json" };
138
+ if (this.apiKey)
139
+ headers.Authorization = `Bearer ${this.apiKey}`;
140
+ try {
141
+ const response = await fetch(this.url, {
142
+ method: "POST",
143
+ headers,
144
+ body,
145
+ signal: AbortSignal.timeout(15_000),
146
+ });
147
+ if (!response.ok) {
148
+ const text = await response.text().catch(() => "<unreadable>");
149
+ logger.warn("otel emit failed", {
150
+ kind: this.kind,
151
+ status: response.status,
152
+ batchSize: batch.length,
153
+ body: text.slice(0, 500),
154
+ });
155
+ }
156
+ }
157
+ catch (err) {
158
+ logger.warn("otel emit error", {
159
+ kind: this.kind,
160
+ batchSize: batch.length,
161
+ err: err instanceof Error ? err.message : String(err),
162
+ });
163
+ }
164
+ }
165
+ buildEnvelope(batch) {
166
+ if (this.kind === "spans") {
167
+ return JSON.stringify({ spans: batch });
168
+ }
169
+ return JSON.stringify({ logs: batch });
170
+ }
171
+ }
172
+ // Attribute keys that may carry large blob payloads. `gen_ai.message.*` and
173
+ // `senpi.order_response.*` content lives in `LogRow.Body`, not in attrs — Body
174
+ // is stripped separately below — so only `decision.reasoning` belongs here.
175
+ const BLOB_KEYS = ["decision.reasoning"];
176
+ /**
177
+ * Build a stripped copy of the record with blob attributes and (for logs)
178
+ * `Body` cleared, tagged with `senpi.degraded=true` and the list of dropped
179
+ * field names. Pure — the caller's input is not mutated.
180
+ */
181
+ function stripBlobFields(record) {
182
+ const dropped = [];
183
+ const isSpan = "SpanAttributes" in record;
184
+ const attrSource = isSpan
185
+ ? record.SpanAttributes
186
+ : record.LogAttributes;
187
+ const nextAttrs = { ...attrSource };
188
+ for (const key of BLOB_KEYS) {
189
+ if (nextAttrs[key] !== undefined) {
190
+ delete nextAttrs[key];
191
+ dropped.push(key);
192
+ }
193
+ }
194
+ let bodyStripped = false;
195
+ if (!isSpan && record.Body && record.Body.length > 0) {
196
+ bodyStripped = true;
197
+ dropped.push("Body");
198
+ }
199
+ if (dropped.length === 0)
200
+ return { record, changed: false };
201
+ nextAttrs["senpi.degraded"] = "true";
202
+ nextAttrs["senpi.dropped_fields"] = JSON.stringify(dropped);
203
+ const next = isSpan
204
+ ? { ...record, SpanAttributes: nextAttrs }
205
+ : { ...record, LogAttributes: nextAttrs, ...(bodyStripped ? { Body: "" } : {}) };
206
+ return { record: next, changed: true };
207
+ }
208
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/otel/transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * ClickHouse-row record types for the V2 recording emitter.
3
+ *
4
+ * We POST records shaped exactly like the destination CH table rows so the
5
+ * neighbour service can batch-INSERT without normalization. No OTLP envelope,
6
+ * no typed `AnyValue` — all attribute values are strings (HyperDX's column
7
+ * type is `Map(LowCardinality(String), String)` and never parses values as
8
+ * numbers).
9
+ */
10
+ export type OtelSpanKind = "Internal" | "Client" | "Server" | "Producer" | "Consumer";
11
+ export type OtelStatusCode = "Ok" | "Error" | "Unset";
12
+ export type OtelSeverity = "trace" | "debug" | "info" | "warn" | "error" | "fatal";
13
+ export interface SpanEvent {
14
+ Timestamp: string;
15
+ Name: string;
16
+ Attributes: Record<string, string>;
17
+ }
18
+ export interface SpanRow {
19
+ /** ns-precision DateTime64(9); start time of the span. */
20
+ Timestamp: string;
21
+ /** 32-hex lowercase. */
22
+ TraceId: string;
23
+ /** 16-hex lowercase. */
24
+ SpanId: string;
25
+ /** 16-hex lowercase or empty string for trace roots. */
26
+ ParentSpanId: string;
27
+ SpanName: string;
28
+ SpanKind: OtelSpanKind;
29
+ /** UInt64 ns, `endTime - startTime`. Required — HyperDX does not derive. */
30
+ Duration: string;
31
+ /** Duplicated from resource for the dedicated CH column. */
32
+ ServiceName: string;
33
+ StatusCode: OtelStatusCode;
34
+ /** Empty string when unset. */
35
+ StatusMessage: string;
36
+ SpanAttributes: Record<string, string>;
37
+ ResourceAttributes: Record<string, string>;
38
+ Events: SpanEvent[];
39
+ ScopeName: string;
40
+ ScopeVersion: string;
41
+ TraceFlags: number;
42
+ TraceState: string;
43
+ }
44
+ export interface LogRow {
45
+ Timestamp: string;
46
+ /** Empty string when log is not parented to a span. */
47
+ TraceId: string;
48
+ /** Empty string when log is not parented to a span. */
49
+ SpanId: string;
50
+ ServiceName: string;
51
+ SeverityText: OtelSeverity;
52
+ /** OTEL semconv 1–24. HyperDX doesn't query it but include for correctness. */
53
+ SeverityNumber: number;
54
+ /** Stringified JSON for structured bodies; empty string when absent. */
55
+ Body: string;
56
+ LogAttributes: Record<string, string>;
57
+ ResourceAttributes: Record<string, string>;
58
+ /** Dedicated CH column — the log-type discriminator. Duplicated in
59
+ * LogAttributes['event.name'] for OTel-semconv consumers. */
60
+ EventName: string;
61
+ }
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/otel/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,CAAC;AAEtF,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,OAAO;IACtB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,+EAA+E;IAC/E,cAAc,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C;iEAC6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/otel/types.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"create-actions.d.ts","sourceRoot":"","sources":["../../src/runtime/create-actions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAK1E,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,UAAU,CAAC;IAClG,GAAG,EAAE,aAAa,CAAC;IACnB,4GAA4G;IAC5G,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwFtH"}
1
+ {"version":3,"file":"create-actions.d.ts","sourceRoot":"","sources":["../../src/runtime/create-actions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAM1E,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,uBAAuB,EAAE,UAAU,GAAG,UAAU,CAAC;IAClG,GAAG,EAAE,aAAa,CAAC;IACnB,4GAA4G;IAC5G,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,6EAA6E;IAC7E,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyFtH"}
@@ -6,6 +6,7 @@ import { ActionRegistry } from "./action-registry.js";
6
6
  import { createRuntimeContext } from "./create-runtime-context.js";
7
7
  import { resolveStrategyConfig } from "./map-strategies.js";
8
8
  import { MaxLeverageCache } from "../leverage/max-leverage-cache.js";
9
+ import { OtelEmitter } from "../otel/index.js";
9
10
  /**
10
11
  * For each entry in config.actions, look up factory by action_type, build ActionConfig,
11
12
  * use shared RuntimeContext (built once per trading recipe and reused), instantiate action. Returns actions
@@ -22,6 +23,7 @@ export async function createActions(config, options) {
22
23
  riskGuard: options.riskGuard,
23
24
  notifications: options.notifications,
24
25
  maxLeverageCache: new MaxLeverageCache(options.senpi),
26
+ otel: OtelEmitter.disabled(),
25
27
  });
26
28
  const actions = [];
27
29
  const actionList = config.actions ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"create-actions.js","sourceRoot":"","sources":["../../src/runtime/create-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-actions.js","sourceRoot":"","sources":["../../src/runtime/create-actions.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import type { ContextBuilder } from "../context/types.js";
9
9
  import type { NotificationService } from "../types/notification.js";
10
10
  import type { ScannerRuntimeModule } from "../scanners/runtime-module.js";
11
11
  import type { MaxLeverageCache } from "../leverage/max-leverage-cache.js";
12
+ import type { OtelEmitter } from "../otel/index.js";
12
13
  export interface CreateRuntimeContextDeps {
13
14
  senpi: SenpiClient;
14
15
  hookSystem: HookSystem;
@@ -18,6 +19,7 @@ export interface CreateRuntimeContextDeps {
18
19
  notifications: NotificationService;
19
20
  scannerModule?: ScannerRuntimeModule;
20
21
  maxLeverageCache: MaxLeverageCache;
22
+ otel: OtelEmitter;
21
23
  }
22
24
  /**
23
25
  * Build a live StrategyState from a StrategyConfig and SenpiClient.
@@ -1 +1 @@
1
- {"version":3,"file":"create-runtime-context.d.ts","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAG1E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,GACjB,aAAa,CAEf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,GACjB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAE5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,wBAAwB,GAC7B,cAAc,CAahB"}
1
+ {"version":3,"file":"create-runtime-context.d.ts","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,GACjB,aAAa,CAEf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,GACjB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAE5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,wBAAwB,GAC7B,cAAc,CAchB"}
@@ -30,6 +30,7 @@ export function createRuntimeContext(strategyConfig, deps) {
30
30
  strategyState,
31
31
  scannerModule: deps.scannerModule,
32
32
  maxLeverageCache: deps.maxLeverageCache,
33
+ otel: deps.otel,
33
34
  };
34
35
  }
35
36
  //# sourceMappingURL=create-runtime-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-runtime-context.js","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAalE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA8B,EAC9B,KAAkB;IAElB,OAAO,IAAI,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAA8B,EAC9B,KAAkB;IAElB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAA8B,EAC9B,IAA8B;IAE9B,MAAM,aAAa,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa;QACb,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KACxC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"create-runtime-context.js","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAclE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA8B,EAC9B,KAAkB;IAElB,OAAO,IAAI,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAA8B,EAC9B,KAAkB;IAElB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAA8B,EAC9B,IAA8B;IAE9B,MAAM,aAAa,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa;QACb,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC"}
@@ -15,5 +15,5 @@ import type { RuntimeConfig } from "./runtime-config.js";
15
15
  * are what make external context producers available to `depends_on` and
16
16
  * action-context validation.
17
17
  */
18
- export declare function createScannerModuleFromRuntimeConfig(config: RuntimeConfig, stateDir: string, providers?: ScannerDataProviders, logger?: ScannerLogger): ReturnType<typeof createScannerRuntimeModule>;
18
+ export declare function createScannerModuleFromRuntimeConfig(config: RuntimeConfig, stateDir: string, providers?: ScannerDataProviders, logger?: ScannerLogger, otel?: import("../otel/index.js").OtelEmitter): ReturnType<typeof createScannerRuntimeModule>;
19
19
  //# sourceMappingURL=create-scanner-module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-scanner-module.d.ts","sourceRoot":"","sources":["../../src/runtime/create-scanner-module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD;;;;;;;;;GASG;AACH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,oBAAoB,EAChC,MAAM,CAAC,EAAE,aAAa,GACrB,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAkC/C"}
1
+ {"version":3,"file":"create-scanner-module.d.ts","sourceRoot":"","sources":["../../src/runtime/create-scanner-module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD;;;;;;;;;GASG;AACH,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,oBAAoB,EAChC,MAAM,CAAC,EAAE,aAAa,EACtB,IAAI,CAAC,EAAE,OAAO,kBAAkB,EAAE,WAAW,GAC5C,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAmC/C"}
@@ -16,7 +16,7 @@ import { buildScannerComposition } from "./scanner-composition.js";
16
16
  * are what make external context producers available to `depends_on` and
17
17
  * action-context validation.
18
18
  */
19
- export function createScannerModuleFromRuntimeConfig(config, stateDir, providers, logger) {
19
+ export function createScannerModuleFromRuntimeConfig(config, stateDir, providers, logger, otel) {
20
20
  const strategy = resolveStrategyRegistration(config);
21
21
  const scanners = [];
22
22
  for (const sc of config.scanners ?? []) {
@@ -37,6 +37,7 @@ export function createScannerModuleFromRuntimeConfig(config, stateDir, providers
37
37
  composition,
38
38
  providers,
39
39
  logger,
40
+ otel,
40
41
  });
41
42
  }
42
43
  //# sourceMappingURL=create-scanner-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-scanner-module.js","sourceRoot":"","sources":["../../src/runtime/create-scanner-module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,UAAU,oCAAoC,CAClD,MAAqB,EACrB,QAAgB,EAChB,SAAgC,EAChC,MAAsB;IAEtB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CACX,eAAe,CAAC,aAAa,CAC3B,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,MAAM,EACT,EAAE,CAAC,UAAU,EACb,EAAE,CAAC,IAAI,KAAK,kBAAkB;YAC5B,CAAC,CAAC;gBACE,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,gBAAgB,EAAE,EAAE,CAAC,kBAAkB;aACxC;YACH,CAAC,CAAC,SAAS,CACd,CACF,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,uBAAuB,CACzC,MAAM,EACN,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EACrD,MAAM,CACP,CAAC;IACF,OAAO,0BAA0B,CAAC;QAChC,QAAQ;QACR,QAAQ;QACR,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QAC5D,WAAW;QACX,SAAS;QACT,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"create-scanner-module.js","sourceRoot":"","sources":["../../src/runtime/create-scanner-module.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAE7E,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;;;;;;;GASG;AACH,MAAM,UAAU,oCAAoC,CAClD,MAAqB,EACrB,QAAgB,EAChB,SAAgC,EAChC,MAAsB,EACtB,IAA6C;IAE7C,MAAM,QAAQ,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACvC,QAAQ,CAAC,IAAI,CACX,eAAe,CAAC,aAAa,CAC3B,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,IAAI,EACP,EAAE,CAAC,MAAM,EACT,EAAE,CAAC,UAAU,EACb,EAAE,CAAC,IAAI,KAAK,kBAAkB;YAC5B,CAAC,CAAC;gBACE,OAAO,EAAE,EAAE,CAAC,OAAO;gBACnB,SAAS,EAAE,EAAE,CAAC,SAAS;gBACvB,gBAAgB,EAAE,EAAE,CAAC,kBAAkB;aACxC;YACH,CAAC,CAAC,SAAS,CACd,CACF,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,uBAAuB,CACzC,MAAM,EACN,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EACrD,MAAM,CACP,CAAC;IACF,OAAO,0BAA0B,CAAC;QAChC,QAAQ;QACR,QAAQ;QACR,QAAQ,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;QAC5D,WAAW;QACX,SAAS;QACT,MAAM;QACN,IAAI;KACL,CAAC,CAAC;AACL,CAAC"}
@@ -5,6 +5,7 @@
5
5
  import { z } from "zod";
6
6
  declare const strategyEntrySchema: z.ZodObject<{
7
7
  wallet: z.ZodString;
8
+ user_id: z.ZodOptional<z.ZodString>;
8
9
  slots: z.ZodOptional<z.ZodNumber>;
9
10
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
10
11
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -26,6 +27,7 @@ declare const strategyEntrySchema: z.ZodObject<{
26
27
  enabled: z.ZodOptional<z.ZodBoolean>;
27
28
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
28
29
  wallet: z.ZodString;
30
+ user_id: z.ZodOptional<z.ZodString>;
29
31
  slots: z.ZodOptional<z.ZodNumber>;
30
32
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
31
33
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -47,6 +49,7 @@ declare const strategyEntrySchema: z.ZodObject<{
47
49
  enabled: z.ZodOptional<z.ZodBoolean>;
48
50
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
49
51
  wallet: z.ZodString;
52
+ user_id: z.ZodOptional<z.ZodString>;
50
53
  slots: z.ZodOptional<z.ZodNumber>;
51
54
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
52
55
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -455,6 +458,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
455
458
  description: z.ZodOptional<z.ZodString>;
456
459
  strategy: z.ZodObject<{
457
460
  wallet: z.ZodString;
461
+ user_id: z.ZodOptional<z.ZodString>;
458
462
  slots: z.ZodOptional<z.ZodNumber>;
459
463
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
460
464
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -476,6 +480,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
476
480
  enabled: z.ZodOptional<z.ZodBoolean>;
477
481
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
478
482
  wallet: z.ZodString;
483
+ user_id: z.ZodOptional<z.ZodString>;
479
484
  slots: z.ZodOptional<z.ZodNumber>;
480
485
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
481
486
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -497,6 +502,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
497
502
  enabled: z.ZodOptional<z.ZodBoolean>;
498
503
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
499
504
  wallet: z.ZodString;
505
+ user_id: z.ZodOptional<z.ZodString>;
500
506
  slots: z.ZodOptional<z.ZodNumber>;
501
507
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
502
508
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -964,6 +970,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
964
970
  description: z.ZodOptional<z.ZodString>;
965
971
  strategy: z.ZodObject<{
966
972
  wallet: z.ZodString;
973
+ user_id: z.ZodOptional<z.ZodString>;
967
974
  slots: z.ZodOptional<z.ZodNumber>;
968
975
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
969
976
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -985,6 +992,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
985
992
  enabled: z.ZodOptional<z.ZodBoolean>;
986
993
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
987
994
  wallet: z.ZodString;
995
+ user_id: z.ZodOptional<z.ZodString>;
988
996
  slots: z.ZodOptional<z.ZodNumber>;
989
997
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
990
998
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -1006,6 +1014,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
1006
1014
  enabled: z.ZodOptional<z.ZodBoolean>;
1007
1015
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1008
1016
  wallet: z.ZodString;
1017
+ user_id: z.ZodOptional<z.ZodString>;
1009
1018
  slots: z.ZodOptional<z.ZodNumber>;
1010
1019
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
1011
1020
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -1473,6 +1482,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
1473
1482
  description: z.ZodOptional<z.ZodString>;
1474
1483
  strategy: z.ZodObject<{
1475
1484
  wallet: z.ZodString;
1485
+ user_id: z.ZodOptional<z.ZodString>;
1476
1486
  slots: z.ZodOptional<z.ZodNumber>;
1477
1487
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
1478
1488
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -1494,6 +1504,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
1494
1504
  enabled: z.ZodOptional<z.ZodBoolean>;
1495
1505
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1496
1506
  wallet: z.ZodString;
1507
+ user_id: z.ZodOptional<z.ZodString>;
1497
1508
  slots: z.ZodOptional<z.ZodNumber>;
1498
1509
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
1499
1510
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -1515,6 +1526,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
1515
1526
  enabled: z.ZodOptional<z.ZodBoolean>;
1516
1527
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
1517
1528
  wallet: z.ZodString;
1529
+ user_id: z.ZodOptional<z.ZodString>;
1518
1530
  slots: z.ZodOptional<z.ZodNumber>;
1519
1531
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
1520
1532
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -1982,6 +1994,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
1982
1994
  description: z.ZodOptional<z.ZodString>;
1983
1995
  strategy: z.ZodObject<{
1984
1996
  wallet: z.ZodString;
1997
+ user_id: z.ZodOptional<z.ZodString>;
1985
1998
  slots: z.ZodOptional<z.ZodNumber>;
1986
1999
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
1987
2000
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -2003,6 +2016,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
2003
2016
  enabled: z.ZodOptional<z.ZodBoolean>;
2004
2017
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
2005
2018
  wallet: z.ZodString;
2019
+ user_id: z.ZodOptional<z.ZodString>;
2006
2020
  slots: z.ZodOptional<z.ZodNumber>;
2007
2021
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
2008
2022
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -2024,6 +2038,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
2024
2038
  enabled: z.ZodOptional<z.ZodBoolean>;
2025
2039
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2026
2040
  wallet: z.ZodString;
2041
+ user_id: z.ZodOptional<z.ZodString>;
2027
2042
  slots: z.ZodOptional<z.ZodNumber>;
2028
2043
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
2029
2044
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -2491,6 +2506,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
2491
2506
  description: z.ZodOptional<z.ZodString>;
2492
2507
  strategy: z.ZodObject<{
2493
2508
  wallet: z.ZodString;
2509
+ user_id: z.ZodOptional<z.ZodString>;
2494
2510
  slots: z.ZodOptional<z.ZodNumber>;
2495
2511
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
2496
2512
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -2512,6 +2528,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
2512
2528
  enabled: z.ZodOptional<z.ZodBoolean>;
2513
2529
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
2514
2530
  wallet: z.ZodString;
2531
+ user_id: z.ZodOptional<z.ZodString>;
2515
2532
  slots: z.ZodOptional<z.ZodNumber>;
2516
2533
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
2517
2534
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -2533,6 +2550,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
2533
2550
  enabled: z.ZodOptional<z.ZodBoolean>;
2534
2551
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2535
2552
  wallet: z.ZodString;
2553
+ user_id: z.ZodOptional<z.ZodString>;
2536
2554
  slots: z.ZodOptional<z.ZodNumber>;
2537
2555
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
2538
2556
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -3000,6 +3018,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3000
3018
  description: z.ZodOptional<z.ZodString>;
3001
3019
  strategy: z.ZodObject<{
3002
3020
  wallet: z.ZodString;
3021
+ user_id: z.ZodOptional<z.ZodString>;
3003
3022
  slots: z.ZodOptional<z.ZodNumber>;
3004
3023
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
3005
3024
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -3021,6 +3040,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3021
3040
  enabled: z.ZodOptional<z.ZodBoolean>;
3022
3041
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
3023
3042
  wallet: z.ZodString;
3043
+ user_id: z.ZodOptional<z.ZodString>;
3024
3044
  slots: z.ZodOptional<z.ZodNumber>;
3025
3045
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
3026
3046
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -3042,6 +3062,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3042
3062
  enabled: z.ZodOptional<z.ZodBoolean>;
3043
3063
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
3044
3064
  wallet: z.ZodString;
3065
+ user_id: z.ZodOptional<z.ZodString>;
3045
3066
  slots: z.ZodOptional<z.ZodNumber>;
3046
3067
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
3047
3068
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -3509,6 +3530,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3509
3530
  description: z.ZodOptional<z.ZodString>;
3510
3531
  strategy: z.ZodObject<{
3511
3532
  wallet: z.ZodString;
3533
+ user_id: z.ZodOptional<z.ZodString>;
3512
3534
  slots: z.ZodOptional<z.ZodNumber>;
3513
3535
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
3514
3536
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -3530,6 +3552,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3530
3552
  enabled: z.ZodOptional<z.ZodBoolean>;
3531
3553
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
3532
3554
  wallet: z.ZodString;
3555
+ user_id: z.ZodOptional<z.ZodString>;
3533
3556
  slots: z.ZodOptional<z.ZodNumber>;
3534
3557
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
3535
3558
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -3551,6 +3574,7 @@ export declare const runtimeConfigSchema: z.ZodEffects<z.ZodEffects<z.ZodObject<
3551
3574
  enabled: z.ZodOptional<z.ZodBoolean>;
3552
3575
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
3553
3576
  wallet: z.ZodString;
3577
+ user_id: z.ZodOptional<z.ZodString>;
3554
3578
  slots: z.ZodOptional<z.ZodNumber>;
3555
3579
  margin_per_slot: z.ZodOptional<z.ZodNumber>;
3556
3580
  margin_pct: z.ZodOptional<z.ZodNumber>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-schema.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime-schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyCxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAaT,CAAC;AAEjB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA+EtB,CAAC;AA6BH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAUP,CAAC;AAEjB,QAAA,MAAM,eAAe;;;IAQnB,kFAAkF;;;;;;;;;;;;;;;;;IAAlF,kFAAkF;;;;;;;;;;;;;;;;;IAAlF,kFAAkF;;;;;;;;;;;;;;gCAQpE,CAAC;AAEjB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAV9B,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA+EhF,CAAC;AAEL,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"runtime-schema.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime-schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAyCxB,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAcT,CAAC;AAEjB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA+EtB,CAAC;AA6BH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAUP,CAAC;AAEjB,QAAA,MAAM,eAAe;;;IAQnB,kFAAkF;;;;;;;;;;;;;;;;;IAAlF,kFAAkF;;;;;;;;;;;;;;;;;IAAlF,kFAAkF;;;;;;;;;;;;;;gCAQpE,CAAC;AAEjB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAV9B,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;QAAlF,kFAAkF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA+EhF,CAAC;AAEL,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -39,6 +39,7 @@ const guardRailsSchema = z.object({
39
39
  }).passthrough();
40
40
  const strategyEntrySchema = z.object({
41
41
  wallet: z.string().min(1, "strategy must have a wallet (e.g. wallet: \"your-address\")"),
42
+ user_id: z.string().optional(),
42
43
  slots: z.number().optional(),
43
44
  margin_per_slot: z.number().optional(),
44
45
  margin_pct: z.number().positive().max(100).optional(),