@workflow/web 5.0.0-beta.4 → 5.0.0-beta.5
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/build/client/assets/{encryption-80GMP4r0.js → encryption-CEh0YXii.js} +4 -2
- package/build/client/assets/{entry.client-BWsSsWQm.js → entry.client-DtOpLtMQ.js} +1 -1
- package/build/client/assets/{highlighted-body-B3W2YXNL-B7T9pqeb.js → highlighted-body-B3W2YXNL-L1CrwoL_.js} +2 -2
- package/build/client/assets/{home-BIQJMe_Q.js → home-B6UmDDP6.js} +4 -3
- package/build/client/assets/index-B4xuge0I.js +249 -0
- package/build/client/assets/{index-DQa-BExo.js → index-BsV8i_Jn.js} +20 -20
- package/build/client/assets/manifest-e4c1c787.js +1 -0
- package/build/client/assets/{mermaid-3ZIDBTTL-w46Kr90n.js → mermaid-3ZIDBTTL-BQLU7GUr.js} +226 -46
- package/build/client/assets/{root-sXuXrryl.js → root-Yk3JVwUh.js} +2 -2
- package/build/client/assets/{run-detail-7Pj2mQLs.js → run-detail-DMUaWXhb.js} +35 -10
- package/build/client/assets/{workflow-graph-viewer-De9JQkZc.js → workflow-graph-viewer-yqeN-U_2.js} +3 -3
- package/build/server/assets/{app-CtOg8_v5.js → app-L1V62FgT.js} +1 -1
- package/build/server/assets/{highlighted-body-B3W2YXNL-uaucauLI.js → highlighted-body-B3W2YXNL-CZjJIpdD.js} +6 -7
- package/build/server/assets/{index-D02biwxV.js → index-BwtNigf1.js} +18 -20
- package/build/server/assets/{mermaid-3ZIDBTTL-DrZ5V6uv.js → mermaid-3ZIDBTTL-Cc8IPTBj.js} +6 -7
- package/build/server/assets/{server-build-DT0Hg0Yf.js → server-build-DtcOUEHS.js} +34405 -33782
- package/build/server/assets/{token-D7_Lld85.js → token-DHnArVm7.js} +2 -2
- package/build/server/assets/{token-util-CfY4anoc.js → token-util-B3uKeZ0s.js} +2 -2
- package/build/server/index.js +1 -1
- package/package.json +8 -7
- package/build/client/assets/manifest-77894282.js +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/encryption-CEh0YXii.js","assets/index-B4xuge0I.js","assets/index-BsV8i_Jn.js","assets/highlighted-body-B3W2YXNL-L1CrwoL_.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
5
5
|
var _a2;
|
|
6
|
-
import { r as reactExports, j as jsxRuntimeExports, f as reactDomExports,
|
|
6
|
+
import { r as reactExports, j as jsxRuntimeExports, f as reactDomExports, I as React, R as ReactExports, D as ReactDOM, g as getDefaultExportFromCjs } from "./index-BsV8i_Jn.js";
|
|
7
7
|
function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
|
|
8
8
|
return function handleEvent(event) {
|
|
9
9
|
originalEventHandler == null ? void 0 : originalEventHandler(event);
|
|
@@ -10359,9 +10359,9 @@ function hydrateData(value, revivers) {
|
|
|
10359
10359
|
async function hydrateDataWithKey(value, revivers, key) {
|
|
10360
10360
|
if (value instanceof Uint8Array && isEncryptedData(value) && key) {
|
|
10361
10361
|
const { decrypt } = await __vitePreload(async () => {
|
|
10362
|
-
const { decrypt: decrypt2 } = await import("./encryption-
|
|
10362
|
+
const { decrypt: decrypt2 } = await import("./encryption-CEh0YXii.js");
|
|
10363
10363
|
return { decrypt: decrypt2 };
|
|
10364
|
-
}, true ? [] : void 0);
|
|
10364
|
+
}, true ? __vite__mapDeps([0,1,2]) : void 0);
|
|
10365
10365
|
const { payload } = decodeFormatPrefix(value);
|
|
10366
10366
|
const decrypted = await decrypt(key, payload);
|
|
10367
10367
|
return hydrateData(decrypted, revivers);
|
|
@@ -10441,6 +10441,34 @@ const observabilityRevivers = {
|
|
|
10441
10441
|
ReadableStream: streamToStreamRef,
|
|
10442
10442
|
WritableStream: streamToStreamRef,
|
|
10443
10443
|
TransformStream: streamToStreamRef,
|
|
10444
|
+
AbortController: (value) => `<AbortController(aborted: ${value.aborted})>`,
|
|
10445
|
+
AbortSignal: (value) => `<AbortSignal(aborted: ${value.aborted})>`,
|
|
10446
|
+
// DOMException needs an explicit reviver: without one, devalue.parse
|
|
10447
|
+
// throws on the `["DOMException", ...]` tag and `hydrateStepIO`'s
|
|
10448
|
+
// try/catch leaves the raw flat-encoded string in the UI. AbortController
|
|
10449
|
+
// synthesizes a DOMException as the default `signal.reason` when abort()
|
|
10450
|
+
// is called with no arg — so any abort that round-trips through a step
|
|
10451
|
+
// boundary surfaces here. Reconstruct as a real DOMException when the
|
|
10452
|
+
// global is available (modern browsers + Node 18+), else fall back to
|
|
10453
|
+
// an Error preserving name/message/stack/cause for display.
|
|
10454
|
+
DOMException: (value) => {
|
|
10455
|
+
const G2 = globalThis;
|
|
10456
|
+
if (typeof G2.DOMException === "function") {
|
|
10457
|
+
const e2 = new G2.DOMException(value.message, value.name);
|
|
10458
|
+
if (value.stack !== void 0)
|
|
10459
|
+
e2.stack = value.stack;
|
|
10460
|
+
if ("cause" in value)
|
|
10461
|
+
e2.cause = value.cause;
|
|
10462
|
+
return e2;
|
|
10463
|
+
}
|
|
10464
|
+
const e = new Error(value.message);
|
|
10465
|
+
e.name = value.name;
|
|
10466
|
+
if (value.stack !== void 0)
|
|
10467
|
+
e.stack = value.stack;
|
|
10468
|
+
if ("cause" in value)
|
|
10469
|
+
e.cause = value.cause;
|
|
10470
|
+
return e;
|
|
10471
|
+
},
|
|
10444
10472
|
StepFunction: serializedStepFunctionToString,
|
|
10445
10473
|
WorkflowFunction: (value) => `<workflow:${value.workflowId}>`,
|
|
10446
10474
|
Instance: serializedInstanceToRef,
|
|
@@ -10449,6 +10477,7 @@ const observabilityRevivers = {
|
|
|
10449
10477
|
function hydrateStepIO(resource, revivers) {
|
|
10450
10478
|
let hydratedInput = resource.input;
|
|
10451
10479
|
let hydratedOutput = resource.output;
|
|
10480
|
+
let hydratedError = resource.error;
|
|
10452
10481
|
if (resource.input != null) {
|
|
10453
10482
|
try {
|
|
10454
10483
|
hydratedInput = hydrateData(resource.input, revivers);
|
|
@@ -10461,11 +10490,23 @@ function hydrateStepIO(resource, revivers) {
|
|
|
10461
10490
|
} catch {
|
|
10462
10491
|
}
|
|
10463
10492
|
}
|
|
10464
|
-
|
|
10493
|
+
if (resource.error != null) {
|
|
10494
|
+
try {
|
|
10495
|
+
hydratedError = hydrateData(resource.error, revivers);
|
|
10496
|
+
} catch {
|
|
10497
|
+
}
|
|
10498
|
+
}
|
|
10499
|
+
return {
|
|
10500
|
+
...resource,
|
|
10501
|
+
input: hydratedInput,
|
|
10502
|
+
output: hydratedOutput,
|
|
10503
|
+
error: hydratedError
|
|
10504
|
+
};
|
|
10465
10505
|
}
|
|
10466
10506
|
function hydrateWorkflowIO(resource, revivers) {
|
|
10467
10507
|
let hydratedInput = resource.input;
|
|
10468
10508
|
let hydratedOutput = resource.output;
|
|
10509
|
+
let hydratedError = resource.error;
|
|
10469
10510
|
if (resource.input != null) {
|
|
10470
10511
|
try {
|
|
10471
10512
|
hydratedInput = hydrateData(resource.input, revivers);
|
|
@@ -10478,7 +10519,18 @@ function hydrateWorkflowIO(resource, revivers) {
|
|
|
10478
10519
|
} catch {
|
|
10479
10520
|
}
|
|
10480
10521
|
}
|
|
10481
|
-
|
|
10522
|
+
if (resource.error != null) {
|
|
10523
|
+
try {
|
|
10524
|
+
hydratedError = hydrateData(resource.error, revivers);
|
|
10525
|
+
} catch {
|
|
10526
|
+
}
|
|
10527
|
+
}
|
|
10528
|
+
return {
|
|
10529
|
+
...resource,
|
|
10530
|
+
input: hydratedInput,
|
|
10531
|
+
output: hydratedOutput,
|
|
10532
|
+
error: hydratedError
|
|
10533
|
+
};
|
|
10482
10534
|
}
|
|
10483
10535
|
function hydrateEventData(resource, revivers) {
|
|
10484
10536
|
if (!resource.eventData)
|
|
@@ -10514,6 +10566,12 @@ function hydrateEventData(resource, revivers) {
|
|
|
10514
10566
|
} catch {
|
|
10515
10567
|
}
|
|
10516
10568
|
}
|
|
10569
|
+
if ("error" in eventData && eventData.error != null) {
|
|
10570
|
+
try {
|
|
10571
|
+
eventData.error = hydrateData(eventData.error, revivers);
|
|
10572
|
+
} catch {
|
|
10573
|
+
}
|
|
10574
|
+
}
|
|
10517
10575
|
return { ...resource, eventData };
|
|
10518
10576
|
}
|
|
10519
10577
|
function hydrateHookMetadata(resource, revivers) {
|
|
@@ -15309,16 +15367,18 @@ const StepFailedEventSchema = BaseEventSchema.extend({
|
|
|
15309
15367
|
eventType: literal("step_failed"),
|
|
15310
15368
|
correlationId: string$2(),
|
|
15311
15369
|
eventData: object({
|
|
15312
|
-
|
|
15313
|
-
|
|
15370
|
+
// The thrown value, serialized via the workflow serialization pipeline.
|
|
15371
|
+
// Can be any JavaScript value (string, number, object, Error, etc.)
|
|
15372
|
+
error: SerializedDataSchema
|
|
15314
15373
|
})
|
|
15315
15374
|
});
|
|
15316
15375
|
const StepRetryingEventSchema = BaseEventSchema.extend({
|
|
15317
15376
|
eventType: literal("step_retrying"),
|
|
15318
15377
|
correlationId: string$2(),
|
|
15319
15378
|
eventData: object({
|
|
15320
|
-
|
|
15321
|
-
|
|
15379
|
+
// The thrown value, serialized via the workflow serialization pipeline.
|
|
15380
|
+
// Can be any JavaScript value (string, number, object, Error, etc.)
|
|
15381
|
+
error: SerializedDataSchema,
|
|
15322
15382
|
retryAfter: date().optional()
|
|
15323
15383
|
})
|
|
15324
15384
|
});
|
|
@@ -15342,7 +15402,9 @@ const HookCreatedEventSchema = BaseEventSchema.extend({
|
|
|
15342
15402
|
correlationId: string$2(),
|
|
15343
15403
|
eventData: object({
|
|
15344
15404
|
token: string$2(),
|
|
15345
|
-
metadata: SerializedDataSchema.optional()
|
|
15405
|
+
metadata: SerializedDataSchema.optional(),
|
|
15406
|
+
isWebhook: boolean$2().optional(),
|
|
15407
|
+
isSystem: boolean$2().optional()
|
|
15346
15408
|
})
|
|
15347
15409
|
});
|
|
15348
15410
|
const HookReceivedEventSchema = BaseEventSchema.extend({
|
|
@@ -15401,7 +15463,13 @@ const RunCompletedEventSchema = BaseEventSchema.extend({
|
|
|
15401
15463
|
const RunFailedEventSchema = BaseEventSchema.extend({
|
|
15402
15464
|
eventType: literal("run_failed"),
|
|
15403
15465
|
eventData: object({
|
|
15404
|
-
|
|
15466
|
+
// The thrown value, serialized via the workflow serialization pipeline.
|
|
15467
|
+
// Can be any JavaScript value (string, number, object, Error, etc.)
|
|
15468
|
+
error: SerializedDataSchema,
|
|
15469
|
+
// The high-level error category (USER_ERROR, RUNTIME_ERROR, etc.) used
|
|
15470
|
+
// for routing and classification. Kept as plaintext metadata so
|
|
15471
|
+
// observability tools can filter/categorize without needing to decrypt
|
|
15472
|
+
// the full error payload.
|
|
15405
15473
|
errorCode: string$2().optional()
|
|
15406
15474
|
})
|
|
15407
15475
|
});
|
|
@@ -15469,7 +15537,8 @@ object({
|
|
|
15469
15537
|
createdAt: date(),
|
|
15470
15538
|
// Optional in database for backwards compatibility, defaults to 1 (legacy) when reading
|
|
15471
15539
|
specVersion: number$2().optional(),
|
|
15472
|
-
isWebhook: boolean$2().optional()
|
|
15540
|
+
isWebhook: boolean$2().optional(),
|
|
15541
|
+
isSystem: boolean$2().optional()
|
|
15473
15542
|
});
|
|
15474
15543
|
const QueuePrefix = union([
|
|
15475
15544
|
literal("__wkf_step_"),
|
|
@@ -15491,6 +15560,11 @@ const WorkflowInvokePayloadSchema = object({
|
|
|
15491
15560
|
requestedAt: date().optional(),
|
|
15492
15561
|
/** Number of times this message has been re-enqueued due to server errors (5xx) */
|
|
15493
15562
|
serverErrorRetryCount: number$2().int().optional(),
|
|
15563
|
+
/** Step ID for inline step execution in combined handler. If provided, the flow execution
|
|
15564
|
+
* will jump directly to execute the step with the given ID before doing an event replay. */
|
|
15565
|
+
stepId: string$2().optional(),
|
|
15566
|
+
/** Step name, sent alongside stepId to avoid loading the event log just to resolve the name. */
|
|
15567
|
+
stepName: string$2().optional(),
|
|
15494
15568
|
/** Run creation data, only present on the first queue delivery from start() */
|
|
15495
15569
|
runInput: RunInputSchema.optional()
|
|
15496
15570
|
});
|
|
@@ -15511,22 +15585,6 @@ union([
|
|
|
15511
15585
|
StepInvokePayloadSchema,
|
|
15512
15586
|
HealthCheckPayloadSchema
|
|
15513
15587
|
]);
|
|
15514
|
-
const zodJsonSchema = lazy(() => {
|
|
15515
|
-
return union([
|
|
15516
|
-
string$2(),
|
|
15517
|
-
number$2(),
|
|
15518
|
-
boolean$2(),
|
|
15519
|
-
_null(),
|
|
15520
|
-
array(zodJsonSchema),
|
|
15521
|
-
record(string$2(), zodJsonSchema)
|
|
15522
|
-
]);
|
|
15523
|
-
});
|
|
15524
|
-
const StructuredErrorSchema = object({
|
|
15525
|
-
message: string$2(),
|
|
15526
|
-
stack: string$2().optional(),
|
|
15527
|
-
code: string$2().optional()
|
|
15528
|
-
// Populated with RunErrorCode values (USER_ERROR, RUNTIME_ERROR) for run_failed events
|
|
15529
|
-
});
|
|
15530
15588
|
const WorkflowRunStatusSchema = _enum([
|
|
15531
15589
|
"pending",
|
|
15532
15590
|
"running",
|
|
@@ -15564,7 +15622,20 @@ const WorkflowRunBaseSchema = object({
|
|
|
15564
15622
|
executionContext: record(string$2(), any()).optional(),
|
|
15565
15623
|
input: SerializedDataSchema,
|
|
15566
15624
|
output: SerializedDataSchema.optional(),
|
|
15567
|
-
|
|
15625
|
+
/**
|
|
15626
|
+
* The thrown value from a run_failed event, serialized via the workflow
|
|
15627
|
+
* serialization pipeline. To display the error to a user, hydrate it via
|
|
15628
|
+
* `hydrateRunError` (with the encryption key if encryption is enabled).
|
|
15629
|
+
* Observability tools cannot view the error without going through the
|
|
15630
|
+
* decryption + hydration pipeline.
|
|
15631
|
+
*/
|
|
15632
|
+
error: SerializedDataSchema.optional(),
|
|
15633
|
+
/**
|
|
15634
|
+
* The high-level error category (USER_ERROR, RUNTIME_ERROR, etc.) from a
|
|
15635
|
+
* run_failed event. Kept as plaintext metadata for routing and filtering
|
|
15636
|
+
* without needing to decrypt the full error payload.
|
|
15637
|
+
*/
|
|
15638
|
+
errorCode: string$2().optional(),
|
|
15568
15639
|
expiredAt: date().optional(),
|
|
15569
15640
|
startedAt: date().optional(),
|
|
15570
15641
|
completedAt: date().optional(),
|
|
@@ -15575,32 +15646,48 @@ discriminatedUnion("status", [
|
|
|
15575
15646
|
// Non-final states
|
|
15576
15647
|
WorkflowRunBaseSchema.extend({
|
|
15577
15648
|
status: _enum(["pending", "running"]),
|
|
15578
|
-
output: _undefined(),
|
|
15579
|
-
error: _undefined(),
|
|
15580
|
-
completedAt: _undefined()
|
|
15649
|
+
output: _undefined().optional(),
|
|
15650
|
+
error: _undefined().optional(),
|
|
15651
|
+
completedAt: _undefined().optional()
|
|
15581
15652
|
}),
|
|
15582
15653
|
// Cancelled state
|
|
15583
15654
|
WorkflowRunBaseSchema.extend({
|
|
15584
15655
|
status: literal("cancelled"),
|
|
15585
|
-
output: _undefined(),
|
|
15586
|
-
error: _undefined(),
|
|
15656
|
+
output: _undefined().optional(),
|
|
15657
|
+
error: _undefined().optional(),
|
|
15587
15658
|
completedAt: date()
|
|
15588
15659
|
}),
|
|
15589
15660
|
// Completed state - output can be v1 or v2 format
|
|
15590
15661
|
WorkflowRunBaseSchema.extend({
|
|
15591
15662
|
status: literal("completed"),
|
|
15592
15663
|
output: SerializedDataSchema,
|
|
15593
|
-
error: _undefined(),
|
|
15664
|
+
error: _undefined().optional(),
|
|
15594
15665
|
completedAt: date()
|
|
15595
15666
|
}),
|
|
15596
15667
|
// Failed state
|
|
15597
15668
|
WorkflowRunBaseSchema.extend({
|
|
15598
15669
|
status: literal("failed"),
|
|
15599
|
-
output: _undefined(),
|
|
15600
|
-
error:
|
|
15670
|
+
output: _undefined().optional(),
|
|
15671
|
+
error: SerializedDataSchema,
|
|
15601
15672
|
completedAt: date()
|
|
15602
15673
|
})
|
|
15603
15674
|
]);
|
|
15675
|
+
const zodJsonSchema = lazy(() => {
|
|
15676
|
+
return union([
|
|
15677
|
+
string$2(),
|
|
15678
|
+
number$2(),
|
|
15679
|
+
boolean$2(),
|
|
15680
|
+
_null(),
|
|
15681
|
+
array(zodJsonSchema),
|
|
15682
|
+
record(string$2(), zodJsonSchema)
|
|
15683
|
+
]);
|
|
15684
|
+
});
|
|
15685
|
+
object({
|
|
15686
|
+
message: string$2(),
|
|
15687
|
+
stack: string$2().optional(),
|
|
15688
|
+
code: string$2().optional()
|
|
15689
|
+
// Populated with RunErrorCode values (USER_ERROR, RUNTIME_ERROR) for run_failed events
|
|
15690
|
+
});
|
|
15604
15691
|
const StepStatusSchema = _enum([
|
|
15605
15692
|
"pending",
|
|
15606
15693
|
"running",
|
|
@@ -15636,11 +15723,16 @@ object({
|
|
|
15636
15723
|
input: SerializedDataSchema,
|
|
15637
15724
|
output: SerializedDataSchema.optional(),
|
|
15638
15725
|
/**
|
|
15639
|
-
* The
|
|
15640
|
-
*
|
|
15641
|
-
* be from a retry attempt (step_retrying)
|
|
15726
|
+
* The thrown value from a step_retrying or step_failed event, serialized
|
|
15727
|
+
* via the workflow serialization pipeline. Tracks the most recent error
|
|
15728
|
+
* the step encountered, which may be from a retry attempt (step_retrying)
|
|
15729
|
+
* or the final failure (step_failed).
|
|
15730
|
+
*
|
|
15731
|
+
* To display the error to a user, hydrate it via `hydrateStepError` (with
|
|
15732
|
+
* the encryption key if encryption is enabled). Observability tools cannot
|
|
15733
|
+
* view the error without going through the decryption + hydration pipeline.
|
|
15642
15734
|
*/
|
|
15643
|
-
error:
|
|
15735
|
+
error: SerializedDataSchema.optional(),
|
|
15644
15736
|
attempt: number$2(),
|
|
15645
15737
|
/**
|
|
15646
15738
|
* When the step first started executing. Set by the first step_started event
|
|
@@ -15677,6 +15769,21 @@ function base64ToArrayBuffer(base642) {
|
|
|
15677
15769
|
}
|
|
15678
15770
|
return bytes.buffer;
|
|
15679
15771
|
}
|
|
15772
|
+
function makeWebErrorSubclassReviver(name2) {
|
|
15773
|
+
return (value) => {
|
|
15774
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
15775
|
+
const Ctor = globalThis[name2];
|
|
15776
|
+
let error;
|
|
15777
|
+
if (typeof Ctor === "function") {
|
|
15778
|
+
error = new Ctor(value.message, opts);
|
|
15779
|
+
} else {
|
|
15780
|
+
error = Object.assign(new Error(value.message, opts), { name: name2 });
|
|
15781
|
+
}
|
|
15782
|
+
if (value.stack !== void 0)
|
|
15783
|
+
error.stack = value.stack;
|
|
15784
|
+
return error;
|
|
15785
|
+
};
|
|
15786
|
+
}
|
|
15680
15787
|
function getWebRevivers() {
|
|
15681
15788
|
function reviveArrayBuffer(value) {
|
|
15682
15789
|
return base64ToArrayBuffer(value);
|
|
@@ -15691,10 +15798,83 @@ function getWebRevivers() {
|
|
|
15691
15798
|
BigInt64Array: (value) => new BigInt64Array(reviveArrayBuffer(value)),
|
|
15692
15799
|
BigUint64Array: (value) => new BigUint64Array(reviveArrayBuffer(value)),
|
|
15693
15800
|
Date: (value) => new Date(value),
|
|
15801
|
+
// Error family. The reducer side (see
|
|
15802
|
+
// `packages/core/src/serialization/reducers/common.ts`) emits a tagged
|
|
15803
|
+
// entry for each built-in Error subclass plus the workflow-specific
|
|
15804
|
+
// `FatalError` / `RetryableError` and `AggregateError`. Without
|
|
15805
|
+
// matching revivers here, `devalue.unflatten` throws "Unknown type X"
|
|
15806
|
+
// — which surfaces in the web o11y UI as "Failed to load resource
|
|
15807
|
+
// details: Unknown type FatalError".
|
|
15694
15808
|
Error: (value) => {
|
|
15809
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
15810
|
+
const error = new Error(value.message, opts);
|
|
15811
|
+
error.name = value.name;
|
|
15812
|
+
if (value.stack !== void 0)
|
|
15813
|
+
error.stack = value.stack;
|
|
15814
|
+
return error;
|
|
15815
|
+
},
|
|
15816
|
+
EvalError: makeWebErrorSubclassReviver("EvalError"),
|
|
15817
|
+
RangeError: makeWebErrorSubclassReviver("RangeError"),
|
|
15818
|
+
ReferenceError: makeWebErrorSubclassReviver("ReferenceError"),
|
|
15819
|
+
SyntaxError: makeWebErrorSubclassReviver("SyntaxError"),
|
|
15820
|
+
TypeError: makeWebErrorSubclassReviver("TypeError"),
|
|
15821
|
+
URIError: makeWebErrorSubclassReviver("URIError"),
|
|
15822
|
+
AggregateError: (value) => {
|
|
15823
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
15824
|
+
const Ctor = globalThis.AggregateError;
|
|
15825
|
+
const error = typeof Ctor === "function" ? new Ctor(value.errors, value.message, opts) : Object.assign(new Error(value.message, opts), {
|
|
15826
|
+
name: "AggregateError",
|
|
15827
|
+
errors: value.errors
|
|
15828
|
+
});
|
|
15829
|
+
if (value.stack !== void 0)
|
|
15830
|
+
error.stack = value.stack;
|
|
15831
|
+
return error;
|
|
15832
|
+
},
|
|
15833
|
+
// `FatalError` and `RetryableError` are not built-in browser globals,
|
|
15834
|
+
// so we can't resolve a constructor from globalThis. The web o11y UI
|
|
15835
|
+
// doesn't need `instanceof FatalError` to pass (no user code runs
|
|
15836
|
+
// here) — it just needs `name`, `message`, `stack`, and any extra
|
|
15837
|
+
// enumerable fields to render. Construct a plain `Error` with `name`
|
|
15838
|
+
// set; ObjectInspector reads `constructor.name` for the displayed
|
|
15839
|
+
// class label, but we don't have the real class, so we emit a tagged
|
|
15840
|
+
// Error whose `name` field carries the class identity. This matches
|
|
15841
|
+
// how the existing base `Error` reviver presents unknown subclasses.
|
|
15842
|
+
FatalError: (value) => {
|
|
15843
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
15844
|
+
const error = new Error(value.message, opts);
|
|
15845
|
+
error.name = "FatalError";
|
|
15846
|
+
if (value.stack !== void 0)
|
|
15847
|
+
error.stack = value.stack;
|
|
15848
|
+
return error;
|
|
15849
|
+
},
|
|
15850
|
+
RetryableError: (value) => {
|
|
15851
|
+
const opts = "cause" in value ? { cause: value.cause } : void 0;
|
|
15852
|
+
const error = new Error(value.message, opts);
|
|
15853
|
+
error.name = "RetryableError";
|
|
15854
|
+
if (value.stack !== void 0)
|
|
15855
|
+
error.stack = value.stack;
|
|
15856
|
+
if (value.retryAfter != null) {
|
|
15857
|
+
error.retryAfter = new Date(value.retryAfter);
|
|
15858
|
+
}
|
|
15859
|
+
return error;
|
|
15860
|
+
},
|
|
15861
|
+
DOMException: (value) => {
|
|
15862
|
+
const G2 = globalThis;
|
|
15863
|
+
if (typeof G2.DOMException === "function") {
|
|
15864
|
+
const e = new G2.DOMException(value.message, value.name);
|
|
15865
|
+
if (value.stack !== void 0)
|
|
15866
|
+
e.stack = value.stack;
|
|
15867
|
+
if ("cause" in value)
|
|
15868
|
+
e.cause = value.cause;
|
|
15869
|
+
return e;
|
|
15870
|
+
}
|
|
15695
15871
|
const error = new Error(value.message);
|
|
15696
15872
|
error.name = value.name;
|
|
15697
|
-
|
|
15873
|
+
if (value.stack !== void 0)
|
|
15874
|
+
error.stack = value.stack;
|
|
15875
|
+
if ("cause" in value) {
|
|
15876
|
+
error.cause = value.cause;
|
|
15877
|
+
}
|
|
15698
15878
|
return error;
|
|
15699
15879
|
},
|
|
15700
15880
|
Float32Array: (value) => new Float32Array(reviveArrayBuffer(value)),
|
|
@@ -15832,9 +16012,9 @@ async function hydrateResourceIOWithKey(resource, key) {
|
|
|
15832
16012
|
return { hydrateDataWithKey: hydrateDataWithKey3 };
|
|
15833
16013
|
}, true ? void 0 : void 0);
|
|
15834
16014
|
const { importKey } = await __vitePreload(async () => {
|
|
15835
|
-
const { importKey: importKey2 } = await import("./encryption-
|
|
16015
|
+
const { importKey: importKey2 } = await import("./encryption-CEh0YXii.js");
|
|
15836
16016
|
return { importKey: importKey2 };
|
|
15837
|
-
}, true ? [] : void 0);
|
|
16017
|
+
}, true ? __vite__mapDeps([0,1,2]) : void 0);
|
|
15838
16018
|
const cryptoKey = await importKey(key);
|
|
15839
16019
|
const revivers = getRevivers();
|
|
15840
16020
|
async function decryptField(value, rev, k2) {
|
|
@@ -42964,7 +43144,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
|
|
|
42964
43144
|
var et = ({ className: e, language: t, style: o, isIncomplete: n, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e), "data-incomplete": n || void 0, "data-language": t, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o }, ...s2 });
|
|
42965
43145
|
var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
|
|
42966
43146
|
var ot = ({ language: e }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e }) });
|
|
42967
|
-
var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-
|
|
43147
|
+
var cn$1 = /\n+$/, dn = reactExports.lazy(() => __vitePreload(() => import("./highlighted-body-B3W2YXNL-L1CrwoL_.js"), true ? __vite__mapDeps([3,2]) : void 0).then((e) => ({ default: e.HighlightedCodeBlockBody }))), rt = ({ code: e, language: t, className: o, children: n, isIncomplete: s2 = false, ...r2 }) => {
|
|
42968
43148
|
let i = reactExports.useMemo(() => e.replace(cn$1, ""), [e]), c = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i.split(`
|
|
42969
43149
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i]);
|
|
42970
43150
|
return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e }, children: jsxRuntimeExports.jsxs(et, { isIncomplete: s2, language: t, children: [jsxRuntimeExports.jsx(ot, { language: t }), n ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe, { className: o, language: t, result: c, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o, code: i, language: t, raw: c, ...r2 }) })] }) });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as reactExports, j as jsxRuntimeExports, w as withComponentProps,
|
|
2
|
-
import { c as createLucideIcon, u as useServerConfig, T as Tooltip, a as TooltipTrigger, b as TooltipContent, r as runHealthCheck, t as toast, B as Button, L as LoaderCircle, d as cn, e as Toaster$1, S as ServerConfigProvider, f as TooltipProvider } from "./mermaid-3ZIDBTTL-
|
|
1
|
+
import { r as reactExports, j as jsxRuntimeExports, w as withComponentProps, x as withErrorBoundaryProps, M as Meta, L as Links, S as ScrollRestoration, y as Scripts, O as Outlet, z as useRouteError, i as isRouteErrorResponse, A as Link, B as useNavigate, C as useSearchParams } from "./index-BsV8i_Jn.js";
|
|
2
|
+
import { c as createLucideIcon, u as useServerConfig, T as Tooltip, a as TooltipTrigger, b as TooltipContent, r as runHealthCheck, t as toast, B as Button, L as LoaderCircle, d as cn, e as Toaster$1, S as ServerConfigProvider, f as TooltipProvider } from "./mermaid-3ZIDBTTL-BQLU7GUr.js";
|
|
3
3
|
var M = (e, i, s, u, m, a, l, h) => {
|
|
4
4
|
let d = document.documentElement, w = ["light", "dark"];
|
|
5
5
|
function p(n) {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { j as jsxRuntimeExports, r as reactExports, f as reactDomExports,
|
|
2
|
-
import { N as Copy, C as CircleAlert, O as parseStepName, z as parseWorkflowName, j as ChevronRight, p as Check, Q as ErrorCard, Z as Zap, S as Send, R as ResolveHookModal, U as Circle, X, M as ErrorBoundary, H as unwrapServerActionResult, u as unwrapOrThrow, W as WorkflowWebAPIError, V as useEscapeKeydown, s as composeEventHandlers, Y as useCallbackRef, _ as useLayoutEffect2, q as useControllableState, $ as useId, a0 as createContext2, t as Presence, w as createContextScope, l as hideOthers, m as ReactRemoveScroll, a1 as useFocusGuards, a2 as LAYOUT, a3 as wakeUpRun, r as resumeHook, A as Alert, c as AlertTitle, d as AlertDescription, a as Skeleton$1, a4 as RunActionsButtons, B as StatusBadge, e as CopyableText, b as RelativeTime, T as Tabs, J as TabsList, K as TabsTrigger, L as TabsContent, x as cancelRun, a5 as recreateRun } from "./workflow-graph-viewer-
|
|
3
|
-
import { c as createLucideIcon, M as Spinner, h as useToast, N as Skeleton, O as DecryptClickContext, Y as Yr, U as isEncryptedMarker, W as formatDuration, X as DataInspector, _ as _r, Z as RunClickContext, $ as StreamClickContext, a0 as isExpiredMarker, a1 as isDoStreamStep, a2 as extractConversation, a3 as Lock, a4 as EVENT_DATA_REF_FIELDS, a5 as clsx, a6 as cn, a7 as getSpanDurationMs, a8 as getHighResInMs, a9 as ActiveSpanProvider, aa as useActiveSpan, ab as useSidebarDataOptional, ac as computeRootBounds, ad as computeTimeMarkers, ae as TIMELINE_PADDING_PX, af as Timeline, ag as TimelineHeader, ah as SidebarDataProvider, ai as hydrateResourceIOWithKey, aj as hydrateResourceIO, ak as fetchHook, l as fetchEvents, F as fetchRun, al as fetchStep, am as hasEncryptedFields, an as fetchStreams, ao as Slot, E as useComposedRefs, ap as Slottable, d as cn$1, aq as buttonVariants, ar as isEncryptedData, as as hydrateData, at as getWebRevivers, T as Tooltip, a as TooltipTrigger, b as TooltipContent, au as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, av as fetchEvent, aw as getEncryptionKeyForRun, t as toast, L as LoaderCircle, ax as StreamViewer } from "./mermaid-3ZIDBTTL-
|
|
4
|
-
import { decrypt, importKey } from "./encryption-
|
|
1
|
+
import { j as jsxRuntimeExports, r as reactExports, f as reactDomExports, D as ReactDOM, B as useNavigate, C as useSearchParams, A as Link, w as withComponentProps, H as useParams } from "./index-BsV8i_Jn.js";
|
|
2
|
+
import { N as Copy, C as CircleAlert, O as parseStepName, z as parseWorkflowName, j as ChevronRight, p as Check, Q as ErrorCard, Z as Zap, S as Send, R as ResolveHookModal, U as Circle, X, M as ErrorBoundary, H as unwrapServerActionResult, u as unwrapOrThrow, W as WorkflowWebAPIError, V as useEscapeKeydown, s as composeEventHandlers, Y as useCallbackRef, _ as useLayoutEffect2, q as useControllableState, $ as useId, a0 as createContext2, t as Presence, w as createContextScope, l as hideOthers, m as ReactRemoveScroll, a1 as useFocusGuards, a2 as LAYOUT, a3 as wakeUpRun, r as resumeHook, A as Alert, c as AlertTitle, d as AlertDescription, a as Skeleton$1, a4 as RunActionsButtons, B as StatusBadge, e as CopyableText, b as RelativeTime, T as Tabs, J as TabsList, K as TabsTrigger, L as TabsContent, x as cancelRun, a5 as recreateRun } from "./workflow-graph-viewer-yqeN-U_2.js";
|
|
3
|
+
import { c as createLucideIcon, M as Spinner, h as useToast, N as Skeleton, O as DecryptClickContext, Y as Yr, U as isEncryptedMarker, W as formatDuration, X as DataInspector, _ as _r, Z as RunClickContext, $ as StreamClickContext, a0 as isExpiredMarker, a1 as isDoStreamStep, a2 as extractConversation, a3 as Lock, a4 as EVENT_DATA_REF_FIELDS, a5 as clsx, a6 as cn, a7 as getSpanDurationMs, a8 as getHighResInMs, a9 as ActiveSpanProvider, aa as useActiveSpan, ab as useSidebarDataOptional, ac as computeRootBounds, ad as computeTimeMarkers, ae as TIMELINE_PADDING_PX, af as Timeline, ag as TimelineHeader, ah as SidebarDataProvider, ai as hydrateResourceIOWithKey, aj as hydrateResourceIO, ak as fetchHook, l as fetchEvents, F as fetchRun, al as fetchStep, am as hasEncryptedFields, an as fetchStreams, ao as Slot, E as useComposedRefs, ap as Slottable, d as cn$1, aq as buttonVariants, ar as isEncryptedData, as as hydrateData, at as getWebRevivers, T as Tooltip, a as TooltipTrigger, b as TooltipContent, au as LIVE_UPDATE_INTERVAL_MS$1, u as useServerConfig, av as fetchEvent, aw as getEncryptionKeyForRun, t as toast, L as LoaderCircle, ax as StreamViewer } from "./mermaid-3ZIDBTTL-BQLU7GUr.js";
|
|
4
|
+
import { decrypt, importKey } from "./encryption-CEh0YXii.js";
|
|
5
|
+
import "./index-B4xuge0I.js";
|
|
5
6
|
/**
|
|
6
7
|
* @license lucide-react v0.575.0 - ISC
|
|
7
8
|
*
|
|
@@ -83,10 +84,15 @@ function DecryptButton({ decrypted = false, loading = false, onClick }) {
|
|
|
83
84
|
function isStructuredErrorWithStack(value) {
|
|
84
85
|
return value != null && typeof value === "object" && "stack" in value && typeof value.stack === "string";
|
|
85
86
|
}
|
|
87
|
+
function deriveTitle(message) {
|
|
88
|
+
const firstLine = message.split("\n").find((line) => line.trim().length > 0) ?? message;
|
|
89
|
+
return firstLine.trim();
|
|
90
|
+
}
|
|
86
91
|
function ErrorStackBlock({ value }) {
|
|
87
92
|
const toast2 = useToast();
|
|
88
93
|
const stack = value.stack;
|
|
89
94
|
const message = typeof value.message === "string" ? value.message : void 0;
|
|
95
|
+
const title = message ? deriveTitle(message) : void 0;
|
|
90
96
|
const copyText = message ? `${message}
|
|
91
97
|
|
|
92
98
|
${stack}` : stack;
|
|
@@ -103,10 +109,18 @@ ${stack}` : stack;
|
|
|
103
109
|
}).catch(() => {
|
|
104
110
|
toast2.error("Failed to copy");
|
|
105
111
|
});
|
|
106
|
-
}, children: jsxRuntimeExports.jsx(Copy, { size: 12 }) }),
|
|
112
|
+
}, children: jsxRuntimeExports.jsx(Copy, { size: 12 }) }), title && jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 px-3 py-2.5 pr-10", style: {
|
|
107
113
|
color: "var(--ds-red-900)",
|
|
108
114
|
borderBottom: "1px solid var(--ds-red-400)"
|
|
109
|
-
}, children: [jsxRuntimeExports.jsx(CircleAlert, { className: "h-4 w-4 shrink-0"
|
|
115
|
+
}, children: [jsxRuntimeExports.jsx(CircleAlert, { className: "h-4 w-4 shrink-0" }), jsxRuntimeExports.jsx("p", {
|
|
116
|
+
className: "text-xs font-semibold m-0 truncate",
|
|
117
|
+
// The full multi-line message is in the stack body below; the
|
|
118
|
+
// header just shows the first line, single-line, with overflow
|
|
119
|
+
// ellipsised so a long title doesn't push the copy button or
|
|
120
|
+
// wrap into the framed hint/docs lines.
|
|
121
|
+
title: message,
|
|
122
|
+
children: title
|
|
123
|
+
})] }), jsxRuntimeExports.jsx("pre", { className: "px-3 py-2.5 text-xs font-mono whitespace-pre-wrap break-words overflow-auto m-0", style: {
|
|
110
124
|
color: "var(--ds-red-900)",
|
|
111
125
|
background: "var(--ds-red-200)"
|
|
112
126
|
}, children: stack })] });
|
|
@@ -1220,7 +1234,7 @@ function hookToSpan(hookEvents, maxEndTime) {
|
|
|
1220
1234
|
const endTime = hook.disposedAt || maxEndTime;
|
|
1221
1235
|
return {
|
|
1222
1236
|
spanId: String(hook.hookId),
|
|
1223
|
-
name: String(hook.hookId),
|
|
1237
|
+
name: hook.token ?? String(hook.hookId),
|
|
1224
1238
|
kind: 1,
|
|
1225
1239
|
// INTERNAL span kind
|
|
1226
1240
|
resource: "hook",
|
|
@@ -1728,6 +1742,7 @@ const attributeToDisplayFn = {
|
|
|
1728
1742
|
// Hook details
|
|
1729
1743
|
token: (value) => String(value),
|
|
1730
1744
|
isWebhook: (value) => String(value),
|
|
1745
|
+
isSystem: (value) => String(value),
|
|
1731
1746
|
receivedCount: (value) => String(value),
|
|
1732
1747
|
lastReceivedAt: localMillisecondTimeOrNull,
|
|
1733
1748
|
disposedAt: localMillisecondTimeOrNull,
|
|
@@ -1820,6 +1835,11 @@ const attributeToDisplayFn = {
|
|
|
1820
1835
|
if (!hasDisplayContent(value))
|
|
1821
1836
|
return null;
|
|
1822
1837
|
return jsxRuntimeExports.jsx(DetailCard, { summary: "Event Data", children: JsonBlock(value) });
|
|
1838
|
+
},
|
|
1839
|
+
errorCode: (value) => {
|
|
1840
|
+
if (typeof value !== "string" || value.length === 0)
|
|
1841
|
+
return null;
|
|
1842
|
+
return String(value);
|
|
1823
1843
|
}
|
|
1824
1844
|
};
|
|
1825
1845
|
const resolvableAttributes = [
|
|
@@ -2971,17 +2991,23 @@ function NewTraceViewerContent({ trace }) {
|
|
|
2971
2991
|
if (!(selectedSpan == null ? void 0 : selectedSpan.data))
|
|
2972
2992
|
return "Details";
|
|
2973
2993
|
const data = selectedSpan.data;
|
|
2994
|
+
if (selectedSpan.resource === "hook") {
|
|
2995
|
+
return data.token ?? data.hookId;
|
|
2996
|
+
}
|
|
2974
2997
|
const stepName = data.stepName;
|
|
2975
2998
|
const workflowName = data.workflowName;
|
|
2976
2999
|
return (stepName ? (_a = parseStepName(stepName)) == null ? void 0 : _a.shortName : void 0) ?? (workflowName ? (_b = parseWorkflowName(workflowName)) == null ? void 0 : _b.shortName : void 0) ?? stepName ?? workflowName ?? data.hookId ?? "Details";
|
|
2977
|
-
}, [selectedSpan == null ? void 0 : selectedSpan.data]);
|
|
3000
|
+
}, [selectedSpan == null ? void 0 : selectedSpan.data, selectedSpan == null ? void 0 : selectedSpan.resource]);
|
|
2978
3001
|
const selectedResource = selectedSpan == null ? void 0 : selectedSpan.resource;
|
|
2979
3002
|
const selectedResourceId = reactExports.useMemo(() => {
|
|
2980
3003
|
if (!(selectedSpan == null ? void 0 : selectedSpan.data))
|
|
2981
3004
|
return void 0;
|
|
2982
3005
|
const data = selectedSpan.data;
|
|
3006
|
+
if (selectedSpan.resource === "hook") {
|
|
3007
|
+
return data.hookId ?? selectedSpan.spanId;
|
|
3008
|
+
}
|
|
2983
3009
|
return data.stepId ?? data.runId ?? data.hookId ?? selectedSpan.spanId;
|
|
2984
|
-
}, [selectedSpan == null ? void 0 : selectedSpan.data, selectedSpan == null ? void 0 : selectedSpan.spanId]);
|
|
3010
|
+
}, [selectedSpan == null ? void 0 : selectedSpan.data, selectedSpan == null ? void 0 : selectedSpan.resource, selectedSpan == null ? void 0 : selectedSpan.spanId]);
|
|
2985
3011
|
return jsxRuntimeExports.jsxs("div", { "data-pane": "pane-root", "data-has-detail": activeSpan ? "" : void 0, className: "grid w-full h-full max-h-full grid-cols-[minmax(100px,1fr)] data-[has-detail]:grid-cols-[minmax(100px,1fr)_clamp(280px,420px,100%)]", children: [jsxRuntimeExports.jsxs("div", { id: "trace-parent", className: "grid grid-rows-[1fr] h-full min-h-0 overflow-hidden relative bg-background-100", children: [jsxRuntimeExports.jsxs(SplitPane, { startHeader: jsxRuntimeExports.jsxs("div", { className: "bg-background-100 border-b border-gray-alpha-400 h-10 min-h-10 flex items-center px-2 gap-1.5", children: [jsxRuntimeExports.jsx(Search, { className: "w-3.5 h-3.5 shrink-0 text-gray-800" }), jsxRuntimeExports.jsx("input", { id: "trace-viewer-search", name: "trace-viewer-search", type: "text", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), placeholder: "Search spans...", "aria-label": "Search spans", className: "flex-1 min-w-0 bg-transparent text-sm text-gray-1000 placeholder:text-gray-800 outline-none" }), searchQuery && jsxRuntimeExports.jsx("button", { type: "button", onClick: () => setSearchQuery(""), className: "shrink-0 p-0.5 rounded-sm text-gray-800 hover:text-gray-1000 hover:bg-gray-200 transition-colors", children: jsxRuntimeExports.jsx(X, { className: "w-3 h-3" }) })] }), endHeader: jsxRuntimeExports.jsx(TimelineHeader, { markers: timeMarkers, hoverInfo }), children: [jsxRuntimeExports.jsx("div", { className: "block overflow-visible", children: jsxRuntimeExports.jsx(EventList, { spans: filteredSpans, activeSpanId, onSelectSpan: handleSelectSpan }) }), jsxRuntimeExports.jsx("div", { ref: timelineRef, className: "block min-h-0 overflow-visible relative", onDoubleClick: resetZoom, onMouseMove: handleTimelineMouseMove, onMouseLeave: handleTimelineMouseLeave, children: jsxRuntimeExports.jsx(Timeline, { spans: filteredSpans, viewStart: viewport.start, viewEnd: viewport.end, markers: timeMarkers, selectedId: activeSpanId, onSelect: handleSelectSpan, hoverFraction, altHeld }) })] }), jsxRuntimeExports.jsxs("div", { className: "absolute right-3 bottom-3 z-[5] flex items-center border border-gray-alpha-400 rounded-lg bg-background-100 shadow-sm overflow-hidden divide-x divide-gray-alpha-400", children: [jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", onClick: zoomOut, "aria-label": "Zoom out", children: jsxRuntimeExports.jsx(ZoomOut, { className: "w-4 h-4" }) }), jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", onClick: resetZoom, "aria-label": "Reset zoom", children: jsxRuntimeExports.jsx(RotateCcw, { className: "w-3.5 h-3.5" }) }), jsxRuntimeExports.jsx("button", { type: "button", className: "flex items-center justify-center w-8 h-8 text-gray-900 cursor-pointer transition-colors duration-[120ms] ease-in-out hover:text-gray-1000 hover:bg-gray-alpha-100", onClick: zoomIn, "aria-label": "Zoom in", children: jsxRuntimeExports.jsx(ZoomIn, { className: "w-4 h-4" }) })] })] }), activeSpan && sidebar ? jsxRuntimeExports.jsxs("aside", { className: "flex flex-col h-full max-h-full bg-background-100 border-l border-gray-alpha-400 overflow-auto", children: [jsxRuntimeExports.jsx("div", { className: "flex-shrink-0 px-4 pt-4 pb-3", children: jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-2", children: [jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [jsxRuntimeExports.jsx("span", { className: "text-[15px] font-semibold text-gray-1000 truncate block", children: selectedSpanName }), selectedResourceId && jsxRuntimeExports.jsxs("div", { className: "mt-1 flex items-center gap-2", children: [selectedResource && jsxRuntimeExports.jsx("span", { className: `inline-flex items-center rounded-md px-1.5 py-0.5 text-[11px] font-medium leading-none shrink-0 ${selectedResource === "step" ? "bg-green-200 text-green-900" : selectedResource === "run" ? "bg-blue-200 text-blue-900" : selectedResource === "hook" ? "bg-yellow-200 text-yellow-900" : "bg-gray-200 text-gray-900"}`, children: selectedResource.charAt(0).toUpperCase() + selectedResource.slice(1) }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1 text-[13px] font-mono text-gray-700 min-w-0", title: selectedResourceId, children: [jsxRuntimeExports.jsx("span", { className: "truncate", children: selectedResourceId }), jsxRuntimeExports.jsx(CopyButton, { copyText: selectedResourceId, ariaLabel: "Copy ID", className: "shrink-0" })] })] })] }), jsxRuntimeExports.jsx("button", { type: "button", className: "p-1 rounded-md text-gray-900 hover:text-gray-1000 hover:bg-gray-alpha-200 transition-colors shrink-0", onClick: clearActiveSpan, children: jsxRuntimeExports.jsx(X, { className: "w-4 h-4" }) })] }) }), jsxRuntimeExports.jsx("div", { className: "flex-1 overflow-y-auto", children: jsxRuntimeExports.jsx(ErrorBoundary, { children: jsxRuntimeExports.jsx(EntityDetailPanel, { run: sidebar.run, onStreamClick: sidebar.onStreamClick, onRunClick: sidebar.onRunClick, spanDetailData: sidebar.spanDetailData, spanDetailError: sidebar.spanDetailError, spanDetailLoading: sidebar.spanDetailLoading, onSpanSelect: sidebar.onSpanSelect, onWakeUpSleep: sidebar.onWakeUpSleep, onLoadEventData: sidebar.onLoadEventData, onResolveHook: sidebar.onResolveHook, encryptionKey: sidebar.encryptionKey, onDecrypt: sidebar.onDecrypt, isDecrypting: sidebar.isDecrypting, selectedSpan }) }) })] }) : activeSpan ? jsxRuntimeExports.jsx(DetailPanel, { span: activeSpan, rootStart: root.startTime, onClose: clearActiveSpan }) : null] });
|
|
2986
3012
|
}
|
|
2987
3013
|
const NewTraceViewer = ({ run, events, sidebarData }) => {
|
|
@@ -5135,7 +5161,6 @@ function RunDetailView({
|
|
|
5135
5161
|
return;
|
|
5136
5162
|
}
|
|
5137
5163
|
setEncryptionKey(keyResult);
|
|
5138
|
-
toast.success("Run data decrypted successfully");
|
|
5139
5164
|
} finally {
|
|
5140
5165
|
setIsDecrypting(false);
|
|
5141
5166
|
}
|
package/build/client/assets/{workflow-graph-viewer-De9JQkZc.js → workflow-graph-viewer-yqeN-U_2.js}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { r as reactExports, j as jsxRuntimeExports, f as reactDomExports, R as ReactExports,
|
|
5
|
-
import { c as createLucideIcon, a6 as cn, d as cn$1, G as cva, ay as composeRefs, E as useComposedRefs, az as useFloating, aA as offset, aB as shift, aC as limitShift, aD as flip, aE as size, aF as arrow, aG as hide, aH as autoUpdate, T as Tooltip, a as TooltipTrigger, b as TooltipContent, aI as cancelRun$1, aJ as reenqueueRun$1, aK as wakeUpRun$1, aL as resumeHook$1, aM as recreateRun$1, v as createContextScope$1, n as useComposedRefs$1, w as createSlot, W as formatDuration, B as Button, t as toast, p as useId$1, P as Primitive$1, o as composeEventHandlers$1, x as useControllableState$1, m as useCallbackRef$2, H as Presence$1 } from "./mermaid-3ZIDBTTL-
|
|
4
|
+
import { r as reactExports, j as jsxRuntimeExports, f as reactDomExports, R as ReactExports, I as React, D as ReactDOM, a as requireReact, g as getDefaultExportFromCjs } from "./index-BsV8i_Jn.js";
|
|
5
|
+
import { c as createLucideIcon, a6 as cn, d as cn$1, G as cva, ay as composeRefs, E as useComposedRefs, az as useFloating, aA as offset, aB as shift, aC as limitShift, aD as flip, aE as size, aF as arrow, aG as hide, aH as autoUpdate, T as Tooltip, a as TooltipTrigger, b as TooltipContent, aI as cancelRun$1, aJ as reenqueueRun$1, aK as wakeUpRun$1, aL as resumeHook$1, aM as recreateRun$1, v as createContextScope$1, n as useComposedRefs$1, w as createSlot, W as formatDuration, B as Button, t as toast, p as useId$1, P as Primitive$1, o as composeEventHandlers$1, x as useControllableState$1, m as useCallbackRef$2, H as Presence$1 } from "./mermaid-3ZIDBTTL-BQLU7GUr.js";
|
|
6
|
+
import { V as VERCEL_403_ERROR_MESSAGE } from "./index-B4xuge0I.js";
|
|
6
7
|
function parseName(tag, name) {
|
|
7
8
|
if (typeof name !== "string") {
|
|
8
9
|
return null;
|
|
@@ -5612,7 +5613,6 @@ function Skeleton({
|
|
|
5612
5613
|
}
|
|
5613
5614
|
);
|
|
5614
5615
|
}
|
|
5615
|
-
const VERCEL_403_ERROR_MESSAGE = "Your current vercel account does not have access to this resource. Use `vercel login` or `vercel switch` to ensure you are linked to the right account.";
|
|
5616
5616
|
class WorkflowWebAPIError extends Error {
|
|
5617
5617
|
constructor(message2, options) {
|
|
5618
5618
|
super(message2, { cause: options == null ? void 0 : options.cause });
|
|
@@ -9176,7 +9176,7 @@ const app = express();
|
|
|
9176
9176
|
app.all(
|
|
9177
9177
|
"*",
|
|
9178
9178
|
createRequestHandler({
|
|
9179
|
-
build: () => import("./server-build-
|
|
9179
|
+
build: () => import("./server-build-DtcOUEHS.js").then((n) => n.F)
|
|
9180
9180
|
})
|
|
9181
9181
|
);
|
|
9182
9182
|
app.use(
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { r as reactExports } from "./app-
|
|
1
|
+
import { x as R, K as Ks, y as jsxRuntimeExports, z as Qe } from "./server-build-DtcOUEHS.js";
|
|
2
|
+
import { r as reactExports } from "./app-L1V62FgT.js";
|
|
3
3
|
import "node:stream";
|
|
4
4
|
import "util";
|
|
5
5
|
import "crypto";
|
|
@@ -11,12 +11,11 @@ import "node:path";
|
|
|
11
11
|
import "node:url";
|
|
12
12
|
import "module";
|
|
13
13
|
import "node:fs/promises";
|
|
14
|
-
import "
|
|
15
|
-
import "
|
|
14
|
+
import "node:util";
|
|
15
|
+
import "node:async_hooks";
|
|
16
16
|
import "node:module";
|
|
17
17
|
import "node:fs";
|
|
18
18
|
import "node:child_process";
|
|
19
|
-
import "node:util";
|
|
20
19
|
import "node:timers/promises";
|
|
21
20
|
import "events";
|
|
22
21
|
import "node:assert";
|
|
@@ -32,14 +31,14 @@ import "node:perf_hooks";
|
|
|
32
31
|
import "node:util/types";
|
|
33
32
|
import "node:sqlite";
|
|
34
33
|
import "node:worker_threads";
|
|
35
|
-
import "node:async_hooks";
|
|
36
34
|
import "node:console";
|
|
37
35
|
import "node:timers";
|
|
38
36
|
import "node:dns";
|
|
39
37
|
import "path";
|
|
40
38
|
import "fs";
|
|
41
|
-
import "
|
|
39
|
+
import "os";
|
|
42
40
|
import "net";
|
|
41
|
+
import "node:os";
|
|
43
42
|
import "express";
|
|
44
43
|
var L = ({ code: s, language: t, raw: e, className: n, ...d$1 }) => {
|
|
45
44
|
let { shikiTheme: l } = reactExports.useContext(R), o = Ks(), [m, i] = reactExports.useState(e);
|