@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.
- package/dist/actions/close-position/close-position.action.d.ts +16 -0
- package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
- package/dist/actions/close-position/close-position.action.js +299 -38
- package/dist/actions/close-position/close-position.action.js.map +1 -1
- package/dist/actions/decision-engine.d.ts +2 -0
- package/dist/actions/decision-engine.d.ts.map +1 -1
- package/dist/actions/decision-engine.js.map +1 -1
- package/dist/actions/llm-decision/factory.d.ts +3 -0
- package/dist/actions/llm-decision/factory.d.ts.map +1 -1
- package/dist/actions/llm-decision/factory.js +1 -0
- package/dist/actions/llm-decision/factory.js.map +1 -1
- package/dist/actions/llm-decision/openclaw-llm-decision.d.ts +13 -0
- package/dist/actions/llm-decision/openclaw-llm-decision.d.ts.map +1 -1
- package/dist/actions/llm-decision/openclaw-llm-decision.js +195 -68
- package/dist/actions/llm-decision/openclaw-llm-decision.js.map +1 -1
- package/dist/actions/open-position/open-position.action.d.ts +12 -0
- package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
- package/dist/actions/open-position/open-position.action.js +346 -123
- package/dist/actions/open-position/open-position.action.js.map +1 -1
- package/dist/actions/otel-helpers.d.ts +65 -0
- package/dist/actions/otel-helpers.d.ts.map +1 -0
- package/dist/actions/otel-helpers.js +122 -0
- package/dist/actions/otel-helpers.js.map +1 -0
- package/dist/actions/position-tracker/position-tracker.action.d.ts +6 -0
- package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
- package/dist/actions/position-tracker/position-tracker.action.js +48 -0
- package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
- package/dist/otel/context.d.ts +24 -0
- package/dist/otel/context.d.ts.map +1 -0
- package/dist/otel/context.js +29 -0
- package/dist/otel/context.js.map +1 -0
- package/dist/otel/emitter.d.ts +73 -0
- package/dist/otel/emitter.d.ts.map +1 -0
- package/dist/otel/emitter.js +248 -0
- package/dist/otel/emitter.js.map +1 -0
- package/dist/otel/encode.d.ts +48 -0
- package/dist/otel/encode.d.ts.map +1 -0
- package/dist/otel/encode.js +100 -0
- package/dist/otel/encode.js.map +1 -0
- package/dist/otel/index.d.ts +13 -0
- package/dist/otel/index.d.ts.map +1 -0
- package/dist/otel/index.js +10 -0
- package/dist/otel/index.js.map +1 -0
- package/dist/otel/transport.d.ts +57 -0
- package/dist/otel/transport.d.ts.map +1 -0
- package/dist/otel/transport.js +208 -0
- package/dist/otel/transport.js.map +1 -0
- package/dist/otel/types.d.ts +62 -0
- package/dist/otel/types.d.ts.map +1 -0
- package/dist/otel/types.js +2 -0
- package/dist/otel/types.js.map +1 -0
- package/dist/runtime/create-actions.d.ts.map +1 -1
- package/dist/runtime/create-actions.js +2 -0
- package/dist/runtime/create-actions.js.map +1 -1
- package/dist/runtime/create-runtime-context.d.ts +2 -0
- package/dist/runtime/create-runtime-context.d.ts.map +1 -1
- package/dist/runtime/create-runtime-context.js +1 -0
- package/dist/runtime/create-runtime-context.js.map +1 -1
- package/dist/runtime/create-scanner-module.d.ts +1 -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/runtime-schema.d.ts +24 -0
- package/dist/runtime/runtime-schema.d.ts.map +1 -1
- package/dist/runtime/runtime-schema.js +1 -0
- package/dist/runtime/runtime-schema.js.map +1 -1
- package/dist/runtime/runtime.d.ts +5 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +127 -4
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/scanners/engine/data-providers.d.ts +2 -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.map +1 -1
- package/dist/scanners/engine/engine.js +68 -9
- package/dist/scanners/engine/engine.js.map +1 -1
- package/dist/scanners/runtime-module.d.ts +2 -0
- package/dist/scanners/runtime-module.d.ts.map +1 -1
- package/dist/scanners/runtime-module.js +1 -0
- package/dist/scanners/runtime-module.js.map +1 -1
- package/dist/senpi/client.d.ts +2 -2
- package/dist/senpi/client.d.ts.map +1 -1
- package/dist/senpi/client.js +120 -20
- package/dist/senpi/client.js.map +1 -1
- package/dist/senpi/types.d.ts +68 -1
- package/dist/senpi/types.d.ts.map +1 -1
- package/dist/strategy/strategy-state.d.ts +1 -1
- package/dist/strategy/strategy-state.d.ts.map +1 -1
- package/dist/tracking/spans/plugin-span-tracker.d.ts.map +1 -1
- package/dist/tracking/spans/plugin-span-tracker.js +4 -24
- package/dist/tracking/spans/plugin-span-tracker.js.map +1 -1
- package/dist/tracking/spans/redact-pii.d.ts +10 -0
- package/dist/tracking/spans/redact-pii.d.ts.map +1 -1
- package/dist/tracking/spans/redact-pii.js +80 -2
- package/dist/tracking/spans/redact-pii.js.map +1 -1
- package/dist/types/runtime.d.ts +3 -0
- package/dist/types/runtime.d.ts.map +1 -1
- package/dist/types/strategy.d.ts +2 -2
- package/dist/types/strategy.d.ts.map +1 -1
- 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 @@
|
|
|
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;
|
|
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":"AAAA;;GAEG;AAKH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;
|
|
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;
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-runtime-context.js","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
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,
|
|
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;
|
|
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
|
|
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(),
|