@assistant-ui/react-o11y 0.0.13 → 0.0.15
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 +36 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/context/SpanByIndexProvider.d.ts +7 -3
- package/dist/context/SpanByIndexProvider.d.ts.map +1 -1
- package/dist/context/SpanByIndexProvider.js +16 -12
- package/dist/context/SpanByIndexProvider.js.map +1 -1
- package/dist/index.d.ts +5 -6
- package/dist/index.js +4 -4
- package/dist/o11y-scope.d.ts +36 -35
- package/dist/o11y-scope.d.ts.map +1 -1
- package/dist/o11y-scope.js +0 -1
- package/dist/primitives/span/SpanChildren.d.ts +24 -22
- package/dist/primitives/span/SpanChildren.d.ts.map +1 -1
- package/dist/primitives/span/SpanChildren.js +32 -27
- package/dist/primitives/span/SpanChildren.js.map +1 -1
- package/dist/primitives/span/SpanCollapseToggle.d.ts +10 -6
- package/dist/primitives/span/SpanCollapseToggle.d.ts.map +1 -1
- package/dist/primitives/span/SpanCollapseToggle.js +22 -13
- package/dist/primitives/span/SpanCollapseToggle.js.map +1 -1
- package/dist/primitives/span/SpanIndent.d.ts +15 -11
- package/dist/primitives/span/SpanIndent.d.ts.map +1 -1
- package/dist/primitives/span/SpanIndent.js +23 -9
- package/dist/primitives/span/SpanIndent.js.map +1 -1
- package/dist/primitives/span/SpanName.d.ts +10 -6
- package/dist/primitives/span/SpanName.d.ts.map +1 -1
- package/dist/primitives/span/SpanName.js +13 -5
- package/dist/primitives/span/SpanName.js.map +1 -1
- package/dist/primitives/span/SpanRoot.d.ts +10 -6
- package/dist/primitives/span/SpanRoot.d.ts.map +1 -1
- package/dist/primitives/span/SpanRoot.js +21 -9
- package/dist/primitives/span/SpanRoot.js.map +1 -1
- package/dist/primitives/span/SpanStatusIndicator.d.ts +10 -6
- package/dist/primitives/span/SpanStatusIndicator.d.ts.map +1 -1
- package/dist/primitives/span/SpanStatusIndicator.js +13 -5
- package/dist/primitives/span/SpanStatusIndicator.js.map +1 -1
- package/dist/primitives/span/SpanTypeBadge.d.ts +10 -6
- package/dist/primitives/span/SpanTypeBadge.d.ts.map +1 -1
- package/dist/primitives/span/SpanTypeBadge.js +14 -5
- package/dist/primitives/span/SpanTypeBadge.js.map +1 -1
- package/dist/primitives/span.d.ts +14 -7
- package/dist/primitives/span.d.ts.map +1 -1
- package/dist/primitives/span.js +21 -7
- package/dist/primitives/span.js.map +1 -1
- package/dist/resources/SpanResource.d.ts +17 -14
- package/dist/resources/SpanResource.d.ts.map +1 -1
- package/dist/resources/SpanResource.js +127 -129
- package/dist/resources/SpanResource.js.map +1 -1
- package/package.json +6 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/o11y-scope.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SpanResource.js","
|
|
1
|
+
{"version":3,"file":"SpanResource.js","names":[],"sources":["../../src/resources/SpanResource.tsx"],"sourcesContent":["import \"../o11y-scope\";\n\nimport { resource, tapMemo, tapState, withKey } from \"@assistant-ui/tap\";\nimport { tapClientLookup, type ClientOutput } from \"@assistant-ui/store\";\nimport type { SpanItemState, SpanState } from \"../o11y-scope\";\n\nexport type SpanData = {\n id: string;\n parentSpanId: string | null;\n name: string;\n type: string;\n status: \"running\" | \"completed\" | \"failed\" | \"skipped\";\n startedAt: number;\n endedAt: number | null;\n latencyMs: number | null;\n};\n\nfunction calculateDepth(\n spanId: string,\n spanMap: Map<string, SpanData>,\n cache: Map<string, number>,\n): number {\n const cached = cache.get(spanId);\n if (cached !== undefined) return cached;\n\n const span = spanMap.get(spanId);\n if (!span?.parentSpanId) {\n cache.set(spanId, 0);\n return 0;\n }\n\n const depth = calculateDepth(span.parentSpanId, spanMap, cache) + 1;\n cache.set(spanId, depth);\n return depth;\n}\n\nfunction enrichSpans(rawSpans: SpanData[]): {\n allSpans: Map<string, SpanItemState>;\n timeRange: { min: number; max: number };\n} {\n const spanMap = new Map<string, SpanData>();\n for (const span of rawSpans) {\n spanMap.set(span.id, span);\n }\n\n const depthCache = new Map<string, number>();\n const childrenCount = new Map<string, number>();\n for (const span of rawSpans) {\n if (span.parentSpanId) {\n childrenCount.set(\n span.parentSpanId,\n (childrenCount.get(span.parentSpanId) ?? 0) + 1,\n );\n }\n }\n\n const allSpans = new Map<string, SpanItemState>();\n let min = Infinity;\n let max = -Infinity;\n\n for (const span of rawSpans) {\n const depth = calculateDepth(span.id, spanMap, depthCache);\n const hasChildren = (childrenCount.get(span.id) ?? 0) > 0;\n allSpans.set(span.id, { ...span, depth, hasChildren, isCollapsed: false });\n\n if (span.startedAt < min) min = span.startedAt;\n const end = span.endedAt ?? Date.now();\n if (end > max) max = end;\n }\n\n if (min === Infinity) min = Date.now();\n if (max === -Infinity) max = Date.now();\n if (max === min) max = min + 100;\n\n return { allSpans, timeRange: { min, max } };\n}\n\nfunction buildFlatList(\n allSpans: Map<string, SpanItemState>,\n collapsedIds: Set<string>,\n): SpanItemState[] {\n const children = new Map<string | null, SpanItemState[]>();\n for (const span of allSpans.values()) {\n const parent = span.parentSpanId ?? null;\n let group = children.get(parent);\n if (!group) {\n group = [];\n children.set(parent, group);\n }\n group.push(span);\n }\n\n for (const group of children.values()) {\n group.sort((a, b) => a.startedAt - b.startedAt);\n }\n\n const result: SpanItemState[] = [];\n function dfs(parentId: string | null) {\n const kids = children.get(parentId);\n if (!kids) return;\n for (const span of kids) {\n result.push({ ...span, isCollapsed: collapsedIds.has(span.id) });\n if (!collapsedIds.has(span.id)) {\n dfs(span.id);\n }\n }\n }\n dfs(null);\n return result;\n}\n\nconst SpanChildResource = resource(\n ({\n span,\n timeRange,\n onToggleCollapse,\n }: {\n span: SpanItemState;\n timeRange: { min: number; max: number };\n onToggleCollapse: (spanId: string) => void;\n }): ClientOutput<\"span\"> => {\n const state: SpanState = {\n ...span,\n children: [],\n timeRange,\n };\n return {\n getState: () => state,\n child: () => {\n throw new Error(\"child spans do not have children in flat mode\");\n },\n toggleCollapse: () => {\n onToggleCollapse(span.id);\n },\n };\n },\n);\n\nexport const SpanResource = resource(\n ({ spans }: { spans: SpanData[] }): ClientOutput<\"span\"> => {\n const { allSpans, timeRange } = tapMemo(() => enrichSpans(spans), [spans]);\n\n const [collapsedIds, setCollapsedIds] = tapState<Set<string>>(\n () => new Set(),\n );\n\n const visibleSpans = tapMemo(\n () => buildFlatList(allSpans, collapsedIds),\n [allSpans, collapsedIds],\n );\n\n const toggleCollapse = (spanId: string) => {\n setCollapsedIds((prev) => {\n const next = new Set(prev);\n if (next.has(spanId)) {\n next.delete(spanId);\n } else {\n next.add(spanId);\n }\n return next;\n });\n };\n\n const lookup = tapClientLookup(\n () =>\n visibleSpans.map((span) =>\n withKey(\n span.id,\n SpanChildResource({\n span,\n timeRange,\n onToggleCollapse: toggleCollapse,\n }),\n ),\n ),\n [visibleSpans, timeRange, toggleCollapse],\n );\n\n const rootState: SpanState = {\n id: \"__root__\",\n parentSpanId: null,\n name: \"\",\n type: \"root\",\n status: \"completed\",\n startedAt: timeRange.min,\n endedAt: timeRange.max,\n latencyMs: timeRange.max - timeRange.min,\n depth: -1,\n hasChildren: lookup.state.length > 0,\n isCollapsed: false,\n children: lookup.state,\n timeRange,\n };\n\n return {\n getState: () => rootState,\n child: lookup.get,\n toggleCollapse: () => {\n // Root span collapse is a no-op\n },\n };\n },\n);\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assistant-ui/react-o11y",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.15",
|
|
4
4
|
"description": "Observability primitives for @assistant-ui",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"observability",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"sideEffects": false,
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@radix-ui/react-primitive": "^2.1.4",
|
|
32
|
-
"@assistant-ui/store": "0.2.
|
|
33
|
-
"@assistant-ui/tap": "0.5.
|
|
32
|
+
"@assistant-ui/store": "0.2.12",
|
|
33
|
+
"@assistant-ui/tap": "0.5.12"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"@types/react": "*",
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
}
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
|
-
"@types/react": "^19.2.
|
|
46
|
-
"react": "^19.2.
|
|
47
|
-
"@assistant-ui/x-buildutils": "0.0.
|
|
45
|
+
"@types/react": "^19.2.15",
|
|
46
|
+
"react": "^19.2.6",
|
|
47
|
+
"@assistant-ui/x-buildutils": "0.0.9"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public",
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,6BAA0B;AAEnD,OAAO,EAAE,YAAY,EAAE,oCAAiC;AACxD,YAAY,EAAE,QAAQ,EAAE,oCAAiC;AACzD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,wBAAqB;AAE7D,OAAO,EAAE,mBAAmB,EAAE,yCAAsC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,6BAA0B;AAEnD,OAAO,EAAE,YAAY,EAAE,oCAAiC;AAIxD,OAAO,EAAE,mBAAmB,EAAE,yCAAsC"}
|
package/dist/o11y-scope.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"o11y-scope.js","sourceRoot":"","sources":["../src/o11y-scope.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC"}
|