@agg-build/ui 1.2.7 → 1.2.8
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/{chunk-QMWKXDVZ.mjs → chunk-2YVW6J5N.mjs} +12 -6
- package/dist/{chunk-5FXMHTVR.mjs → chunk-BW4DQYWM.mjs} +1 -1
- package/dist/{chunk-34L7ZKJW.mjs → chunk-HQRT3B3L.mjs} +3 -2
- package/dist/{chunk-WPF47BQQ.mjs → chunk-IIEE4FVO.mjs} +9 -2
- package/dist/{chunk-TBKDLNOE.mjs → chunk-RPIYL7EA.mjs} +29 -8
- package/dist/{chunk-E45WOOMN.mjs → chunk-SMGKYWEP.mjs} +22 -8
- package/dist/{chunk-3RG2K7MV.mjs → chunk-U6YU5OE7.mjs} +666 -148
- package/dist/events.js +51 -15
- package/dist/events.mjs +3 -3
- package/dist/index.js +766 -192
- package/dist/index.mjs +27 -20
- package/dist/modals.js +8 -1
- package/dist/modals.mjs +3 -3
- package/dist/pages.js +730 -170
- package/dist/pages.mjs +6 -6
- package/dist/primitives.js +3 -2
- package/dist/primitives.mjs +1 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/trading.js +665 -146
- package/dist/trading.mjs +4 -4
- package/dist/types/primitives/switch-button/switch-button.constants.d.mts +1 -1
- package/dist/types/primitives/switch-button/switch-button.constants.d.ts +1 -1
- package/dist/types/primitives/tooltip/index.d.mts +1 -1
- package/dist/types/primitives/tooltip/index.d.ts +1 -1
- package/dist/types/primitives/tooltip/tooltip.types.d.mts +2 -0
- package/dist/types/primitives/tooltip/tooltip.types.d.ts +2 -0
- package/dist/types/trading/place-order/index.place-order.execution-debug.d.mts +183 -0
- package/dist/types/trading/place-order/index.place-order.execution-debug.d.ts +183 -0
- package/dist/types/trading/place-order/index.place-order.execution-steps.d.mts +72 -0
- package/dist/types/trading/place-order/index.place-order.execution-steps.d.ts +72 -0
- package/package.json +1 -1
package/dist/trading.js
CHANGED
|
@@ -5623,6 +5623,7 @@ var Tooltip = ({
|
|
|
5623
5623
|
side = "top",
|
|
5624
5624
|
delayDuration = 150,
|
|
5625
5625
|
collisionPadding = 12,
|
|
5626
|
+
sideOffset = 0,
|
|
5626
5627
|
classNames,
|
|
5627
5628
|
"aria-label": ariaLabel
|
|
5628
5629
|
}) => {
|
|
@@ -5650,7 +5651,7 @@ var Tooltip = ({
|
|
|
5650
5651
|
TooltipPrimitive.Content,
|
|
5651
5652
|
{
|
|
5652
5653
|
side,
|
|
5653
|
-
sideOffset
|
|
5654
|
+
sideOffset,
|
|
5654
5655
|
collisionPadding,
|
|
5655
5656
|
className: cn(
|
|
5656
5657
|
"group/agg-tooltip",
|
|
@@ -5832,6 +5833,447 @@ var PLACE_ORDER_OUTCOME_BUTTON_CLASS_NAMES = {
|
|
|
5832
5833
|
inactive: "border-transparent bg-agg-secondary-hover font-agg-normal text-agg-foreground hover:bg-agg-tertiary"
|
|
5833
5834
|
};
|
|
5834
5835
|
|
|
5836
|
+
// src/trading/place-order/index.place-order.execution-steps.ts
|
|
5837
|
+
var import_sdk14 = require("@agg-build/sdk");
|
|
5838
|
+
var WAIT_STEP_TYPES = /* @__PURE__ */ new Set(["_wait", "wait"]);
|
|
5839
|
+
var CHECKING_BALANCE_STEP_TYPES = /* @__PURE__ */ new Set([
|
|
5840
|
+
"check-balance",
|
|
5841
|
+
"check-position",
|
|
5842
|
+
"position-reserve",
|
|
5843
|
+
"position-release"
|
|
5844
|
+
]);
|
|
5845
|
+
var VENUE_BUY_SELL_REGEX = /^(?:buy|sell)-([a-z]+)$/;
|
|
5846
|
+
var VENUE_FINALIZE_REGEX = /^([a-z]+)-finalize$/;
|
|
5847
|
+
var VENUE_NAME_MAP = {
|
|
5848
|
+
kalshi: import_sdk14.Venue.kalshi,
|
|
5849
|
+
polymarket: import_sdk14.Venue.polymarket,
|
|
5850
|
+
limitless: import_sdk14.Venue.limitless,
|
|
5851
|
+
opinion: import_sdk14.Venue.opinion,
|
|
5852
|
+
predict: import_sdk14.Venue.predict,
|
|
5853
|
+
probable: import_sdk14.Venue.probable,
|
|
5854
|
+
myriad: import_sdk14.Venue.myriad,
|
|
5855
|
+
hyperliquid: import_sdk14.Venue.hyperliquid
|
|
5856
|
+
};
|
|
5857
|
+
var parseVenueName = (raw) => VENUE_NAME_MAP[raw];
|
|
5858
|
+
var NON_VENUE_FINALIZE_PREFIXES = /* @__PURE__ */ new Set(["bridge"]);
|
|
5859
|
+
var classifyExecutionStepType = (stepType) => {
|
|
5860
|
+
if (!stepType) return null;
|
|
5861
|
+
if (WAIT_STEP_TYPES.has(stepType)) return null;
|
|
5862
|
+
if (CHECKING_BALANCE_STEP_TYPES.has(stepType)) {
|
|
5863
|
+
return { kind: "checking-balance" };
|
|
5864
|
+
}
|
|
5865
|
+
const buySellMatch = stepType.match(VENUE_BUY_SELL_REGEX);
|
|
5866
|
+
if (buySellMatch) {
|
|
5867
|
+
const venue = parseVenueName(buySellMatch[1]);
|
|
5868
|
+
if (venue) return { kind: "executing-venue", venue };
|
|
5869
|
+
}
|
|
5870
|
+
const finalizeMatch = stepType.match(VENUE_FINALIZE_REGEX);
|
|
5871
|
+
if (finalizeMatch && !NON_VENUE_FINALIZE_PREFIXES.has(finalizeMatch[1])) {
|
|
5872
|
+
const venue = parseVenueName(finalizeMatch[1]);
|
|
5873
|
+
if (venue) return { kind: "executing-venue", venue };
|
|
5874
|
+
}
|
|
5875
|
+
if (stepType === "submit-verify-order-status") {
|
|
5876
|
+
return null;
|
|
5877
|
+
}
|
|
5878
|
+
return { kind: "submitting" };
|
|
5879
|
+
};
|
|
5880
|
+
var buildPhaseTimeline = (dag) => {
|
|
5881
|
+
const timeline = [];
|
|
5882
|
+
const completed = new Set(dag.completedSequences);
|
|
5883
|
+
for (let seq = 1; seq <= dag.totalSteps; seq++) {
|
|
5884
|
+
const stepType = dag.stepTypes[seq];
|
|
5885
|
+
if (!stepType) continue;
|
|
5886
|
+
const classified = classifyExecutionStepType(stepType);
|
|
5887
|
+
if (!classified) continue;
|
|
5888
|
+
const isCompleted = completed.has(seq);
|
|
5889
|
+
const last = timeline[timeline.length - 1];
|
|
5890
|
+
if (last && last.kind === classified.kind && last.venue === classified.venue) {
|
|
5891
|
+
last.lastSeq = seq;
|
|
5892
|
+
last.allCompleted = last.allCompleted && isCompleted;
|
|
5893
|
+
continue;
|
|
5894
|
+
}
|
|
5895
|
+
timeline.push({
|
|
5896
|
+
kind: classified.kind,
|
|
5897
|
+
venue: classified.venue,
|
|
5898
|
+
firstSeq: seq,
|
|
5899
|
+
lastSeq: seq,
|
|
5900
|
+
allCompleted: isCompleted
|
|
5901
|
+
});
|
|
5902
|
+
}
|
|
5903
|
+
return timeline;
|
|
5904
|
+
};
|
|
5905
|
+
var phaseRowId = (phase) => phase.venue ? `${phase.kind}:${phase.venue}` : phase.kind;
|
|
5906
|
+
var phaseRowLabel = (phase, labels) => {
|
|
5907
|
+
switch (phase.kind) {
|
|
5908
|
+
case "finding-route":
|
|
5909
|
+
return labels.findingBestRoute;
|
|
5910
|
+
case "checking-balance":
|
|
5911
|
+
return labels.checkingBalance;
|
|
5912
|
+
case "submitting":
|
|
5913
|
+
return labels.submittingOrderProgress;
|
|
5914
|
+
case "wallet-confirm":
|
|
5915
|
+
return labels.confirmTransactionInWallet;
|
|
5916
|
+
case "executing-venue":
|
|
5917
|
+
return labels.executingOnVenue(getTradingVenueLabel(phase.venue));
|
|
5918
|
+
case "filled":
|
|
5919
|
+
return labels.executionConfirmed;
|
|
5920
|
+
case "failed":
|
|
5921
|
+
return labels.orderFailureTitle;
|
|
5922
|
+
}
|
|
5923
|
+
};
|
|
5924
|
+
var buildSubmissionDisplayRows = ({
|
|
5925
|
+
phase,
|
|
5926
|
+
dagProgress,
|
|
5927
|
+
executionVenue,
|
|
5928
|
+
isAwaitingWalletConfirmation,
|
|
5929
|
+
labels
|
|
5930
|
+
}) => {
|
|
5931
|
+
if (phase === "finding-route") {
|
|
5932
|
+
return [
|
|
5933
|
+
{
|
|
5934
|
+
id: "finding-route",
|
|
5935
|
+
label: labels.findingBestRoute,
|
|
5936
|
+
status: "pending"
|
|
5937
|
+
}
|
|
5938
|
+
];
|
|
5939
|
+
}
|
|
5940
|
+
const rows = [
|
|
5941
|
+
{
|
|
5942
|
+
id: "finding-route",
|
|
5943
|
+
label: labels.findingBestRoute,
|
|
5944
|
+
status: "complete"
|
|
5945
|
+
}
|
|
5946
|
+
];
|
|
5947
|
+
const pushPhase = (phaseEntry, status) => {
|
|
5948
|
+
const id = phaseRowId(phaseEntry);
|
|
5949
|
+
if (rows.some((row) => row.id === id)) return;
|
|
5950
|
+
rows.push({
|
|
5951
|
+
id,
|
|
5952
|
+
label: phaseRowLabel(phaseEntry, labels),
|
|
5953
|
+
status,
|
|
5954
|
+
venue: phaseEntry.venue
|
|
5955
|
+
});
|
|
5956
|
+
};
|
|
5957
|
+
if (dagProgress && dagProgress.totalSteps > 0) {
|
|
5958
|
+
const timeline = buildPhaseTimeline(dagProgress);
|
|
5959
|
+
let activeEmitted = false;
|
|
5960
|
+
for (const entry of timeline) {
|
|
5961
|
+
const id = phaseRowId(entry);
|
|
5962
|
+
const alreadyShown = rows.some((row) => row.id === id);
|
|
5963
|
+
if (entry.allCompleted) {
|
|
5964
|
+
if (alreadyShown) continue;
|
|
5965
|
+
pushPhase(entry, "complete");
|
|
5966
|
+
continue;
|
|
5967
|
+
}
|
|
5968
|
+
if (activeEmitted) break;
|
|
5969
|
+
if (alreadyShown) continue;
|
|
5970
|
+
if (isAwaitingWalletConfirmation && entry.kind === "submitting") {
|
|
5971
|
+
pushPhase({ kind: "wallet-confirm" }, "pending");
|
|
5972
|
+
} else {
|
|
5973
|
+
pushPhase(entry, "pending");
|
|
5974
|
+
}
|
|
5975
|
+
activeEmitted = true;
|
|
5976
|
+
}
|
|
5977
|
+
if (!activeEmitted) {
|
|
5978
|
+
const last = rows[rows.length - 1];
|
|
5979
|
+
if (last && last.id.startsWith("executing-venue")) {
|
|
5980
|
+
last.status = "pending";
|
|
5981
|
+
} else {
|
|
5982
|
+
const fallbackVenue = executionVenue;
|
|
5983
|
+
rows.push({
|
|
5984
|
+
id: fallbackVenue ? `executing-venue:${fallbackVenue}` : "executing-venue",
|
|
5985
|
+
label: phaseRowLabel({ kind: "executing-venue", venue: fallbackVenue }, labels),
|
|
5986
|
+
status: "pending",
|
|
5987
|
+
venue: fallbackVenue
|
|
5988
|
+
});
|
|
5989
|
+
}
|
|
5990
|
+
}
|
|
5991
|
+
return rows;
|
|
5992
|
+
}
|
|
5993
|
+
if (isAwaitingWalletConfirmation) {
|
|
5994
|
+
pushPhase({ kind: "wallet-confirm" }, "pending");
|
|
5995
|
+
return rows;
|
|
5996
|
+
}
|
|
5997
|
+
if (phase === "submitting") {
|
|
5998
|
+
pushPhase({ kind: "submitting" }, "pending");
|
|
5999
|
+
return rows;
|
|
6000
|
+
}
|
|
6001
|
+
pushPhase({ kind: "submitting" }, "complete");
|
|
6002
|
+
pushPhase({ kind: "executing-venue", venue: executionVenue }, "pending");
|
|
6003
|
+
return rows;
|
|
6004
|
+
};
|
|
6005
|
+
|
|
6006
|
+
// src/trading/place-order/index.place-order.execution-debug.ts
|
|
6007
|
+
var REDACTED = "[redacted]";
|
|
6008
|
+
var SENSITIVE_FIELD_PATTERNS = [
|
|
6009
|
+
"token",
|
|
6010
|
+
"authorization",
|
|
6011
|
+
"cookie",
|
|
6012
|
+
"secret",
|
|
6013
|
+
"signature",
|
|
6014
|
+
"privatekey",
|
|
6015
|
+
"private_key",
|
|
6016
|
+
"accesstoken",
|
|
6017
|
+
"access_token",
|
|
6018
|
+
"refreshtoken",
|
|
6019
|
+
"refresh_token",
|
|
6020
|
+
"jwt",
|
|
6021
|
+
"password",
|
|
6022
|
+
"apikey",
|
|
6023
|
+
"api_key",
|
|
6024
|
+
"email",
|
|
6025
|
+
"headers"
|
|
6026
|
+
];
|
|
6027
|
+
var isSensitiveFieldName = (name) => {
|
|
6028
|
+
const normalized = name.toLowerCase();
|
|
6029
|
+
return SENSITIVE_FIELD_PATTERNS.some((pattern) => normalized.includes(pattern));
|
|
6030
|
+
};
|
|
6031
|
+
var sanitizeExecutionDebugValue = (input) => {
|
|
6032
|
+
const ancestors = /* @__PURE__ */ new Set();
|
|
6033
|
+
const walk = (value) => {
|
|
6034
|
+
if (value === null || value === void 0) return value;
|
|
6035
|
+
if (typeof value !== "object") return value;
|
|
6036
|
+
if (ancestors.has(value)) return "[circular]";
|
|
6037
|
+
ancestors.add(value);
|
|
6038
|
+
try {
|
|
6039
|
+
if (Array.isArray(value)) {
|
|
6040
|
+
return value.map((entry) => walk(entry));
|
|
6041
|
+
}
|
|
6042
|
+
if (value instanceof Error) {
|
|
6043
|
+
return {
|
|
6044
|
+
name: value.name,
|
|
6045
|
+
message: value.message,
|
|
6046
|
+
stack: value.stack
|
|
6047
|
+
};
|
|
6048
|
+
}
|
|
6049
|
+
const out = {};
|
|
6050
|
+
for (const [key, raw] of Object.entries(value)) {
|
|
6051
|
+
if (isSensitiveFieldName(key)) {
|
|
6052
|
+
out[key] = REDACTED;
|
|
6053
|
+
continue;
|
|
6054
|
+
}
|
|
6055
|
+
out[key] = walk(raw);
|
|
6056
|
+
}
|
|
6057
|
+
return out;
|
|
6058
|
+
} finally {
|
|
6059
|
+
ancestors.delete(value);
|
|
6060
|
+
}
|
|
6061
|
+
};
|
|
6062
|
+
return walk(input);
|
|
6063
|
+
};
|
|
6064
|
+
var cloneEnvironment = (env) => __spreadProps(__spreadValues({}, env), {
|
|
6065
|
+
packageVersions: env.packageVersions ? __spreadValues({}, env.packageVersions) : void 0
|
|
6066
|
+
});
|
|
6067
|
+
var buildEnvironment = (overrides) => {
|
|
6068
|
+
var _a;
|
|
6069
|
+
const url = typeof window !== "undefined" ? (_a = window.location) == null ? void 0 : _a.href : void 0;
|
|
6070
|
+
const userAgent = typeof navigator !== "undefined" && typeof navigator.userAgent === "string" ? navigator.userAgent : void 0;
|
|
6071
|
+
return __spreadValues({
|
|
6072
|
+
url,
|
|
6073
|
+
userAgent,
|
|
6074
|
+
capturedAt: Date.now()
|
|
6075
|
+
}, overrides);
|
|
6076
|
+
};
|
|
6077
|
+
var generateAttemptId = () => {
|
|
6078
|
+
if (typeof crypto !== "undefined" && typeof crypto.randomUUID === "function") {
|
|
6079
|
+
return crypto.randomUUID();
|
|
6080
|
+
}
|
|
6081
|
+
return `attempt-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
6082
|
+
};
|
|
6083
|
+
var createExecutionDebugStore = (initial) => {
|
|
6084
|
+
let attempts = [];
|
|
6085
|
+
let environment = buildEnvironment(initial);
|
|
6086
|
+
const findAttempt = (attemptId) => attempts.find((attempt) => attempt.attemptId === attemptId);
|
|
6087
|
+
const touch = (attempt) => {
|
|
6088
|
+
attempt.updatedAt = Date.now();
|
|
6089
|
+
};
|
|
6090
|
+
return {
|
|
6091
|
+
appendAttempt(input = {}) {
|
|
6092
|
+
var _a, _b;
|
|
6093
|
+
const now = Date.now();
|
|
6094
|
+
const attempt = {
|
|
6095
|
+
attemptId: (_a = input.attemptId) != null ? _a : generateAttemptId(),
|
|
6096
|
+
startedAt: now,
|
|
6097
|
+
updatedAt: now,
|
|
6098
|
+
status: (_b = input.status) != null ? _b : "quoting",
|
|
6099
|
+
quoteId: input.quoteId,
|
|
6100
|
+
orderId: input.orderId,
|
|
6101
|
+
orderIds: input.orderIds,
|
|
6102
|
+
quote: input.quote,
|
|
6103
|
+
selectedRoute: input.selectedRoute,
|
|
6104
|
+
bridge: input.bridge,
|
|
6105
|
+
venueExecution: input.venueExecution,
|
|
6106
|
+
rawEvents: [],
|
|
6107
|
+
normalizedSteps: [],
|
|
6108
|
+
errors: []
|
|
6109
|
+
};
|
|
6110
|
+
attempts = [...attempts, attempt];
|
|
6111
|
+
return attempt;
|
|
6112
|
+
},
|
|
6113
|
+
updateAttempt(attemptId, patch) {
|
|
6114
|
+
const attempt = findAttempt(attemptId);
|
|
6115
|
+
if (!attempt) return;
|
|
6116
|
+
if (patch.status !== void 0) attempt.status = patch.status;
|
|
6117
|
+
if (patch.quoteId !== void 0) attempt.quoteId = patch.quoteId;
|
|
6118
|
+
if (patch.orderId !== void 0) attempt.orderId = patch.orderId;
|
|
6119
|
+
if (patch.orderIds !== void 0) attempt.orderIds = patch.orderIds;
|
|
6120
|
+
if (patch.quote !== void 0) attempt.quote = patch.quote;
|
|
6121
|
+
if (patch.selectedRoute !== void 0) attempt.selectedRoute = patch.selectedRoute;
|
|
6122
|
+
if (patch.bridge !== void 0) attempt.bridge = patch.bridge;
|
|
6123
|
+
if (patch.venueExecution !== void 0) attempt.venueExecution = patch.venueExecution;
|
|
6124
|
+
if (patch.finalStatus !== void 0) attempt.finalStatus = patch.finalStatus;
|
|
6125
|
+
touch(attempt);
|
|
6126
|
+
},
|
|
6127
|
+
appendEvent(attemptId, event) {
|
|
6128
|
+
var _a;
|
|
6129
|
+
const attempt = findAttempt(attemptId);
|
|
6130
|
+
if (!attempt) return;
|
|
6131
|
+
attempt.rawEvents.push({
|
|
6132
|
+
kind: event.kind,
|
|
6133
|
+
label: event.label,
|
|
6134
|
+
data: event.data,
|
|
6135
|
+
timestamp: (_a = event.timestamp) != null ? _a : Date.now()
|
|
6136
|
+
});
|
|
6137
|
+
touch(attempt);
|
|
6138
|
+
},
|
|
6139
|
+
appendError(attemptId, error) {
|
|
6140
|
+
var _a;
|
|
6141
|
+
const attempt = findAttempt(attemptId);
|
|
6142
|
+
if (!attempt) return;
|
|
6143
|
+
attempt.errors.push({
|
|
6144
|
+
message: error.message,
|
|
6145
|
+
name: error.name,
|
|
6146
|
+
code: error.code,
|
|
6147
|
+
stack: error.stack,
|
|
6148
|
+
failedStep: error.failedStep,
|
|
6149
|
+
data: error.data,
|
|
6150
|
+
timestamp: (_a = error.timestamp) != null ? _a : Date.now()
|
|
6151
|
+
});
|
|
6152
|
+
touch(attempt);
|
|
6153
|
+
},
|
|
6154
|
+
setNormalizedSteps(attemptId, steps) {
|
|
6155
|
+
const attempt = findAttempt(attemptId);
|
|
6156
|
+
if (!attempt) return;
|
|
6157
|
+
attempt.normalizedSteps = steps;
|
|
6158
|
+
touch(attempt);
|
|
6159
|
+
},
|
|
6160
|
+
getSnapshot() {
|
|
6161
|
+
return {
|
|
6162
|
+
attempts: attempts.map((attempt) => __spreadProps(__spreadValues({}, attempt), {
|
|
6163
|
+
rawEvents: [...attempt.rawEvents],
|
|
6164
|
+
normalizedSteps: [...attempt.normalizedSteps],
|
|
6165
|
+
errors: [...attempt.errors]
|
|
6166
|
+
})),
|
|
6167
|
+
environment: cloneEnvironment(environment)
|
|
6168
|
+
};
|
|
6169
|
+
},
|
|
6170
|
+
getFailedAttempts() {
|
|
6171
|
+
return attempts.filter(
|
|
6172
|
+
(attempt) => attempt.status === "failed" || attempt.finalStatus === "failed" || attempt.errors.length > 0
|
|
6173
|
+
).map((attempt) => __spreadProps(__spreadValues({}, attempt), {
|
|
6174
|
+
rawEvents: [...attempt.rawEvents],
|
|
6175
|
+
normalizedSteps: [...attempt.normalizedSteps],
|
|
6176
|
+
errors: [...attempt.errors]
|
|
6177
|
+
}));
|
|
6178
|
+
},
|
|
6179
|
+
clear() {
|
|
6180
|
+
attempts = [];
|
|
6181
|
+
environment = buildEnvironment(initial);
|
|
6182
|
+
}
|
|
6183
|
+
};
|
|
6184
|
+
};
|
|
6185
|
+
var writeClipboardLegacy = (text) => {
|
|
6186
|
+
if (typeof document === "undefined") return false;
|
|
6187
|
+
const textarea = document.createElement("textarea");
|
|
6188
|
+
textarea.value = text;
|
|
6189
|
+
textarea.setAttribute("readonly", "");
|
|
6190
|
+
textarea.style.position = "fixed";
|
|
6191
|
+
textarea.style.top = "-1000px";
|
|
6192
|
+
textarea.style.opacity = "0";
|
|
6193
|
+
document.body.appendChild(textarea);
|
|
6194
|
+
try {
|
|
6195
|
+
textarea.select();
|
|
6196
|
+
return document.execCommand("copy");
|
|
6197
|
+
} catch (e) {
|
|
6198
|
+
return false;
|
|
6199
|
+
} finally {
|
|
6200
|
+
document.body.removeChild(textarea);
|
|
6201
|
+
}
|
|
6202
|
+
};
|
|
6203
|
+
var tryWriteClipboard = (text, consoleImpl) => __async(null, null, function* () {
|
|
6204
|
+
var _a;
|
|
6205
|
+
if (typeof navigator !== "undefined" && ((_a = navigator.clipboard) == null ? void 0 : _a.writeText)) {
|
|
6206
|
+
try {
|
|
6207
|
+
yield navigator.clipboard.writeText(text);
|
|
6208
|
+
consoleImpl.info("[agg-execution-debug] Copied execution data to clipboard.");
|
|
6209
|
+
return;
|
|
6210
|
+
} catch (e) {
|
|
6211
|
+
}
|
|
6212
|
+
}
|
|
6213
|
+
if (writeClipboardLegacy(text)) {
|
|
6214
|
+
consoleImpl.info("[agg-execution-debug] Copied execution data to clipboard.");
|
|
6215
|
+
return;
|
|
6216
|
+
}
|
|
6217
|
+
consoleImpl.warn(
|
|
6218
|
+
"[agg-execution-debug] Clipboard copy was blocked by the browser. The JSON is logged below \u2014 right-click the entry and copy."
|
|
6219
|
+
);
|
|
6220
|
+
consoleImpl.log(text);
|
|
6221
|
+
});
|
|
6222
|
+
var installExecutionDebugWindow = ({
|
|
6223
|
+
store,
|
|
6224
|
+
consoleImpl
|
|
6225
|
+
}) => {
|
|
6226
|
+
if (typeof window === "undefined") return () => {
|
|
6227
|
+
};
|
|
6228
|
+
const targetConsole = consoleImpl != null ? consoleImpl : console;
|
|
6229
|
+
const previous = {
|
|
6230
|
+
executionData: window.executionData,
|
|
6231
|
+
getExecutionData: window.getExecutionData,
|
|
6232
|
+
getFailedExecutionData: window.getFailedExecutionData,
|
|
6233
|
+
clearExecutionData: window.clearExecutionData,
|
|
6234
|
+
storeRef: window.__aggExecutionDebugStore
|
|
6235
|
+
};
|
|
6236
|
+
const refresh = () => {
|
|
6237
|
+
window.executionData = sanitizeExecutionDebugValue(store.getSnapshot());
|
|
6238
|
+
};
|
|
6239
|
+
refresh();
|
|
6240
|
+
window.__aggExecutionDebugStore = store;
|
|
6241
|
+
window.getExecutionData = () => {
|
|
6242
|
+
const data = sanitizeExecutionDebugValue(store.getSnapshot());
|
|
6243
|
+
window.executionData = data;
|
|
6244
|
+
void tryWriteClipboard(JSON.stringify(data, null, 2), targetConsole);
|
|
6245
|
+
return data;
|
|
6246
|
+
};
|
|
6247
|
+
window.getFailedExecutionData = () => {
|
|
6248
|
+
const failed = sanitizeExecutionDebugValue({ attempts: store.getFailedAttempts() });
|
|
6249
|
+
void tryWriteClipboard(JSON.stringify(failed, null, 2), targetConsole);
|
|
6250
|
+
return failed;
|
|
6251
|
+
};
|
|
6252
|
+
window.clearExecutionData = () => {
|
|
6253
|
+
store.clear();
|
|
6254
|
+
refresh();
|
|
6255
|
+
};
|
|
6256
|
+
targetConsole.info(
|
|
6257
|
+
"AGG execution debug enabled. Run window.getFailedExecutionData() after a failed order to copy logs."
|
|
6258
|
+
);
|
|
6259
|
+
return () => {
|
|
6260
|
+
if (typeof window === "undefined") return;
|
|
6261
|
+
window.executionData = previous.executionData;
|
|
6262
|
+
window.getExecutionData = previous.getExecutionData;
|
|
6263
|
+
window.getFailedExecutionData = previous.getFailedExecutionData;
|
|
6264
|
+
window.clearExecutionData = previous.clearExecutionData;
|
|
6265
|
+
window.__aggExecutionDebugStore = previous.storeRef;
|
|
6266
|
+
};
|
|
6267
|
+
};
|
|
6268
|
+
var enableExecutionDebugInBrowser = (initial) => {
|
|
6269
|
+
if (typeof window === "undefined") return null;
|
|
6270
|
+
const existing = window.__aggExecutionDebugStore;
|
|
6271
|
+
if (existing) return existing;
|
|
6272
|
+
const store = createExecutionDebugStore(initial);
|
|
6273
|
+
installExecutionDebugWindow({ store });
|
|
6274
|
+
return store;
|
|
6275
|
+
};
|
|
6276
|
+
|
|
5835
6277
|
// src/trading/place-order/index.place-order.utils.ts
|
|
5836
6278
|
var routePriceLabelFormatter = new Intl.NumberFormat("en-US", {
|
|
5837
6279
|
minimumFractionDigits: 0,
|
|
@@ -7019,21 +7461,6 @@ PlaceOrderSuccessView.displayName = "PlaceOrderSuccessView";
|
|
|
7019
7461
|
|
|
7020
7462
|
// src/trading/place-order/index.tsx
|
|
7021
7463
|
var import_jsx_runtime113 = require("react/jsx-runtime");
|
|
7022
|
-
var DEFAULT_STEP_LABELS = {
|
|
7023
|
-
"check-balance": "Checking balance",
|
|
7024
|
-
"check-position": "Checking position",
|
|
7025
|
-
"lane-bridge": "Bridging funds",
|
|
7026
|
-
bridge: "Bridging funds",
|
|
7027
|
-
"bridge-to-user": "Transferring to wallet",
|
|
7028
|
-
"sweep-bridge": "Completing bridge",
|
|
7029
|
-
"submit-order": "Submitting order",
|
|
7030
|
-
"order-bridge-execute": "Executing order",
|
|
7031
|
-
"transfer-to-user": "Transferring to wallet"
|
|
7032
|
-
};
|
|
7033
|
-
var getDefaultStepLabel = (stepType) => {
|
|
7034
|
-
var _a;
|
|
7035
|
-
return (_a = DEFAULT_STEP_LABELS[stepType]) != null ? _a : stepType.replace(/-/g, " ").replace(/^\w/, (c) => c.toUpperCase());
|
|
7036
|
-
};
|
|
7037
7464
|
var resolveRefetchedQuoteData = (result) => {
|
|
7038
7465
|
if (!result || typeof result !== "object" || !("data" in result)) return null;
|
|
7039
7466
|
const data = result.data;
|
|
@@ -7533,7 +7960,6 @@ var renderRouteCard = ({
|
|
|
7533
7960
|
}
|
|
7534
7961
|
);
|
|
7535
7962
|
};
|
|
7536
|
-
var normalizeOrderIdLabelInput2 = (orderId) => orderId.replace(/^#+/, "");
|
|
7537
7963
|
var renderSubmissionSurface = ({
|
|
7538
7964
|
actionLabel,
|
|
7539
7965
|
className,
|
|
@@ -7545,81 +7971,12 @@ var renderSubmissionSurface = ({
|
|
|
7545
7971
|
progressState,
|
|
7546
7972
|
tradingLabels
|
|
7547
7973
|
}) => {
|
|
7548
|
-
const
|
|
7549
|
-
|
|
7550
|
-
|
|
7551
|
-
|
|
7552
|
-
|
|
7553
|
-
|
|
7554
|
-
id: "finding-route",
|
|
7555
|
-
label: tradingLabels.findingBestRoute,
|
|
7556
|
-
status: "pending"
|
|
7557
|
-
}
|
|
7558
|
-
]
|
|
7559
|
-
];
|
|
7560
|
-
}
|
|
7561
|
-
const dag = progressState.dagProgress;
|
|
7562
|
-
if (dag && dag.totalSteps > 0) {
|
|
7563
|
-
const steps = [
|
|
7564
|
-
{
|
|
7565
|
-
id: "finding-route",
|
|
7566
|
-
label: tradingLabels.findingBestRoute,
|
|
7567
|
-
status: "complete"
|
|
7568
|
-
}
|
|
7569
|
-
];
|
|
7570
|
-
for (let i = 1; i <= dag.totalSteps; i++) {
|
|
7571
|
-
const isCompleted = dag.completedSequences.includes(i);
|
|
7572
|
-
const isCurrent = i === dag.currentSequence && !isCompleted;
|
|
7573
|
-
const stepType = (_a = dag.stepTypes[i]) != null ? _a : null;
|
|
7574
|
-
const stepLabel = stepType ? getDefaultStepLabel(stepType) : `Step ${i} of ${dag.totalSteps}`;
|
|
7575
|
-
const prev = steps[steps.length - 1];
|
|
7576
|
-
if (prev && prev.label === stepLabel) {
|
|
7577
|
-
if (prev.status === "complete" && !isCompleted) {
|
|
7578
|
-
prev.status = "pending";
|
|
7579
|
-
}
|
|
7580
|
-
continue;
|
|
7581
|
-
}
|
|
7582
|
-
steps.push({
|
|
7583
|
-
id: `dag-step-${i}`,
|
|
7584
|
-
label: stepLabel,
|
|
7585
|
-
status: isCompleted ? "complete" : isCurrent ? "pending" : "pending"
|
|
7586
|
-
});
|
|
7587
|
-
}
|
|
7588
|
-
return [steps];
|
|
7589
|
-
}
|
|
7590
|
-
const baseSteps = [
|
|
7591
|
-
{
|
|
7592
|
-
id: "finding-route",
|
|
7593
|
-
label: tradingLabels.findingBestRoute,
|
|
7594
|
-
status: "complete"
|
|
7595
|
-
},
|
|
7596
|
-
{
|
|
7597
|
-
id: "submitting-order",
|
|
7598
|
-
label: tradingLabels.submittingOrderProgress,
|
|
7599
|
-
status: "complete"
|
|
7600
|
-
}
|
|
7601
|
-
];
|
|
7602
|
-
const submittedOrderId = (_c = progressState.orderId) != null ? _c : (_b = progressState.orderIds) == null ? void 0 : _b[0];
|
|
7603
|
-
if (submittedOrderId) {
|
|
7604
|
-
baseSteps.push({
|
|
7605
|
-
id: "order-submitted",
|
|
7606
|
-
label: tradingLabels.orderSubmittedProgress(normalizeOrderIdLabelInput2(submittedOrderId)),
|
|
7607
|
-
status: "complete"
|
|
7608
|
-
});
|
|
7609
|
-
}
|
|
7610
|
-
return [
|
|
7611
|
-
baseSteps,
|
|
7612
|
-
[
|
|
7613
|
-
{
|
|
7614
|
-
id: "executing-order",
|
|
7615
|
-
label: tradingLabels.executingOnVenue(getTradingVenueLabel(progressState.executionVenue)),
|
|
7616
|
-
status: "pending",
|
|
7617
|
-
venue: progressState.executionVenue
|
|
7618
|
-
}
|
|
7619
|
-
]
|
|
7620
|
-
];
|
|
7621
|
-
};
|
|
7622
|
-
const stepGroups = resolveStepGroups();
|
|
7974
|
+
const displayRows = buildSubmissionDisplayRows({
|
|
7975
|
+
phase: progressState.phase,
|
|
7976
|
+
dagProgress: progressState.dagProgress,
|
|
7977
|
+
executionVenue: progressState.executionVenue,
|
|
7978
|
+
labels: tradingLabels
|
|
7979
|
+
});
|
|
7623
7980
|
return /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
7624
7981
|
Card,
|
|
7625
7982
|
{
|
|
@@ -7641,51 +7998,50 @@ var renderSubmissionSurface = ({
|
|
|
7641
7998
|
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(LoadingGlyph, { enableAnimations, className: "h-4 w-4 text-current" }),
|
|
7642
7999
|
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("span", { children: actionLabel })
|
|
7643
8000
|
] }),
|
|
7644
|
-
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
7645
|
-
|
|
7646
|
-
|
|
7647
|
-
|
|
7648
|
-
|
|
7649
|
-
|
|
7650
|
-
|
|
7651
|
-
|
|
7652
|
-
|
|
7653
|
-
|
|
7654
|
-
|
|
7655
|
-
|
|
7656
|
-
|
|
7657
|
-
|
|
7658
|
-
|
|
7659
|
-
|
|
7660
|
-
|
|
7661
|
-
|
|
7662
|
-
|
|
7663
|
-
|
|
7664
|
-
|
|
7665
|
-
|
|
7666
|
-
|
|
7667
|
-
|
|
7668
|
-
|
|
7669
|
-
|
|
7670
|
-
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7674
|
-
|
|
7675
|
-
|
|
7676
|
-
|
|
7677
|
-
|
|
7678
|
-
|
|
7679
|
-
|
|
7680
|
-
|
|
7681
|
-
|
|
7682
|
-
|
|
7683
|
-
|
|
7684
|
-
|
|
7685
|
-
}
|
|
7686
|
-
|
|
7687
|
-
|
|
7688
|
-
}) })
|
|
8001
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
8002
|
+
"div",
|
|
8003
|
+
{
|
|
8004
|
+
className: "agg-order-submission-steps agg-order-submission-group flex flex-col gap-2",
|
|
8005
|
+
"data-testid": "agg-order-submission-steps",
|
|
8006
|
+
children: displayRows.map((step) => {
|
|
8007
|
+
return /* @__PURE__ */ (0, import_jsx_runtime113.jsxs)(
|
|
8008
|
+
"div",
|
|
8009
|
+
{
|
|
8010
|
+
className: "agg-order-submission-step flex items-center gap-2 text-agg-sm leading-agg-5 text-agg-foreground",
|
|
8011
|
+
"data-status": step.status,
|
|
8012
|
+
children: [
|
|
8013
|
+
step.status === "complete" ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
8014
|
+
Icon,
|
|
8015
|
+
{
|
|
8016
|
+
name: "check-circle",
|
|
8017
|
+
size: "small",
|
|
8018
|
+
className: "h-3 w-3 shrink-0 text-agg-primary",
|
|
8019
|
+
"aria-hidden": "true"
|
|
8020
|
+
}
|
|
8021
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
8022
|
+
LoadingGlyph,
|
|
8023
|
+
{
|
|
8024
|
+
enableAnimations,
|
|
8025
|
+
className: "h-3 w-3 shrink-0 text-agg-primary"
|
|
8026
|
+
}
|
|
8027
|
+
),
|
|
8028
|
+
/* @__PURE__ */ (0, import_jsx_runtime113.jsx)("p", { className: "min-w-0 flex-1", children: step.label }),
|
|
8029
|
+
step.venue ? /* @__PURE__ */ (0, import_jsx_runtime113.jsx)(
|
|
8030
|
+
VenueLogo,
|
|
8031
|
+
{
|
|
8032
|
+
venue: step.venue,
|
|
8033
|
+
size: "small",
|
|
8034
|
+
ariaLabel: getTradingVenueLabel(step.venue),
|
|
8035
|
+
className: "h-4 w-4"
|
|
8036
|
+
}
|
|
8037
|
+
) : null
|
|
8038
|
+
]
|
|
8039
|
+
},
|
|
8040
|
+
step.id
|
|
8041
|
+
);
|
|
8042
|
+
})
|
|
8043
|
+
}
|
|
8044
|
+
)
|
|
7689
8045
|
] })
|
|
7690
8046
|
] })
|
|
7691
8047
|
}
|
|
@@ -7821,6 +8177,7 @@ var PlaceOrder = ({
|
|
|
7821
8177
|
}) => {
|
|
7822
8178
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D;
|
|
7823
8179
|
const {
|
|
8180
|
+
enableDebug: isExecutionDebugEnabled,
|
|
7824
8181
|
features: { enableAnimations, showFeesBreakdown },
|
|
7825
8182
|
general: { locale }
|
|
7826
8183
|
} = (0, import_hooks29.useSdkUiConfig)();
|
|
@@ -7917,6 +8274,27 @@ var PlaceOrder = ({
|
|
|
7917
8274
|
const [isSplitDetailOpen, setIsSplitDetailOpen] = (0, import_react9.useState)(false);
|
|
7918
8275
|
const [submissionFeedback, setSubmissionFeedback] = (0, import_react9.useState)(null);
|
|
7919
8276
|
const [submissionProgressState, setSubmissionProgressState] = (0, import_react9.useState)(null);
|
|
8277
|
+
const executionDebugStoreRef = (0, import_react9.useRef)(null);
|
|
8278
|
+
const executionDebugAttemptIdRef = (0, import_react9.useRef)(null);
|
|
8279
|
+
(0, import_react9.useEffect)(() => {
|
|
8280
|
+
if (!isExecutionDebugEnabled) {
|
|
8281
|
+
executionDebugStoreRef.current = null;
|
|
8282
|
+
return;
|
|
8283
|
+
}
|
|
8284
|
+
executionDebugStoreRef.current = enableExecutionDebugInBrowser();
|
|
8285
|
+
}, [isExecutionDebugEnabled]);
|
|
8286
|
+
(0, import_react9.useEffect)(() => {
|
|
8287
|
+
if (!isExecutionDebugEnabled) return;
|
|
8288
|
+
const store = executionDebugStoreRef.current;
|
|
8289
|
+
if (!store) return;
|
|
8290
|
+
store.clear();
|
|
8291
|
+
executionDebugAttemptIdRef.current = null;
|
|
8292
|
+
}, [
|
|
8293
|
+
isExecutionDebugEnabled,
|
|
8294
|
+
scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.id,
|
|
8295
|
+
scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.id,
|
|
8296
|
+
scopedSelectedOutcomeId
|
|
8297
|
+
]);
|
|
7920
8298
|
const debouncedAmount = (0, import_hooks29.useDebouncedValue)(internalAmount, 300);
|
|
7921
8299
|
const isSell = (0, import_react9.useMemo)(() => internalTab === "sell", [internalTab]);
|
|
7922
8300
|
const {
|
|
@@ -8176,8 +8554,39 @@ var PlaceOrder = ({
|
|
|
8176
8554
|
selectedRouteCard == null ? void 0 : selectedRouteCard.quoteData
|
|
8177
8555
|
]);
|
|
8178
8556
|
(0, import_react9.useEffect)(() => {
|
|
8557
|
+
var _a2, _b2;
|
|
8179
8558
|
const dp = executionProgress.dagProgress;
|
|
8180
8559
|
if (!dp) return;
|
|
8560
|
+
const debugStore = executionDebugStoreRef.current;
|
|
8561
|
+
const debugAttemptId = executionDebugAttemptIdRef.current;
|
|
8562
|
+
if (debugStore && debugAttemptId) {
|
|
8563
|
+
debugStore.appendEvent(debugAttemptId, {
|
|
8564
|
+
kind: "ws_update",
|
|
8565
|
+
label: "dag_progress",
|
|
8566
|
+
data: dp
|
|
8567
|
+
});
|
|
8568
|
+
const normalizedRows = buildSubmissionDisplayRows({
|
|
8569
|
+
phase: "executing",
|
|
8570
|
+
dagProgress: dp,
|
|
8571
|
+
labels: tradingLabels
|
|
8572
|
+
});
|
|
8573
|
+
debugStore.setNormalizedSteps(debugAttemptId, normalizedRows);
|
|
8574
|
+
debugStore.appendEvent(debugAttemptId, {
|
|
8575
|
+
kind: "normalized_steps",
|
|
8576
|
+
data: normalizedRows
|
|
8577
|
+
});
|
|
8578
|
+
if (dp.status === "failed") {
|
|
8579
|
+
debugStore.appendError(debugAttemptId, {
|
|
8580
|
+
message: (_a2 = dp.errorReason) != null ? _a2 : "DAG execution failed",
|
|
8581
|
+
failedStep: (_b2 = dp.currentStepType) != null ? _b2 : void 0,
|
|
8582
|
+
data: { currentSequence: dp.currentSequence, totalSteps: dp.totalSteps }
|
|
8583
|
+
});
|
|
8584
|
+
debugStore.updateAttempt(debugAttemptId, {
|
|
8585
|
+
status: "failed",
|
|
8586
|
+
finalStatus: "failed"
|
|
8587
|
+
});
|
|
8588
|
+
}
|
|
8589
|
+
}
|
|
8181
8590
|
setSubmissionProgressState((prev) => {
|
|
8182
8591
|
if (!prev) return prev;
|
|
8183
8592
|
if (dp.status === "failed") {
|
|
@@ -8193,7 +8602,7 @@ var PlaceOrder = ({
|
|
|
8193
8602
|
}
|
|
8194
8603
|
return __spreadProps(__spreadValues({}, prev), { dagProgress: dp });
|
|
8195
8604
|
});
|
|
8196
|
-
}, [executionProgress.dagProgress, tradingLabels
|
|
8605
|
+
}, [executionProgress.dagProgress, tradingLabels]);
|
|
8197
8606
|
(0, import_react9.useEffect)(() => {
|
|
8198
8607
|
const orderIds = submissionProgressState == null ? void 0 : submissionProgressState.orderIds;
|
|
8199
8608
|
if (!(orderIds == null ? void 0 : orderIds.length)) return;
|
|
@@ -8201,6 +8610,17 @@ var PlaceOrder = ({
|
|
|
8201
8610
|
orderIds,
|
|
8202
8611
|
executionProgress.terminalOrderEvents
|
|
8203
8612
|
);
|
|
8613
|
+
const debugStore = executionDebugStoreRef.current;
|
|
8614
|
+
const debugAttemptId = executionDebugAttemptIdRef.current;
|
|
8615
|
+
if (debugStore && debugAttemptId && executionProgress.terminalOrderEvents.length > 0) {
|
|
8616
|
+
debugStore.appendEvent(debugAttemptId, {
|
|
8617
|
+
kind: "terminal_event",
|
|
8618
|
+
data: {
|
|
8619
|
+
aggregateStatus,
|
|
8620
|
+
events: executionProgress.terminalOrderEvents
|
|
8621
|
+
}
|
|
8622
|
+
});
|
|
8623
|
+
}
|
|
8204
8624
|
if (aggregateStatus === "pending") return;
|
|
8205
8625
|
setSubmissionProgressState((prev) => {
|
|
8206
8626
|
var _a2, _b2, _c2;
|
|
@@ -8243,14 +8663,45 @@ var PlaceOrder = ({
|
|
|
8243
8663
|
tradingLabels.orderFailed
|
|
8244
8664
|
]);
|
|
8245
8665
|
(0, import_react9.useEffect)(() => {
|
|
8666
|
+
var _a2, _b2;
|
|
8246
8667
|
if (!submissionProgressState) return;
|
|
8247
8668
|
onExecutionStateChange == null ? void 0 : onExecutionStateChange(submissionProgressState);
|
|
8669
|
+
const debugStore = executionDebugStoreRef.current;
|
|
8670
|
+
const debugAttemptId = executionDebugAttemptIdRef.current;
|
|
8671
|
+
if (debugStore && debugAttemptId) {
|
|
8672
|
+
debugStore.appendEvent(debugAttemptId, {
|
|
8673
|
+
kind: "state_change",
|
|
8674
|
+
label: submissionProgressState.phase,
|
|
8675
|
+
data: {
|
|
8676
|
+
phase: submissionProgressState.phase,
|
|
8677
|
+
executionVenue: submissionProgressState.executionVenue,
|
|
8678
|
+
orderIds: submissionProgressState.orderIds,
|
|
8679
|
+
errorMessage: submissionProgressState.errorMessage
|
|
8680
|
+
}
|
|
8681
|
+
});
|
|
8682
|
+
}
|
|
8248
8683
|
if (submissionProgressState.phase === "success" && submissionProgressState.summary) {
|
|
8249
8684
|
(0, import_hooks29.invalidateBalanceQueries)(queryClient);
|
|
8250
8685
|
(0, import_hooks29.invalidatePositionQueries)(queryClient);
|
|
8686
|
+
if (debugStore && debugAttemptId) {
|
|
8687
|
+
debugStore.updateAttempt(debugAttemptId, {
|
|
8688
|
+
status: "succeeded",
|
|
8689
|
+
finalStatus: "succeeded"
|
|
8690
|
+
});
|
|
8691
|
+
}
|
|
8251
8692
|
onSuccess == null ? void 0 : onSuccess(submissionProgressState.summary);
|
|
8252
8693
|
}
|
|
8253
8694
|
if (submissionProgressState.phase === "failed" && submissionProgressState.errorMessage) {
|
|
8695
|
+
if (debugStore && debugAttemptId) {
|
|
8696
|
+
debugStore.appendError(debugAttemptId, {
|
|
8697
|
+
message: submissionProgressState.errorMessage,
|
|
8698
|
+
failedStep: (_b2 = (_a2 = submissionProgressState.dagProgress) == null ? void 0 : _a2.currentStepType) != null ? _b2 : void 0
|
|
8699
|
+
});
|
|
8700
|
+
debugStore.updateAttempt(debugAttemptId, {
|
|
8701
|
+
status: "failed",
|
|
8702
|
+
finalStatus: "failed"
|
|
8703
|
+
});
|
|
8704
|
+
}
|
|
8254
8705
|
onError == null ? void 0 : onError(new Error(submissionProgressState.errorMessage));
|
|
8255
8706
|
}
|
|
8256
8707
|
}, [submissionProgressState, onExecutionStateChange, onSuccess, onError, queryClient]);
|
|
@@ -8424,23 +8875,91 @@ var PlaceOrder = ({
|
|
|
8424
8875
|
};
|
|
8425
8876
|
const handleExecuteQuote = (0, import_react9.useCallback)(
|
|
8426
8877
|
(quoteData) => __async(null, null, function* () {
|
|
8878
|
+
var _a2, _b2, _c2;
|
|
8427
8879
|
const quoteId = quoteData == null ? void 0 : quoteData.quoteId;
|
|
8428
8880
|
if (!quoteId) {
|
|
8429
8881
|
throw new Error(tradingLabels.quoteUnavailable);
|
|
8430
8882
|
}
|
|
8883
|
+
const debugStore = executionDebugStoreRef.current;
|
|
8884
|
+
const venues = (_b2 = (_a2 = quoteData == null ? void 0 : quoteData.fills) == null ? void 0 : _a2.map((fill) => fill.venue).filter(Boolean)) != null ? _b2 : [];
|
|
8885
|
+
const debugAttempt = debugStore == null ? void 0 : debugStore.appendAttempt({
|
|
8886
|
+
status: "executing",
|
|
8887
|
+
quoteId,
|
|
8888
|
+
quote: {
|
|
8889
|
+
request: {
|
|
8890
|
+
venueMarketOutcomeId: scopedSelectedOutcomeId,
|
|
8891
|
+
amount: internalAmount,
|
|
8892
|
+
slippage: internalSlippage,
|
|
8893
|
+
tradeSide: isSell ? "sell" : "buy"
|
|
8894
|
+
},
|
|
8895
|
+
response: smartRoute.data,
|
|
8896
|
+
selectedRoute: quoteData,
|
|
8897
|
+
side: isSell ? "sell" : "buy",
|
|
8898
|
+
marketId: scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.id,
|
|
8899
|
+
eventId: scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.id,
|
|
8900
|
+
outcomeId: scopedSelectedOutcomeId != null ? scopedSelectedOutcomeId : void 0,
|
|
8901
|
+
venues,
|
|
8902
|
+
capturedAt: Date.now()
|
|
8903
|
+
},
|
|
8904
|
+
selectedRoute: quoteData
|
|
8905
|
+
});
|
|
8906
|
+
executionDebugAttemptIdRef.current = (_c2 = debugAttempt == null ? void 0 : debugAttempt.attemptId) != null ? _c2 : null;
|
|
8431
8907
|
if (onPrimaryAction) {
|
|
8908
|
+
debugStore == null ? void 0 : debugStore.appendEvent(debugAttempt.attemptId, {
|
|
8909
|
+
kind: "execute_request",
|
|
8910
|
+
label: "delegated_to_partner",
|
|
8911
|
+
data: { quoteId }
|
|
8912
|
+
});
|
|
8432
8913
|
onPrimaryAction({ quoteId });
|
|
8433
8914
|
return;
|
|
8434
8915
|
}
|
|
8435
|
-
|
|
8436
|
-
|
|
8437
|
-
|
|
8438
|
-
|
|
8439
|
-
|
|
8440
|
-
|
|
8441
|
-
|
|
8916
|
+
try {
|
|
8917
|
+
const response = yield executeManaged.mutateAsync({ quoteId });
|
|
8918
|
+
if (debugAttempt) {
|
|
8919
|
+
debugStore == null ? void 0 : debugStore.appendEvent(debugAttempt.attemptId, {
|
|
8920
|
+
kind: "execute_response",
|
|
8921
|
+
data: { orderIds: response.orderIds }
|
|
8922
|
+
});
|
|
8923
|
+
debugStore == null ? void 0 : debugStore.updateAttempt(debugAttempt.attemptId, {
|
|
8924
|
+
orderId: response.orderIds[0],
|
|
8925
|
+
orderIds: response.orderIds
|
|
8926
|
+
});
|
|
8927
|
+
}
|
|
8928
|
+
setSubmissionProgressState({
|
|
8929
|
+
executionVenue: resolveExecutionVenueFromQuote(quoteData),
|
|
8930
|
+
orderId: response.orderIds[0],
|
|
8931
|
+
orderIds: response.orderIds,
|
|
8932
|
+
phase: "submitting"
|
|
8933
|
+
});
|
|
8934
|
+
} catch (error) {
|
|
8935
|
+
if (debugAttempt) {
|
|
8936
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
8937
|
+
debugStore == null ? void 0 : debugStore.appendError(debugAttempt.attemptId, {
|
|
8938
|
+
message: err.message,
|
|
8939
|
+
name: err.name,
|
|
8940
|
+
stack: err.stack,
|
|
8941
|
+
failedStep: "execute_request"
|
|
8942
|
+
});
|
|
8943
|
+
debugStore == null ? void 0 : debugStore.updateAttempt(debugAttempt.attemptId, {
|
|
8944
|
+
status: "failed",
|
|
8945
|
+
finalStatus: "failed"
|
|
8946
|
+
});
|
|
8947
|
+
}
|
|
8948
|
+
throw error;
|
|
8949
|
+
}
|
|
8442
8950
|
}),
|
|
8443
|
-
[
|
|
8951
|
+
[
|
|
8952
|
+
executeManaged,
|
|
8953
|
+
internalAmount,
|
|
8954
|
+
internalSlippage,
|
|
8955
|
+
isSell,
|
|
8956
|
+
onPrimaryAction,
|
|
8957
|
+
scopedSelectedEvent == null ? void 0 : scopedSelectedEvent.id,
|
|
8958
|
+
scopedSelectedMarket == null ? void 0 : scopedSelectedMarket.id,
|
|
8959
|
+
scopedSelectedOutcomeId,
|
|
8960
|
+
smartRoute.data,
|
|
8961
|
+
tradingLabels.quoteUnavailable
|
|
8962
|
+
]
|
|
8444
8963
|
);
|
|
8445
8964
|
const handleSkipToSuccess = (0, import_react9.useCallback)(() => {
|
|
8446
8965
|
const primaryFilledEvent = executionProgress.terminalOrderEvents.find(
|