@workflow/web-shared 5.0.0-beta.1 → 5.0.0-beta.2
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/README.md +1 -1
- package/dist/components/error-boundary.js.map +1 -1
- package/dist/components/event-list-view.d.ts +3 -1
- package/dist/components/event-list-view.d.ts.map +1 -1
- package/dist/components/event-list-view.js +53 -53
- package/dist/components/event-list-view.js.map +1 -1
- package/dist/components/hook-actions.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/run-trace-view.d.ts +2 -1
- package/dist/components/run-trace-view.d.ts.map +1 -1
- package/dist/components/run-trace-view.js +2 -2
- package/dist/components/run-trace-view.js.map +1 -1
- package/dist/components/sidebar/attribute-panel.d.ts +7 -1
- package/dist/components/sidebar/attribute-panel.d.ts.map +1 -1
- package/dist/components/sidebar/attribute-panel.js +36 -26
- package/dist/components/sidebar/attribute-panel.js.map +1 -1
- package/dist/components/sidebar/conversation-view.js.map +1 -1
- package/dist/components/sidebar/copyable-data-block.js.map +1 -1
- package/dist/components/sidebar/detail-card.js.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.d.ts +5 -1
- package/dist/components/sidebar/entity-detail-panel.d.ts.map +1 -1
- package/dist/components/sidebar/entity-detail-panel.js +18 -16
- package/dist/components/sidebar/entity-detail-panel.js.map +1 -1
- package/dist/components/sidebar/events-list.js.map +1 -1
- package/dist/components/sidebar/resolve-hook-modal.js.map +1 -1
- package/dist/components/stream-viewer.js.map +1 -1
- package/dist/components/trace-viewer/components/map.js.map +1 -1
- package/dist/components/trace-viewer/components/markers.js.map +1 -1
- package/dist/components/trace-viewer/components/node.js.map +1 -1
- package/dist/components/trace-viewer/components/search-input.js.map +1 -1
- package/dist/components/trace-viewer/components/search.js.map +1 -1
- package/dist/components/trace-viewer/components/span-content.js.map +1 -1
- package/dist/components/trace-viewer/components/span-detail-panel.js.map +1 -1
- package/dist/components/trace-viewer/components/span-segments.js.map +1 -1
- package/dist/components/trace-viewer/components/span-strategies.js.map +1 -1
- package/dist/components/trace-viewer/components/ui.js.map +1 -1
- package/dist/components/trace-viewer/components/zoom-button.js.map +1 -1
- package/dist/components/trace-viewer/components/zoom-icons.js.map +1 -1
- package/dist/components/trace-viewer/context.js.map +1 -1
- package/dist/components/trace-viewer/index.js.map +1 -1
- package/dist/components/trace-viewer/trace-viewer.js.map +1 -1
- package/dist/components/trace-viewer/types.js.map +1 -1
- package/dist/components/trace-viewer/util/constants.js.map +1 -1
- package/dist/components/trace-viewer/util/scrollbar-width.js.map +1 -1
- package/dist/components/trace-viewer/util/timing.js.map +1 -1
- package/dist/components/trace-viewer/util/tree.js.map +1 -1
- package/dist/components/trace-viewer/util/use-immediate-style.js.map +1 -1
- package/dist/components/trace-viewer/util/use-streaming-spans.js.map +1 -1
- package/dist/components/trace-viewer/util/use-trackpad-zoom.js.map +1 -1
- package/dist/components/trace-viewer/worker.js.map +1 -1
- package/dist/components/ui/alert.js.map +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/data-inspector.d.ts +17 -1
- package/dist/components/ui/data-inspector.d.ts.map +1 -1
- package/dist/components/ui/data-inspector.js +116 -21
- package/dist/components/ui/data-inspector.js.map +1 -1
- package/dist/components/ui/decrypt-button.js.map +1 -1
- package/dist/components/ui/error-card.js.map +1 -1
- package/dist/components/ui/error-stack-block.js.map +1 -1
- package/dist/components/ui/inspector-theme.js.map +1 -1
- package/dist/components/ui/load-more-button.js.map +1 -1
- package/dist/components/ui/menu-dropdown.js.map +1 -1
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/spinner.js.map +1 -1
- package/dist/components/ui/timestamp-tooltip.js.map +1 -1
- package/dist/components/workflow-trace-view.d.ts +5 -1
- package/dist/components/workflow-trace-view.d.ts.map +1 -1
- package/dist/components/workflow-trace-view.js +7 -2
- package/dist/components/workflow-trace-view.js.map +1 -1
- package/dist/components/workflow-traces/event-colors.js.map +1 -1
- package/dist/components/workflow-traces/trace-colors.js.map +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js +1 -1
- package/dist/components/workflow-traces/trace-span-construction.js.map +1 -1
- package/dist/components/workflow-traces/trace-time-utils.js.map +1 -1
- package/dist/hooks/use-dark-mode.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/event-analysis.js.map +1 -1
- package/dist/lib/event-materialization.js.map +1 -1
- package/dist/lib/hydration.d.ts +8 -1
- package/dist/lib/hydration.d.ts.map +1 -1
- package/dist/lib/hydration.js +32 -2
- package/dist/lib/hydration.js.map +1 -1
- package/dist/lib/toast.js.map +1 -1
- package/dist/lib/trace-builder.js.map +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/package.json +3 -3
- package/src/components/event-list-view.tsx +181 -173
- package/src/components/index.ts +6 -1
- package/src/components/run-trace-view.tsx +3 -0
- package/src/components/sidebar/attribute-panel.tsx +160 -109
- package/src/components/sidebar/entity-detail-panel.tsx +111 -96
- package/src/components/ui/data-inspector.tsx +205 -31
- package/src/components/workflow-trace-view.tsx +14 -0
- package/src/components/workflow-traces/trace-span-construction.ts +1 -1
- package/src/index.ts +1 -0
- package/src/lib/hydration.ts +37 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydration.js","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hydration.js","sourceRoot":"","sources":["../../src/lib/hydration.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Web-specific hydration for o11y display.\n *\n * Browser-safe revivers that use `atob()` for base64 decoding (no Node.js\n * `Buffer` dependency). Produces `ClassInstanceRef` objects and `StreamRef`\n * objects for UI rendering.\n */\n\nimport {\n extractClassName,\n hydrateResourceIO as hydrateResourceIOGeneric,\n isEncryptedData,\n isExpiredStub,\n isRunRef,\n observabilityRevivers,\n type Revivers,\n serializedInstanceToRef,\n} from '@workflow/core/serialization-format';\nimport { EVENT_DATA_REF_FIELDS } from '@workflow/world';\n\n// Re-export types and utilities that consumers need\nexport {\n CLASS_INSTANCE_REF_TYPE,\n ClassInstanceRef,\n ENCRYPTED_PLACEHOLDER,\n extractStreamIds,\n isClassInstanceRef,\n isEncryptedData,\n isRunRef,\n isStreamId,\n isStreamRef,\n type Revivers,\n RUN_REF_TYPE,\n type RunRef,\n STREAM_REF_TYPE,\n type StreamRef,\n serializedInstanceToRef,\n truncateId,\n} from '@workflow/core/serialization-format';\n\n// ---------------------------------------------------------------------------\n// Browser-safe base64 decode\n// ---------------------------------------------------------------------------\n\nfunction base64ToArrayBuffer(base64: string): ArrayBuffer {\n if (base64 === '' || base64 === '.') {\n return new ArrayBuffer(0);\n }\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes.buffer;\n}\n\n// ---------------------------------------------------------------------------\n// Web revivers (browser-safe, no Buffer dependency)\n// ---------------------------------------------------------------------------\n\n/**\n * Get the web-specific revivers for hydrating serialized data.\n *\n * Uses `atob()` for base64 decoding (no Node.js Buffer dependency).\n * All types are revived as real instances (Date, Map, Set, URL,\n * URLSearchParams, Headers, Error, etc.).\n */\nexport function getWebRevivers(): Revivers {\n function reviveArrayBuffer(value: string): ArrayBuffer {\n return base64ToArrayBuffer(value);\n }\n\n return {\n // O11y-specific revivers (streams, step functions → display objects).\n // Spread FIRST so web-specific overrides below take precedence.\n ...observabilityRevivers,\n\n // Binary types\n ArrayBuffer: reviveArrayBuffer,\n BigInt: (value: string) => BigInt(value),\n BigInt64Array: (value: string) =>\n new BigInt64Array(reviveArrayBuffer(value)),\n BigUint64Array: (value: string) =>\n new BigUint64Array(reviveArrayBuffer(value)),\n Date: (value) => new Date(value),\n Error: (value) => {\n const error = new Error(value.message);\n error.name = value.name;\n error.stack = value.stack;\n return error;\n },\n Float32Array: (value: string) => new Float32Array(reviveArrayBuffer(value)),\n Float64Array: (value: string) => new Float64Array(reviveArrayBuffer(value)),\n Int8Array: (value: string) => new Int8Array(reviveArrayBuffer(value)),\n Int16Array: (value: string) => new Int16Array(reviveArrayBuffer(value)),\n Int32Array: (value: string) => new Int32Array(reviveArrayBuffer(value)),\n Map: (value) => new Map(value),\n RegExp: (value) => new RegExp(value.source, value.flags),\n Set: (value) => new Set(value),\n Uint8Array: (value: string) => new Uint8Array(reviveArrayBuffer(value)),\n Uint8ClampedArray: (value: string) =>\n new Uint8ClampedArray(reviveArrayBuffer(value)),\n Uint16Array: (value: string) => new Uint16Array(reviveArrayBuffer(value)),\n Uint32Array: (value: string) => new Uint32Array(reviveArrayBuffer(value)),\n\n Headers: (value) => new Headers(value),\n Request: (value) => {\n // biome-ignore lint/complexity/useArrowFunction: arrow functions have no .prototype\n const ctor = { Request: function () {} }.Request!;\n const obj = Object.create(ctor.prototype);\n Object.assign(obj, {\n method: value.method,\n url: value.url,\n headers: new Headers(value.headers),\n body: value.body,\n duplex: value.duplex,\n ...(value.responseWritable\n ? { responseWritable: value.responseWritable }\n : {}),\n });\n return obj;\n },\n Response: (value) => {\n // biome-ignore lint/complexity/useArrowFunction: arrow functions have no .prototype\n const ctor = { Response: function () {} }.Response!;\n const obj = Object.create(ctor.prototype);\n Object.assign(obj, {\n status: value.status,\n statusText: value.statusText,\n url: value.url,\n headers: new Headers(value.headers),\n body: value.body,\n redirected: value.redirected,\n type: value.type,\n });\n return obj;\n },\n URL: (value) => new URL(value),\n URLSearchParams: (value) => new URLSearchParams(value === '.' ? '' : value),\n\n // Web-specific overrides for class instances.\n // Create objects with a dynamically-named constructor so that\n // react-inspector shows the class name (it reads constructor.name).\n Class: (value) => `<class:${extractClassName(value.classId)}>`,\n Instance: (value) => {\n // Run instances are rendered as clickable RunRef badges\n const runRef = serializedInstanceToRef(value);\n if (isRunRef(runRef)) {\n return runRef;\n }\n const className = extractClassName(value.classId);\n const data = value.data;\n const props =\n data && typeof data === 'object' ? { ...data } : { value: data };\n // Create a constructor with the right name using computed property\n // so react-inspector's `object.constructor.name` shows the class name.\n // Must use `function` (not arrow) because arrow functions have no .prototype.\n // biome-ignore lint/complexity/useArrowFunction: arrow functions have no .prototype\n const ctor = { [className]: function () {} }[className]!;\n const obj = Object.create(ctor.prototype);\n Object.assign(obj, props);\n return obj;\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Pre-built web revivers (cached for performance)\n// ---------------------------------------------------------------------------\n\nlet cachedRevivers: Revivers | null = null;\n\nfunction getRevivers(): Revivers {\n if (!cachedRevivers) {\n cachedRevivers = getWebRevivers();\n }\n return cachedRevivers;\n}\n\n// ---------------------------------------------------------------------------\n// Public API\n// ---------------------------------------------------------------------------\n\n/**\n * Hydrate the serialized data fields of a resource for web display.\n *\n * Uses browser-safe revivers (atob for base64, ClassInstanceRef for\n * custom classes, StreamRef for streams). Call this on data received\n * from the server before passing it to UI components.\n */\nexport function hydrateResourceIO<T>(resource: T): T {\n const hydrated = hydrateResourceIOGeneric(\n resource as any,\n getRevivers()\n ) as T;\n return replaceEncryptedAndExpiredWithMarkers(hydrated);\n}\n\n// ---------------------------------------------------------------------------\n// Encrypted data display markers\n// ---------------------------------------------------------------------------\n\nexport const ENCRYPTED_DISPLAY_NAME = 'Encrypted';\n\n/**\n * Create a display-friendly object for encrypted data.\n *\n * Uses the same named-constructor trick as the Instance reviver so that\n * ObjectInspector renders the constructor name (\"🔒 Encrypted\") with no\n * expandable children. The original encrypted bytes are stored in a\n * non-enumerable property for later decryption.\n */\nfunction createEncryptedMarker(data: Uint8Array): object {\n // biome-ignore lint/complexity/useArrowFunction: arrow functions have no .prototype\n const ctor = { [ENCRYPTED_DISPLAY_NAME]: function () {} }[\n ENCRYPTED_DISPLAY_NAME\n ]!;\n const obj = Object.create(ctor.prototype);\n // Store original bytes for decryption, but non-enumerable so\n // ObjectInspector doesn't show them as children\n Object.defineProperty(obj, '__encryptedData', {\n value: data,\n enumerable: false,\n configurable: false,\n });\n return obj;\n}\n\n/** Check if a value is an encrypted display marker */\nexport function isEncryptedMarker(value: unknown): boolean {\n return (\n value !== null &&\n typeof value === 'object' &&\n value.constructor?.name === ENCRYPTED_DISPLAY_NAME\n );\n}\n\n// ---------------------------------------------------------------------------\n// Expired data display markers\n// ---------------------------------------------------------------------------\n\nexport const EXPIRED_DISPLAY_NAME = 'Expired Data';\n\n/**\n * Create a display-friendly object for expired data.\n *\n * Uses the same named-constructor trick as the encrypted marker so that\n * ObjectInspector renders the constructor name (\"Expired Data\") with no\n * expandable children.\n */\nfunction createExpiredMarker(): object {\n // biome-ignore lint/complexity/useArrowFunction: arrow functions have no .prototype\n const ctor = { [EXPIRED_DISPLAY_NAME]: function () {} }[\n EXPIRED_DISPLAY_NAME\n ]!;\n return Object.create(ctor.prototype);\n}\n\n/** Check if a value is an expired data display marker */\nexport function isExpiredMarker(value: unknown): boolean {\n return (\n value !== null &&\n typeof value === 'object' &&\n value.constructor?.name === EXPIRED_DISPLAY_NAME\n );\n}\n\n/** Replace a single field value with a display marker if it's encrypted or expired. */\nfunction toDisplayMarker(value: unknown): unknown {\n if (isEncryptedData(value)) return createEncryptedMarker(value as Uint8Array);\n if (isExpiredStub(value)) return createExpiredMarker();\n return value;\n}\n\n/**\n * Post-process hydrated resource data: replace encrypted Uint8Array values\n * and expired stubs with display-friendly marker objects in known data fields.\n */\nfunction replaceEncryptedAndExpiredWithMarkers<T>(resource: T): T {\n if (!resource || typeof resource !== 'object') return resource;\n const r = resource as Record<string, unknown>;\n const result = { ...r };\n\n for (const key of ['input', 'output', 'metadata', 'error']) {\n result[key] = toDisplayMarker(result[key]);\n }\n\n if (result.eventData && typeof result.eventData === 'object') {\n const eventType =\n typeof result.eventType === 'string' ? result.eventType : '';\n const refKeys = EVENT_DATA_REF_FIELDS[eventType] ?? [];\n const ed = { ...(result.eventData as Record<string, unknown>) };\n for (const key of refKeys) {\n if (key in ed) {\n ed[key] = toDisplayMarker(ed[key]);\n }\n }\n result.eventData = ed;\n }\n\n return result as T;\n}\n\n/**\n * Hydrate resource data with decryption support.\n *\n * When a key is provided, encrypted fields are decrypted before hydration.\n * This is the async version used when the user clicks \"Decrypt\" in the web UI.\n *\n * Handles both top-level fields (input, output, metadata) and nested\n * eventData subfields per `EVENT_DATA_REF_FIELDS` from `@workflow/world` for that event type.\n */\nexport async function hydrateResourceIOWithKey<T>(\n resource: T,\n key: Uint8Array\n): Promise<T> {\n const { hydrateDataWithKey } = await import(\n '@workflow/core/serialization-format'\n );\n const { importKey } = await import('@workflow/core/encryption');\n const cryptoKey = await importKey(key);\n const revivers = getRevivers();\n\n /** Extract original encrypted bytes from a marker or raw Uint8Array, then decrypt + hydrate */\n async function decryptField(\n value: unknown,\n rev: Revivers,\n k: Awaited<ReturnType<typeof importKey>>\n ): Promise<unknown> {\n // Already-hydrated: encrypted marker with stored bytes\n if (isEncryptedMarker(value)) {\n const raw = (value as any).__encryptedData as Uint8Array;\n return hydrateDataWithKey(raw, rev, k);\n }\n // Raw encrypted Uint8Array (not yet hydrated)\n if (value instanceof Uint8Array) {\n return hydrateDataWithKey(value, rev, k);\n }\n // Not encrypted — return as-is\n return value;\n }\n\n const r = resource as Record<string, unknown>;\n const result = { ...r };\n\n // Decrypt + hydrate top-level serialized fields (runs, steps, hooks)\n for (const field of ['input', 'output', 'metadata', 'error']) {\n if (field in result) {\n result[field] = await decryptField(result[field], revivers, cryptoKey);\n }\n }\n\n // Decrypt + hydrate eventData subfields (events)\n if (result.eventData && typeof result.eventData === 'object') {\n const eventType =\n typeof result.eventType === 'string' ? result.eventType : '';\n const refKeys = EVENT_DATA_REF_FIELDS[eventType] ?? [];\n const eventData = { ...(result.eventData as Record<string, unknown>) };\n for (const field of refKeys) {\n if (field in eventData) {\n eventData[field] = await decryptField(\n eventData[field],\n revivers,\n cryptoKey\n );\n }\n }\n result.eventData = eventData;\n }\n\n return result as T;\n}\n\n/**\n * Check whether a hydrated resource (event, step, run, etc.) contains any\n * encrypted display markers. Inspects the standard top-level fields\n * (`input`, `output`, `error`, `metadata`) as well as the event-type-specific\n * `eventData` ref fields.\n */\nexport function hasEncryptedFields(resource: unknown): boolean {\n if (!resource || typeof resource !== 'object') return false;\n const r = resource as Record<string, unknown>;\n\n for (const key of ['input', 'output', 'metadata', 'error']) {\n if (isEncryptedMarker(r[key])) return true;\n }\n\n if (r.eventData && typeof r.eventData === 'object') {\n const eventType = typeof r.eventType === 'string' ? r.eventType : '';\n const refKeys = EVENT_DATA_REF_FIELDS[eventType] ?? [];\n const ed = r.eventData as Record<string, unknown>;\n for (const key of refKeys) {\n if (key in ed && isEncryptedMarker(ed[key])) return true;\n }\n }\n\n return false;\n}\n"]}
|
package/dist/lib/toast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/lib/toast.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAQ9C,MAAM,cAAc,GAAiB;IACnC,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;IACtD,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;IAClD,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,YAAY,GAAG,aAAa,CAAe,cAAc,CAAC,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC"}
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../src/lib/toast.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAC;AAQ9C,MAAM,cAAc,GAAiB;IACnC,OAAO,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;IACtD,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;IAClD,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC;CACjD,CAAC;AAEF,MAAM,YAAY,GAAG,aAAa,CAAe,cAAc,CAAC,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,CACL,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CACxE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC;AAClC,CAAC","sourcesContent":["'use client';\n\nimport type { ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\nimport { toast as sonnerToast } from 'sonner';\n\nexport interface ToastAdapter {\n success: (message: string, opts?: { description?: string }) => void;\n error: (message: string, opts?: { description?: string }) => void;\n info: (message: string, opts?: { description?: string }) => void;\n}\n\nconst defaultAdapter: ToastAdapter = {\n success: (msg, opts) => sonnerToast.success(msg, opts),\n error: (msg, opts) => sonnerToast.error(msg, opts),\n info: (msg, opts) => sonnerToast.info(msg, opts),\n};\n\nconst ToastContext = createContext<ToastAdapter>(defaultAdapter);\n\n/**\n * Provide a custom toast implementation to web-shared components.\n *\n * When not provided, falls back to sonner (works in packages/web).\n * Host apps like vercel-site can supply their own adapter\n * (e.g. Geist useToasts) so toasts render in the host's toast system.\n */\nexport function ToastProvider({\n toast,\n children,\n}: {\n toast: ToastAdapter;\n children: ReactNode;\n}): ReactNode {\n return (\n <ToastContext.Provider value={toast}>{children}</ToastContext.Provider>\n );\n}\n\nexport function useToast(): ToastAdapter {\n return useContext(ToastContext);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-builder.js","sourceRoot":"","sources":["../../src/lib/trace-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trace-builder.js","sourceRoot":"","sources":["../../src/lib/trace-builder.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Builds a complete trace from a WorkflowRun and its Events.\n *\n * This module groups raw events by correlation ID and entity type,\n * converts each group into an OpenTelemetry-style Span, and returns\n * a fully-formed Trace ready for the trace viewer.\n */\n\nimport type { Event, WorkflowRun } from '@workflow/world';\nimport type { Span } from '../components/trace-viewer/types';\nimport {\n hookToSpan,\n runToSpan,\n stepToSpan,\n waitToSpan,\n WORKFLOW_LIBRARY,\n} from '../components/workflow-traces/trace-span-construction';\nimport { otelTimeToMs } from '../components/workflow-traces/trace-time-utils';\n\n// ---------------------------------------------------------------------------\n// Event type classifiers\n// ---------------------------------------------------------------------------\n\nexport const isStepEvent = (eventType: string) => eventType.startsWith('step_');\n\nexport const isTimerEvent = (eventType: string) =>\n eventType === 'wait_created' || eventType === 'wait_completed';\n\nexport const isHookLifecycleEvent = (eventType: string) =>\n eventType === 'hook_received' ||\n eventType === 'hook_created' ||\n eventType === 'hook_disposed';\n\n// ---------------------------------------------------------------------------\n// Event grouping\n// ---------------------------------------------------------------------------\n\nexport type GroupedEvents = {\n eventsByStepId: Map<string, Event[]>;\n runLevelEvents: Event[];\n timerEvents: Map<string, Event[]>;\n hookEvents: Map<string, Event[]>;\n};\n\nfunction pushEvent(\n map: Map<string, Event[]>,\n correlationId: string,\n event: Event\n) {\n const existing = map.get(correlationId);\n if (existing) {\n existing.push(event);\n return;\n }\n map.set(correlationId, [event]);\n}\n\nexport function groupEventsByCorrelation(events: Event[]): GroupedEvents {\n const eventsByStepId = new Map<string, Event[]>();\n const runLevelEvents: Event[] = [];\n const timerEvents = new Map<string, Event[]>();\n const hookEvents = new Map<string, Event[]>();\n\n for (const event of events) {\n const correlationId = event.correlationId;\n if (!correlationId) {\n runLevelEvents.push(event);\n continue;\n }\n\n if (isTimerEvent(event.eventType)) {\n pushEvent(timerEvents, correlationId, event);\n continue;\n }\n\n if (isHookLifecycleEvent(event.eventType)) {\n pushEvent(hookEvents, correlationId, event);\n continue;\n }\n\n if (isStepEvent(event.eventType)) {\n pushEvent(eventsByStepId, correlationId, event);\n continue;\n }\n\n runLevelEvents.push(event);\n }\n\n return { eventsByStepId, runLevelEvents, timerEvents, hookEvents };\n}\n\n// ---------------------------------------------------------------------------\n// Trace construction\n// ---------------------------------------------------------------------------\n\n/**\n * Computes the latest known event time from the events list.\n * Active (in-progress) child spans are capped at this time instead of `now`,\n * so they only extend as far as our data goes.\n */\nfunction computeLatestKnownTime(events: Event[], run: WorkflowRun): Date {\n let latest = new Date(run.createdAt).getTime();\n for (const event of events) {\n const t = new Date(event.createdAt).getTime();\n if (t > latest) latest = t;\n }\n return new Date(latest);\n}\n\nfunction buildSpans(\n run: WorkflowRun,\n groupedEvents: GroupedEvents,\n now: Date,\n latestKnownTime: Date\n) {\n // Active child spans cap at latestKnownTime so they don't extend into\n // unknown territory. Even when the run is completed, we may not have loaded\n // all events yet, so always use the latest event we've actually seen.\n const childMaxEnd = latestKnownTime;\n\n const stepSpans = Array.from(groupedEvents.eventsByStepId.values())\n .map((events) => stepToSpan(events, childMaxEnd))\n .filter((span): span is Span => span !== null);\n\n const hookSpans = Array.from(groupedEvents.hookEvents.values())\n .map((events) => hookToSpan(events, childMaxEnd))\n .filter((span): span is Span => span !== null);\n\n const waitSpans = Array.from(groupedEvents.timerEvents.values())\n .map((events) => waitToSpan(events, childMaxEnd))\n .filter((span): span is Span => span !== null);\n\n return {\n runSpan: runToSpan(run, groupedEvents.runLevelEvents, now),\n spans: [...stepSpans, ...hookSpans, ...waitSpans],\n };\n}\n\nfunction cascadeSpans(runSpan: Span, spans: Span[]) {\n const sortedSpans = [\n runSpan,\n ...spans.slice().sort((a, b) => {\n const aStart = otelTimeToMs(a.startTime);\n const bStart = otelTimeToMs(b.startTime);\n return aStart - bStart;\n }),\n ];\n\n return sortedSpans.map((span, index) => {\n const parentSpanId =\n index === 0 ? undefined : String(sortedSpans[index - 1].spanId);\n return {\n ...span,\n parentSpanId,\n };\n });\n}\n\nexport interface TraceWithMeta {\n traceId: string;\n rootSpanId: string;\n spans: Span[];\n resources: { name: string; attributes: Record<string, string> }[];\n /** Duration in ms from trace start to the latest known event. */\n knownDurationMs: number;\n}\n\nexport function buildTrace(\n run: WorkflowRun,\n events: Event[],\n now: Date\n): TraceWithMeta {\n const groupedEvents = groupEventsByCorrelation(events);\n const latestKnownTime = computeLatestKnownTime(events, run);\n const { runSpan, spans } = buildSpans(\n run,\n groupedEvents,\n now,\n latestKnownTime\n );\n const sortedCascadingSpans = cascadeSpans(runSpan, spans);\n\n // Compute known duration relative to trace start\n const traceStartMs = otelTimeToMs(runSpan.startTime);\n const knownDurationMs = latestKnownTime.getTime() - traceStartMs;\n\n return {\n traceId: run.runId,\n rootSpanId: run.runId,\n spans: sortedCascadingSpans,\n resources: [\n {\n name: 'workflow',\n attributes: {\n 'service.name': WORKFLOW_LIBRARY.name,\n },\n },\n ],\n knownDurationMs: Math.max(0, knownDurationMs),\n };\n}\n"]}
|
package/dist/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Step } from '@workflow/world';\nimport type { ModelMessage } from 'ai';\nimport { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nconst durationFormatter = new Intl.NumberFormat(undefined, {\n maximumFractionDigits: 2,\n});\n\nconst MS_IN_SECOND = 1000;\nconst MS_IN_MINUTE = 60 * MS_IN_SECOND;\nconst MS_IN_HOUR = 60 * MS_IN_MINUTE;\nconst MS_IN_DAY = 24 * MS_IN_HOUR;\n\n/**\n * Formats a duration in milliseconds to a human-readable string.\n *\n * @param ms - Duration in milliseconds\n * @param compact - If true, returns a single-unit format (e.g., \"45s\", \"2.5m\").\n * If false (default), returns multi-part format (e.g., \"1h 30m\", \"2d 5h\").\n *\n * Compact format:\n * - < 1s: shows milliseconds (e.g., \"500ms\")\n * - < 1m: shows seconds (e.g., \"45s\")\n * - < 1h: shows minutes (e.g., \"45m\")\n * - >= 1h: shows hours (e.g., \"2.5h\")\n *\n * Full format:\n * - < 1s: shows milliseconds (e.g., \"500ms\")\n * - < 1m: shows seconds (e.g., \"45.5s\")\n * - >= 1m: shows human-readable format (e.g., \"1h 30m\", \"2d 5h\")\n */\nexport function formatDuration(ms: number, compact = false): string {\n if (ms === 0) {\n return '0';\n }\n\n // For durations less than 1 second, show milliseconds\n if (ms < MS_IN_SECOND) {\n return `${durationFormatter.format(ms)}ms`;\n }\n\n // For durations less than 1 minute, show seconds\n if (ms < MS_IN_MINUTE) {\n return `${durationFormatter.format(ms / MS_IN_SECOND)}s`;\n }\n\n // Compact format: multi-unit without decimals (e.g. \"8m 20s\", \"2h 30m\")\n if (compact) {\n if (ms < MS_IN_HOUR) {\n const m = Math.floor(ms / MS_IN_MINUTE);\n const s = Math.floor((ms % MS_IN_MINUTE) / MS_IN_SECOND);\n return s > 0 ? `${m}m ${s}s` : `${m}m`;\n }\n const h = Math.floor(ms / MS_IN_HOUR);\n const m = Math.floor((ms % MS_IN_HOUR) / MS_IN_MINUTE);\n return m > 0 ? `${h}h ${m}m` : `${h}h`;\n }\n\n // Full format: human-readable multi-part\n const days = Math.floor(ms / MS_IN_DAY);\n const hours = Math.floor((ms % MS_IN_DAY) / MS_IN_HOUR);\n const minutes = Math.floor((ms % MS_IN_HOUR) / MS_IN_MINUTE);\n const seconds = Math.floor((ms % MS_IN_MINUTE) / MS_IN_SECOND);\n\n const parts: string[] = [];\n\n if (days > 0) {\n parts.push(`${days}d`);\n }\n if (hours > 0) {\n parts.push(`${hours}h`);\n }\n if (minutes > 0) {\n parts.push(`${minutes}m`);\n }\n if (hours <= 1 && (seconds > 0 || parts.length === 0)) {\n parts.push(`${seconds}s`);\n }\n\n return parts.join(' ');\n}\n\n/**\n * Returns a formatted pagination display string\n * @param currentPage - The current page number\n * @param totalPages - The total number of pages visited so far\n * @param hasMore - Whether there are more pages available\n * @returns Formatted string like \"Page 1 of 3+\" or \"Page 2 of 2\"\n */\nexport function getPaginationDisplay(\n currentPage: number,\n totalPages: number,\n hasMore: boolean\n): string {\n if (hasMore) {\n return `Page ${currentPage} of ${totalPages}+`;\n }\n return `Page ${currentPage} of ${totalPages}`;\n}\n\n// ============================================================================\n// Durable Agent Utilities\n// ============================================================================\n\n/**\n * Check if a step is a doStreamStep (LLM call with conversation input)\n */\nexport function isDoStreamStep(stepName: string): boolean {\n return stepName.endsWith('//doStreamStep');\n}\n\n/**\n * Extract the conversation from a hydrated doStreamStep input.\n * doStreamStep signature: (conversationPrompt, model, writable, tools, options)\n * So input[0] is the conversation.\n */\nexport function extractConversation(stepInput: unknown): ModelMessage[] | null {\n if (!Array.isArray(stepInput) || stepInput.length === 0) {\n return null;\n }\n\n const firstArg = stepInput[0];\n\n if (!Array.isArray(firstArg)) {\n return null;\n }\n\n // Validate it looks like ModelMessage[]\n if (\n !firstArg.every((msg) => msg && typeof msg === 'object' && 'role' in msg)\n ) {\n return null;\n }\n\n return firstArg as ModelMessage[];\n}\n\n/**\n * A doStreamStep with its conversation input extracted\n */\nexport interface StreamStep {\n stepId: string;\n stepName: string;\n displayName: string;\n conversation: ModelMessage[];\n}\n\n/**\n * Identifies all stream steps (doStreamStep) in a run and extracts their conversations.\n */\nexport function identifyStreamSteps(steps: Step[]): StreamStep[] {\n return steps\n .filter((step) => isDoStreamStep(step.stepName))\n .map((step) => {\n const functionName = step.stepName.split('//').pop() ?? 'unknown';\n const conversation = extractConversation(step.input) ?? [];\n\n return {\n stepId: step.stepId,\n stepName: step.stepName,\n displayName: functionName,\n conversation,\n };\n });\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@workflow/web-shared",
|
|
3
3
|
"description": "Shared components for Workflow Observability UI",
|
|
4
|
-
"version": "5.0.0-beta.
|
|
4
|
+
"version": "5.0.0-beta.2",
|
|
5
5
|
"private": false,
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
"streamdown": "2.3.0",
|
|
53
53
|
"tailwind-merge": "3.5.0",
|
|
54
54
|
"tailwindcss": "4",
|
|
55
|
-
"@workflow/core": "5.0.0-beta.
|
|
56
|
-
"@workflow/utils": "5.0.0-beta.
|
|
55
|
+
"@workflow/core": "5.0.0-beta.2",
|
|
56
|
+
"@workflow/utils": "5.0.0-beta.1",
|
|
57
57
|
"@workflow/world": "5.0.0-beta.1"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
@@ -9,7 +9,7 @@ import { Virtuoso, type VirtuosoHandle } from 'react-virtuoso';
|
|
|
9
9
|
import { isEncryptedMarker } from '../lib/hydration';
|
|
10
10
|
import { DecryptButton } from './ui/decrypt-button';
|
|
11
11
|
import { formatDuration } from '../lib/utils';
|
|
12
|
-
import { DataInspector } from './ui/data-inspector';
|
|
12
|
+
import { DataInspector, DecryptClickContext } from './ui/data-inspector';
|
|
13
13
|
import {
|
|
14
14
|
ErrorStackBlock,
|
|
15
15
|
isStructuredErrorWithStack,
|
|
@@ -703,6 +703,8 @@ interface EventsListProps {
|
|
|
703
703
|
onDecrypt?: () => void;
|
|
704
704
|
/** Whether the encryption key is currently being fetched. */
|
|
705
705
|
isDecrypting?: boolean;
|
|
706
|
+
/** Run-level hint: the run contains encrypted data (from probe). */
|
|
707
|
+
hasEncryptedData?: boolean;
|
|
706
708
|
}
|
|
707
709
|
|
|
708
710
|
function EventRow({
|
|
@@ -1136,6 +1138,7 @@ export function EventListView({
|
|
|
1136
1138
|
onSortOrderChange,
|
|
1137
1139
|
onDecrypt,
|
|
1138
1140
|
isDecrypting = false,
|
|
1141
|
+
hasEncryptedData: hasEncryptedDataProp = false,
|
|
1139
1142
|
}: EventsListProps) {
|
|
1140
1143
|
const [internalSortOrder, setInternalSortOrder] = useState<'asc' | 'desc'>(
|
|
1141
1144
|
'asc'
|
|
@@ -1180,7 +1183,8 @@ export function EventListView({
|
|
|
1180
1183
|
setFoundEncryptedInLazyData(true);
|
|
1181
1184
|
}, []);
|
|
1182
1185
|
|
|
1183
|
-
const hasEncryptedData =
|
|
1186
|
+
const hasEncryptedData =
|
|
1187
|
+
hasEncryptedDataProp || hasEncryptedInlineData || foundEncryptedInLazyData;
|
|
1184
1188
|
|
|
1185
1189
|
const { correlationNameMap, workflowName } = useMemo(
|
|
1186
1190
|
() => buildNameMaps(events ?? null, run ?? null),
|
|
@@ -1393,195 +1397,199 @@ export function EventListView({
|
|
|
1393
1397
|
}
|
|
1394
1398
|
|
|
1395
1399
|
return (
|
|
1396
|
-
<
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
<div
|
|
1400
|
-
style
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
display: 'flex',
|
|
1404
|
-
gap: 6,
|
|
1405
|
-
}}
|
|
1406
|
-
>
|
|
1407
|
-
<label
|
|
1400
|
+
<DecryptClickContext.Provider
|
|
1401
|
+
value={onDecrypt ? { onDecrypt, isDecrypting } : undefined}
|
|
1402
|
+
>
|
|
1403
|
+
<div className="h-full flex flex-col overflow-hidden">
|
|
1404
|
+
<style>{`@keyframes workflow-dot-pulse{0%{transform:scale(1);opacity:.7}70%,100%{transform:scale(2.2);opacity:0}}`}</style>
|
|
1405
|
+
{/* Search bar + sort */}
|
|
1406
|
+
<div
|
|
1408
1407
|
style={{
|
|
1408
|
+
padding: 6,
|
|
1409
|
+
backgroundColor: 'var(--ds-background-100)',
|
|
1409
1410
|
display: 'flex',
|
|
1410
|
-
|
|
1411
|
-
justifyContent: 'center',
|
|
1412
|
-
borderRadius: 6,
|
|
1413
|
-
boxShadow: '0 0 0 1px var(--ds-gray-alpha-400)',
|
|
1414
|
-
background: 'var(--ds-background-100)',
|
|
1415
|
-
height: 40,
|
|
1416
|
-
flex: 1,
|
|
1417
|
-
minWidth: 0,
|
|
1411
|
+
gap: 6,
|
|
1418
1412
|
}}
|
|
1419
1413
|
>
|
|
1420
|
-
<
|
|
1414
|
+
<label
|
|
1421
1415
|
style={{
|
|
1422
|
-
width: 40,
|
|
1423
|
-
height: 40,
|
|
1424
1416
|
display: 'flex',
|
|
1425
1417
|
alignItems: 'center',
|
|
1426
1418
|
justifyContent: 'center',
|
|
1427
|
-
|
|
1428
|
-
|
|
1419
|
+
borderRadius: 6,
|
|
1420
|
+
boxShadow: '0 0 0 1px var(--ds-gray-alpha-400)',
|
|
1421
|
+
background: 'var(--ds-background-100)',
|
|
1422
|
+
height: 40,
|
|
1423
|
+
flex: 1,
|
|
1424
|
+
minWidth: 0,
|
|
1429
1425
|
}}
|
|
1430
1426
|
>
|
|
1431
|
-
<
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1427
|
+
<div
|
|
1428
|
+
style={{
|
|
1429
|
+
width: 40,
|
|
1430
|
+
height: 40,
|
|
1431
|
+
display: 'flex',
|
|
1432
|
+
alignItems: 'center',
|
|
1433
|
+
justifyContent: 'center',
|
|
1434
|
+
color: 'var(--ds-gray-800)',
|
|
1435
|
+
flexShrink: 0,
|
|
1436
|
+
}}
|
|
1438
1437
|
>
|
|
1439
|
-
<
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1438
|
+
<svg
|
|
1439
|
+
width={16}
|
|
1440
|
+
height={16}
|
|
1441
|
+
viewBox="0 0 16 16"
|
|
1442
|
+
fill="none"
|
|
1443
|
+
aria-hidden="true"
|
|
1444
|
+
focusable="false"
|
|
1445
|
+
>
|
|
1446
|
+
<circle
|
|
1447
|
+
cx="7"
|
|
1448
|
+
cy="7"
|
|
1449
|
+
r="4.5"
|
|
1450
|
+
stroke="currentColor"
|
|
1451
|
+
strokeWidth="1.5"
|
|
1452
|
+
/>
|
|
1453
|
+
<path
|
|
1454
|
+
d="M11.5 11.5L14 14"
|
|
1455
|
+
stroke="currentColor"
|
|
1456
|
+
strokeWidth="1.5"
|
|
1457
|
+
strokeLinecap="round"
|
|
1458
|
+
/>
|
|
1459
|
+
</svg>
|
|
1460
|
+
</div>
|
|
1461
|
+
<input
|
|
1462
|
+
type="search"
|
|
1463
|
+
placeholder="Search by name, event type, or ID…"
|
|
1464
|
+
value={searchQuery}
|
|
1465
|
+
onChange={(e) => setSearchQuery(e.target.value)}
|
|
1466
|
+
style={{
|
|
1467
|
+
marginLeft: -16,
|
|
1468
|
+
paddingInline: 12,
|
|
1469
|
+
fontFamily: 'inherit',
|
|
1470
|
+
fontSize: 14,
|
|
1471
|
+
background: 'transparent',
|
|
1472
|
+
border: 'none',
|
|
1473
|
+
outline: 'none',
|
|
1474
|
+
height: 40,
|
|
1475
|
+
width: '100%',
|
|
1476
|
+
}}
|
|
1477
|
+
/>
|
|
1478
|
+
</label>
|
|
1479
|
+
<MenuDropdown
|
|
1480
|
+
options={SORT_OPTIONS}
|
|
1481
|
+
value={effectiveSortOrder}
|
|
1482
|
+
onChange={handleSortOrderChange}
|
|
1483
|
+
/>
|
|
1484
|
+
{(hasEncryptedData || encryptionKey) && onDecrypt && (
|
|
1485
|
+
<DecryptButton
|
|
1486
|
+
decrypted={!!encryptionKey}
|
|
1487
|
+
loading={isDecrypting}
|
|
1488
|
+
onClick={onDecrypt}
|
|
1489
|
+
/>
|
|
1490
|
+
)}
|
|
1491
|
+
</div>
|
|
1492
|
+
|
|
1493
|
+
{/* Header */}
|
|
1494
|
+
<div
|
|
1495
|
+
className="flex items-center gap-0 text-[13px] font-medium h-10 border-b flex-shrink-0"
|
|
1496
|
+
style={{
|
|
1497
|
+
borderColor: 'var(--ds-gray-alpha-200)',
|
|
1498
|
+
color: 'var(--ds-gray-900)',
|
|
1499
|
+
backgroundColor: 'var(--ds-background-100)',
|
|
1500
|
+
}}
|
|
1501
|
+
>
|
|
1502
|
+
<div className="flex-shrink-0" style={{ width: GUTTER_WIDTH }} />
|
|
1503
|
+
<div className="w-5 flex-shrink-0" />
|
|
1504
|
+
<div className="min-w-0 px-4" style={{ flex: '2 1 0%' }}>
|
|
1505
|
+
Time
|
|
1453
1506
|
</div>
|
|
1454
|
-
<
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1507
|
+
<div className="min-w-0 px-4" style={{ flex: '2 1 0%' }}>
|
|
1508
|
+
Event Type
|
|
1509
|
+
</div>
|
|
1510
|
+
<div className="min-w-0 px-4" style={{ flex: '2 1 0%' }}>
|
|
1511
|
+
Name
|
|
1512
|
+
</div>
|
|
1513
|
+
<div className="min-w-0 px-4" style={{ flex: '3 1 0%' }}>
|
|
1514
|
+
Correlation ID
|
|
1515
|
+
</div>
|
|
1516
|
+
<div className="min-w-0 px-4" style={{ flex: '3 1 0%' }}>
|
|
1517
|
+
Event ID
|
|
1518
|
+
</div>
|
|
1519
|
+
</div>
|
|
1520
|
+
|
|
1521
|
+
{/* Virtualized event rows or refetching skeleton */}
|
|
1522
|
+
{isRefetching ? (
|
|
1523
|
+
<RowsSkeleton />
|
|
1524
|
+
) : (
|
|
1525
|
+
<Virtuoso
|
|
1526
|
+
ref={virtuosoRef}
|
|
1527
|
+
totalCount={sortedEvents.length}
|
|
1528
|
+
overscan={20}
|
|
1529
|
+
defaultItemHeight={40}
|
|
1530
|
+
endReached={() => {
|
|
1531
|
+
if (!hasMoreEvents || isLoadingMoreEvents) {
|
|
1532
|
+
return;
|
|
1533
|
+
}
|
|
1534
|
+
void onLoadMoreEvents?.();
|
|
1469
1535
|
}}
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1536
|
+
itemContent={(index: number) => {
|
|
1537
|
+
const ev = sortedEvents[index];
|
|
1538
|
+
return (
|
|
1539
|
+
<EventRow
|
|
1540
|
+
event={ev}
|
|
1541
|
+
index={index}
|
|
1542
|
+
isFirst={index === 0}
|
|
1543
|
+
isLast={index === sortedEvents.length - 1}
|
|
1544
|
+
isExpanded={expandedEventIds.has(ev.eventId)}
|
|
1545
|
+
onToggleExpand={toggleEventExpanded}
|
|
1546
|
+
activeGroupKey={activeGroupKey}
|
|
1547
|
+
selectedGroupKey={selectedGroupKey}
|
|
1548
|
+
selectedGroupRange={selectedGroupRange}
|
|
1549
|
+
correlationNameMap={correlationNameMap}
|
|
1550
|
+
workflowName={workflowName}
|
|
1551
|
+
durationMap={durationMap}
|
|
1552
|
+
onSelectGroup={onSelectGroup}
|
|
1553
|
+
onHoverGroup={onHoverGroup}
|
|
1554
|
+
onLoadEventData={onLoadEventData}
|
|
1555
|
+
cachedEventData={
|
|
1556
|
+
eventDataCacheRef.current.get(ev.eventId) ?? null
|
|
1557
|
+
}
|
|
1558
|
+
onCacheEventData={cacheEventData}
|
|
1559
|
+
encryptionKey={encryptionKey}
|
|
1560
|
+
onEncryptedDataDetected={handleEncryptedDataDetected}
|
|
1561
|
+
/>
|
|
1562
|
+
);
|
|
1563
|
+
}}
|
|
1564
|
+
style={{ flex: 1, minHeight: 0 }}
|
|
1482
1565
|
/>
|
|
1483
1566
|
)}
|
|
1484
|
-
</div>
|
|
1485
|
-
|
|
1486
|
-
{/* Header */}
|
|
1487
|
-
<div
|
|
1488
|
-
className="flex items-center gap-0 text-[13px] font-medium h-10 border-b flex-shrink-0"
|
|
1489
|
-
style={{
|
|
1490
|
-
borderColor: 'var(--ds-gray-alpha-200)',
|
|
1491
|
-
color: 'var(--ds-gray-900)',
|
|
1492
|
-
backgroundColor: 'var(--ds-background-100)',
|
|
1493
|
-
}}
|
|
1494
|
-
>
|
|
1495
|
-
<div className="flex-shrink-0" style={{ width: GUTTER_WIDTH }} />
|
|
1496
|
-
<div className="w-5 flex-shrink-0" />
|
|
1497
|
-
<div className="min-w-0 px-4" style={{ flex: '2 1 0%' }}>
|
|
1498
|
-
Time
|
|
1499
|
-
</div>
|
|
1500
|
-
<div className="min-w-0 px-4" style={{ flex: '2 1 0%' }}>
|
|
1501
|
-
Event Type
|
|
1502
|
-
</div>
|
|
1503
|
-
<div className="min-w-0 px-4" style={{ flex: '2 1 0%' }}>
|
|
1504
|
-
Name
|
|
1505
|
-
</div>
|
|
1506
|
-
<div className="min-w-0 px-4" style={{ flex: '3 1 0%' }}>
|
|
1507
|
-
Correlation ID
|
|
1508
|
-
</div>
|
|
1509
|
-
<div className="min-w-0 px-4" style={{ flex: '3 1 0%' }}>
|
|
1510
|
-
Event ID
|
|
1511
|
-
</div>
|
|
1512
|
-
</div>
|
|
1513
1567
|
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
overscan={20}
|
|
1522
|
-
defaultItemHeight={40}
|
|
1523
|
-
endReached={() => {
|
|
1524
|
-
if (!hasMoreEvents || isLoadingMoreEvents) {
|
|
1525
|
-
return;
|
|
1526
|
-
}
|
|
1527
|
-
void onLoadMoreEvents?.();
|
|
1528
|
-
}}
|
|
1529
|
-
itemContent={(index: number) => {
|
|
1530
|
-
const ev = sortedEvents[index];
|
|
1531
|
-
return (
|
|
1532
|
-
<EventRow
|
|
1533
|
-
event={ev}
|
|
1534
|
-
index={index}
|
|
1535
|
-
isFirst={index === 0}
|
|
1536
|
-
isLast={index === sortedEvents.length - 1}
|
|
1537
|
-
isExpanded={expandedEventIds.has(ev.eventId)}
|
|
1538
|
-
onToggleExpand={toggleEventExpanded}
|
|
1539
|
-
activeGroupKey={activeGroupKey}
|
|
1540
|
-
selectedGroupKey={selectedGroupKey}
|
|
1541
|
-
selectedGroupRange={selectedGroupRange}
|
|
1542
|
-
correlationNameMap={correlationNameMap}
|
|
1543
|
-
workflowName={workflowName}
|
|
1544
|
-
durationMap={durationMap}
|
|
1545
|
-
onSelectGroup={onSelectGroup}
|
|
1546
|
-
onHoverGroup={onHoverGroup}
|
|
1547
|
-
onLoadEventData={onLoadEventData}
|
|
1548
|
-
cachedEventData={
|
|
1549
|
-
eventDataCacheRef.current.get(ev.eventId) ?? null
|
|
1550
|
-
}
|
|
1551
|
-
onCacheEventData={cacheEventData}
|
|
1552
|
-
encryptionKey={encryptionKey}
|
|
1553
|
-
onEncryptedDataDetected={handleEncryptedDataDetected}
|
|
1554
|
-
/>
|
|
1555
|
-
);
|
|
1568
|
+
{/* Fixed footer — count + load more */}
|
|
1569
|
+
<div
|
|
1570
|
+
className="relative flex-shrink-0 flex items-center h-10 border-t px-4 text-xs"
|
|
1571
|
+
style={{
|
|
1572
|
+
borderColor: 'var(--ds-gray-alpha-200)',
|
|
1573
|
+
color: 'var(--ds-gray-900)',
|
|
1574
|
+
backgroundColor: 'var(--ds-background-100)',
|
|
1556
1575
|
}}
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
<span>
|
|
1571
|
-
{sortedEvents.length} event
|
|
1572
|
-
{sortedEvents.length !== 1 ? 's' : ''} loaded
|
|
1573
|
-
</span>
|
|
1574
|
-
{hasMoreEvents && (
|
|
1575
|
-
<div className="absolute inset-0 flex items-center justify-center pointer-events-none">
|
|
1576
|
-
<div className="pointer-events-auto">
|
|
1577
|
-
<LoadMoreButton
|
|
1578
|
-
loading={isLoadingMoreEvents}
|
|
1579
|
-
onClick={() => void onLoadMoreEvents?.()}
|
|
1580
|
-
/>
|
|
1576
|
+
>
|
|
1577
|
+
<span>
|
|
1578
|
+
{sortedEvents.length} event
|
|
1579
|
+
{sortedEvents.length !== 1 ? 's' : ''} loaded
|
|
1580
|
+
</span>
|
|
1581
|
+
{hasMoreEvents && (
|
|
1582
|
+
<div className="absolute inset-0 flex items-center justify-center pointer-events-none">
|
|
1583
|
+
<div className="pointer-events-auto">
|
|
1584
|
+
<LoadMoreButton
|
|
1585
|
+
loading={isLoadingMoreEvents}
|
|
1586
|
+
onClick={() => void onLoadMoreEvents?.()}
|
|
1587
|
+
/>
|
|
1588
|
+
</div>
|
|
1581
1589
|
</div>
|
|
1582
|
-
|
|
1583
|
-
|
|
1590
|
+
)}
|
|
1591
|
+
</div>
|
|
1584
1592
|
</div>
|
|
1585
|
-
</
|
|
1593
|
+
</DecryptClickContext.Provider>
|
|
1586
1594
|
);
|
|
1587
1595
|
}
|
package/src/components/index.ts
CHANGED
|
@@ -21,7 +21,12 @@ export type {
|
|
|
21
21
|
} from './sidebar/entity-detail-panel';
|
|
22
22
|
export { type StreamChunk, StreamViewer } from './stream-viewer';
|
|
23
23
|
export type { Span, SpanEvent } from './trace-viewer/types';
|
|
24
|
-
export {
|
|
24
|
+
export {
|
|
25
|
+
DataInspector,
|
|
26
|
+
type DataInspectorProps,
|
|
27
|
+
DecryptClickContext,
|
|
28
|
+
type DecryptClickContextValue,
|
|
29
|
+
} from './ui/data-inspector';
|
|
25
30
|
export { DecryptButton } from './ui/decrypt-button';
|
|
26
31
|
export { LoadMoreButton } from './ui/load-more-button';
|
|
27
32
|
export { MenuDropdown, type MenuDropdownOption } from './ui/menu-dropdown';
|
|
@@ -24,6 +24,7 @@ interface RunTraceViewProps {
|
|
|
24
24
|
) => Promise<void>;
|
|
25
25
|
onCancelRun?: (runId: string) => Promise<void>;
|
|
26
26
|
onStreamClick?: (streamId: string) => void;
|
|
27
|
+
onRunClick?: (runId: string) => void;
|
|
27
28
|
onSpanSelect?: (info: SpanSelectionInfo) => void;
|
|
28
29
|
onLoadMoreSpans?: () => void | Promise<void>;
|
|
29
30
|
hasMoreSpans?: boolean;
|
|
@@ -42,6 +43,7 @@ export function RunTraceView({
|
|
|
42
43
|
onResolveHook,
|
|
43
44
|
onCancelRun,
|
|
44
45
|
onStreamClick,
|
|
46
|
+
onRunClick,
|
|
45
47
|
onSpanSelect,
|
|
46
48
|
onLoadMoreSpans,
|
|
47
49
|
hasMoreSpans,
|
|
@@ -71,6 +73,7 @@ export function RunTraceView({
|
|
|
71
73
|
onResolveHook={onResolveHook}
|
|
72
74
|
onCancelRun={onCancelRun}
|
|
73
75
|
onStreamClick={onStreamClick}
|
|
76
|
+
onRunClick={onRunClick}
|
|
74
77
|
onSpanSelect={onSpanSelect}
|
|
75
78
|
onLoadMoreSpans={onLoadMoreSpans}
|
|
76
79
|
hasMoreSpans={hasMoreSpans}
|