@principal-ai/principal-view-core 0.24.78 → 0.24.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/spans/index.d.ts +12 -0
- package/dist/spans/index.d.ts.map +1 -0
- package/dist/spans/index.js +23 -0
- package/dist/spans/index.js.map +1 -0
- package/dist/spans/utils.d.ts +58 -0
- package/dist/spans/utils.d.ts.map +1 -0
- package/dist/spans/utils.js +146 -0
- package/dist/spans/utils.js.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +20 -0
- package/src/spans/index.ts +22 -0
- package/src/spans/utils.ts +179 -0
package/dist/index.d.ts
CHANGED
|
@@ -22,7 +22,8 @@ export { renderWorkflow, renderEventTemplate } from './workflow/template-rendere
|
|
|
22
22
|
export { parseTemplate, ParsedTemplate } from './workflow/template-parser';
|
|
23
23
|
export type { TemplateSegment, TemplateContext, TemplateValue, TemplateData } from './workflow/template-parser';
|
|
24
24
|
export { selectScenario, getRequiredEvents, hasEventMatching, computeAggregates, getNestedValue, setNestedValue, } from './workflow/scenario-matcher';
|
|
25
|
-
export type { WorkflowTemplate, WorkflowScenario, ScenarioOutcomeType, ScenarioTemplate, LogTemplates, FormattingOptions, OtelEvent, OtelSignal, WorkflowContext, WorkflowResult, ScenarioMatchResult, ScenarioMatchDetail, EnhancedScenarioMatchResult, WorkflowMatch, SpanTreeNode, } from './workflow/types';
|
|
25
|
+
export type { WorkflowTemplate, WorkflowScenario, ScenarioOutcomeType, ScenarioTemplate, LogTemplates, FormattingOptions, OtelEvent, OtelSignal, WorkflowContext, WorkflowResult, ScenarioMatchResult, ScenarioMatchDetail, EnhancedScenarioMatchResult, WorkflowMatch, SpanTreeNode, EventTemplate, } from './workflow/types';
|
|
26
|
+
export { isEventTemplate, getEventTemplateString, getEventSpan, getWorkflowRootSpan, } from './workflow/types';
|
|
26
27
|
export type { OtelExportTraceServiceRequest, OtelResourceSpansData, OtelScopeSpans, OtelSpanData, OtelResourceData, OtelKeyValue, OtelAnyValue, OtelSpanEvent, OtelLink, OtelSpanStatus, OtelInstrumentationScope, TraceInfo, WorkflowMatchInfo, OtelAttributes, OtelAttributeValue, OtelLog, OtelSpan, OtelResource, OtelSeverity, OtelSeverityText, OtelSeverityNumber, } from './types/otel';
|
|
27
28
|
export type { RegisteredTrace, TraceResource, MatchedSpan, ScenarioMatch, OrphanedSpan, StoryboardMatch, UnmatchedSpan, UnmatchedSpans, ValidationIssue, StoryboardRegistryInterface, TraceRegistryMatcher, Resource, Scope, ScopeLookupResult, } from './types/registered-trace';
|
|
28
29
|
export { OtlpTraceParser } from './parsers/OtlpTraceParser';
|
|
@@ -44,6 +45,8 @@ export { CanvasDiscovery } from './discovery/CanvasDiscovery';
|
|
|
44
45
|
export type { DiscoveredCanvas, DiscoveredTestTrace, DiscoveredWorkflow, DiscoveredStoryboard, CanvasDiscoveryResult, DiscoveryOptions, CanvasType, TestTraceType, DiscoveredCanvasWithContent, DiscoveredTestTraceWithContent, DiscoveredWorkflowWithContent, DiscoveredStoryboardWithContent, CanvasDiscoveryResultWithContent, } from './discovery/types';
|
|
45
46
|
export { ScopesCanvasValidator, DEFAULT_SCOPE_COLOR, DRAFT_NODE_COLOR, isRecordFormat, getScopeNames, getScopeDefinition, getScopeColor, normalizeScopes, extractScopesFromResources, buildScopeColorMap, } from './scopes';
|
|
46
47
|
export type { ScopesCanvasValidationContext, ScopesCanvasValidationResult, ScopesCanvasViolation, NormalizedScope, } from './scopes';
|
|
48
|
+
export { DEFAULT_SPAN_COLOR, extractSpanConvention, extractSpanConventions, buildSpanColorMap, buildSpanColorMapFromCanvases, matchSpanPattern, getSpanColor, resolveEventSpanColor, } from './spans';
|
|
49
|
+
export type { NormalizedSpanConvention } from './spans';
|
|
47
50
|
export { ExecutionValidator, createExecutionValidator } from './execution/ExecutionValidator';
|
|
48
51
|
export type { ExecutionData, ValidationError, ExecutionValidationResult, } from './execution/ExecutionValidator';
|
|
49
52
|
export { analyzeCoverage } from './telemetry/coverage';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,kBAAkB,EAClB,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAG7E,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAKxF,YAAY,EAEV,WAAW,EACX,UAAU,EACV,cAAc,EACd,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,EACV,MAAM,EAEN,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,eAAe,EACf,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EAEjB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG5E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAI1D,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC3E,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAChH,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,EAC3B,aAAa,EACb,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* import { ... } from '@principal-ai/principal-view-core/node'
|
|
11
11
|
*/
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.
|
|
14
|
-
exports.InMemoryFileSystemAdapter = exports.getAllNodeIds = exports.findNodesMatchingEventPattern = exports.resolveWorkflowNodeIds = exports.resolveScenarioNodeIds = exports.getNodeEventName = exports.buildEventNodeMap = exports.buildNodeSourcesMap = exports.buildStoryboardContext = exports.LibraryDiscovery = exports.LibraryConverter = exports.LibraryLoader = exports.EventRecorderService = exports.SessionManager = exports.PathBasedEventProcessor = exports.analyzeCoverage = exports.createExecutionValidator = exports.ExecutionValidator = exports.buildScopeColorMap = exports.extractScopesFromResources = exports.normalizeScopes = exports.getScopeColor = exports.getScopeDefinition = exports.getScopeNames = exports.isRecordFormat = exports.DRAFT_NODE_COLOR = exports.DEFAULT_SCOPE_COLOR = exports.ScopesCanvasValidator = exports.CanvasDiscovery = exports.SpanMatcher = void 0;
|
|
13
|
+
exports.findScopeByName = exports.getUnmatchedScopes = exports.getPartialMatchedScopes = exports.getMatchedScopes = exports.getAllScopes = exports.getPrimaryScope = exports.getScopeFromUnmatchedSpan = exports.getScopeFromStoryboardMatch = exports.getScopeFromScenarioMatch = exports.groupSpansByTrace = exports.createInMemoryVersionRegistry = exports.InMemoryVersionRegistry = exports.isWarnSeverity = exports.isErrorSeverity = exports.getSpanDuration = exports.parseNanoTime = exports.flattenResourceAttributes = exports.getAttributeValue = exports.findAttribute = exports.getAttributeStringValue = exports.TraceOrchestrator = exports.CompositeRegistry = exports.LocalRegistry = exports.RemoteRegistry = exports.OtlpTraceParser = exports.getWorkflowRootSpan = exports.getEventSpan = exports.getEventTemplateString = exports.isEventTemplate = exports.setNestedValue = exports.getNestedValue = exports.computeAggregates = exports.hasEventMatching = exports.getRequiredEvents = exports.selectScenario = exports.ParsedTemplate = exports.parseTemplate = exports.renderEventTemplate = exports.renderWorkflow = exports.getConfigNameFromFilename = exports.isYamlFile = exports.parseYaml = exports.CanvasConverter = exports.resolveCanvasColor = exports.CANVAS_COLOR_PRESETS = exports.hasPVExtension = exports.isGroupNode = exports.isLinkNode = exports.isFileNode = exports.isTextNode = void 0;
|
|
14
|
+
exports.InMemoryFileSystemAdapter = exports.getAllNodeIds = exports.findNodesMatchingEventPattern = exports.resolveWorkflowNodeIds = exports.resolveScenarioNodeIds = exports.getNodeEventName = exports.buildEventNodeMap = exports.buildNodeSourcesMap = exports.buildStoryboardContext = exports.LibraryDiscovery = exports.LibraryConverter = exports.LibraryLoader = exports.EventRecorderService = exports.SessionManager = exports.PathBasedEventProcessor = exports.analyzeCoverage = exports.createExecutionValidator = exports.ExecutionValidator = exports.resolveEventSpanColor = exports.getSpanColor = exports.matchSpanPattern = exports.buildSpanColorMapFromCanvases = exports.buildSpanColorMap = exports.extractSpanConventions = exports.extractSpanConvention = exports.DEFAULT_SPAN_COLOR = exports.buildScopeColorMap = exports.extractScopesFromResources = exports.normalizeScopes = exports.getScopeColor = exports.getScopeDefinition = exports.getScopeNames = exports.isRecordFormat = exports.DRAFT_NODE_COLOR = exports.DEFAULT_SCOPE_COLOR = exports.ScopesCanvasValidator = exports.CanvasDiscovery = exports.SpanMatcher = exports.getScopeMatchSummary = exports.scopeHasMatches = exports.getScopeWithMostSpans = exports.getSpanCountForScope = void 0;
|
|
15
15
|
// Import canvas utility functions to re-export (avoids export-from syntax that breaks with exports field)
|
|
16
16
|
const canvas_1 = require("./types/canvas");
|
|
17
17
|
Object.defineProperty(exports, "isTextNode", { enumerable: true, get: function () { return canvas_1.isTextNode; } });
|
|
@@ -43,6 +43,11 @@ Object.defineProperty(exports, "hasEventMatching", { enumerable: true, get: func
|
|
|
43
43
|
Object.defineProperty(exports, "computeAggregates", { enumerable: true, get: function () { return scenario_matcher_1.computeAggregates; } });
|
|
44
44
|
Object.defineProperty(exports, "getNestedValue", { enumerable: true, get: function () { return scenario_matcher_1.getNestedValue; } });
|
|
45
45
|
Object.defineProperty(exports, "setNestedValue", { enumerable: true, get: function () { return scenario_matcher_1.setNestedValue; } });
|
|
46
|
+
var types_1 = require("./workflow/types");
|
|
47
|
+
Object.defineProperty(exports, "isEventTemplate", { enumerable: true, get: function () { return types_1.isEventTemplate; } });
|
|
48
|
+
Object.defineProperty(exports, "getEventTemplateString", { enumerable: true, get: function () { return types_1.getEventTemplateString; } });
|
|
49
|
+
Object.defineProperty(exports, "getEventSpan", { enumerable: true, get: function () { return types_1.getEventSpan; } });
|
|
50
|
+
Object.defineProperty(exports, "getWorkflowRootSpan", { enumerable: true, get: function () { return types_1.getWorkflowRootSpan; } });
|
|
46
51
|
// Export OTLP trace parser
|
|
47
52
|
var OtlpTraceParser_1 = require("./parsers/OtlpTraceParser");
|
|
48
53
|
Object.defineProperty(exports, "OtlpTraceParser", { enumerable: true, get: function () { return OtlpTraceParser_1.OtlpTraceParser; } });
|
|
@@ -105,6 +110,16 @@ Object.defineProperty(exports, "getScopeColor", { enumerable: true, get: functio
|
|
|
105
110
|
Object.defineProperty(exports, "normalizeScopes", { enumerable: true, get: function () { return scopes_1.normalizeScopes; } });
|
|
106
111
|
Object.defineProperty(exports, "extractScopesFromResources", { enumerable: true, get: function () { return scopes_1.extractScopesFromResources; } });
|
|
107
112
|
Object.defineProperty(exports, "buildScopeColorMap", { enumerable: true, get: function () { return scopes_1.buildScopeColorMap; } });
|
|
113
|
+
// Export spans module (span conventions + span color utilities)
|
|
114
|
+
var spans_1 = require("./spans");
|
|
115
|
+
Object.defineProperty(exports, "DEFAULT_SPAN_COLOR", { enumerable: true, get: function () { return spans_1.DEFAULT_SPAN_COLOR; } });
|
|
116
|
+
Object.defineProperty(exports, "extractSpanConvention", { enumerable: true, get: function () { return spans_1.extractSpanConvention; } });
|
|
117
|
+
Object.defineProperty(exports, "extractSpanConventions", { enumerable: true, get: function () { return spans_1.extractSpanConventions; } });
|
|
118
|
+
Object.defineProperty(exports, "buildSpanColorMap", { enumerable: true, get: function () { return spans_1.buildSpanColorMap; } });
|
|
119
|
+
Object.defineProperty(exports, "buildSpanColorMapFromCanvases", { enumerable: true, get: function () { return spans_1.buildSpanColorMapFromCanvases; } });
|
|
120
|
+
Object.defineProperty(exports, "matchSpanPattern", { enumerable: true, get: function () { return spans_1.matchSpanPattern; } });
|
|
121
|
+
Object.defineProperty(exports, "getSpanColor", { enumerable: true, get: function () { return spans_1.getSpanColor; } });
|
|
122
|
+
Object.defineProperty(exports, "resolveEventSpanColor", { enumerable: true, get: function () { return spans_1.resolveEventSpanColor; } });
|
|
108
123
|
// Export execution validation (browser-safe - no Node.js dependencies)
|
|
109
124
|
var ExecutionValidator_1 = require("./execution/ExecutionValidator");
|
|
110
125
|
Object.defineProperty(exports, "ExecutionValidator", { enumerable: true, get: function () { return ExecutionValidator_1.ExecutionValidator; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;AAEH,0GAA0G;AAC1G,2CAQwB;AAwFtB,2FA/FA,mBAAU,OA+FA;AACV,2FA/FA,mBAAU,OA+FA;AACV,2FA/FA,mBAAU,OA+FA;AACV,4FA/FA,oBAAW,OA+FA;AACX,+FA/FA,uBAAc,OA+FA;AACd,qGA/FA,6BAAoB,OA+FA;AACpB,mGA/FA,2BAAkB,OA+FA;AAGpB,2DAA0D;AAAjD,kHAAA,eAAe,OAAA;AAGxB,2CAA2C;AAC3C,iDAAsF;AAA7E,uGAAA,SAAS,OAAA;AAAE,wGAAA,UAAU,OAAA;AAAE,uHAAA,yBAAyB,OAAA;AAGzD,iDAAiD;AACjD,mEAAmE;AACnE,kEAAmF;AAA1E,mHAAA,cAAc,OAAA;AAAE,wHAAA,mBAAmB,OAAA;AAC5C,8DAA2E;AAAlE,gHAAA,aAAa,OAAA;AAAE,iHAAA,cAAc,OAAA;AAEtC,gEAOqC;AANnC,kHAAA,cAAc,OAAA;AACd,qHAAA,iBAAiB,OAAA;AACjB,oHAAA,gBAAgB,OAAA;AAChB,qHAAA,iBAAiB,OAAA;AACjB,kHAAA,cAAc,OAAA;AACd,kHAAA,cAAc,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spans module
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for working with span conventions from .spans.canvas files.
|
|
5
|
+
* Span colors are used as fill colors for events emitted within that span.
|
|
6
|
+
*
|
|
7
|
+
* Color Contract:
|
|
8
|
+
* - Scope color → Border (from library.yaml owned-scopes)
|
|
9
|
+
* - Span color → Fill (from .spans.canvas)
|
|
10
|
+
*/
|
|
11
|
+
export { DEFAULT_SPAN_COLOR, extractSpanConvention, extractSpanConventions, buildSpanColorMap, buildSpanColorMapFromCanvases, matchSpanPattern, getSpanColor, resolveEventSpanColor, type NormalizedSpanConvention, } from './utils';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/spans/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,iBAAiB,EACjB,6BAA6B,EAC7B,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Spans module
|
|
4
|
+
*
|
|
5
|
+
* Provides utilities for working with span conventions from .spans.canvas files.
|
|
6
|
+
* Span colors are used as fill colors for events emitted within that span.
|
|
7
|
+
*
|
|
8
|
+
* Color Contract:
|
|
9
|
+
* - Scope color → Border (from library.yaml owned-scopes)
|
|
10
|
+
* - Span color → Fill (from .spans.canvas)
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.resolveEventSpanColor = exports.getSpanColor = exports.matchSpanPattern = exports.buildSpanColorMapFromCanvases = exports.buildSpanColorMap = exports.extractSpanConventions = exports.extractSpanConvention = exports.DEFAULT_SPAN_COLOR = void 0;
|
|
14
|
+
var utils_1 = require("./utils");
|
|
15
|
+
Object.defineProperty(exports, "DEFAULT_SPAN_COLOR", { enumerable: true, get: function () { return utils_1.DEFAULT_SPAN_COLOR; } });
|
|
16
|
+
Object.defineProperty(exports, "extractSpanConvention", { enumerable: true, get: function () { return utils_1.extractSpanConvention; } });
|
|
17
|
+
Object.defineProperty(exports, "extractSpanConventions", { enumerable: true, get: function () { return utils_1.extractSpanConventions; } });
|
|
18
|
+
Object.defineProperty(exports, "buildSpanColorMap", { enumerable: true, get: function () { return utils_1.buildSpanColorMap; } });
|
|
19
|
+
Object.defineProperty(exports, "buildSpanColorMapFromCanvases", { enumerable: true, get: function () { return utils_1.buildSpanColorMapFromCanvases; } });
|
|
20
|
+
Object.defineProperty(exports, "matchSpanPattern", { enumerable: true, get: function () { return utils_1.matchSpanPattern; } });
|
|
21
|
+
Object.defineProperty(exports, "getSpanColor", { enumerable: true, get: function () { return utils_1.getSpanColor; } });
|
|
22
|
+
Object.defineProperty(exports, "resolveEventSpanColor", { enumerable: true, get: function () { return utils_1.resolveEventSpanColor; } });
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/spans/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,iCAUiB;AATf,2GAAA,kBAAkB,OAAA;AAClB,8GAAA,qBAAqB,OAAA;AACrB,+GAAA,sBAAsB,OAAA;AACtB,0GAAA,iBAAiB,OAAA;AACjB,sHAAA,6BAA6B,OAAA;AAC7B,yGAAA,gBAAgB,OAAA;AAChB,qGAAA,YAAY,OAAA;AACZ,8GAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Span utility functions
|
|
3
|
+
*
|
|
4
|
+
* Helpers for working with span conventions from .spans.canvas files.
|
|
5
|
+
* Span colors are used as fill colors for events emitted within that span.
|
|
6
|
+
*/
|
|
7
|
+
import type { ExtendedCanvas, ExtendedCanvasNode } from '../types/canvas';
|
|
8
|
+
/** Default color for spans without a defined color */
|
|
9
|
+
export declare const DEFAULT_SPAN_COLOR = "#9CA3AF";
|
|
10
|
+
/**
|
|
11
|
+
* Normalized span convention entry
|
|
12
|
+
*/
|
|
13
|
+
export interface NormalizedSpanConvention {
|
|
14
|
+
/** Unique identifier for this span convention */
|
|
15
|
+
id: string;
|
|
16
|
+
/** Pattern to match span names (e.g., "validate.*") */
|
|
17
|
+
spanPattern: string;
|
|
18
|
+
/** Color for this span (used as fill for events) */
|
|
19
|
+
color: string;
|
|
20
|
+
/** Human-readable description */
|
|
21
|
+
description?: string;
|
|
22
|
+
/** Status of the span convention */
|
|
23
|
+
status?: 'draft' | 'approved' | 'implemented';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extract span convention from a canvas node
|
|
27
|
+
*/
|
|
28
|
+
export declare function extractSpanConvention(node: ExtendedCanvasNode): NormalizedSpanConvention | null;
|
|
29
|
+
/**
|
|
30
|
+
* Extract all span conventions from a spans.canvas file
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractSpanConventions(canvas: ExtendedCanvas): NormalizedSpanConvention[];
|
|
33
|
+
/**
|
|
34
|
+
* Build a span color map from a spans.canvas
|
|
35
|
+
* Returns a map of spanPattern -> color for fast lookups
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildSpanColorMap(canvas: ExtendedCanvas | null | undefined): Record<string, string>;
|
|
38
|
+
/**
|
|
39
|
+
* Build a span color map from multiple spans.canvas files
|
|
40
|
+
* Later files override earlier ones for duplicate patterns
|
|
41
|
+
*/
|
|
42
|
+
export declare function buildSpanColorMapFromCanvases(canvases: (ExtendedCanvas | null | undefined)[]): Record<string, string>;
|
|
43
|
+
/**
|
|
44
|
+
* Match a span name to a span pattern
|
|
45
|
+
* Supports exact matches and wildcard patterns (e.g., "validate.*")
|
|
46
|
+
*/
|
|
47
|
+
export declare function matchSpanPattern(spanName: string, pattern: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Find the color for a span name by matching against span patterns
|
|
50
|
+
* Returns the first matching pattern's color, or default if none match
|
|
51
|
+
*/
|
|
52
|
+
export declare function getSpanColor(spanName: string, spanColorMap: Record<string, string>): string;
|
|
53
|
+
/**
|
|
54
|
+
* Resolve span color for an event based on its workflow's spanPattern
|
|
55
|
+
* This is the primary method for determining event fill color
|
|
56
|
+
*/
|
|
57
|
+
export declare function resolveEventSpanColor(workflowSpanPattern: string | undefined, spanColorMap: Record<string, string>): string;
|
|
58
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/spans/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,YAAY,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,iDAAiD;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;CAC/C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,wBAAwB,GAAG,IAAI,CAkC/F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,wBAAwB,EAAE,CAazF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWnG;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,CAAC,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,GAC9C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAYxB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAW3E;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CAcR;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,mBAAmB,EAAE,MAAM,GAAG,SAAS,EACvC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,MAAM,CASR"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Span utility functions
|
|
4
|
+
*
|
|
5
|
+
* Helpers for working with span conventions from .spans.canvas files.
|
|
6
|
+
* Span colors are used as fill colors for events emitted within that span.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.resolveEventSpanColor = exports.getSpanColor = exports.matchSpanPattern = exports.buildSpanColorMapFromCanvases = exports.buildSpanColorMap = exports.extractSpanConventions = exports.extractSpanConvention = exports.DEFAULT_SPAN_COLOR = void 0;
|
|
10
|
+
/** Default color for spans without a defined color */
|
|
11
|
+
exports.DEFAULT_SPAN_COLOR = '#9CA3AF'; // gray-400
|
|
12
|
+
/**
|
|
13
|
+
* Extract span convention from a canvas node
|
|
14
|
+
*/
|
|
15
|
+
function extractSpanConvention(node) {
|
|
16
|
+
const pv = node.pv;
|
|
17
|
+
if (!pv)
|
|
18
|
+
return null;
|
|
19
|
+
const nodeType = pv.nodeType;
|
|
20
|
+
if (nodeType !== 'span-convention')
|
|
21
|
+
return null;
|
|
22
|
+
const otel = pv.otel;
|
|
23
|
+
const spanPattern = otel?.spanPattern;
|
|
24
|
+
if (!spanPattern)
|
|
25
|
+
return null;
|
|
26
|
+
// Get color from node (required for span conventions)
|
|
27
|
+
const color = node.color;
|
|
28
|
+
if (!color)
|
|
29
|
+
return null;
|
|
30
|
+
// Extract description from node text if present (only text nodes have text)
|
|
31
|
+
let description;
|
|
32
|
+
if ('text' in node && typeof node.text === 'string') {
|
|
33
|
+
const text = node.text;
|
|
34
|
+
// Try to extract description from markdown (lines after the header)
|
|
35
|
+
const lines = text.split('\n');
|
|
36
|
+
const descLines = lines.filter(line => !line.startsWith('#') && line.trim());
|
|
37
|
+
if (descLines.length > 0) {
|
|
38
|
+
description = descLines.join(' ').trim();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
id: node.id,
|
|
43
|
+
spanPattern,
|
|
44
|
+
color,
|
|
45
|
+
description,
|
|
46
|
+
status: pv.status,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
exports.extractSpanConvention = extractSpanConvention;
|
|
50
|
+
/**
|
|
51
|
+
* Extract all span conventions from a spans.canvas file
|
|
52
|
+
*/
|
|
53
|
+
function extractSpanConventions(canvas) {
|
|
54
|
+
const conventions = [];
|
|
55
|
+
if (!canvas.nodes)
|
|
56
|
+
return conventions;
|
|
57
|
+
for (const node of canvas.nodes) {
|
|
58
|
+
const convention = extractSpanConvention(node);
|
|
59
|
+
if (convention) {
|
|
60
|
+
conventions.push(convention);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return conventions;
|
|
64
|
+
}
|
|
65
|
+
exports.extractSpanConventions = extractSpanConventions;
|
|
66
|
+
/**
|
|
67
|
+
* Build a span color map from a spans.canvas
|
|
68
|
+
* Returns a map of spanPattern -> color for fast lookups
|
|
69
|
+
*/
|
|
70
|
+
function buildSpanColorMap(canvas) {
|
|
71
|
+
const colorMap = {};
|
|
72
|
+
if (!canvas)
|
|
73
|
+
return colorMap;
|
|
74
|
+
const conventions = extractSpanConventions(canvas);
|
|
75
|
+
for (const convention of conventions) {
|
|
76
|
+
colorMap[convention.spanPattern] = convention.color;
|
|
77
|
+
}
|
|
78
|
+
return colorMap;
|
|
79
|
+
}
|
|
80
|
+
exports.buildSpanColorMap = buildSpanColorMap;
|
|
81
|
+
/**
|
|
82
|
+
* Build a span color map from multiple spans.canvas files
|
|
83
|
+
* Later files override earlier ones for duplicate patterns
|
|
84
|
+
*/
|
|
85
|
+
function buildSpanColorMapFromCanvases(canvases) {
|
|
86
|
+
const colorMap = {};
|
|
87
|
+
for (const canvas of canvases) {
|
|
88
|
+
if (!canvas)
|
|
89
|
+
continue;
|
|
90
|
+
const conventions = extractSpanConventions(canvas);
|
|
91
|
+
for (const convention of conventions) {
|
|
92
|
+
colorMap[convention.spanPattern] = convention.color;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return colorMap;
|
|
96
|
+
}
|
|
97
|
+
exports.buildSpanColorMapFromCanvases = buildSpanColorMapFromCanvases;
|
|
98
|
+
/**
|
|
99
|
+
* Match a span name to a span pattern
|
|
100
|
+
* Supports exact matches and wildcard patterns (e.g., "validate.*")
|
|
101
|
+
*/
|
|
102
|
+
function matchSpanPattern(spanName, pattern) {
|
|
103
|
+
// Exact match
|
|
104
|
+
if (spanName === pattern)
|
|
105
|
+
return true;
|
|
106
|
+
// Wildcard pattern (e.g., "validate.*")
|
|
107
|
+
if (pattern.endsWith('.*')) {
|
|
108
|
+
const prefix = pattern.slice(0, -2);
|
|
109
|
+
return spanName.startsWith(prefix + '.') || spanName === prefix;
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
exports.matchSpanPattern = matchSpanPattern;
|
|
114
|
+
/**
|
|
115
|
+
* Find the color for a span name by matching against span patterns
|
|
116
|
+
* Returns the first matching pattern's color, or default if none match
|
|
117
|
+
*/
|
|
118
|
+
function getSpanColor(spanName, spanColorMap) {
|
|
119
|
+
// First try exact match
|
|
120
|
+
if (spanColorMap[spanName]) {
|
|
121
|
+
return spanColorMap[spanName];
|
|
122
|
+
}
|
|
123
|
+
// Then try pattern matching
|
|
124
|
+
for (const [pattern, color] of Object.entries(spanColorMap)) {
|
|
125
|
+
if (matchSpanPattern(spanName, pattern)) {
|
|
126
|
+
return color;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return exports.DEFAULT_SPAN_COLOR;
|
|
130
|
+
}
|
|
131
|
+
exports.getSpanColor = getSpanColor;
|
|
132
|
+
/**
|
|
133
|
+
* Resolve span color for an event based on its workflow's spanPattern
|
|
134
|
+
* This is the primary method for determining event fill color
|
|
135
|
+
*/
|
|
136
|
+
function resolveEventSpanColor(workflowSpanPattern, spanColorMap) {
|
|
137
|
+
if (!workflowSpanPattern)
|
|
138
|
+
return exports.DEFAULT_SPAN_COLOR;
|
|
139
|
+
// Direct lookup (pattern as key)
|
|
140
|
+
if (spanColorMap[workflowSpanPattern]) {
|
|
141
|
+
return spanColorMap[workflowSpanPattern];
|
|
142
|
+
}
|
|
143
|
+
return exports.DEFAULT_SPAN_COLOR;
|
|
144
|
+
}
|
|
145
|
+
exports.resolveEventSpanColor = resolveEventSpanColor;
|
|
146
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/spans/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -151,6 +151,13 @@ export type {
|
|
|
151
151
|
EnhancedScenarioMatchResult,
|
|
152
152
|
WorkflowMatch,
|
|
153
153
|
SpanTreeNode,
|
|
154
|
+
EventTemplate,
|
|
155
|
+
} from './workflow/types';
|
|
156
|
+
export {
|
|
157
|
+
isEventTemplate,
|
|
158
|
+
getEventTemplateString,
|
|
159
|
+
getEventSpan,
|
|
160
|
+
getWorkflowRootSpan,
|
|
154
161
|
} from './workflow/types';
|
|
155
162
|
|
|
156
163
|
// Export OTEL types (OTLP data structures and helpers)
|
|
@@ -297,6 +304,19 @@ export type {
|
|
|
297
304
|
NormalizedScope,
|
|
298
305
|
} from './scopes';
|
|
299
306
|
|
|
307
|
+
// Export spans module (span conventions + span color utilities)
|
|
308
|
+
export {
|
|
309
|
+
DEFAULT_SPAN_COLOR,
|
|
310
|
+
extractSpanConvention,
|
|
311
|
+
extractSpanConventions,
|
|
312
|
+
buildSpanColorMap,
|
|
313
|
+
buildSpanColorMapFromCanvases,
|
|
314
|
+
matchSpanPattern,
|
|
315
|
+
getSpanColor,
|
|
316
|
+
resolveEventSpanColor,
|
|
317
|
+
} from './spans';
|
|
318
|
+
export type { NormalizedSpanConvention } from './spans';
|
|
319
|
+
|
|
300
320
|
// Export execution validation (browser-safe - no Node.js dependencies)
|
|
301
321
|
export { ExecutionValidator, createExecutionValidator } from './execution/ExecutionValidator';
|
|
302
322
|
export type {
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spans module
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for working with span conventions from .spans.canvas files.
|
|
5
|
+
* Span colors are used as fill colors for events emitted within that span.
|
|
6
|
+
*
|
|
7
|
+
* Color Contract:
|
|
8
|
+
* - Scope color → Border (from library.yaml owned-scopes)
|
|
9
|
+
* - Span color → Fill (from .spans.canvas)
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
DEFAULT_SPAN_COLOR,
|
|
14
|
+
extractSpanConvention,
|
|
15
|
+
extractSpanConventions,
|
|
16
|
+
buildSpanColorMap,
|
|
17
|
+
buildSpanColorMapFromCanvases,
|
|
18
|
+
matchSpanPattern,
|
|
19
|
+
getSpanColor,
|
|
20
|
+
resolveEventSpanColor,
|
|
21
|
+
type NormalizedSpanConvention,
|
|
22
|
+
} from './utils';
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Span utility functions
|
|
3
|
+
*
|
|
4
|
+
* Helpers for working with span conventions from .spans.canvas files.
|
|
5
|
+
* Span colors are used as fill colors for events emitted within that span.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { ExtendedCanvas, ExtendedCanvasNode } from '../types/canvas';
|
|
9
|
+
|
|
10
|
+
/** Default color for spans without a defined color */
|
|
11
|
+
export const DEFAULT_SPAN_COLOR = '#9CA3AF'; // gray-400
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Normalized span convention entry
|
|
15
|
+
*/
|
|
16
|
+
export interface NormalizedSpanConvention {
|
|
17
|
+
/** Unique identifier for this span convention */
|
|
18
|
+
id: string;
|
|
19
|
+
/** Pattern to match span names (e.g., "validate.*") */
|
|
20
|
+
spanPattern: string;
|
|
21
|
+
/** Color for this span (used as fill for events) */
|
|
22
|
+
color: string;
|
|
23
|
+
/** Human-readable description */
|
|
24
|
+
description?: string;
|
|
25
|
+
/** Status of the span convention */
|
|
26
|
+
status?: 'draft' | 'approved' | 'implemented';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Extract span convention from a canvas node
|
|
31
|
+
*/
|
|
32
|
+
export function extractSpanConvention(node: ExtendedCanvasNode): NormalizedSpanConvention | null {
|
|
33
|
+
const pv = node.pv;
|
|
34
|
+
if (!pv) return null;
|
|
35
|
+
|
|
36
|
+
const nodeType = pv.nodeType;
|
|
37
|
+
if (nodeType !== 'span-convention') return null;
|
|
38
|
+
|
|
39
|
+
const otel = pv.otel as { spanPattern?: string; spanKind?: string } | undefined;
|
|
40
|
+
const spanPattern = otel?.spanPattern;
|
|
41
|
+
if (!spanPattern) return null;
|
|
42
|
+
|
|
43
|
+
// Get color from node (required for span conventions)
|
|
44
|
+
const color = node.color as string | undefined;
|
|
45
|
+
if (!color) return null;
|
|
46
|
+
|
|
47
|
+
// Extract description from node text if present (only text nodes have text)
|
|
48
|
+
let description: string | undefined;
|
|
49
|
+
if ('text' in node && typeof node.text === 'string') {
|
|
50
|
+
const text = node.text;
|
|
51
|
+
// Try to extract description from markdown (lines after the header)
|
|
52
|
+
const lines = text.split('\n');
|
|
53
|
+
const descLines = lines.filter(line => !line.startsWith('#') && line.trim());
|
|
54
|
+
if (descLines.length > 0) {
|
|
55
|
+
description = descLines.join(' ').trim();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return {
|
|
60
|
+
id: node.id,
|
|
61
|
+
spanPattern,
|
|
62
|
+
color,
|
|
63
|
+
description,
|
|
64
|
+
status: pv.status as 'draft' | 'approved' | 'implemented' | undefined,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Extract all span conventions from a spans.canvas file
|
|
70
|
+
*/
|
|
71
|
+
export function extractSpanConventions(canvas: ExtendedCanvas): NormalizedSpanConvention[] {
|
|
72
|
+
const conventions: NormalizedSpanConvention[] = [];
|
|
73
|
+
|
|
74
|
+
if (!canvas.nodes) return conventions;
|
|
75
|
+
|
|
76
|
+
for (const node of canvas.nodes) {
|
|
77
|
+
const convention = extractSpanConvention(node);
|
|
78
|
+
if (convention) {
|
|
79
|
+
conventions.push(convention);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return conventions;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Build a span color map from a spans.canvas
|
|
88
|
+
* Returns a map of spanPattern -> color for fast lookups
|
|
89
|
+
*/
|
|
90
|
+
export function buildSpanColorMap(canvas: ExtendedCanvas | null | undefined): Record<string, string> {
|
|
91
|
+
const colorMap: Record<string, string> = {};
|
|
92
|
+
|
|
93
|
+
if (!canvas) return colorMap;
|
|
94
|
+
|
|
95
|
+
const conventions = extractSpanConventions(canvas);
|
|
96
|
+
for (const convention of conventions) {
|
|
97
|
+
colorMap[convention.spanPattern] = convention.color;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
return colorMap;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Build a span color map from multiple spans.canvas files
|
|
105
|
+
* Later files override earlier ones for duplicate patterns
|
|
106
|
+
*/
|
|
107
|
+
export function buildSpanColorMapFromCanvases(
|
|
108
|
+
canvases: (ExtendedCanvas | null | undefined)[]
|
|
109
|
+
): Record<string, string> {
|
|
110
|
+
const colorMap: Record<string, string> = {};
|
|
111
|
+
|
|
112
|
+
for (const canvas of canvases) {
|
|
113
|
+
if (!canvas) continue;
|
|
114
|
+
const conventions = extractSpanConventions(canvas);
|
|
115
|
+
for (const convention of conventions) {
|
|
116
|
+
colorMap[convention.spanPattern] = convention.color;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
return colorMap;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Match a span name to a span pattern
|
|
125
|
+
* Supports exact matches and wildcard patterns (e.g., "validate.*")
|
|
126
|
+
*/
|
|
127
|
+
export function matchSpanPattern(spanName: string, pattern: string): boolean {
|
|
128
|
+
// Exact match
|
|
129
|
+
if (spanName === pattern) return true;
|
|
130
|
+
|
|
131
|
+
// Wildcard pattern (e.g., "validate.*")
|
|
132
|
+
if (pattern.endsWith('.*')) {
|
|
133
|
+
const prefix = pattern.slice(0, -2);
|
|
134
|
+
return spanName.startsWith(prefix + '.') || spanName === prefix;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Find the color for a span name by matching against span patterns
|
|
142
|
+
* Returns the first matching pattern's color, or default if none match
|
|
143
|
+
*/
|
|
144
|
+
export function getSpanColor(
|
|
145
|
+
spanName: string,
|
|
146
|
+
spanColorMap: Record<string, string>
|
|
147
|
+
): string {
|
|
148
|
+
// First try exact match
|
|
149
|
+
if (spanColorMap[spanName]) {
|
|
150
|
+
return spanColorMap[spanName];
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Then try pattern matching
|
|
154
|
+
for (const [pattern, color] of Object.entries(spanColorMap)) {
|
|
155
|
+
if (matchSpanPattern(spanName, pattern)) {
|
|
156
|
+
return color;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return DEFAULT_SPAN_COLOR;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Resolve span color for an event based on its workflow's spanPattern
|
|
165
|
+
* This is the primary method for determining event fill color
|
|
166
|
+
*/
|
|
167
|
+
export function resolveEventSpanColor(
|
|
168
|
+
workflowSpanPattern: string | undefined,
|
|
169
|
+
spanColorMap: Record<string, string>
|
|
170
|
+
): string {
|
|
171
|
+
if (!workflowSpanPattern) return DEFAULT_SPAN_COLOR;
|
|
172
|
+
|
|
173
|
+
// Direct lookup (pattern as key)
|
|
174
|
+
if (spanColorMap[workflowSpanPattern]) {
|
|
175
|
+
return spanColorMap[workflowSpanPattern];
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
return DEFAULT_SPAN_COLOR;
|
|
179
|
+
}
|