@senpi/runtime 1.1.0-dev.runtime-phase-2.20260528085140 → 1.1.1-dev.runtime-phase-2.20260604073249
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.map +1 -1
- package/dist/actions/close-position/close-position.action.js +19 -1
- package/dist/actions/close-position/close-position.action.js.map +1 -1
- package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
- package/dist/actions/open-position/open-position.action.js +19 -0
- package/dist/actions/open-position/open-position.action.js.map +1 -1
- 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 +35 -0
- package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
- package/dist/cli/guide-commands.d.ts.map +1 -1
- package/dist/cli/guide-commands.js +8 -4
- package/dist/cli/guide-commands.js.map +1 -1
- package/dist/dsl/engine-client/config-mapping.d.ts +5 -0
- package/dist/dsl/engine-client/config-mapping.d.ts.map +1 -1
- package/dist/dsl/engine-client/config-mapping.js +14 -2
- package/dist/dsl/engine-client/config-mapping.js.map +1 -1
- package/dist/dsl/engine-client/event-mapping.d.ts +2 -0
- package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
- package/dist/dsl/engine-client/event-mapping.js +3 -0
- package/dist/dsl/engine-client/event-mapping.js.map +1 -1
- package/dist/dsl/events/build-closed-event.d.ts.map +1 -1
- package/dist/dsl/events/build-closed-event.js +1 -0
- package/dist/dsl/events/build-closed-event.js.map +1 -1
- package/dist/dsl/events/guards.d.ts.map +1 -1
- package/dist/dsl/events/guards.js +13 -0
- package/dist/dsl/events/guards.js.map +1 -1
- package/dist/dsl/events/handlers.d.ts.map +1 -1
- package/dist/dsl/events/handlers.js +4 -0
- package/dist/dsl/events/handlers.js.map +1 -1
- package/dist/dsl/events/initial-state.d.ts.map +1 -1
- package/dist/dsl/events/initial-state.js +4 -1
- package/dist/dsl/events/initial-state.js.map +1 -1
- package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
- package/dist/dsl/monitor/process-one-position.js +31 -1
- package/dist/dsl/monitor/process-one-position.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/runtime.d.ts +7 -0
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +29 -1
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/senpi/client.js +1 -0
- package/dist/senpi/client.js.map +1 -1
- package/dist/senpi/types.d.ts +5 -1
- package/dist/senpi/types.d.ts.map +1 -1
- package/dist/state/state-manager.d.ts.map +1 -1
- package/dist/state/state-manager.js +5 -0
- package/dist/state/state-manager.js.map +1 -1
- package/dist/tracking/build-rehydrate-items.d.ts +14 -0
- package/dist/tracking/build-rehydrate-items.d.ts.map +1 -0
- package/dist/tracking/build-rehydrate-items.js +30 -0
- package/dist/tracking/build-rehydrate-items.js.map +1 -0
- package/dist/tracking/index.d.ts +4 -0
- package/dist/tracking/index.d.ts.map +1 -1
- package/dist/tracking/index.js +3 -0
- package/dist/tracking/index.js.map +1 -1
- package/dist/tracking/pending-open-store.d.ts +19 -0
- package/dist/tracking/pending-open-store.d.ts.map +1 -0
- package/dist/tracking/pending-open-store.js +27 -0
- package/dist/tracking/pending-open-store.js.map +1 -0
- package/dist/tracking/position-id-registry.d.ts +91 -0
- package/dist/tracking/position-id-registry.d.ts.map +1 -0
- package/dist/tracking/position-id-registry.js +149 -0
- package/dist/tracking/position-id-registry.js.map +1 -0
- package/dist/tracking/spans/plugin-span-tracker.d.ts.map +1 -1
- package/dist/tracking/spans/plugin-span-tracker.js +2 -8
- package/dist/tracking/spans/plugin-span-tracker.js.map +1 -1
- package/dist/tracking/spans/redact-pii.d.ts +1 -3
- package/dist/tracking/spans/redact-pii.d.ts.map +1 -1
- package/dist/tracking/spans/redact-pii.js +1 -5
- package/dist/tracking/spans/redact-pii.js.map +1 -1
- package/dist/tracking/tracker.d.ts +5 -0
- package/dist/tracking/tracker.d.ts.map +1 -1
- package/dist/tracking/tracker.js +4 -0
- package/dist/tracking/tracker.js.map +1 -1
- package/dist/tracking/tracking-handler.d.ts.map +1 -1
- package/dist/tracking/tracking-handler.js +47 -0
- package/dist/tracking/tracking-handler.js.map +1 -1
- package/dist/tracking/types.d.ts +12 -0
- package/dist/tracking/types.d.ts.map +1 -1
- package/dist/types/dsl/index.d.ts +44 -0
- package/dist/types/dsl/index.d.ts.map +1 -1
- package/dist/types/runtime.d.ts +6 -0
- package/dist/types/runtime.d.ts.map +1 -1
- package/openclaw.plugin.json +18 -5
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** State key (→ `{baseDir}/pending-opens.json`). */
|
|
2
|
+
const PENDING_KEY = "pending-opens";
|
|
3
|
+
export class StateManagerPendingStore {
|
|
4
|
+
state;
|
|
5
|
+
constructor(state) {
|
|
6
|
+
this.state = state;
|
|
7
|
+
}
|
|
8
|
+
async load() {
|
|
9
|
+
return (await this.state.getOrLoad(PENDING_KEY)) ?? {};
|
|
10
|
+
}
|
|
11
|
+
async put(record) {
|
|
12
|
+
const map = await this.load();
|
|
13
|
+
map[record.key] = record;
|
|
14
|
+
await this.state.set(PENDING_KEY, map);
|
|
15
|
+
}
|
|
16
|
+
async delete(key) {
|
|
17
|
+
const map = await this.load();
|
|
18
|
+
if (key in map) {
|
|
19
|
+
delete map[key];
|
|
20
|
+
await this.state.set(PENDING_KEY, map);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async list() {
|
|
24
|
+
return Object.values(await this.load());
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=pending-open-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-open-store.js","sourceRoot":"","sources":["../../src/tracking/pending-open-store.ts"],"names":[],"mappings":"AAWA,oDAAoD;AACpD,MAAM,WAAW,GAAG,eAAe,CAAC;AAIpC,MAAM,OAAO,wBAAwB;IACN;IAA7B,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAE5C,KAAK,CAAC,IAAI;QAChB,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAa,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAqB;QAC7B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAChB,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the registry key for a position. Normalizes dex the same way the
|
|
3
|
+
* position-tracker scanner's buildPositionKey does (empty/whitespace → "main"),
|
|
4
|
+
* scoped by wallet so the map is correct under multi-wallet deployment.
|
|
5
|
+
*/
|
|
6
|
+
export declare function positionRegistryKey(wallet: string, dex: string, asset: string): string;
|
|
7
|
+
/** A client-order-id role. Entry/SL/TP are set at open; close accrues over the position's life. */
|
|
8
|
+
export type CloidRole = "entry" | "sl" | "tp" | "close";
|
|
9
|
+
/** The set of cloids associated with one position. */
|
|
10
|
+
export interface Cloids {
|
|
11
|
+
entry?: string;
|
|
12
|
+
sl?: string;
|
|
13
|
+
tp?: string;
|
|
14
|
+
close?: string[];
|
|
15
|
+
}
|
|
16
|
+
export interface Entry {
|
|
17
|
+
positionId: string;
|
|
18
|
+
cloids: Cloids;
|
|
19
|
+
}
|
|
20
|
+
/** A pending-open record persisted between intent-mint and confirmed open. */
|
|
21
|
+
export interface PendingRecord {
|
|
22
|
+
key: string;
|
|
23
|
+
/** The position.id minted at intent; reused (not re-minted) on confirmed open. */
|
|
24
|
+
positionId: string;
|
|
25
|
+
cloids: Cloids;
|
|
26
|
+
ts: number;
|
|
27
|
+
}
|
|
28
|
+
/** Durable store for pending-open records (so a restart in the open window keeps the cloids). */
|
|
29
|
+
export interface PendingStore {
|
|
30
|
+
put(record: PendingRecord): Promise<void>;
|
|
31
|
+
delete(key: string): Promise<void>;
|
|
32
|
+
list(): Promise<PendingRecord[]>;
|
|
33
|
+
}
|
|
34
|
+
/** One unit of boot-time state to restore: a minted entry, a pending record, or both. */
|
|
35
|
+
export interface RehydrateItem {
|
|
36
|
+
key: string;
|
|
37
|
+
entry?: Entry;
|
|
38
|
+
pending?: {
|
|
39
|
+
positionId: string;
|
|
40
|
+
cloids: Cloids;
|
|
41
|
+
ts: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface PositionIdRegistryOptions {
|
|
45
|
+
store?: PendingStore;
|
|
46
|
+
now?: () => number;
|
|
47
|
+
}
|
|
48
|
+
export declare class PositionIdRegistry {
|
|
49
|
+
private readonly entries;
|
|
50
|
+
/** Positions minted at intent, awaiting a confirmed open. */
|
|
51
|
+
private readonly pending;
|
|
52
|
+
private readonly store?;
|
|
53
|
+
private readonly now;
|
|
54
|
+
constructor(opts?: PositionIdRegistryOptions);
|
|
55
|
+
/**
|
|
56
|
+
* Mint a position.id at the moment the runtime decides to open, before the position
|
|
57
|
+
* is confirmed open. The id is returned immediately so callers can stamp it on the
|
|
58
|
+
* `action.open` emit. Idempotent: a re-submit (or an already-confirmed entry) reuses
|
|
59
|
+
* the existing id rather than minting a new one. Persisted so a restart in the
|
|
60
|
+
* submit→observe window keeps the id; promoted by the next {@link mintOnOpened}.
|
|
61
|
+
*
|
|
62
|
+
* If the open was already confirmed (e.g. the position tracker observed it before
|
|
63
|
+
* createPosition called this), the newly-supplied cloids are still merged into the
|
|
64
|
+
* confirmed entry — otherwise the exchange-returned entry cloid would be dropped and
|
|
65
|
+
* ON_OPEN_ORDER_SUBMITTED would omit __cloids.entry. New keys win; absent keys leave
|
|
66
|
+
* any existing confirmed cloid intact.
|
|
67
|
+
*/
|
|
68
|
+
mintOnIntent(key: string, cloids?: Cloids): Promise<Entry>;
|
|
69
|
+
/**
|
|
70
|
+
* Confirm the open. Idempotent: if a confirmed entry already exists it is returned.
|
|
71
|
+
* If the position was minted at intent, that id is promoted (reused, never re-minted)
|
|
72
|
+
* and the pending record dropped. Otherwise — an externally-opened position with no
|
|
73
|
+
* prior runtime intent — a fresh id is minted.
|
|
74
|
+
*/
|
|
75
|
+
mintOnOpened(key: string): Promise<Entry>;
|
|
76
|
+
/** Associate another cloid with a position (e.g. a DSL/runtime close order). */
|
|
77
|
+
addCloid(key: string, role: CloidRole, cloid: string): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Read the current entry for a key (INCREASED/DECREASED/FLIPPED, DSL start). Surfaces
|
|
80
|
+
* an intent-mint that has not yet been confirmed open, so reads in the open window
|
|
81
|
+
* still resolve the position.id.
|
|
82
|
+
*/
|
|
83
|
+
get(key: string): Entry | undefined;
|
|
84
|
+
/** Clear on confirmed close. The next open on this key mints a fresh id. */
|
|
85
|
+
clearOnClosed(key: string): Promise<void>;
|
|
86
|
+
/** Repopulate in-memory state at boot from persisted DSL entries + pending records. */
|
|
87
|
+
rehydrate(items: RehydrateItem[]): void;
|
|
88
|
+
/** Drop pending records older than maxAgeMs (orders that were submitted but never filled). */
|
|
89
|
+
sweepStalePendings(maxAgeMs: number): Promise<void>;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=position-id-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-id-registry.d.ts","sourceRoot":"","sources":["../../src/tracking/position-id-registry.ts"],"names":[],"mappings":"AAuBA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGtF;AAED,mGAAmG;AACnG,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC;AAExD,sDAAsD;AACtD,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,8EAA8E;AAC9E,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,iGAAiG;AACjG,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAClC;AAED,yFAAyF;AACzF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC9D;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyE;IACjG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEvB,IAAI,GAAE,yBAA8B;IAKhD;;;;;;;;;;;;OAYG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAgBpE;;;;;OAKG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAa/C,gFAAgF;IAC1E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB1E;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAOnC,4EAA4E;IACtE,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/C,uFAAuF;IACvF,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI;IAavC,8FAA8F;IACxF,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAS1D"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PositionIdRegistry: cross-flow position.id state machine.
|
|
3
|
+
*
|
|
4
|
+
* Sibling of the intra-flow correlation_id in src/tracking/context.ts. Keyed on
|
|
5
|
+
* (wallet, dex, asset).
|
|
6
|
+
*
|
|
7
|
+
* **Mint-at-intent.** A stable position.id is minted the moment the runtime decides to
|
|
8
|
+
* open ({@link mintOnIntent}), so it is already on the `action.open` emit — the open
|
|
9
|
+
* trace correlates by position.id directly, with no read-side cloid bridge, and even a
|
|
10
|
+
* sub-minute open+close (which the tracker poll never observes) still has a lifecycle.
|
|
11
|
+
*
|
|
12
|
+
* Two internal phases:
|
|
13
|
+
* - `pending` — minted at intent, awaiting a confirmed open. Stale-swept if the order
|
|
14
|
+
* never fills ({@link sweepStalePendings}), persisted so a restart in the
|
|
15
|
+
* submit→observe window keeps the id.
|
|
16
|
+
* - `entries` — confirmed open. Reused for INCREASED/DECREASED/FLIPPED and DSL reads;
|
|
17
|
+
* cleared on POSITION_CLOSED. Never stale-swept.
|
|
18
|
+
*
|
|
19
|
+
* {@link mintOnOpened} promotes a pending intent-mint to a confirmed entry (reusing the
|
|
20
|
+
* id), or mints fresh for an externally-opened position with no prior intent.
|
|
21
|
+
*/
|
|
22
|
+
import { randomUUID } from "node:crypto";
|
|
23
|
+
/**
|
|
24
|
+
* Build the registry key for a position. Normalizes dex the same way the
|
|
25
|
+
* position-tracker scanner's buildPositionKey does (empty/whitespace → "main"),
|
|
26
|
+
* scoped by wallet so the map is correct under multi-wallet deployment.
|
|
27
|
+
*/
|
|
28
|
+
export function positionRegistryKey(wallet, dex, asset) {
|
|
29
|
+
const normalizedDex = dex.trim() || "main";
|
|
30
|
+
return `${wallet}|${normalizedDex}:${asset}`;
|
|
31
|
+
}
|
|
32
|
+
export class PositionIdRegistry {
|
|
33
|
+
entries = new Map();
|
|
34
|
+
/** Positions minted at intent, awaiting a confirmed open. */
|
|
35
|
+
pending = new Map();
|
|
36
|
+
store;
|
|
37
|
+
now;
|
|
38
|
+
constructor(opts = {}) {
|
|
39
|
+
this.store = opts.store;
|
|
40
|
+
this.now = opts.now ?? Date.now;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Mint a position.id at the moment the runtime decides to open, before the position
|
|
44
|
+
* is confirmed open. The id is returned immediately so callers can stamp it on the
|
|
45
|
+
* `action.open` emit. Idempotent: a re-submit (or an already-confirmed entry) reuses
|
|
46
|
+
* the existing id rather than minting a new one. Persisted so a restart in the
|
|
47
|
+
* submit→observe window keeps the id; promoted by the next {@link mintOnOpened}.
|
|
48
|
+
*
|
|
49
|
+
* If the open was already confirmed (e.g. the position tracker observed it before
|
|
50
|
+
* createPosition called this), the newly-supplied cloids are still merged into the
|
|
51
|
+
* confirmed entry — otherwise the exchange-returned entry cloid would be dropped and
|
|
52
|
+
* ON_OPEN_ORDER_SUBMITTED would omit __cloids.entry. New keys win; absent keys leave
|
|
53
|
+
* any existing confirmed cloid intact.
|
|
54
|
+
*/
|
|
55
|
+
async mintOnIntent(key, cloids = {}) {
|
|
56
|
+
const confirmed = this.entries.get(key);
|
|
57
|
+
if (confirmed) {
|
|
58
|
+
confirmed.cloids = { ...confirmed.cloids, ...cloids };
|
|
59
|
+
return confirmed;
|
|
60
|
+
}
|
|
61
|
+
const ts = this.now();
|
|
62
|
+
const existing = this.pending.get(key);
|
|
63
|
+
const positionId = existing?.positionId ?? randomUUID();
|
|
64
|
+
const merged = { ...existing?.cloids, ...cloids };
|
|
65
|
+
this.pending.set(key, { positionId, cloids: merged, ts });
|
|
66
|
+
await this.store?.put({ key, positionId, cloids: { ...merged }, ts });
|
|
67
|
+
return { positionId, cloids: merged };
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Confirm the open. Idempotent: if a confirmed entry already exists it is returned.
|
|
71
|
+
* If the position was minted at intent, that id is promoted (reused, never re-minted)
|
|
72
|
+
* and the pending record dropped. Otherwise — an externally-opened position with no
|
|
73
|
+
* prior runtime intent — a fresh id is minted.
|
|
74
|
+
*/
|
|
75
|
+
async mintOnOpened(key) {
|
|
76
|
+
const existing = this.entries.get(key);
|
|
77
|
+
if (existing)
|
|
78
|
+
return existing;
|
|
79
|
+
const pending = this.pending.get(key);
|
|
80
|
+
const entry = pending
|
|
81
|
+
? { positionId: pending.positionId, cloids: pending.cloids }
|
|
82
|
+
: { positionId: randomUUID(), cloids: {} };
|
|
83
|
+
this.entries.set(key, entry);
|
|
84
|
+
this.pending.delete(key);
|
|
85
|
+
await this.store?.delete(key);
|
|
86
|
+
return entry;
|
|
87
|
+
}
|
|
88
|
+
/** Associate another cloid with a position (e.g. a DSL/runtime close order). */
|
|
89
|
+
async addCloid(key, role, cloid) {
|
|
90
|
+
const confirmed = this.entries.get(key);
|
|
91
|
+
const cloids = confirmed?.cloids ?? this.pending.get(key)?.cloids;
|
|
92
|
+
if (!cloids)
|
|
93
|
+
return;
|
|
94
|
+
if (role === "close") {
|
|
95
|
+
(cloids.close ??= []).push(cloid);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
cloids[role] = cloid;
|
|
99
|
+
}
|
|
100
|
+
// Re-persist while still pending so a restart keeps the added cloid.
|
|
101
|
+
if (!confirmed) {
|
|
102
|
+
const p = this.pending.get(key);
|
|
103
|
+
await this.store?.put({ key, positionId: p.positionId, cloids: { ...p.cloids }, ts: p.ts });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Read the current entry for a key (INCREASED/DECREASED/FLIPPED, DSL start). Surfaces
|
|
108
|
+
* an intent-mint that has not yet been confirmed open, so reads in the open window
|
|
109
|
+
* still resolve the position.id.
|
|
110
|
+
*/
|
|
111
|
+
get(key) {
|
|
112
|
+
const confirmed = this.entries.get(key);
|
|
113
|
+
if (confirmed)
|
|
114
|
+
return confirmed;
|
|
115
|
+
const pending = this.pending.get(key);
|
|
116
|
+
return pending ? { positionId: pending.positionId, cloids: pending.cloids } : undefined;
|
|
117
|
+
}
|
|
118
|
+
/** Clear on confirmed close. The next open on this key mints a fresh id. */
|
|
119
|
+
async clearOnClosed(key) {
|
|
120
|
+
this.entries.delete(key);
|
|
121
|
+
this.pending.delete(key);
|
|
122
|
+
await this.store?.delete(key);
|
|
123
|
+
}
|
|
124
|
+
/** Repopulate in-memory state at boot from persisted DSL entries + pending records. */
|
|
125
|
+
rehydrate(items) {
|
|
126
|
+
for (const item of items) {
|
|
127
|
+
if (item.entry)
|
|
128
|
+
this.entries.set(item.key, item.entry);
|
|
129
|
+
if (item.pending) {
|
|
130
|
+
this.pending.set(item.key, {
|
|
131
|
+
positionId: item.pending.positionId,
|
|
132
|
+
cloids: item.pending.cloids,
|
|
133
|
+
ts: item.pending.ts,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/** Drop pending records older than maxAgeMs (orders that were submitted but never filled). */
|
|
139
|
+
async sweepStalePendings(maxAgeMs) {
|
|
140
|
+
const cutoff = this.now() - maxAgeMs;
|
|
141
|
+
for (const [key, rec] of this.pending) {
|
|
142
|
+
if (rec.ts < cutoff) {
|
|
143
|
+
this.pending.delete(key);
|
|
144
|
+
await this.store?.delete(key);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=position-id-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"position-id-registry.js","sourceRoot":"","sources":["../../src/tracking/position-id-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-span-tracker.d.ts","sourceRoot":"","sources":["../../../src/tracking/spans/plugin-span-tracker.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"plugin-span-tracker.d.ts","sourceRoot":"","sources":["../../../src/tracking/spans/plugin-span-tracker.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA8BhD,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,WAAW,CAYb"}
|
|
@@ -10,21 +10,15 @@ import { createLogger } from "../../utils/logger.js";
|
|
|
10
10
|
import { TRACKING_API_BASE_URL } from "../constants.js";
|
|
11
11
|
import { BatchingSpanTransport, NoOpSpanTransport } from "./span-transport.js";
|
|
12
12
|
import { SpanTracker } from "./span-tracker.js";
|
|
13
|
-
import { createOpenRedactionAdapter,
|
|
13
|
+
import { createOpenRedactionAdapter, setDefaultPiiRedactor, } from "./redact-pii.js";
|
|
14
14
|
const logger = createLogger("[senpi-core][plugin-span-tracker]");
|
|
15
15
|
/**
|
|
16
|
-
* Initialize the process-wide default PII redactor
|
|
17
|
-
* Lazy — the OpenRedaction library is only imported when the flag is set, so
|
|
18
|
-
* builds and gateways that don't enable redaction don't pay the import cost.
|
|
16
|
+
* Initialize the process-wide default PII redactor at plugin startup.
|
|
19
17
|
*
|
|
20
18
|
* Fire-and-forget. Failures are logged; spans continue flowing unredacted
|
|
21
19
|
* rather than blocking startup.
|
|
22
20
|
*/
|
|
23
21
|
function initPiiRedactor() {
|
|
24
|
-
if (!isPiiRedactionEnabled()) {
|
|
25
|
-
logger.info("PII redaction disabled (set SENPI_PII_REDACTION_ENABLED=true to enable)");
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
22
|
createOpenRedactionAdapter()
|
|
29
23
|
.then((redactor) => {
|
|
30
24
|
setDefaultPiiRedactor(redactor);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-span-tracker.js","sourceRoot":"","sources":["../../../src/tracking/spans/plugin-span-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,
|
|
1
|
+
{"version":3,"file":"plugin-span-tracker.js","sourceRoot":"","sources":["../../../src/tracking/spans/plugin-span-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,GAAG,YAAY,CAAC,mCAAmC,CAAC,CAAC;AAEjE;;;;;GAKG;AACH,SAAS,eAAe;IACtB,0BAA0B,EAAE;SACzB,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACjB,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CACT,uLAAuL,CACxL,CAAC;IACJ,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACb,MAAM,CAAC,IAAI,CACT,qFAAqF,EACrF,EAAE,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC1D,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAA0B;IAE1B,eAAe,EAAE,CAAC;IAClB,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,qBAAqB,CAAC;IAChF,MAAM,SAAS,GAAG,MAAM;QACtB,CAAC,CAAC,IAAI,qBAAqB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;QACjE,CAAC,CAAC,CAAC,GAAG,EAAE;YACJ,MAAM,CAAC,IAAI,CACT,iIAAiI,CAClI,CAAC;YACF,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,CAAC,CAAC,EAAE,CAAC;IACT,OAAO,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* top-level columns (`address`, `correlationId`, etc.) are non-PII identifiers
|
|
17
17
|
* and stay as-is.
|
|
18
18
|
*
|
|
19
|
-
*
|
|
19
|
+
* Always on — the plugin initializes a default redactor at startup.
|
|
20
20
|
*/
|
|
21
21
|
import type { TrackingSpan } from "./types.js";
|
|
22
22
|
/** Minimal interface so tests can inject a synchronous stub. */
|
|
@@ -40,8 +40,6 @@ export declare function redactStringsDeep(value: unknown, redactor: PiiRedactor)
|
|
|
40
40
|
export declare function redactSpanData(span: TrackingSpan, redactor: PiiRedactor): Promise<TrackingSpan>;
|
|
41
41
|
export declare function setDefaultPiiRedactor(r: PiiRedactor | null): void;
|
|
42
42
|
export declare function getDefaultPiiRedactor(): PiiRedactor | null;
|
|
43
|
-
/** Reads SENPI_PII_REDACTION_ENABLED. Truthy only on exact "true". */
|
|
44
|
-
export declare function isPiiRedactionEnabled(): boolean;
|
|
45
43
|
/**
|
|
46
44
|
* Find BIP39-mnemonic spans in `text` using a true sliding window — not
|
|
47
45
|
* a greedy regex with a post-hoc validator.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact-pii.d.ts","sourceRoot":"","sources":["../../../src/tracking/spans/redact-pii.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAQD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,OAAO,CAAC,CAgClB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC,CAKvB;AASD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAEjE;AAED,wBAAgB,qBAAqB,IAAI,WAAW,GAAG,IAAI,CAE1D;
|
|
1
|
+
{"version":3,"file":"redact-pii.d.ts","sourceRoot":"","sources":["../../../src/tracking/spans/redact-pii.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,gEAAgE;AAChE,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAQD;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,OAAO,CAAC,CAgClB;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,YAAY,CAAC,CAKvB;AASD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,IAAI,CAEjE;AAED,wBAAgB,qBAAqB,IAAI,WAAW,GAAG,IAAI,CAE1D;AAqOD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,GACjB,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CA0CvC;AAsBD;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI/E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,WAAW,CAAC,CAkCvE"}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* top-level columns (`address`, `correlationId`, etc.) are non-PII identifiers
|
|
17
17
|
* and stay as-is.
|
|
18
18
|
*
|
|
19
|
-
*
|
|
19
|
+
* Always on — the plugin initializes a default redactor at startup.
|
|
20
20
|
*/
|
|
21
21
|
import { createLogger } from "../../utils/logger.js";
|
|
22
22
|
const logger = createLogger("[senpi-core][redact-pii]");
|
|
@@ -90,10 +90,6 @@ export function setDefaultPiiRedactor(r) {
|
|
|
90
90
|
export function getDefaultPiiRedactor() {
|
|
91
91
|
return defaultRedactor;
|
|
92
92
|
}
|
|
93
|
-
/** Reads SENPI_PII_REDACTION_ENABLED. Truthy only on exact "true". */
|
|
94
|
-
export function isPiiRedactionEnabled() {
|
|
95
|
-
return process.env.SENPI_PII_REDACTION_ENABLED === "true";
|
|
96
|
-
}
|
|
97
93
|
/**
|
|
98
94
|
* Built-in OpenRedaction pattern types we allowlist for span redaction.
|
|
99
95
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redact-pii.js","sourceRoot":"","sources":["../../../src/tracking/spans/redact-pii.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"redact-pii.js","sourceRoot":"","sources":["../../../src/tracking/spans/redact-pii.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* those are replaced here so batches are not rejected with HTTP 400.
|
|
9
9
|
*/
|
|
10
10
|
import type { TrackingTransport } from "./types.js";
|
|
11
|
+
import type { Cloids } from "./position-id-registry.js";
|
|
11
12
|
export interface CaptureOptions {
|
|
12
13
|
eventType: string;
|
|
13
14
|
category: string;
|
|
@@ -16,6 +17,10 @@ export interface CaptureOptions {
|
|
|
16
17
|
* From the bus (`__correlationId`); v4 values are sent as-is, otherwise a new v4 is used.
|
|
17
18
|
*/
|
|
18
19
|
correlationId?: string | null;
|
|
20
|
+
/** Cross-flow position.id from the bus (`__positionId`/`positionId`); empty when absent. */
|
|
21
|
+
positionId?: string | null;
|
|
22
|
+
/** Exchange-side client order ids from the bus (`__cloids`); empty object when absent. */
|
|
23
|
+
cloids?: Cloids | null;
|
|
19
24
|
data: Record<string, unknown>;
|
|
20
25
|
}
|
|
21
26
|
export declare class EventTracker {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/tracking/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/tracking/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAsBxD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4FAA4F;IAC5F,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAHd,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM;IAGzC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IA8BhC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAGhC"}
|
package/dist/tracking/tracker.js
CHANGED
|
@@ -45,6 +45,10 @@ export class EventTracker {
|
|
|
45
45
|
runtimeName: this.runtimeName,
|
|
46
46
|
address,
|
|
47
47
|
correlationId: normalizeCorrelationId(options.correlationId),
|
|
48
|
+
positionId: typeof options.positionId === "string" ? options.positionId : "",
|
|
49
|
+
cloids: options.cloids && typeof options.cloids === "object"
|
|
50
|
+
? options.cloids
|
|
51
|
+
: {},
|
|
48
52
|
eventType: options.eventType,
|
|
49
53
|
category: options.category,
|
|
50
54
|
data: options.data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/tracking/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/tracking/tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,GAAG,YAAY,CAAC,gCAAgC,CAAC,CAAC;AAE9D,MAAM,UAAU,GAAG,mBAAmB,CAAC;AAEvC,0FAA0F;AAC1F,MAAM,sBAAsB,GAC1B,wEAAwE,CAAC;AAE3E;;;GAGG;AACH,SAAS,sBAAsB,CAAC,GAA8B;IAC5D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjE,OAAO,UAAU,EAAE,CAAC;IACtB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAiBD,MAAM,OAAO,YAAY;IAEJ;IACA;IACA;IACA;IAJnB,YACmB,SAA4B,EAC5B,WAAmB,EACnB,cAAsB,EACtB,cAAsB;QAHtB,cAAS,GAAT,SAAS,CAAmB;QAC5B,gBAAW,GAAX,WAAW,CAAQ;QACnB,mBAAc,GAAd,cAAc,CAAQ;QACtB,mBAAc,GAAd,cAAc,CAAQ;IACtC,CAAC;IAEJ,OAAO,CAAC,OAAuB;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC9C,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YACxB,MAAM,KAAK,GAAkB;gBAC3B,EAAE,EAAE,UAAU,EAAE;gBAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,OAAO;gBACP,aAAa,EAAE,sBAAsB,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC5D,UAAU,EAAE,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;gBAC5E,MAAM,EACJ,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ;oBAClD,CAAC,CAAC,OAAO,CAAC,MAAM;oBAChB,CAAC,CAAC,EAAE;gBACR,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC;YACF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACrC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,GAAG,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACtD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-handler.d.ts","sourceRoot":"","sources":["../../src/tracking/tracking-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tracking-handler.d.ts","sourceRoot":"","sources":["../../src/tracking/tracking-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAWjD,MAAM,WAAW,eAAe;IAC9B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAwHD,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,YAAY,GACpB,eAAe,CAsEjB"}
|
|
@@ -40,6 +40,47 @@ function extractCorrelationId(payload) {
|
|
|
40
40
|
}
|
|
41
41
|
return null;
|
|
42
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Extract the cross-flow position.id from a bus event payload.
|
|
45
|
+
* It may be at payload.__positionId (DSL events) or payload.data.__positionId (HookEvents).
|
|
46
|
+
*/
|
|
47
|
+
function extractPositionId(payload) {
|
|
48
|
+
if (payload && typeof payload === "object") {
|
|
49
|
+
const p = payload;
|
|
50
|
+
if (typeof p.__positionId === "string")
|
|
51
|
+
return p.__positionId;
|
|
52
|
+
if (typeof p.positionId === "string")
|
|
53
|
+
return p.positionId;
|
|
54
|
+
if (p.data && typeof p.data === "object") {
|
|
55
|
+
const d = p.data;
|
|
56
|
+
if (typeof d.__positionId === "string")
|
|
57
|
+
return d.__positionId;
|
|
58
|
+
if (typeof d.positionId === "string")
|
|
59
|
+
return d.positionId;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Extract the cloid set from a bus event payload.
|
|
66
|
+
* It may be at payload.__cloids (DSL events) or payload.data.__cloids (HookEvents).
|
|
67
|
+
* Returns an empty object when absent.
|
|
68
|
+
*/
|
|
69
|
+
function extractCloids(payload) {
|
|
70
|
+
if (payload && typeof payload === "object") {
|
|
71
|
+
const p = payload;
|
|
72
|
+
if (p.__cloids && typeof p.__cloids === "object" && !Array.isArray(p.__cloids)) {
|
|
73
|
+
return p.__cloids;
|
|
74
|
+
}
|
|
75
|
+
if (p.data && typeof p.data === "object") {
|
|
76
|
+
const d = p.data;
|
|
77
|
+
if (d.__cloids && typeof d.__cloids === "object" && !Array.isArray(d.__cloids)) {
|
|
78
|
+
return d.__cloids;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return {};
|
|
83
|
+
}
|
|
43
84
|
/** Convert payload to a plain data object for tracking. */
|
|
44
85
|
function toData(payload) {
|
|
45
86
|
if (payload && typeof payload === "object" && !Array.isArray(payload)) {
|
|
@@ -97,6 +138,8 @@ export function createTrackingHandler(bus, tracker) {
|
|
|
97
138
|
category: mapping.category,
|
|
98
139
|
address: extractAddress(payload),
|
|
99
140
|
correlationId: extractCorrelationId(payload),
|
|
141
|
+
positionId: extractPositionId(payload),
|
|
142
|
+
cloids: extractCloids(payload),
|
|
100
143
|
data: toData(payload),
|
|
101
144
|
});
|
|
102
145
|
}
|
|
@@ -113,6 +156,8 @@ export function createTrackingHandler(bus, tracker) {
|
|
|
113
156
|
category: "decision",
|
|
114
157
|
address: extractAddress(payload),
|
|
115
158
|
correlationId: extractCorrelationId(payload),
|
|
159
|
+
positionId: extractPositionId(payload),
|
|
160
|
+
cloids: extractCloids(payload),
|
|
116
161
|
data: toData(payload),
|
|
117
162
|
});
|
|
118
163
|
}
|
|
@@ -128,6 +173,8 @@ export function createTrackingHandler(bus, tracker) {
|
|
|
128
173
|
category: "action",
|
|
129
174
|
address: extractAddress(payload),
|
|
130
175
|
correlationId: extractCorrelationId(payload),
|
|
176
|
+
positionId: extractPositionId(payload),
|
|
177
|
+
cloids: extractCloids(payload),
|
|
131
178
|
data: toData(payload),
|
|
132
179
|
});
|
|
133
180
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracking-handler.js","sourceRoot":"","sources":["../../src/tracking/tracking-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"tracking-handler.js","sourceRoot":"","sources":["../../src/tracking/tracking-handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,gCAAgC,GACjC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,MAAM,GAAG,YAAY,CAAC,gCAAgC,CAAC,CAAC;AAM9D;;;GAGG;AACH,SAAS,cAAc,CAAC,OAAgB;IACtC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,OAAkC,CAAC;QAC7C,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,OAAO,CAAC;QACpD,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,CAAC,IAA+B,CAAC;YAC5C,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC,OAAO,CAAC;QACtD,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,OAAkC,CAAC;QAC7C,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,eAAe,CAAC;QACpE,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,CAAC,IAA+B,CAAC;YAC5C,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC,eAAe,CAAC;QACtE,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,OAAgB;IACzC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,OAAkC,CAAC;QAC7C,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,YAAY,CAAC;QAC9D,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;YAAE,OAAO,CAAC,CAAC,UAAU,CAAC;QAC1D,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,CAAC,IAA+B,CAAC;YAC5C,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC,YAAY,CAAC;YAC9D,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC,UAAU,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,OAAgB;IACrC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,OAAkC,CAAC;QAC7C,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/E,OAAO,CAAC,CAAC,QAAkB,CAAC;QAC9B,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,CAAC,CAAC,IAA+B,CAAC;YAC5C,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/E,OAAO,CAAC,CAAC,QAAkB,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,2DAA2D;AAC3D,SAAS,MAAM,CAAC,OAAgB;IAC9B,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,OAAkC,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAS,wBAAwB,CAAC,OAAgB;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,IAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE7I,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,QAAmC,CAAC;QAC9C,IAAI,CAAC,CAAC,KAAK;YAAE,OAAO,gBAAgB,CAAC;QACrC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK;YAAE,OAAO,mBAAmB,CAAC;IACtD,CAAC;IAED,kFAAkF;IAClF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3G,IAAI,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ,IAAI,SAAS,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;QAC5F,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,4BAA4B,CAAC,OAAgB;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,IAAgC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEvI,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,CAAC,GAAG,MAAiC,CAAC;QAC5C,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,gBAAgB,CAAC;IAClD,CAAC;IAED,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,GAAkB,EAClB,OAAqB;IAErB,MAAM,QAAQ,GAAmE,EAAE,CAAC;IAEpF,SAAS,SAAS,CAAC,QAAgB,EAAE,OAAoC;QACvE,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,gDAAgD;IAChD,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAChE,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAiB,EAAE,EAAE;YACxC,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,CAAC;oBACd,SAAS,EAAE,OAAO,CAAC,SAAS;oBAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;oBAChC,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;oBAC5C,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC;oBACtC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC;oBAC9B,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;iBACtB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+CAA+C;IAC/C,SAAS,CAAC,2BAA2B,EAAE,CAAC,OAAiB,EAAE,EAAE;QAC3D,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,CAAC;gBACd,SAAS,EAAE,wBAAwB,CAAC,OAAO,CAAC;gBAC5C,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;gBAChC,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;gBAC5C,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBACtC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC;gBAC9B,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oDAAoD;IACpD,SAAS,CAAC,gCAAgC,EAAE,CAAC,OAAiB,EAAE,EAAE;QAChE,IAAI,CAAC;YACH,OAAO,CAAC,OAAO,CAAC;gBACd,SAAS,EAAE,4BAA4B,CAAC,OAAO,CAAC;gBAChD,QAAQ,EAAE,QAAQ;gBAClB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC;gBAChC,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;gBAC5C,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC;gBACtC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC;gBAC9B,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC;aACtB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,OAAO;YACX,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1C,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC1B,CAAC;YACD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/tracking/types.d.ts
CHANGED
|
@@ -2,12 +2,24 @@
|
|
|
2
2
|
* Event tracking types — runtime side.
|
|
3
3
|
* Matches the TrackingEvent envelope expected by POST /api/v1/tracking/events.
|
|
4
4
|
*/
|
|
5
|
+
import type { Cloids } from "./position-id-registry.js";
|
|
5
6
|
export interface TrackingEvent {
|
|
6
7
|
id: string;
|
|
7
8
|
timestamp: number;
|
|
8
9
|
runtimeName: string;
|
|
9
10
|
address: string;
|
|
10
11
|
correlationId: string;
|
|
12
|
+
/**
|
|
13
|
+
* Cross-flow position.id (stable across open → DSL → close). Empty string when the
|
|
14
|
+
* event is not tied to a position. Join key for stitching a whole trade together.
|
|
15
|
+
*/
|
|
16
|
+
positionId: string;
|
|
17
|
+
/**
|
|
18
|
+
* Exchange-side client order ids (entry/sl/tp/close) associated with the position.
|
|
19
|
+
* Promoted to the envelope (Design B) so telemetry can store them as first-class
|
|
20
|
+
* join keys rather than extracting them from nested `data`. Empty object when none.
|
|
21
|
+
*/
|
|
22
|
+
cloids: Cloids;
|
|
11
23
|
eventType: string;
|
|
12
24
|
category: string;
|
|
13
25
|
data: Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tracking/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tracking/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|