@aceshooting/lyra-ui 21.0.0 → 21.1.0
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/CHANGELOG.md +56 -0
- package/README.md +6 -3
- package/custom-elements.json +1 -1
- package/dist/ai/runtime.js +1 -1
- package/dist/ai/types.d.ts +13 -5
- package/dist/cli/lyra-rename-ledger.mjs +1 -0
- package/dist/cli/migrate-wa.mjs +33 -13
- package/dist/cli/migration-contract.json +1 -1
- package/dist/components/agent-tools/agent-trace/agent-trace.class.d.ts +5 -3
- package/dist/components/agent-tools/agent-trace/agent-trace.class.js +3 -2
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.d.ts +15 -3
- package/dist/components/agent-tools/tool-call-block/tool-call-block.class.js +3 -3
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.d.ts +24 -8
- package/dist/components/agent-tools/tool-call-chip/tool-call-chip.class.js +3 -3
- package/dist/components/agent-tools/tool-param-form/tool-param-form.class.js +4 -0
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.d.ts +9 -5
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.class.js +2 -2
- package/dist/components/agent-tools/tool-result-dialog/tool-result-dialog.styles.js +1 -1
- package/dist/components/agent-tools/tool-status.js +2 -2
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.d.ts +8 -0
- package/dist/components/agent-tools/tool-timeline/tool-timeline.class.js +3 -2
- package/dist/components/agent-tools/tool-timeline/tool-timeline.styles.js +1 -1
- package/dist/components/agent-tools/trace-tree/span.d.ts +2 -2
- package/dist/components/charts/chart/box-plot.class.d.ts +3 -1
- package/dist/components/charts/chart/box-plot.class.js +9 -9
- package/dist/components/charts/chart/chart-bidi.d.ts +109 -0
- package/dist/components/charts/chart/chart-bidi.js +1 -0
- package/dist/components/charts/chart/chart.class.d.ts +17 -2
- package/dist/components/charts/chart/chart.class.js +10 -8
- package/dist/components/charts/chart/histogram.class.js +1 -1
- package/dist/components/charts/chart/lite-chart.class.d.ts +24 -5
- package/dist/components/charts/chart/lite-chart.class.js +9 -9
- package/dist/components/charts/chart/lite-chart.styles.js +1 -1
- package/dist/components/conversation/code-block/shiki-dark-theme.d.ts +2 -2
- package/dist/components/conversation/code-block/shiki-dark-theme.js +1 -1
- package/dist/components/conversation/conversation-item/conversation-item.class.d.ts +18 -2
- package/dist/components/conversation/conversation-item/conversation-item.class.js +3 -3
- package/dist/components/conversation/conversation-item/conversation-item.styles.js +1 -1
- package/dist/components/conversation/markdown/markdown-base.class.js +1 -1
- package/dist/components/conversation/markdown/markdown-core.class.d.ts +3 -1
- package/dist/components/conversation/markdown/markdown.class.d.ts +3 -1
- package/dist/components/conversation/message-actions/message-actions.class.d.ts +7 -2
- package/dist/components/conversation/message-actions/message-actions.class.js +2 -2
- package/dist/components/conversation/message-parts/message-parts.class.d.ts +6 -2
- package/dist/components/conversation/message-parts/message-parts.class.js +5 -3
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.d.ts +3 -2
- package/dist/components/conversation/selection-toolbar/selection-toolbar.class.js +1 -1
- package/dist/components/conversation/streaming-text/streaming-text-base.class.d.ts +1 -5
- package/dist/components/conversation/streaming-text/streaming-text-base.class.js +2 -2
- package/dist/components/conversation/streaming-text/streaming-text-core.class.d.ts +7 -1
- package/dist/components/conversation/streaming-text/streaming-text-core.class.js +3 -4
- package/dist/components/conversation/streaming-text/streaming-text.class.d.ts +7 -1
- package/dist/components/conversation/streaming-text/streaming-text.class.js +3 -4
- package/dist/components/conversation/thread-list/thread-list.class.d.ts +13 -2
- package/dist/components/conversation/thread-list/thread-list.class.js +3 -3
- package/dist/components/data/data-grid/data-grid.class.js +1 -1
- package/dist/components/data/document-library/document-library.class.js +2 -0
- package/dist/components/data/flow-canvas/flow-canvas.class.js +1 -1
- package/dist/components/data/flow-minimap/flow-minimap.class.js +1 -1
- package/dist/components/data/flow-node/flow-node.class.d.ts +6 -2
- package/dist/components/data/flow-node/flow-node.class.js +6 -2
- package/dist/components/data/flow-node/flow-node.styles.js +1 -1
- package/dist/components/data/gauge/gauge.styles.js +1 -1
- package/dist/components/data/heatmap/heatmap.class.d.ts +3 -0
- package/dist/components/data/heatmap/heatmap.class.js +2 -2
- package/dist/components/data/heatmap/heatmap.styles.js +1 -1
- package/dist/components/data/sparkline/sparkline.class.d.ts +5 -3
- package/dist/components/data/stat/stat.class.d.ts +4 -3
- package/dist/components/data/table/table.class.d.ts +32 -5
- package/dist/components/data/table/table.class.js +3 -2
- package/dist/components/forms/button/button.class.d.ts +7 -1
- package/dist/components/forms/button/button.styles.js +1 -1
- package/dist/components/forms/date-picker/date-input.styles.js +1 -1
- package/dist/components/forms/input/input.styles.js +1 -1
- package/dist/components/forms/rubric-form/rubric-form.class.js +1 -0
- package/dist/components/layout/app-rail/app-rail.class.d.ts +50 -11
- package/dist/components/layout/app-rail/app-rail.class.js +2 -2
- package/dist/components/layout/command-palette/command-palette.class.js +1 -1
- package/dist/components/layout/menu/menu.class.d.ts +6 -5
- package/dist/components/layout/split-panel/split-panel.class.d.ts +2 -1
- package/dist/components/media/flag/language-map.d.ts +8 -0
- package/dist/components/media/flag/language-map.js +1 -1
- package/dist/components/media/map/map-loader.d.ts +7 -1
- package/dist/components/media/map/map.class.d.ts +111 -5
- package/dist/components/media/map/map.class.js +3 -3
- package/dist/components/media/media-card/media-card.class.d.ts +18 -5
- package/dist/components/media/media-card/media-card.class.js +1 -1
- package/dist/components/overlays/overlay/popover.class.d.ts +20 -0
- package/dist/components/overlays/overlay/popover.class.js +2 -2
- package/dist/components/retrieval/graph/graph.class.d.ts +3 -3
- package/dist/components/retrieval/graph/graph.class.js +1 -1
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.d.ts +5 -3
- package/dist/components/retrieval/knowledge-graph-explorer/knowledge-graph-explorer.class.js +3 -2
- package/dist/components/retrieval/mind-map/mind-map.class.d.ts +3 -3
- package/dist/components/retrieval/mind-map/mind-map.class.js +1 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.d.ts +4 -1
- package/dist/components/retrieval/retrieval-results/retrieval-results.class.js +5 -1
- package/dist/components/retrieval/source-picker/source-picker.class.d.ts +4 -1
- package/dist/components/retrieval/source-picker/source-picker.class.js +5 -1
- package/dist/components/utility/icon/icon.class.d.ts +9 -3
- package/dist/components/utility/icon/icon.class.js +1 -1
- package/dist/components/utility/mutation-observer/mutation-observer.class.d.ts +14 -8
- package/dist/components/utility/mutation-observer/mutation-observer.class.js +1 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.d.ts +6 -1
- package/dist/components/viewers/document-viewer/document-viewer.class.js +7 -1
- package/dist/components/viewers/document-viewer/registry.d.ts +12 -3
- package/dist/components/viewers/geojson-view/geojson-view.class.d.ts +13 -5
- package/dist/components/viewers/geojson-view/geojson-view.class.js +1 -1
- package/dist/components/viewers/geojson-view/geojson-viewer.class.d.ts +3 -2
- package/dist/custom-elements-jsx.d.ts +1 -1
- package/dist/events.d.ts +644 -1242
- package/dist/internal/anchored-overlay-runtime.d.ts +2 -2
- package/dist/internal/cell-range.d.ts +0 -6
- package/dist/internal/cell-range.js +1 -1
- package/dist/internal/css-token-length.d.ts +7 -0
- package/dist/internal/css-token-length.js +1 -0
- package/dist/internal/default-strings.generated.d.ts +1 -1
- package/dist/internal/default-strings.generated.js +1 -1
- package/dist/internal/deferred-focus-return.d.ts +7 -4
- package/dist/internal/deferred-focus-return.js +1 -1
- package/dist/internal/dev-mode-attribute-warning.d.ts +35 -0
- package/dist/internal/dev-mode-attribute-warning.js +1 -1
- package/dist/internal/localization-runtime.js +1 -1
- package/dist/internal/localization-types.d.ts +1 -1
- package/dist/internal/localization.js +2 -2
- package/dist/internal/package-metadata.d.ts +1 -1
- package/dist/internal/package-metadata.js +1 -1
- package/dist/internal/papaparse-loader.d.ts +1 -1
- package/dist/internal/papaparse-loader.js +1 -1
- package/dist/internal/positioner.d.ts +10 -0
- package/dist/internal/positioner.js +1 -1
- package/dist/internal/shared-unions.d.ts +2 -1
- package/dist/internal/slotted-overlay-controller.d.ts +20 -0
- package/dist/internal/slotted-overlay-controller.js +1 -0
- package/dist/internal/text-quote.d.ts +1 -1
- package/dist/internal/text-quote.js +1 -1
- package/dist/internal/theme-observation.d.ts +4 -0
- package/dist/internal/theme-observation.js +1 -0
- package/dist/internal/theme-watcher.js +1 -1
- package/dist/localization.d.ts +6 -1
- package/dist/localization.js +1 -1
- package/dist/lyra.d.ts +1 -1
- package/dist/lyra.js +1 -1
- package/dist/svelte.d.ts +1 -1
- package/dist/testing/lyra-tag-event-map.js +1 -1
- package/dist/translations/ar/agent-tools.js +1 -1
- package/dist/translations/cs/agent-tools.js +1 -1
- package/dist/translations/da/agent-tools.js +1 -1
- package/dist/translations/de/agent-tools.js +1 -1
- package/dist/translations/de-CH/agent-tools.js +1 -1
- package/dist/translations/es/agent-tools.js +1 -1
- package/dist/translations/fa/agent-tools.js +1 -1
- package/dist/translations/fi/agent-tools.js +1 -1
- package/dist/translations/fr/agent-tools.js +1 -1
- package/dist/translations/he/agent-tools.js +1 -1
- package/dist/translations/hi/agent-tools.js +1 -1
- package/dist/translations/hr/agent-tools.js +1 -1
- package/dist/translations/hu/agent-tools.js +1 -1
- package/dist/translations/id/agent-tools.js +1 -1
- package/dist/translations/it/agent-tools.js +1 -1
- package/dist/translations/ja/agent-tools.js +1 -1
- package/dist/translations/kk/agent-tools.js +1 -1
- package/dist/translations/ko/agent-tools.js +1 -1
- package/dist/translations/nb/agent-tools.js +1 -1
- package/dist/translations/nl/agent-tools.js +1 -1
- package/dist/translations/nn/agent-tools.js +1 -1
- package/dist/translations/pl/agent-tools.js +1 -1
- package/dist/translations/pt-BR/agent-tools.js +1 -1
- package/dist/translations/pt-PT/agent-tools.js +1 -1
- package/dist/translations/pt-PT/charts.js +1 -1
- package/dist/translations/pt-PT/conversation.js +1 -1
- package/dist/translations/pt-PT/data.js +1 -1
- package/dist/translations/pt-PT/forms.js +1 -1
- package/dist/translations/pt-PT/layout.js +1 -1
- package/dist/translations/pt-PT/media.js +1 -1
- package/dist/translations/pt-PT/retrieval.js +1 -1
- package/dist/translations/pt-PT/shared.js +1 -1
- package/dist/translations/pt-PT/utility.js +1 -1
- package/dist/translations/pt-PT/viewers.js +2 -2
- package/dist/translations/ro/agent-tools.js +1 -1
- package/dist/translations/ru/agent-tools.js +1 -1
- package/dist/translations/sl/agent-tools.js +1 -1
- package/dist/translations/sv/agent-tools.js +1 -1
- package/dist/translations/tr/agent-tools.js +1 -1
- package/dist/translations/uk/agent-tools.js +1 -1
- package/dist/translations/zh-CN/agent-tools.js +1 -1
- package/dist/translations/zh-TW/agent-tools.js +1 -1
- package/dist/utilities/index.d.ts +1 -1
- package/dist/utilities/index.js +1 -1
- package/dist/utilities/localization.d.ts +28 -10
- package/dist/vue.d.ts +1 -1
- package/llms/components/lr-accordion-item.md +2 -344
- package/llms/components/lr-accordion.md +2 -344
- package/llms/components/lr-app-rail-group.md +2 -721
- package/llms/components/lr-app-rail-item.md +2 -721
- package/llms/components/lr-app-rail.md +29 -4
- package/llms/components/lr-bar-chart.md +2 -87
- package/llms/components/lr-box-plot.md +1 -1
- package/llms/components/lr-breadcrumb-item.md +2 -67
- package/llms/components/lr-bubble-chart.md +2 -87
- package/llms/components/lr-button.md +7 -0
- package/llms/components/lr-chart.md +4 -5
- package/llms/components/lr-chip-group.md +2 -272
- package/llms/components/lr-conversation-item.md +20 -2
- package/llms/components/lr-date-input.md +2 -457
- package/llms/components/lr-date-picker.md +6 -2
- package/llms/components/lr-document-library.md +3 -3
- package/llms/components/lr-document-viewer.md +14 -5
- package/llms/components/lr-doughnut-chart.md +2 -87
- package/llms/components/lr-dropdown-item.md +2 -306
- package/llms/components/lr-dropdown.md +6 -0
- package/llms/components/lr-flag.md +9 -1
- package/llms/components/lr-flow-node.md +4 -1
- package/llms/components/lr-geojson-view.md +3 -90
- package/llms/components/lr-geojson-viewer.md +13 -5
- package/llms/components/lr-icon-button.md +4 -1
- package/llms/components/lr-icon.md +14 -6
- package/llms/components/lr-input.md +9 -2
- package/llms/components/lr-lite-chart.md +17 -9
- package/llms/components/lr-map.md +87 -2
- package/llms/components/lr-markdown-core.md +5 -4
- package/llms/components/lr-markdown.md +4 -2
- package/llms/components/lr-media-card.md +10 -5
- package/llms/components/lr-menu-item.md +2 -306
- package/llms/components/lr-menu.md +9 -6
- package/llms/components/lr-menubar-item.md +2 -125
- package/llms/components/lr-message-actions.md +4 -1
- package/llms/components/lr-message-parts.md +14 -5
- package/llms/components/lr-mutation-observer.md +12 -6
- package/llms/components/lr-navigation-menu-item.md +2 -237
- package/llms/components/lr-number-input.md +4 -0
- package/llms/components/lr-option.md +2 -712
- package/llms/components/lr-pie-chart.md +2 -87
- package/llms/components/lr-polar-area-chart.md +2 -87
- package/llms/components/lr-popover.md +10 -0
- package/llms/components/lr-prompt-input.md +5 -1
- package/llms/components/lr-radar-chart.md +2 -87
- package/llms/components/lr-reorder-item.md +2 -157
- package/llms/components/lr-result-field.md +2 -117
- package/llms/components/lr-retrieval-results.md +3 -1
- package/llms/components/lr-rubric-form.md +3 -2
- package/llms/components/lr-scatter-chart.md +2 -87
- package/llms/components/lr-selection-toolbar.md +4 -2
- package/llms/components/lr-source-card.md +2 -186
- package/llms/components/lr-source-picker.md +3 -1
- package/llms/components/lr-sparkline.md +9 -4
- package/llms/components/lr-split-panel.md +5 -3
- package/llms/components/lr-stat.md +4 -3
- package/llms/components/lr-streaming-text-core.md +7 -5
- package/llms/components/lr-streaming-text.md +9 -6
- package/llms/components/lr-swatch-picker.md +130 -0
- package/llms/components/lr-tag.md +2 -177
- package/llms/components/lr-thread-list.md +27 -4
- package/llms/components/lr-timeline-item.md +2 -120
- package/llms/components/lr-toast-item.md +2 -223
- package/llms/components/lr-tool-call-block.md +12 -3
- package/llms/components/lr-tool-call-chip.md +12 -6
- package/llms/components/lr-tool-param-form.md +3 -2
- package/llms/components/lr-tool-result-dialog.md +7 -3
- package/llms/components/lr-tool-result-view.md +4 -3
- package/llms/components/lr-tool-timeline.md +12 -5
- package/llms/components/lr-tree-item.md +2 -354
- package/llms/index.md +22 -4
- package/llms/migration.md +75 -1
- package/llms/peers.md +1 -1
- package/llms/shared.md +86 -39
- package/llms-full.txt +739 -163
- package/package.json +6 -6
- package/registrations.json +1 -1
- package/vscode-css-data.json +1 -1
- package/vscode-html-data.json +1 -1
- package/web-types.json +1 -1
|
@@ -92,9 +92,11 @@ private handoffFromAgent;
|
|
|
92
92
|
/** Same computation `<lr-handoff-divider>` performs internally for its own `aria-label`, reused
|
|
93
93
|
* here (not reimplemented with different wording) for this button's accessible name. */
|
|
94
94
|
private handoffAccessibleLabel;private onVisibilityChange;
|
|
95
|
-
/** Keeps the composed legend's cancelable proposal within this wrapper
|
|
96
|
-
*
|
|
97
|
-
|
|
95
|
+
/** Keeps the composed legend's cancelable proposal within this wrapper under both its canonical
|
|
96
|
+
* `lr-visibility-change-request` name and its deprecated `lr-before-visibility-change` alias,
|
|
97
|
+
* without changing its default-prevented state. The child still owns the proposal, commit, and
|
|
98
|
+
* announcement. */
|
|
99
|
+
private onVisibilityChangeProposal;
|
|
98
100
|
/** Keeps `activeSpanId` (and therefore the handoff list's own highlighting) in sync when
|
|
99
101
|
* selection originates inside the composed `<lr-trace-tree>` rather than the handoff quick-jump
|
|
100
102
|
* list. The original event is never stopped here, so it still reaches a host listener on this
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{styles}from"./agent-trace.styles.js";import{normalizeLyraSpans}from"../trace-tree/span.js";import{LYRA_DEFAULT_agentTraceFilterLabel,LYRA_DEFAULT_handoffFromToAgent,LYRA_DEFAULT_handoffToAgent,LYRA_DEFAULT_popover,LYRA_DEFAULT_spanKindAgent,LYRA_DEFAULT_spanKindEmbedding,LYRA_DEFAULT_spanKindLlm,LYRA_DEFAULT_spanKindOther,LYRA_DEFAULT_spanKindRetriever,LYRA_DEFAULT_spanKindTool,LYRA_DEFAULT_tokensIn,LYRA_DEFAULT_tokensOut}from"../../../internal/default-strings.generated.js";const KIND_ORDER=["agent","llm","tool","retriever","embedding","other"],KIND_LABEL_KEY={agent:"spanKindAgent",llm:"spanKindLlm",tool:"spanKindTool",retriever:"spanKindRetriever",embedding:"spanKindEmbedding",other:"spanKindOther"};class LyraAgentTrace extends LyraElement{constructor(){super(...arguments),this.spans=[],this.activeSpanId=null,this.hiddenKinds=[],this.showTokens=!1,this.showCost=!1,this.showBars=!0,this.onVisibilityChange=e=>{e.stopPropagation(),this.hiddenKinds=e.detail.hiddenTypes,this.emit("lr-span-visibility-change",{hiddenKinds:[...this.hiddenKinds]})},this.
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{styles}from"./agent-trace.styles.js";import{normalizeLyraSpans}from"../trace-tree/span.js";import{LYRA_DEFAULT_agentTraceFilterLabel,LYRA_DEFAULT_handoffFromToAgent,LYRA_DEFAULT_handoffToAgent,LYRA_DEFAULT_popover,LYRA_DEFAULT_spanKindAgent,LYRA_DEFAULT_spanKindEmbedding,LYRA_DEFAULT_spanKindLlm,LYRA_DEFAULT_spanKindOther,LYRA_DEFAULT_spanKindRetriever,LYRA_DEFAULT_spanKindTool,LYRA_DEFAULT_tokensIn,LYRA_DEFAULT_tokensOut}from"../../../internal/default-strings.generated.js";const KIND_ORDER=["agent","llm","tool","retriever","embedding","other"],KIND_LABEL_KEY={agent:"spanKindAgent",llm:"spanKindLlm",tool:"spanKindTool",retriever:"spanKindRetriever",embedding:"spanKindEmbedding",other:"spanKindOther"};class LyraAgentTrace extends LyraElement{constructor(){super(...arguments),this.spans=[],this.activeSpanId=null,this.hiddenKinds=[],this.showTokens=!1,this.showCost=!1,this.showBars=!0,this.onVisibilityChange=e=>{e.stopPropagation(),this.hiddenKinds=e.detail.hiddenTypes,this.emit("lr-span-visibility-change",{hiddenKinds:[...this.hiddenKinds]})},this.onVisibilityChangeProposal=event=>{event.stopPropagation()},this.onTreeSpanSelect=e=>{this.activeSpanId=e.detail.spanId}}static{this.defaultStrings={...super.defaultStrings,agentTraceFilterLabel:LYRA_DEFAULT_agentTraceFilterLabel,handoffFromToAgent:LYRA_DEFAULT_handoffFromToAgent,handoffToAgent:LYRA_DEFAULT_handoffToAgent,popover:LYRA_DEFAULT_popover,spanKindAgent:LYRA_DEFAULT_spanKindAgent,spanKindEmbedding:LYRA_DEFAULT_spanKindEmbedding,spanKindLlm:LYRA_DEFAULT_spanKindLlm,spanKindOther:LYRA_DEFAULT_spanKindOther,spanKindRetriever:LYRA_DEFAULT_spanKindRetriever,spanKindTool:LYRA_DEFAULT_spanKindTool,tokensIn:LYRA_DEFAULT_tokensIn,tokensOut:LYRA_DEFAULT_tokensOut}}static{this.ownedCollectionProperties=Object.freeze(["spans","hiddenKinds"])}static{this.identityCollectionProperties=Object.freeze(["spans"])}static{this.styles=[LyraElement.styles,styles]}static{this.immutableEventDetails=Object.freeze(["lr-span-visibility-change"])}presentKinds(spans){const present=new Set(spans.map(s=>s.kind));return KIND_ORDER.filter(k=>present.has(k))}filteredSpans(spans){if(this.hiddenKinds.length===0)return[...spans];const hidden=new Set(this.hiddenKinds);return spans.filter(span=>!hidden.has(span.kind))}handoffSpans(spans){return spans.filter(span=>span.kind==="agent")}handoffFromAgent(span,byId){if(!span.parentId)return"";const parent=byId.get(span.parentId);return parent?.kind==="agent"?parent.name:""}handoffAccessibleLabel(span,fromAgent){return fromAgent?this.localize("handoffFromToAgent",void 0,{from:fromAgent,to:span.name}):this.localize("handoffToAgent",void 0,{agent:span.name})}selectSpan(id){this.activeSpanId=id,this.emit("lr-span-select",{spanId:id})}renderFilter(spans){const kinds=this.presentKinds(spans);if(kinds.length===0)return nothing;const types=kinds.map(k=>({id:k,label:this.localize(KIND_LABEL_KEY[k])}));return html`
|
|
2
2
|
<lr-graph-legend
|
|
3
3
|
part="filter"
|
|
4
4
|
.label=${this.localize("agentTraceFilterLabel")}
|
|
5
5
|
.types=${types}
|
|
6
6
|
.hiddenTypes=${this.hiddenKinds}
|
|
7
|
-
@lr-
|
|
7
|
+
@lr-visibility-change-request=${this.onVisibilityChangeProposal}
|
|
8
|
+
@lr-before-visibility-change=${this.onVisibilityChangeProposal}
|
|
8
9
|
@lr-visibility-change=${this.onVisibilityChange}
|
|
9
10
|
></lr-graph-legend>
|
|
10
11
|
`}renderHandoff(span,byId){const fromAgent=this.handoffFromAgent(span,byId),isActive=this.activeSpanId===span.id;return html`
|
|
@@ -9,6 +9,12 @@ export interface ToolCallBlockRenderErrorDetail{toolName:string;error:unknown;ca
|
|
|
9
9
|
* header reads a status-aware verb (`Used web_search`) beside a status glyph and an optional
|
|
10
10
|
* duration; expanding it in place reveals the call's arguments, then its error, then its result.
|
|
11
11
|
*
|
|
12
|
+
* `display-name` puts the application's own, already-translated tool label into that verb in place
|
|
13
|
+
* of `name` (`Used Lecture d’un fichier`), so the status wording stays localized. `name` still
|
|
14
|
+
* selects the result renderer and is still reported in `lr-render-error`. `status="incomplete"`
|
|
15
|
+
* is a call that ended without a result (an interrupted stream, a cancelled run): it reads
|
|
16
|
+
* `Did not finish using …` with a static glyph and the neutral accent.
|
|
17
|
+
*
|
|
12
18
|
* Details are deferred: a collapsed block renders an empty body and never reads `args` or
|
|
13
19
|
* `result`. Expanding renders `args` through `<lr-json-viewer>` and `result` through
|
|
14
20
|
* `<lr-tool-result-view>`, so any renderer registered with `registerToolRenderer()` still applies.
|
|
@@ -50,7 +56,7 @@ export interface ToolCallBlockRenderErrorDetail{toolName:string;error:unknown;ca
|
|
|
50
56
|
* @cssprop [--lr-tool-call-block-background=var(--lr-color-surface)] - Card fill.
|
|
51
57
|
* @cssprop [--lr-tool-call-block-border-color=var(--lr-color-border)] - Card edge and header/body divider.
|
|
52
58
|
* @cssprop [--lr-tool-call-block-radius=var(--lr-radius)] - Card corner radius.
|
|
53
|
-
* @cssprop [--lr-tool-call-block-accent=var(--lr-color-text-quiet)] - Status glyph colour; defaults per status (brand while running, success, danger on error, warning when denied).
|
|
59
|
+
* @cssprop [--lr-tool-call-block-accent=var(--lr-color-text-quiet)] - Status glyph colour; defaults per status (brand while running, success, danger on error, warning when denied, neutral while pending or incomplete).
|
|
54
60
|
* @cssprop [--lr-tool-call-block-error-color=var(--lr-color-danger)] - Error section text colour.
|
|
55
61
|
* @status experimental
|
|
56
62
|
* @since 21.0.0
|
|
@@ -58,10 +64,16 @@ export interface ToolCallBlockRenderErrorDetail{toolName:string;error:unknown;ca
|
|
|
58
64
|
export declare class LyraToolCallBlock extends LyraElement<LyraToolCallBlockEventMap>{static styles:import("lit").CSSResultGroup[];protected static readonly ownedCollectionProperties:readonly string[];
|
|
59
65
|
/** Tool name. An empty name renders the localized generic tool-call label in its place. */
|
|
60
66
|
name:string;
|
|
67
|
+
/** The tool's display label, e.g. an application-translated `Lecture d’un fichier`. Replaces
|
|
68
|
+
* `name` in the header verb only; `name` still selects the result renderer and is still reported
|
|
69
|
+
* in `lr-render-error`. Unset or empty shows `name`. A `label` override replaces the whole
|
|
70
|
+
* header, this included. */
|
|
71
|
+
displayName?:string;
|
|
61
72
|
/** Invocation id, echoed in `lr-toggle` and `lr-render-error` details. */
|
|
62
73
|
callId:string;private statusValue;
|
|
63
|
-
/** Call status.
|
|
64
|
-
*
|
|
74
|
+
/** Call status. `incomplete` is a call that ended without a result (an interrupted stream, a
|
|
75
|
+
* cancelled run). Values outside `pending | running | success | error | denied | incomplete`
|
|
76
|
+
* normalize and reflect as `pending`. */
|
|
65
77
|
get status():ToolCallStatus;set status(next:ToolCallStatus);
|
|
66
78
|
/** Whether the details are shown. Starts collapsed. */
|
|
67
79
|
expanded:boolean;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{literalSetConverter}from"../../../internal/converters.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{tag}from"../../../internal/prefix.js";import{observeScrollOverflow,SCROLL_OVERFLOW_ATTRIBUTE}from"../../../internal/scroll-overflow.js";import{TOOL_CALL_STATUSES,TOOL_STATUS_LABEL_KEY,toolStatusIcon}from"../tool-status.js";import{projectedRedactionFields,redactToolDetail,TOO_MANY_REDACTION_PATHS}from"../tool-redaction.js";import{styles}from"./tool-call-block.styles.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_envListValueHidden,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_toolCall,LYRA_DEFAULT_toolCallBlockArgumentsLabel,LYRA_DEFAULT_toolCallBlockErrorLabel,LYRA_DEFAULT_toolCallBlockHeaderDenied,LYRA_DEFAULT_toolCallBlockHeaderError,LYRA_DEFAULT_toolCallBlockHeaderPending,LYRA_DEFAULT_toolCallBlockHeaderRunning,LYRA_DEFAULT_toolCallBlockHeaderSuccess,LYRA_DEFAULT_toolCallBlockResultLabel}from"../../../internal/default-strings.generated.js";const TOOL_CALL_BLOCK_STATUS=literalSetConverter(TOOL_CALL_STATUSES,"pending"),HEADER_KEY={pending:"toolCallBlockHeaderPending",running:"toolCallBlockHeaderRunning",success:"toolCallBlockHeaderSuccess",error:"toolCallBlockHeaderError",denied:"toolCallBlockHeaderDenied"};function argsPresent(args){if(args==null)return!1;if(typeof args!="object")return!0;try{const prototype=Object.getPrototypeOf(args);return prototype!==Object.prototype&&prototype!==null?!0:Object.keys(args).length>0}catch{return!0}}class LyraToolCallBlock extends LyraElement{constructor(){super(...arguments),this.name="",this.callId="",this.statusValue="pending",this.expanded=!1,this.redactedFields=[],this.bodyId=nextId("tool-call-block-body"),this.labelId=nextId("tool-call-block-label"),this.argsLabelId=nextId("tool-call-block-args-label"),this.resultLabelId=nextId("tool-call-block-result-label"),this.errorLabelId=nextId("tool-call-block-error-label"),this.projectedPaths=[],this.restoreFocusToHeader=!1,this.resultOverflow=observeScrollOverflow(this,()=>this.renderRoot?.querySelector('[part="result"]'),()=>this.syncResultScrollStop()),this.onHeaderClick=()=>{this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded,callId:this.callId})},this.onRenderError=event=>{event.stopPropagation(),this.emit("lr-render-error",{toolName:event.detail.toolName,error:event.detail.error,callId:this.callId})}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,envListValueHidden:LYRA_DEFAULT_envListValueHidden,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall,toolCallBlockArgumentsLabel:LYRA_DEFAULT_toolCallBlockArgumentsLabel,toolCallBlockErrorLabel:LYRA_DEFAULT_toolCallBlockErrorLabel,toolCallBlockHeaderDenied:LYRA_DEFAULT_toolCallBlockHeaderDenied,toolCallBlockHeaderError:LYRA_DEFAULT_toolCallBlockHeaderError,toolCallBlockHeaderPending:LYRA_DEFAULT_toolCallBlockHeaderPending,toolCallBlockHeaderRunning:LYRA_DEFAULT_toolCallBlockHeaderRunning,toolCallBlockHeaderSuccess:LYRA_DEFAULT_toolCallBlockHeaderSuccess,toolCallBlockResultLabel:LYRA_DEFAULT_toolCallBlockResultLabel}}static{this.styles=[LyraElement.styles,styles]}static{this.ownedCollectionProperties=Object.freeze(["redactedFields"])}get status(){return this.statusValue}set status(next){const normalized=TOOL_CALL_BLOCK_STATUS.normalizeReflected(this,"status",next),old=this.statusValue;old!==normalized&&(this.statusValue=normalized,this.requestUpdate("status",old))}willUpdate(changed){if(super.willUpdate(changed),(!this.hasUpdated||changed.has("redactedFields"))&&(this.projectedPaths=projectedRedactionFields(this.redactedFields)??TOO_MANY_REDACTION_PATHS),this.hasUpdated&&changed.get("expanded")===!0&&!this.expanded){const root=this.renderRoot;this.restoreFocusToHeader=!!root?.querySelector('[part="body"]')?.contains(root.activeElement)}}updated(changed){super.updated(changed);const view=this.renderRoot.querySelector(tag("tool-result-view"));view&&this.resultOverflow.observeExtra([view]),this.syncResultScrollStop(),this.restoreFocusToHeader&&(this.restoreFocusToHeader=!1,this.renderRoot.querySelector('[part="header"]')?.focus())}syncResultScrollStop(){const result=this.renderRoot?.querySelector('[part="result"]');result&&(result.hasAttribute(SCROLL_OVERFLOW_ATTRIBUTE)?result.setAttribute("tabindex","0"):result.removeAttribute("tabindex"))}detail(){const detail=redactToolDetail({args:this.args,result:this.result,error:this.error},this.projectedPaths,this.localize("envListValueHidden"),this.detailMemo?.detail);return detail!==this.detailMemo?.detail&&(this.detailMemo={detail,hasArgs:argsPresent(this.args)}),this.detailMemo}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}durationText(){const ms=this.safeDurationMs;if(ms==null)return null;const duration=durationMessageValue(ms),seconds=duration.key==="durationSeconds",value=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:seconds?1:0}).format(duration.value);return this.localize(seconds?"durationSeconds":"durationMilliseconds",void 0,{value})}emptyText(){return this.status==="pending"?this.localize("statusPending"):this.status==="running"?this.localize("statusRunning"):this.localize("noData")}bodyTemplate(){const memo=this.detail(),{detail,hasArgs}=memo,empty=!hasArgs&&!(typeof detail.sourceError=="string"&&detail.sourceError!=="")&&detail.sourceResult===void 0,labels=[this.localize("toolCallBlockArgumentsLabel"),this.localize("toolCallBlockErrorLabel"),this.localize("toolCallBlockResultLabel"),empty?this.emptyText():""];return html`${guard([memo,this.name,this.onRenderError,...labels],()=>this.sectionsTemplate(memo,labels))}`}sectionsTemplate({detail,hasArgs},[argsLabel,errorLabel,resultLabel,emptyText]){const hasError=typeof detail.sourceError=="string"&&detail.sourceError!=="",hasResult=detail.sourceResult!==void 0;return!hasArgs&&!hasError&&!hasResult?html`<p part="empty">${emptyText}</p>`:html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property}from"lit/decorators.js";import{guard}from"lit/directives/guard.js";import{LyraElement}from"../../../internal/lyra-element.js";import{literalSetConverter}from"../../../internal/converters.js";import{nextId}from"../../../internal/a11y.js";import{chevronIcon}from"../../../internal/icons.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{tag}from"../../../internal/prefix.js";import{observeScrollOverflow,SCROLL_OVERFLOW_ATTRIBUTE}from"../../../internal/scroll-overflow.js";import{TOOL_CALL_STATUSES,TOOL_STATUS_LABEL_KEY,toolStatusIcon}from"../tool-status.js";import{projectedRedactionFields,redactToolDetail,TOO_MANY_REDACTION_PATHS}from"../tool-redaction.js";import{styles}from"./tool-call-block.styles.js";import{LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_envListValueHidden,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_noData,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusIncomplete,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_toolCall,LYRA_DEFAULT_toolCallBlockArgumentsLabel,LYRA_DEFAULT_toolCallBlockErrorLabel,LYRA_DEFAULT_toolCallBlockHeaderDenied,LYRA_DEFAULT_toolCallBlockHeaderError,LYRA_DEFAULT_toolCallBlockHeaderIncomplete,LYRA_DEFAULT_toolCallBlockHeaderPending,LYRA_DEFAULT_toolCallBlockHeaderRunning,LYRA_DEFAULT_toolCallBlockHeaderSuccess,LYRA_DEFAULT_toolCallBlockResultLabel}from"../../../internal/default-strings.generated.js";const TOOL_CALL_BLOCK_STATUS=literalSetConverter(TOOL_CALL_STATUSES,"pending"),HEADER_KEY={pending:"toolCallBlockHeaderPending",running:"toolCallBlockHeaderRunning",success:"toolCallBlockHeaderSuccess",error:"toolCallBlockHeaderError",denied:"toolCallBlockHeaderDenied",incomplete:"toolCallBlockHeaderIncomplete"};function argsPresent(args){if(args==null)return!1;if(typeof args!="object")return!0;try{const prototype=Object.getPrototypeOf(args);return prototype!==Object.prototype&&prototype!==null?!0:Object.keys(args).length>0}catch{return!0}}class LyraToolCallBlock extends LyraElement{constructor(){super(...arguments),this.name="",this.callId="",this.statusValue="pending",this.expanded=!1,this.redactedFields=[],this.bodyId=nextId("tool-call-block-body"),this.labelId=nextId("tool-call-block-label"),this.argsLabelId=nextId("tool-call-block-args-label"),this.resultLabelId=nextId("tool-call-block-result-label"),this.errorLabelId=nextId("tool-call-block-error-label"),this.projectedPaths=[],this.restoreFocusToHeader=!1,this.resultOverflow=observeScrollOverflow(this,()=>this.renderRoot?.querySelector('[part="result"]'),()=>this.syncResultScrollStop()),this.onHeaderClick=()=>{this.expanded=!this.expanded,this.emit("lr-toggle",{expanded:this.expanded,callId:this.callId})},this.onRenderError=event=>{event.stopPropagation(),this.emit("lr-render-error",{toolName:event.detail.toolName,error:event.detail.error,callId:this.callId})}}static{this.defaultStrings={...super.defaultStrings,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,envListValueHidden:LYRA_DEFAULT_envListValueHidden,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,noData:LYRA_DEFAULT_noData,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusIncomplete:LYRA_DEFAULT_statusIncomplete,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall,toolCallBlockArgumentsLabel:LYRA_DEFAULT_toolCallBlockArgumentsLabel,toolCallBlockErrorLabel:LYRA_DEFAULT_toolCallBlockErrorLabel,toolCallBlockHeaderDenied:LYRA_DEFAULT_toolCallBlockHeaderDenied,toolCallBlockHeaderError:LYRA_DEFAULT_toolCallBlockHeaderError,toolCallBlockHeaderIncomplete:LYRA_DEFAULT_toolCallBlockHeaderIncomplete,toolCallBlockHeaderPending:LYRA_DEFAULT_toolCallBlockHeaderPending,toolCallBlockHeaderRunning:LYRA_DEFAULT_toolCallBlockHeaderRunning,toolCallBlockHeaderSuccess:LYRA_DEFAULT_toolCallBlockHeaderSuccess,toolCallBlockResultLabel:LYRA_DEFAULT_toolCallBlockResultLabel}}static{this.styles=[LyraElement.styles,styles]}static{this.ownedCollectionProperties=Object.freeze(["redactedFields"])}get status(){return this.statusValue}set status(next){const normalized=TOOL_CALL_BLOCK_STATUS.normalizeReflected(this,"status",next),old=this.statusValue;old!==normalized&&(this.statusValue=normalized,this.requestUpdate("status",old))}willUpdate(changed){if(super.willUpdate(changed),(!this.hasUpdated||changed.has("redactedFields"))&&(this.projectedPaths=projectedRedactionFields(this.redactedFields)??TOO_MANY_REDACTION_PATHS),this.hasUpdated&&changed.get("expanded")===!0&&!this.expanded){const root=this.renderRoot;this.restoreFocusToHeader=!!root?.querySelector('[part="body"]')?.contains(root.activeElement)}}updated(changed){super.updated(changed);const view=this.renderRoot.querySelector(tag("tool-result-view"));view&&this.resultOverflow.observeExtra([view]),this.syncResultScrollStop(),this.restoreFocusToHeader&&(this.restoreFocusToHeader=!1,this.renderRoot.querySelector('[part="header"]')?.focus())}syncResultScrollStop(){const result=this.renderRoot?.querySelector('[part="result"]');result&&(result.hasAttribute(SCROLL_OVERFLOW_ATTRIBUTE)?result.setAttribute("tabindex","0"):result.removeAttribute("tabindex"))}detail(){const detail=redactToolDetail({args:this.args,result:this.result,error:this.error},this.projectedPaths,this.localize("envListValueHidden"),this.detailMemo?.detail);return detail!==this.detailMemo?.detail&&(this.detailMemo={detail,hasArgs:argsPresent(this.args)}),this.detailMemo}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}durationText(){const ms=this.safeDurationMs;if(ms==null)return null;const duration=durationMessageValue(ms),seconds=duration.key==="durationSeconds",value=getNumberFormat(this.effectiveLocale,{maximumFractionDigits:seconds?1:0}).format(duration.value);return this.localize(seconds?"durationSeconds":"durationMilliseconds",void 0,{value})}emptyText(){return this.status==="pending"?this.localize("statusPending"):this.status==="running"?this.localize("statusRunning"):this.localize("noData")}bodyTemplate(){const memo=this.detail(),{detail,hasArgs}=memo,empty=!hasArgs&&!(typeof detail.sourceError=="string"&&detail.sourceError!=="")&&detail.sourceResult===void 0,labels=[this.localize("toolCallBlockArgumentsLabel"),this.localize("toolCallBlockErrorLabel"),this.localize("toolCallBlockResultLabel"),empty?this.emptyText():""];return html`${guard([memo,this.name,this.onRenderError,...labels],()=>this.sectionsTemplate(memo,labels))}`}sectionsTemplate({detail,hasArgs},[argsLabel,errorLabel,resultLabel,emptyText]){const hasError=typeof detail.sourceError=="string"&&detail.sourceError!=="",hasResult=detail.sourceResult!==void 0;return!hasArgs&&!hasError&&!hasResult?html`<p part="empty">${emptyText}</p>`:html`
|
|
2
2
|
${hasArgs?html`<div part="args" role="group" aria-labelledby=${this.argsLabelId}>
|
|
3
3
|
<div part="args-label" id=${this.argsLabelId}>${argsLabel}</div>
|
|
4
4
|
<lr-json-viewer .data=${detail.args}></lr-json-viewer>
|
|
@@ -16,7 +16,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
16
16
|
@lr-render-error=${this.onRenderError}
|
|
17
17
|
></lr-tool-result-view>
|
|
18
18
|
</div>`:nothing}
|
|
19
|
-
`}render(){const status=this.status,name=this.name
|
|
19
|
+
`}render(){const status=this.status,name=this.displayName||this.name||this.localize("toolCall"),label=this.label??this.localize(HEADER_KEY[status],void 0,{name}),duration=this.durationText();return html`
|
|
20
20
|
<div part="base">
|
|
21
21
|
<button
|
|
22
22
|
part="header"
|
|
@@ -39,4 +39,4 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
39
39
|
?hidden=${!this.expanded}
|
|
40
40
|
>${this.expanded?this.bodyTemplate():nothing}</div>
|
|
41
41
|
</div>
|
|
42
|
-
`}}__decorate([property()],LyraToolCallBlock.prototype,"name",void 0),__decorate([property({attribute:"call-id"})],LyraToolCallBlock.prototype,"callId",void 0),__decorate([property({reflect:!0,converter:TOOL_CALL_BLOCK_STATUS})],LyraToolCallBlock.prototype,"status",null),__decorate([property({type:Boolean,reflect:!0})],LyraToolCallBlock.prototype,"expanded",void 0),__decorate([property()],LyraToolCallBlock.prototype,"label",void 0),__decorate([property({type:Number,attribute:"duration-ms"})],LyraToolCallBlock.prototype,"durationMs",void 0),__decorate([property({attribute:!1})],LyraToolCallBlock.prototype,"args",void 0),__decorate([property({attribute:!1})],LyraToolCallBlock.prototype,"result",void 0),__decorate([property()],LyraToolCallBlock.prototype,"error",void 0),__decorate([property({attribute:!1})],LyraToolCallBlock.prototype,"redactedFields",void 0);export{LyraToolCallBlock};
|
|
42
|
+
`}}__decorate([property()],LyraToolCallBlock.prototype,"name",void 0),__decorate([property({attribute:"display-name"})],LyraToolCallBlock.prototype,"displayName",void 0),__decorate([property({attribute:"call-id"})],LyraToolCallBlock.prototype,"callId",void 0),__decorate([property({reflect:!0,converter:TOOL_CALL_BLOCK_STATUS})],LyraToolCallBlock.prototype,"status",null),__decorate([property({type:Boolean,reflect:!0})],LyraToolCallBlock.prototype,"expanded",void 0),__decorate([property()],LyraToolCallBlock.prototype,"label",void 0),__decorate([property({type:Number,attribute:"duration-ms"})],LyraToolCallBlock.prototype,"durationMs",void 0),__decorate([property({attribute:!1})],LyraToolCallBlock.prototype,"args",void 0),__decorate([property({attribute:!1})],LyraToolCallBlock.prototype,"result",void 0),__decorate([property()],LyraToolCallBlock.prototype,"error",void 0),__decorate([property({attribute:!1})],LyraToolCallBlock.prototype,"redactedFields",void 0);export{LyraToolCallBlock};
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraToolStatus}from'../../../internal/shared-unions.js';
|
|
2
2
|
/** Same status vocabulary as `<lr-tool-result-dialog>`, so a call's chip
|
|
3
|
-
* and its detail dialog always agree on icon/label/tone.
|
|
4
|
-
|
|
3
|
+
* and its detail dialog always agree on icon/label/tone. `incomplete` marks
|
|
4
|
+
* a call that ended without a result (an interrupted stream, a cancelled
|
|
5
|
+
* run). */
|
|
6
|
+
export type ToolCallStatus=LyraToolStatus|'incomplete';export interface ToolChipSelectDetail{name:string;callId:string;}export interface LyraToolCallChipEventMap{'lr-tool-call-chip-select':CustomEvent<ToolChipSelectDetail>;}
|
|
5
7
|
/**
|
|
6
8
|
* `<lr-tool-call-chip>` — a compact inline pill representing one tool/
|
|
7
9
|
* function call an agent made mid-conversation, e.g.
|
|
@@ -13,7 +15,10 @@ export type ToolCallStatus=LyraToolStatus;export interface ToolChipSelectDetail{
|
|
|
13
15
|
* summary is useful, with or without a detail surface behind it.
|
|
14
16
|
*
|
|
15
17
|
* The default slot is *not* the chip's visible content — the chip's own
|
|
16
|
-
* label is always built from `name
|
|
18
|
+
* label is always built from `name` (or `display-name`)/`summary`/`status`/
|
|
19
|
+
* `duration-ms`. `display-name` is the application's own, already-translated
|
|
20
|
+
* label for the tool: it replaces only the visible and announced name, while
|
|
21
|
+
* `lr-tool-call-chip-select` keeps reporting the raw `name`. It's
|
|
17
22
|
* reserved for optional read-only preview content (e.g. the tool's raw
|
|
18
23
|
* arguments or a short formatted summary) shown in a floating tooltip on hover or keyboard focus
|
|
19
24
|
* (the focused control matches `:focus-visible` and no pointer press preceded it), positioned
|
|
@@ -53,7 +58,7 @@ export type ToolCallStatus=LyraToolStatus;export interface ToolChipSelectDetail{
|
|
|
53
58
|
* @csspart icon - Wrapper around the status glyph / `icon` slot.
|
|
54
59
|
* @csspart label - Wrapper around `category`, `name` and `summary`.
|
|
55
60
|
* @csspart category - The optional grouping label.
|
|
56
|
-
* @csspart name - The tool/function name.
|
|
61
|
+
* @csspart name - The tool/function name, or `display-name` when set.
|
|
57
62
|
* @csspart summary - The short status text.
|
|
58
63
|
* @csspart meta - Wrapper around `status-text` and `duration`.
|
|
59
64
|
* @csspart status-text - The visible text twin of the status glyph/color — carries the state in text, not just color.
|
|
@@ -64,11 +69,13 @@ export type ToolCallStatus=LyraToolStatus;export interface ToolChipSelectDetail{
|
|
|
64
69
|
* @cssprop [--lr-transition-ambient=1.8s ease-in-out] - Pending-icon pulse duration and timing.
|
|
65
70
|
* @cssprop [--lr-tool-call-chip-accent=var(--lr-color-text-quiet)] - Accent color for the status
|
|
66
71
|
* glyph and text. Its private default follows `status` (`running` → brand, `success` → success,
|
|
67
|
-
* `error` → danger, `denied` → warning
|
|
72
|
+
* `error` → danger, `denied` → warning; `pending` and `incomplete` stay neutral); an inherited or
|
|
73
|
+
* direct public override always wins.
|
|
68
74
|
* @cssprop [--lr-tool-call-chip-bg=var(--lr-color-surface)] - Chip background. Its private default
|
|
69
75
|
* follows the same `status` rules using each status's `-quiet` tint; a public override wins.
|
|
70
76
|
* @cssprop [--lr-tool-call-chip-border=var(--lr-color-border)] - Chip border color. Its private
|
|
71
|
-
* default becomes transparent for every
|
|
77
|
+
* default becomes transparent for every tinted status (all but `pending` and `incomplete`); a
|
|
78
|
+
* public override wins.
|
|
72
79
|
* @cssprop [--lr-overlay-surface=var(--lr-color-surface-overlay)] - Shared floating-surface fill,
|
|
73
80
|
* on the anchored detail tooltip.
|
|
74
81
|
* @cssprop [--lr-overlay-border=var(--lr-color-border-subtle)] - Shared floating-surface edge
|
|
@@ -86,11 +93,17 @@ export type ToolCallStatus=LyraToolStatus;export interface ToolChipSelectDetail{
|
|
|
86
93
|
export declare class LyraToolCallChip extends LyraElement<LyraToolCallChipEventMap>{static styles:import("lit").CSSResultGroup[];
|
|
87
94
|
/** The tool/function name, e.g. `web_search`. */
|
|
88
95
|
name:string;
|
|
96
|
+
/** The tool's display label, e.g. an application-translated `Lecture d’un fichier`. Replaces
|
|
97
|
+
* `name` in the visible chip and its accessible name only; `lr-tool-call-chip-select` still
|
|
98
|
+
* reports `name`. Unset or empty shows `name`. */
|
|
99
|
+
displayName?:string;
|
|
89
100
|
/** Optional grouping label, e.g. `research`. Removing the attribute clears its displayed text. */
|
|
90
101
|
category:string;
|
|
91
102
|
/**
|
|
92
103
|
* The call's current lifecycle state — drives the glyph, color, and
|
|
93
|
-
* `status-text`.
|
|
104
|
+
* `status-text`. `incomplete` is a call that ended without a result; it
|
|
105
|
+
* keeps the neutral tone with its own static glyph and text. Invalid runtime
|
|
106
|
+
* values use the pending presentation.
|
|
94
107
|
*/
|
|
95
108
|
status:ToolCallStatus;
|
|
96
109
|
/** Short human-readable status text, e.g. `Searching web…`. Removing the attribute clears its displayed text. */
|
|
@@ -124,4 +137,7 @@ click():void;private get effectiveStatus();
|
|
|
124
137
|
* matching this property's own "omitted from the chip entirely when unset" contract, rather
|
|
125
138
|
* than rendering a literal "NaN ms". A finite negative value clamps to `0` instead of
|
|
126
139
|
* rendering a nonsensical negative duration. */
|
|
127
|
-
private get safeDurationMs();
|
|
140
|
+
private get safeDurationMs();
|
|
141
|
+
/** The visible tool name: the display label when set, else `name`, else the localized
|
|
142
|
+
* generic label. */
|
|
143
|
+
private get shownName();private get accessibleLabel();private localizedDuration;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-tool-call-chip':LyraToolCallChip;}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{isKeyboardFocusEvent}from"../../../internal/focus-modality.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{activateNonmodalOverlay}from"../../../internal/nonmodal-overlay-manager.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{acquireResolvedAriaRelationship}from"../../../internal/aria-controls.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{TOOL_STATUS_LABEL_KEY,isToolCallStatus,toolStatusIcon}from"../tool-status.js";import{styles}from"./tool-call-chip.styles.js";import{LYRA_DEFAULT_accessibleLabelSeparator,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_toolCall}from"../../../internal/default-strings.generated.js";const STATUS_ICON=toolStatusIcon,statusConverter={fromAttribute(value){return value!==null&&isToolCallStatus(value)?value:"pending"},toAttribute(value){return value}};class LyraToolCallChip extends LyraElement{constructor(){super(...arguments),this.name="",this.category="",this.status="pending",this.summary="",this.icon="",this.callId="",this.hasDetailSlot=!1,this.tooltipOpen=!1,this.tooltipId=nextId("tool-call-chip-tooltip"),this.hovering=!1,this.focused=!1,this.focusDescribed=!1,this.onDetailSlotChange=e=>{this.hasDetailSlot=this.hasPreviewNodes(e.target.assignedNodes({flatten:!0})),this.hasDetailSlot||this.hideTooltip()},this.onMouseEnter=()=>{this.hovering=!0,this.showTooltip()},this.onMouseLeave=()=>{this.hovering=!1,!this.focused&&this.hideTooltip()},this.onFocus=event=>{this.focusDescribed=!0,isKeyboardFocusEvent(event)&&(this.focused=!0,this.showTooltip())},this.onBlur=()=>{this.focused=!1,this.focusDescribed=!1,!this.hovering&&this.hideTooltip()},this.onKeyDown=e=>{e.key==="Escape"&&this.tooltipOpen&&this.tooltipOverlay?.isTopmost()&&(e.stopPropagation(),this.hideTooltip())},this.onClick=()=>{this.emit("lr-tool-call-chip-select",{name:this.name,callId:this.callId})}}static{this.defaultStrings={...super.defaultStrings,accessibleLabelSeparator:LYRA_DEFAULT_accessibleLabelSeparator,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall}}static{this.styles=[LyraElement.styles,styles]}hasPreviewNodes(nodes){return nodes.some(node=>{if(node.nodeType===3)return!!node.textContent?.trim();if(node.nodeType!==1)return!1;const slotName=node.getAttribute("slot");return slotName===null||slotName===""})}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasDetailSlot=this.hasPreviewNodes(Array.from(this.childNodes)))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.syncExternalDescription()}syncExternalDescription(){const target=this.isConnected?this.baseEl??null:null;if(!target){this.releaseExternalDescription();return}this.externalDescriptionLease?this.externalDescriptionLease.update(target):this.externalDescriptionLease=acquireResolvedAriaRelationship(this,target,"aria-describedby")}releaseExternalDescription(){this.externalDescriptionLease?.release(),this.externalDescriptionLease=void 0}updated(changed){if(super.updated(changed),this.syncExternalDescription(),changed.has("tooltipOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.tooltipOverlay?.deactivate({restoreFocus:!1}),this.tooltipOverlay=void 0,this.tooltipOpen)){const anchor=this.renderRoot.querySelector('[part="base"]'),tooltip=this.renderRoot.querySelector('[part="tooltip"]');anchor&&tooltip&&(this.cleanupPositioner=place(anchor,tooltip,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")}),this.tooltipOverlay=activateNonmodalOverlay({host:this,panel:()=>tooltip,onEscape:()=>this.hideTooltip(),restoreFocusTo:null}))}}disconnectedCallback(){super.disconnectedCallback(),this.releaseExternalDescription(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.tooltipOverlay?.deactivate({restoreFocus:!1}),this.tooltipOverlay=void 0,this.tooltipOpen=!1,this.hovering=!1,this.focused=!1,this.focusDescribed=!1}showTooltip(){!this.hasDetailSlot||this.tooltipOpen||(this.tooltipOpen=!0)}hideTooltip(){this.tooltipOpen&&(this.tooltipOpen=!1)}focus(options){this.baseEl?.focus(options)}blur(){this.baseEl?.blur()}click(){this.baseEl?.click()}get effectiveStatus(){return isToolCallStatus(this.status)?this.status:"pending"}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}get
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,query,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{isKeyboardFocusEvent}from"../../../internal/focus-modality.js";import{deferredPlace as place}from"../../../internal/anchored-overlay-runtime.js";import{activateNonmodalOverlay}from"../../../internal/nonmodal-overlay-manager.js";import{resolveEffectivePositioningStrategy}from"../../../internal/positioning-strategy.js";import{nextId}from"../../../internal/a11y.js";import{acquireResolvedAriaRelationship}from"../../../internal/aria-controls.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{TOOL_STATUS_LABEL_KEY,isToolCallStatus,toolStatusIcon}from"../tool-status.js";import{styles}from"./tool-call-chip.styles.js";import{LYRA_DEFAULT_accessibleLabelSeparator,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusIncomplete,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_toolCall}from"../../../internal/default-strings.generated.js";const STATUS_ICON=toolStatusIcon,statusConverter={fromAttribute(value){return value!==null&&isToolCallStatus(value)?value:"pending"},toAttribute(value){return value}};class LyraToolCallChip extends LyraElement{constructor(){super(...arguments),this.name="",this.category="",this.status="pending",this.summary="",this.icon="",this.callId="",this.hasDetailSlot=!1,this.tooltipOpen=!1,this.tooltipId=nextId("tool-call-chip-tooltip"),this.hovering=!1,this.focused=!1,this.focusDescribed=!1,this.onDetailSlotChange=e=>{this.hasDetailSlot=this.hasPreviewNodes(e.target.assignedNodes({flatten:!0})),this.hasDetailSlot||this.hideTooltip()},this.onMouseEnter=()=>{this.hovering=!0,this.showTooltip()},this.onMouseLeave=()=>{this.hovering=!1,!this.focused&&this.hideTooltip()},this.onFocus=event=>{this.focusDescribed=!0,isKeyboardFocusEvent(event)&&(this.focused=!0,this.showTooltip())},this.onBlur=()=>{this.focused=!1,this.focusDescribed=!1,!this.hovering&&this.hideTooltip()},this.onKeyDown=e=>{e.key==="Escape"&&this.tooltipOpen&&this.tooltipOverlay?.isTopmost()&&(e.stopPropagation(),this.hideTooltip())},this.onClick=()=>{this.emit("lr-tool-call-chip-select",{name:this.name,callId:this.callId})}}static{this.defaultStrings={...super.defaultStrings,accessibleLabelSeparator:LYRA_DEFAULT_accessibleLabelSeparator,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusIncomplete:LYRA_DEFAULT_statusIncomplete,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall}}static{this.styles=[LyraElement.styles,styles]}hasPreviewNodes(nodes){return nodes.some(node=>{if(node.nodeType===3)return!!node.textContent?.trim();if(node.nodeType!==1)return!1;const slotName=node.getAttribute("slot");return slotName===null||slotName===""})}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasDetailSlot=this.hasPreviewNodes(Array.from(this.childNodes)))}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.syncExternalDescription()}syncExternalDescription(){const target=this.isConnected?this.baseEl??null:null;if(!target){this.releaseExternalDescription();return}this.externalDescriptionLease?this.externalDescriptionLease.update(target):this.externalDescriptionLease=acquireResolvedAriaRelationship(this,target,"aria-describedby")}releaseExternalDescription(){this.externalDescriptionLease?.release(),this.externalDescriptionLease=void 0}updated(changed){if(super.updated(changed),this.syncExternalDescription(),changed.has("tooltipOpen")&&(this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.tooltipOverlay?.deactivate({restoreFocus:!1}),this.tooltipOverlay=void 0,this.tooltipOpen)){const anchor=this.renderRoot.querySelector('[part="base"]'),tooltip=this.renderRoot.querySelector('[part="tooltip"]');anchor&&tooltip&&(this.cleanupPositioner=place(anchor,tooltip,{placement:"top-start",strategy:resolveEffectivePositioningStrategy(this,void 0,"fixed")}),this.tooltipOverlay=activateNonmodalOverlay({host:this,panel:()=>tooltip,onEscape:()=>this.hideTooltip(),restoreFocusTo:null}))}}disconnectedCallback(){super.disconnectedCallback(),this.releaseExternalDescription(),this.cleanupPositioner?.(),this.cleanupPositioner=void 0,this.tooltipOverlay?.deactivate({restoreFocus:!1}),this.tooltipOverlay=void 0,this.tooltipOpen=!1,this.hovering=!1,this.focused=!1,this.focusDescribed=!1}showTooltip(){!this.hasDetailSlot||this.tooltipOpen||(this.tooltipOpen=!0)}hideTooltip(){this.tooltipOpen&&(this.tooltipOpen=!1)}focus(options){this.baseEl?.focus(options)}blur(){this.baseEl?.blur()}click(){this.baseEl?.click()}get effectiveStatus(){return isToolCallStatus(this.status)?this.status:"pending"}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}get shownName(){return this.displayName||this.name||this.localize("toolCall")}get accessibleLabel(){const parts=[this.shownName];this.summary&&parts.push(this.summary),parts.push(this.localize(TOOL_STATUS_LABEL_KEY[this.effectiveStatus]));const durationMs=this.safeDurationMs;return durationMs!=null&&parts.push(this.localizedDuration(durationMs)),parts.join(this.localize("accessibleLabelSeparator"))}localizedDuration(ms){const duration=durationMessageValue(ms);return this.localize(duration.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:duration.key==="durationSeconds"?1:0}).format(duration.value)})}render(){const hasCategory=(this.category??"").length>0,hasSummary=(this.summary??"").length>0,durationMs=this.safeDurationMs,hasDuration=durationMs!=null,status=this.effectiveStatus;return html`
|
|
2
2
|
<button
|
|
3
3
|
part="base"
|
|
4
4
|
type="button"
|
|
@@ -18,7 +18,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
18
18
|
</span>
|
|
19
19
|
<span part="label">
|
|
20
20
|
<span part="category" ?hidden=${!hasCategory}>${this.category}</span>
|
|
21
|
-
<span part="name">${this.
|
|
21
|
+
<span part="name">${this.shownName}</span>
|
|
22
22
|
<span part="summary" ?hidden=${!hasSummary}>${this.summary}</span>
|
|
23
23
|
</span>
|
|
24
24
|
<span part="meta">
|
|
@@ -39,4 +39,4 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
39
39
|
>
|
|
40
40
|
<slot @slotchange=${this.onDetailSlotChange}></slot>
|
|
41
41
|
</div>
|
|
42
|
-
`}}__decorate([property()],LyraToolCallChip.prototype,"name",void 0),__decorate([property()],LyraToolCallChip.prototype,"category",void 0),__decorate([property({reflect:!0,converter:statusConverter})],LyraToolCallChip.prototype,"status",void 0),__decorate([property()],LyraToolCallChip.prototype,"summary",void 0),__decorate([property({type:Number,attribute:"duration-ms"})],LyraToolCallChip.prototype,"durationMs",void 0),__decorate([property()],LyraToolCallChip.prototype,"icon",void 0),__decorate([property({attribute:"call-id"})],LyraToolCallChip.prototype,"callId",void 0),__decorate([state()],LyraToolCallChip.prototype,"hasDetailSlot",void 0),__decorate([state()],LyraToolCallChip.prototype,"tooltipOpen",void 0),__decorate([state()],LyraToolCallChip.prototype,"focusDescribed",void 0),__decorate([query('[part="base"]')],LyraToolCallChip.prototype,"baseEl",void 0);export{LyraToolCallChip};
|
|
42
|
+
`}}__decorate([property()],LyraToolCallChip.prototype,"name",void 0),__decorate([property({attribute:"display-name"})],LyraToolCallChip.prototype,"displayName",void 0),__decorate([property()],LyraToolCallChip.prototype,"category",void 0),__decorate([property({reflect:!0,converter:statusConverter})],LyraToolCallChip.prototype,"status",void 0),__decorate([property()],LyraToolCallChip.prototype,"summary",void 0),__decorate([property({type:Number,attribute:"duration-ms"})],LyraToolCallChip.prototype,"durationMs",void 0),__decorate([property()],LyraToolCallChip.prototype,"icon",void 0),__decorate([property({attribute:"call-id"})],LyraToolCallChip.prototype,"callId",void 0),__decorate([state()],LyraToolCallChip.prototype,"hasDetailSlot",void 0),__decorate([state()],LyraToolCallChip.prototype,"tooltipOpen",void 0),__decorate([state()],LyraToolCallChip.prototype,"focusDescribed",void 0),__decorate([query('[part="base"]')],LyraToolCallChip.prototype,"baseEl",void 0);export{LyraToolCallChip};
|
|
@@ -13,7 +13,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
13
13
|
@change=${e=>this.onSelectChange(key,e)}
|
|
14
14
|
@lr-change=${this.stopNestedControlEvent}
|
|
15
15
|
@lr-show=${this.stopNestedControlEvent}
|
|
16
|
+
@lr-after-show=${this.stopNestedControlEvent}
|
|
16
17
|
@lr-hide=${this.stopNestedControlEvent}
|
|
18
|
+
@lr-after-hide=${this.stopNestedControlEvent}
|
|
17
19
|
@lr-option-change=${this.stopNestedControlEvent}
|
|
18
20
|
>
|
|
19
21
|
${prop.enum.map(v=>html`<lr-option value=${v}>${v}</lr-option>`)}
|
|
@@ -68,7 +70,9 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
68
70
|
@change=${this.stopNestedControlEvent}
|
|
69
71
|
@lr-change=${e=>this.onBooleanSelectChange(key,e)}
|
|
70
72
|
@lr-show=${this.stopNestedControlEvent}
|
|
73
|
+
@lr-after-show=${this.stopNestedControlEvent}
|
|
71
74
|
@lr-hide=${this.stopNestedControlEvent}
|
|
75
|
+
@lr-after-hide=${this.stopNestedControlEvent}
|
|
72
76
|
@lr-option-change=${this.stopNestedControlEvent}
|
|
73
77
|
>
|
|
74
78
|
<lr-option value="">${this.localize("toolParamBooleanUnset")}</lr-option>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import{type TemplateResult,type PropertyValues}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraToolStatus}from'../../../internal/shared-unions.js';
|
|
2
|
-
/** Same status vocabulary as `<lr-tool-call-chip
|
|
3
|
-
|
|
2
|
+
/** Same status vocabulary as `<lr-tool-call-chip>`, including `incomplete` for a call that ended
|
|
3
|
+
* without a result. */
|
|
4
|
+
export type ToolResultStatus=LyraToolStatus|'incomplete';
|
|
4
5
|
/**
|
|
5
6
|
* Reason the dialog was dismissed, forwarded as the `lr-close` event
|
|
6
7
|
* detail -- mirrors `<lr-dialog>`'s own `DialogCloseReason` shape.
|
|
@@ -81,6 +82,8 @@ export type ToolResultDialogCloseReason='escape'|'backdrop'|'close-button'|'api'
|
|
|
81
82
|
* @cssprop [--lr-tool-result-dialog-error-bg=var(--lr-color-danger-quiet)] - Error status background.
|
|
82
83
|
* @cssprop [--lr-tool-result-dialog-denied-color=var(--lr-color-warning)] - Denied status foreground.
|
|
83
84
|
* @cssprop [--lr-tool-result-dialog-denied-bg=var(--lr-color-warning-quiet)] - Denied status background.
|
|
85
|
+
* @cssprop [--lr-tool-result-dialog-incomplete-color=var(--lr-color-text-quiet)] - Incomplete status foreground.
|
|
86
|
+
* @cssprop [--lr-tool-result-dialog-incomplete-bg=transparent] - Incomplete status background.
|
|
84
87
|
* @status stable
|
|
85
88
|
* @since 4.0.0
|
|
86
89
|
*/
|
|
@@ -103,9 +106,10 @@ accessibleLabel:string|null;
|
|
|
103
106
|
toolName:string;
|
|
104
107
|
/**
|
|
105
108
|
* The tool call's current lifecycle state — drives the header's status
|
|
106
|
-
* badge.
|
|
107
|
-
*
|
|
108
|
-
* `'pending'` rather than
|
|
109
|
+
* badge. `incomplete` is a call that ended without a result. An
|
|
110
|
+
* out-of-union value (e.g. a stray `status` attribute, or a direct property
|
|
111
|
+
* assignment from an untyped caller) is treated as `'pending'` rather than
|
|
112
|
+
* crashing render.
|
|
109
113
|
*/
|
|
110
114
|
status:ToolResultStatus;
|
|
111
115
|
/** How long the call took, in milliseconds. Omitted from the header entirely when unset. */
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,svg,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{nextId}from"../../../internal/a11y.js";import{closeIcon,expandIcon}from"../../../internal/icons.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{TOOL_STATUS_LABEL_KEY,isToolCallStatus,toolGlyph,toolStatusIcon}from"../tool-status.js";import{styles}from"./tool-result-dialog.styles.js";import{LYRA_DEFAULT_close,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_maximize,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_restore,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_toolCall}from"../../../internal/default-strings.generated.js";function shrinkIcon(){return toolGlyph(svg`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,svg,nothing}from"lit";import{property,state}from"lit/decorators.js";import{LyraElement}from"../../../internal/lyra-element.js";import{activateOverlay}from"../../../internal/overlay-manager.js";import{nextId}from"../../../internal/a11y.js";import{closeIcon,expandIcon}from"../../../internal/icons.js";import{finiteRange}from"../../../internal/numbers.js";import{getNumberFormat}from"../../../internal/intl-cache.js";import{durationMessageValue}from"../../../internal/duration.js";import{TOOL_STATUS_LABEL_KEY,isToolCallStatus,toolGlyph,toolStatusIcon}from"../tool-status.js";import{styles}from"./tool-result-dialog.styles.js";import{LYRA_DEFAULT_close,LYRA_DEFAULT_collapse,LYRA_DEFAULT_details,LYRA_DEFAULT_durationMilliseconds,LYRA_DEFAULT_durationSeconds,LYRA_DEFAULT_map,LYRA_DEFAULT_maximize,LYRA_DEFAULT_navigation,LYRA_DEFAULT_open,LYRA_DEFAULT_popover,LYRA_DEFAULT_restore,LYRA_DEFAULT_search,LYRA_DEFAULT_select,LYRA_DEFAULT_statusDenied,LYRA_DEFAULT_statusError,LYRA_DEFAULT_statusIncomplete,LYRA_DEFAULT_statusPending,LYRA_DEFAULT_statusRunning,LYRA_DEFAULT_statusSuccess,LYRA_DEFAULT_toolCall}from"../../../internal/default-strings.generated.js";function shrinkIcon(){return toolGlyph(svg`
|
|
2
2
|
<polyline points="4 14 10 14 10 20"></polyline>
|
|
3
3
|
<polyline points="20 10 14 10 14 4"></polyline>
|
|
4
4
|
<line x1="14" y1="10" x2="21" y2="3"></line>
|
|
5
5
|
<line x1="3" y1="21" x2="10" y2="14"></line>
|
|
6
|
-
`)}const statusConverter={fromAttribute(value){return value!==null&&isToolCallStatus(value)?value:"pending"},toAttribute(value){return value}};class LyraToolResultDialog extends LyraElement{constructor(){super(...arguments),this.open=!1,this.lightDismiss=!1,this.accessibleLabel=null,this.toolName="",this.status="pending",this.maximized=!1,this.hasFooterSlot=!1,this.titleId=nextId("tool-result-dialog-title"),this.onFooterSlotChange=()=>{this.hasFooterSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="footer")},this.onBackdropClick=()=>{this.overlay?.dismissBackdrop()},this.onCloseButtonClick=()=>{this.close("close-button")},this.toggleMaximized=()=>{const next=!this.maximized;this.emit("lr-maximize-change",Object.freeze({maximized:next}),{cancelable:!0}).defaultPrevented||(this.maximized=next)}}static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,maximize:LYRA_DEFAULT_maximize,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,restore:LYRA_DEFAULT_restore,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall}}static{this.styles=[LyraElement.styles,styles]}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasFooterSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="footer")),changed.has("open")&&(this.open?this.activateOverlay():this.deactivateOverlay())}updated(changed){super.updated(changed),changed.has("open")&&this.open&&this.overlay?.focusInitial()}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.open&&(this.overlay?.isActive()?this.overlay.resume():this.activateOverlay(),queueMicrotask(()=>this.overlay?.focusInitial()))}disconnectedCallback(){super.disconnectedCallback(),this.overlay?.suspend()}close(reason="api"){this.open&&(this.open=!1,this.emit("lr-close",reason))}show(){this.open||(this.open=!0)}hide(reason="api"){this.close(reason)}activateOverlay(){this.overlay?.isActive()||(this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="panel"]')??null,onEscape:()=>this.close("escape"),onBackdrop:()=>{this.lightDismiss&&this.close("backdrop")},lockScroll:!0,suspendWhenUnrendered:!0}))}deactivateOverlay(){this.overlay?.deactivate(),this.overlay=void 0}localizedDuration(ms){const duration=durationMessageValue(ms);return this.localize(duration.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:duration.key==="durationSeconds"?1:0}).format(duration.value)})}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}render(){const durationMs=this.safeDurationMs,panelLabel=!this.hasAttribute("aria-label")&&this.accessibleLabel?this.accessibleLabel:null;return html`
|
|
6
|
+
`)}const statusConverter={fromAttribute(value){return value!==null&&isToolCallStatus(value)?value:"pending"},toAttribute(value){return value}};class LyraToolResultDialog extends LyraElement{constructor(){super(...arguments),this.open=!1,this.lightDismiss=!1,this.accessibleLabel=null,this.toolName="",this.status="pending",this.maximized=!1,this.hasFooterSlot=!1,this.titleId=nextId("tool-result-dialog-title"),this.onFooterSlotChange=()=>{this.hasFooterSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="footer")},this.onBackdropClick=()=>{this.overlay?.dismissBackdrop()},this.onCloseButtonClick=()=>{this.close("close-button")},this.toggleMaximized=()=>{const next=!this.maximized;this.emit("lr-maximize-change",Object.freeze({maximized:next}),{cancelable:!0}).defaultPrevented||(this.maximized=next)}}static{this.defaultStrings={...super.defaultStrings,close:LYRA_DEFAULT_close,collapse:LYRA_DEFAULT_collapse,details:LYRA_DEFAULT_details,durationMilliseconds:LYRA_DEFAULT_durationMilliseconds,durationSeconds:LYRA_DEFAULT_durationSeconds,map:LYRA_DEFAULT_map,maximize:LYRA_DEFAULT_maximize,navigation:LYRA_DEFAULT_navigation,open:LYRA_DEFAULT_open,popover:LYRA_DEFAULT_popover,restore:LYRA_DEFAULT_restore,search:LYRA_DEFAULT_search,select:LYRA_DEFAULT_select,statusDenied:LYRA_DEFAULT_statusDenied,statusError:LYRA_DEFAULT_statusError,statusIncomplete:LYRA_DEFAULT_statusIncomplete,statusPending:LYRA_DEFAULT_statusPending,statusRunning:LYRA_DEFAULT_statusRunning,statusSuccess:LYRA_DEFAULT_statusSuccess,toolCall:LYRA_DEFAULT_toolCall}}static{this.styles=[LyraElement.styles,styles]}willUpdate(changed){super.willUpdate(changed),this.hasUpdated||(this.hasFooterSlot=Array.from(this.children).some(el=>el.getAttribute("slot")==="footer")),changed.has("open")&&(this.open?this.activateOverlay():this.deactivateOverlay())}updated(changed){super.updated(changed),changed.has("open")&&this.open&&this.overlay?.focusInitial()}connectedCallback(){super.connectedCallback(),this.hasUpdated&&this.open&&(this.overlay?.isActive()?this.overlay.resume():this.activateOverlay(),queueMicrotask(()=>this.overlay?.focusInitial()))}disconnectedCallback(){super.disconnectedCallback(),this.overlay?.suspend()}close(reason="api"){this.open&&(this.open=!1,this.emit("lr-close",reason))}show(){this.open||(this.open=!0)}hide(reason="api"){this.close(reason)}activateOverlay(){this.overlay?.isActive()||(this.overlay=activateOverlay({host:this,panel:()=>this.shadowRoot?.querySelector('[part="panel"]')??null,onEscape:()=>this.close("escape"),onBackdrop:()=>{this.lightDismiss&&this.close("backdrop")},lockScroll:!0,suspendWhenUnrendered:!0}))}deactivateOverlay(){this.overlay?.deactivate(),this.overlay=void 0}localizedDuration(ms){const duration=durationMessageValue(ms);return this.localize(duration.key,void 0,{value:getNumberFormat(this.effectiveLocale,{maximumFractionDigits:duration.key==="durationSeconds"?1:0}).format(duration.value)})}get safeDurationMs(){return this.durationMs!=null&&Number.isFinite(this.durationMs)?finiteRange(this.durationMs,0,0):null}render(){const durationMs=this.safeDurationMs,panelLabel=!this.hasAttribute("aria-label")&&this.accessibleLabel?this.accessibleLabel:null;return html`
|
|
7
7
|
<div part="backdrop" @click=${this.onBackdropClick}></div>
|
|
8
8
|
<div
|
|
9
9
|
part="panel"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{--_lr-tool-result-dialog-overlay-color:var(--lr-color-overlay);--_lr-tool-result-dialog-maximized-inset:max(var(--lr-space-l), var(--lr-safe-area-top)) max(var(--lr-space-l), var(--lr-safe-area-inline-end)) max(var(--lr-space-l), var(--lr-safe-area-bottom)) max(var(--lr-space-l), var(--lr-safe-area-inline-start));--_lr-tool-result-dialog-spin:var(--lr-transition-ambient);--_lr-tool-result-dialog-pending-color:var(--lr-color-text-quiet);--_lr-tool-result-dialog-pending-bg:transparent;--_lr-tool-result-dialog-running-color:var(--lr-color-brand);--_lr-tool-result-dialog-running-bg:var(--lr-color-brand-quiet);--_lr-tool-result-dialog-success-color:var(--lr-color-success);--_lr-tool-result-dialog-success-bg:var(--lr-color-success-quiet);--_lr-tool-result-dialog-error-color:var(--lr-color-danger);--_lr-tool-result-dialog-error-bg:var(--lr-color-danger-quiet);--_lr-tool-result-dialog-denied-color:var(--lr-color-warning);--_lr-tool-result-dialog-denied-bg:var(--lr-color-warning-quiet);z-index:var(--lr-overlay-stack-index,var(--lr-layer-modal));justify-content:center;align-items:center;padding-block-start:max(var(--lr-space-l), var(--lr-safe-area-top));padding-block-end:max(var(--lr-space-l), var(--lr-safe-area-bottom));padding-inline-start:max(var(--lr-space-l), var(--lr-safe-area-inline-start));padding-inline-end:max(var(--lr-space-l), var(--lr-safe-area-inline-end));display:none;position:fixed;inset:0}:host([open]){display:flex}[part=backdrop]{background:var(--lr-tool-result-dialog-overlay-color,var(--_lr-tool-result-dialog-overlay-color));position:absolute;inset:0}[part=panel]{inline-size:min(var(--lr-size-48rem), 100%);box-sizing:border-box;background:var(--lr-color-surface-overlay);border:var(--lr-border-width-thin) solid var(--lr-color-border-subtle);border-radius:var(--lr-radius);max-block-size:100%;min-inline-size:0;box-shadow:var(--lr-shadow-xl);transition:inline-size var(--lr-transition-base), block-size var(--lr-transition-base);flex-direction:column;display:flex;position:relative;overflow:hidden}:host([maximized]) [part=panel]{inset:var(--lr-tool-result-dialog-maximized-inset,var(--_lr-tool-result-dialog-maximized-inset));max-block-size:none;inline-size:auto;position:fixed}[part=header]{align-items:center;gap:var(--lr-space-s);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;padding:var(--lr-space-m) var(--lr-space-l);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border-subtle);flex-wrap:wrap;display:flex}[part=title]{align-items:center;gap:var(--lr-space-s);flex-wrap:wrap;flex:auto;min-inline-size:0;max-inline-size:100%;display:flex}[part=tool-name]{min-inline-size:0;max-inline-size:100%;font-weight:var(--lr-font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}[part=status]{align-items:center;gap:var(--lr-size-0-25rem);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;padding:var(--lr-size-0-125rem) var(--lr-space-xs);border-radius:var(--lr-radius);font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);white-space:normal;overflow-wrap:anywhere;color:var(--lr-tool-result-dialog-pending-color,var(--_lr-tool-result-dialog-pending-color));background:var(--lr-tool-result-dialog-pending-bg,var(--_lr-tool-result-dialog-pending-bg));flex:0 auto;display:inline-flex}[part=status] svg{inline-size:var(--lr-size-1em);block-size:var(--lr-size-1em);flex:none}[part=status] span{overflow-wrap:anywhere;min-inline-size:0}:host([status=running]) [part=status]{color:var(--lr-tool-result-dialog-running-color,var(--_lr-tool-result-dialog-running-color));background:var(--lr-tool-result-dialog-running-bg,var(--_lr-tool-result-dialog-running-bg))}:host([status=success]) [part=status]{color:var(--lr-tool-result-dialog-success-color,var(--_lr-tool-result-dialog-success-color));background:var(--lr-tool-result-dialog-success-bg,var(--_lr-tool-result-dialog-success-bg))}:host([status=error]) [part=status]{color:var(--lr-tool-result-dialog-error-color,var(--_lr-tool-result-dialog-error-color));background:var(--lr-tool-result-dialog-error-bg,var(--_lr-tool-result-dialog-error-bg))}:host([status=denied]) [part=status]{color:var(--lr-tool-result-dialog-denied-color,var(--_lr-tool-result-dialog-denied-color));background:var(--lr-tool-result-dialog-denied-bg,var(--_lr-tool-result-dialog-denied-bg))}:host([status=running]) [part=status] svg{animation:lr-tool-result-dialog-spin var(--lr-tool-result-dialog-spin,var(--_lr-tool-result-dialog-spin)) infinite}[part=duration]{max-inline-size:100%;font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);white-space:nowrap}[part=header-actions]{align-items:center;gap:var(--lr-space-xs);flex:none;max-inline-size:100%;margin-inline-start:auto;display:flex}[part=maximize-button],[part=close-button]{font:inherit;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}[part=maximize-button]:hover,[part=close-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=maximize-button]:active,[part=close-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=maximize-button]:focus-visible,[part=close-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=body]{min-block-size:0;padding:var(--lr-space-l);flex:auto;overflow:auto}[part=footer]{justify-content:flex-end;align-items:center;gap:var(--lr-space-s);padding:var(--lr-space-m) var(--lr-space-l);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border-subtle);flex-wrap:wrap;display:flex}[part=footer][hidden]{display:none}@keyframes lr-tool-result-dialog-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){[part=panel]{transition:none!important}:host([status=running]) [part=status] svg{animation:none!important}}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{--_lr-tool-result-dialog-overlay-color:var(--lr-color-overlay);--_lr-tool-result-dialog-maximized-inset:max(var(--lr-space-l), var(--lr-safe-area-top)) max(var(--lr-space-l), var(--lr-safe-area-inline-end)) max(var(--lr-space-l), var(--lr-safe-area-bottom)) max(var(--lr-space-l), var(--lr-safe-area-inline-start));--_lr-tool-result-dialog-spin:var(--lr-transition-ambient);--_lr-tool-result-dialog-pending-color:var(--lr-color-text-quiet);--_lr-tool-result-dialog-pending-bg:transparent;--_lr-tool-result-dialog-running-color:var(--lr-color-brand);--_lr-tool-result-dialog-running-bg:var(--lr-color-brand-quiet);--_lr-tool-result-dialog-success-color:var(--lr-color-success);--_lr-tool-result-dialog-success-bg:var(--lr-color-success-quiet);--_lr-tool-result-dialog-error-color:var(--lr-color-danger);--_lr-tool-result-dialog-error-bg:var(--lr-color-danger-quiet);--_lr-tool-result-dialog-denied-color:var(--lr-color-warning);--_lr-tool-result-dialog-denied-bg:var(--lr-color-warning-quiet);--_lr-tool-result-dialog-incomplete-color:var(--lr-color-text-quiet);--_lr-tool-result-dialog-incomplete-bg:transparent;z-index:var(--lr-overlay-stack-index,var(--lr-layer-modal));justify-content:center;align-items:center;padding-block-start:max(var(--lr-space-l), var(--lr-safe-area-top));padding-block-end:max(var(--lr-space-l), var(--lr-safe-area-bottom));padding-inline-start:max(var(--lr-space-l), var(--lr-safe-area-inline-start));padding-inline-end:max(var(--lr-space-l), var(--lr-safe-area-inline-end));display:none;position:fixed;inset:0}:host([open]){display:flex}[part=backdrop]{background:var(--lr-tool-result-dialog-overlay-color,var(--_lr-tool-result-dialog-overlay-color));position:absolute;inset:0}[part=panel]{inline-size:min(var(--lr-size-48rem), 100%);box-sizing:border-box;background:var(--lr-color-surface-overlay);border:var(--lr-border-width-thin) solid var(--lr-color-border-subtle);border-radius:var(--lr-radius);max-block-size:100%;min-inline-size:0;box-shadow:var(--lr-shadow-xl);transition:inline-size var(--lr-transition-base), block-size var(--lr-transition-base);flex-direction:column;display:flex;position:relative;overflow:hidden}:host([maximized]) [part=panel]{inset:var(--lr-tool-result-dialog-maximized-inset,var(--_lr-tool-result-dialog-maximized-inset));max-block-size:none;inline-size:auto;position:fixed}[part=header]{align-items:center;gap:var(--lr-space-s);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;padding:var(--lr-space-m) var(--lr-space-l);border-block-end:var(--lr-border-width-thin) solid var(--lr-color-border-subtle);flex-wrap:wrap;display:flex}[part=title]{align-items:center;gap:var(--lr-space-s);flex-wrap:wrap;flex:auto;min-inline-size:0;max-inline-size:100%;display:flex}[part=tool-name]{min-inline-size:0;max-inline-size:100%;font-weight:var(--lr-font-weight-semibold);text-overflow:ellipsis;white-space:nowrap;flex:auto;overflow:hidden}[part=status]{align-items:center;gap:var(--lr-size-0-25rem);box-sizing:border-box;min-inline-size:0;max-inline-size:100%;padding:var(--lr-size-0-125rem) var(--lr-space-xs);border-radius:var(--lr-radius);font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);white-space:normal;overflow-wrap:anywhere;color:var(--lr-tool-result-dialog-pending-color,var(--_lr-tool-result-dialog-pending-color));background:var(--lr-tool-result-dialog-pending-bg,var(--_lr-tool-result-dialog-pending-bg));flex:0 auto;display:inline-flex}[part=status] svg{inline-size:var(--lr-size-1em);block-size:var(--lr-size-1em);flex:none}[part=status] span{overflow-wrap:anywhere;min-inline-size:0}:host([status=running]) [part=status]{color:var(--lr-tool-result-dialog-running-color,var(--_lr-tool-result-dialog-running-color));background:var(--lr-tool-result-dialog-running-bg,var(--_lr-tool-result-dialog-running-bg))}:host([status=success]) [part=status]{color:var(--lr-tool-result-dialog-success-color,var(--_lr-tool-result-dialog-success-color));background:var(--lr-tool-result-dialog-success-bg,var(--_lr-tool-result-dialog-success-bg))}:host([status=error]) [part=status]{color:var(--lr-tool-result-dialog-error-color,var(--_lr-tool-result-dialog-error-color));background:var(--lr-tool-result-dialog-error-bg,var(--_lr-tool-result-dialog-error-bg))}:host([status=denied]) [part=status]{color:var(--lr-tool-result-dialog-denied-color,var(--_lr-tool-result-dialog-denied-color));background:var(--lr-tool-result-dialog-denied-bg,var(--_lr-tool-result-dialog-denied-bg))}:host([status=incomplete]) [part=status]{color:var(--lr-tool-result-dialog-incomplete-color,var(--_lr-tool-result-dialog-incomplete-color));background:var(--lr-tool-result-dialog-incomplete-bg,var(--_lr-tool-result-dialog-incomplete-bg))}:host([status=running]) [part=status] svg{animation:lr-tool-result-dialog-spin var(--lr-tool-result-dialog-spin,var(--_lr-tool-result-dialog-spin)) infinite}[part=duration]{max-inline-size:100%;font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);white-space:nowrap}[part=header-actions]{align-items:center;gap:var(--lr-space-xs);flex:none;max-inline-size:100%;margin-inline-start:auto;display:flex}[part=maximize-button],[part=close-button]{font:inherit;min-inline-size:var(--lr-icon-button-size);min-block-size:var(--lr-icon-button-size);color:var(--lr-color-text-quiet);border-radius:var(--lr-radius);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}[part=maximize-button]:hover,[part=close-button]:hover{background:var(--lr-color-brand-quiet);color:var(--lr-color-brand)}[part=maximize-button]:active,[part=close-button]:active{background:color-mix(in oklab, var(--lr-color-brand-quiet), var(--lr-color-mix-partner) var(--lr-color-mix-active))}[part=maximize-button]:focus-visible,[part=close-button]:focus-visible{outline:var(--lr-focus-ring-width) solid var(--lr-focus-ring-color);outline-offset:var(--lr-focus-ring-offset)}[part=body]{min-block-size:0;padding:var(--lr-space-l);flex:auto;overflow:auto}[part=footer]{justify-content:flex-end;align-items:center;gap:var(--lr-space-s);padding:var(--lr-space-m) var(--lr-space-l);border-block-start:var(--lr-border-width-thin) solid var(--lr-color-border-subtle);flex-wrap:wrap;display:flex}[part=footer][hidden]{display:none}@keyframes lr-tool-result-dialog-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){[part=panel]{transition:none!important}:host([status=running]) [part=status] svg{animation:none!important}}`;export{styles};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{svg}from"lit";const TOOL_CALL_STATUSES=Object.freeze(["pending","running","success","error","denied"]),TOOL_CALL_STATUS_SET=new Set(TOOL_CALL_STATUSES);function isToolCallStatus(value){return typeof value=="string"&&TOOL_CALL_STATUS_SET.has(value)}const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function toolGlyph(paths){return svg`
|
|
1
|
+
import{svg}from"lit";const TOOL_CALL_STATUSES=Object.freeze(["pending","running","success","error","denied","incomplete"]),TOOL_CALL_STATUS_SET=new Set(TOOL_CALL_STATUSES);function isToolCallStatus(value){return typeof value=="string"&&TOOL_CALL_STATUS_SET.has(value)}const ICON_VIEW_BOX="0 0 24 24",ICON_STROKE_WIDTH="1.75";function toolGlyph(paths){return svg`
|
|
2
2
|
<svg
|
|
3
3
|
width="1em"
|
|
4
4
|
height="1em"
|
|
@@ -15,4 +15,4 @@ import{svg}from"lit";const TOOL_CALL_STATUSES=Object.freeze(["pending","running"
|
|
|
15
15
|
<circle cx="12" cy="12" r="9"></circle>
|
|
16
16
|
<line x1="9" y1="9" x2="15" y2="15"></line>
|
|
17
17
|
<line x1="15" y1="9" x2="9" y2="15"></line>
|
|
18
|
-
`)}function deniedIcon(){return toolGlyph(svg`<circle cx="12" cy="12" r="9"></circle><line x1="6" y1="18" x2="18" y2="6"></line>`)}const STATUS_ICON=Object.freeze({pending:pendingIcon,running:runningIcon,success:successIcon,error:errorIcon,denied:deniedIcon});function toolStatusIcon(status){return STATUS_ICON[isToolCallStatus(status)?status:"pending"]()}const TOOL_STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError",denied:"statusDenied"};export{TOOL_CALL_STATUSES,TOOL_STATUS_LABEL_KEY,isToolCallStatus,toolGlyph,toolStatusIcon};
|
|
18
|
+
`)}function deniedIcon(){return toolGlyph(svg`<circle cx="12" cy="12" r="9"></circle><line x1="6" y1="18" x2="18" y2="6"></line>`)}function incompleteIcon(){return toolGlyph(svg`<circle cx="12" cy="12" r="9"></circle><line x1="8" y1="12" x2="16" y2="12"></line>`)}const STATUS_ICON=Object.freeze({pending:pendingIcon,running:runningIcon,success:successIcon,error:errorIcon,denied:deniedIcon,incomplete:incompleteIcon});function toolStatusIcon(status){return STATUS_ICON[isToolCallStatus(status)?status:"pending"]()}const TOOL_STATUS_LABEL_KEY={pending:"statusPending",running:"statusRunning",success:"statusSuccess",error:"statusError",denied:"statusDenied",incomplete:"statusIncomplete"};export{TOOL_CALL_STATUSES,TOOL_STATUS_LABEL_KEY,isToolCallStatus,toolGlyph,toolStatusIcon};
|
|
@@ -68,6 +68,11 @@ export type ToolTimelineApprovalPending=ApprovalAction|null;export interface Lyr
|
|
|
68
68
|
* ceiling, and a localized notice exposes truncation instead of silently hiding it. Foreign
|
|
69
69
|
* runtime statuses normalize once to `pending` before both row and child presentation.
|
|
70
70
|
*
|
|
71
|
+
* An entry's `displayName` (the application's translated tool label) is shown on its chip and in
|
|
72
|
+
* its details disclosure name; `name` still selects the result renderer, is still the
|
|
73
|
+
* `toolName` in `lr-tool-render-error`, and still names the tool in the approval dialog, where the
|
|
74
|
+
* exact tool being authorized matters more than its friendly label.
|
|
75
|
+
*
|
|
71
76
|
* Redaction work is deferred until a detail row opens and memoized while its payload/path inputs
|
|
72
77
|
* remain unchanged. It is bounded to 100 paths, 64 levels, and 10,000 visited nodes; exceeding a
|
|
73
78
|
* ceiling masks the affected branch rather than exposing data or exhausting the page. Redaction
|
|
@@ -138,6 +143,9 @@ export type ToolTimelineApprovalPending=ApprovalAction|null;export interface Lyr
|
|
|
138
143
|
* retint either independently.
|
|
139
144
|
* @cssprop [--lr-tool-timeline-pending-marker-color=var(--lr-color-text-quiet)] - Rail-dot color
|
|
140
145
|
* for a `status="pending"` entry.
|
|
146
|
+
* @cssprop [--lr-tool-timeline-incomplete-marker-color=var(--lr-color-text-quiet)] - Rail-dot color
|
|
147
|
+
* for a `status="incomplete"` entry (a call that ended without a result), independent of the
|
|
148
|
+
* pending one.
|
|
141
149
|
* @cssprop [--lr-tool-timeline-pending-approval-border-color=var(--lr-color-warning)] - Color of
|
|
142
150
|
* the entry body's leading border while `data-pending-approval="true"`.
|
|
143
151
|
* @cssprop [--lr-tool-timeline-running-marker-color=var(--lr-color-brand)] - Running rail dot.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{eyeOffIcon}from"../../../internal/icons.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./tool-timeline.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{overallSemanticLabel}from"../semantic-owner.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{TOOL_CALL_STATUSES}from"../tool-status.js";import{EMPTY_REDACTION_PATHS,projectedRedactionFields,redactToolDetail}from"../tool-redaction.js";import{LYRA_DEFAULT_confirmApproved,LYRA_DEFAULT_confirmDenied,LYRA_DEFAULT_envListValueHidden,LYRA_DEFAULT_noData,LYRA_DEFAULT_retry,LYRA_DEFAULT_toolTimelineDetailsFor,LYRA_DEFAULT_toolTimelineLimit}from"../../../internal/default-strings.generated.js";const MAX_RENDERED_ENTRIES=500,TOOL_STATUSES=new Set(TOOL_CALL_STATUSES);function descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function projectToolTimelineEntry(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),nameDescriptor=descriptorValue(value,"name"),argsDescriptor=descriptorValue(value,"args"),statusDescriptor=descriptorValue(value,"status"),resultDescriptor=descriptorValue(value,"result"),errorDescriptor=descriptorValue(value,"error"),sourceKeyDescriptor=descriptorValue(value,"sourceKey"),iconDescriptor=descriptorValue(value,"icon"),startedAtDescriptor=descriptorValue(value,"startedAt"),endedAtDescriptor=descriptorValue(value,"endedAt"),retryCountDescriptor=descriptorValue(value,"retryCount"),redactedFieldsDescriptor=descriptorValue(value,"redactedFields"),needsApprovalDescriptor=descriptorValue(value,"needsApproval"),approvedDescriptor=descriptorValue(value,"approved");if([idDescriptor,nameDescriptor,argsDescriptor,statusDescriptor,resultDescriptor,errorDescriptor,sourceKeyDescriptor,iconDescriptor,startedAtDescriptor,endedAtDescriptor,retryCountDescriptor,redactedFieldsDescriptor,needsApprovalDescriptor,approvedDescriptor].some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return;const valueOf=descriptor=>{if(!(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return descriptor.value},id=valueOf(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const redactedFieldsValue=valueOf(redactedFieldsDescriptor),redactedFields=redactedFieldsValue===void 0?EMPTY_REDACTION_PATHS:projectedRedactionFields(redactedFieldsValue);if(redactedFields===void 0)return;const name=valueOf(nameDescriptor),status=valueOf(statusDescriptor),result=valueOf(resultDescriptor),error=valueOf(errorDescriptor),sourceKey=valueOf(sourceKeyDescriptor),icon=valueOf(iconDescriptor),startedAt=valueOf(startedAtDescriptor),endedAt=valueOf(endedAtDescriptor),retryCount=valueOf(retryCountDescriptor),needsApproval=valueOf(needsApprovalDescriptor),approved=valueOf(approvedDescriptor);return Object.freeze({source:value,id,name:typeof name=="string"?name:"",args:valueOf(argsDescriptor),status:TOOL_STATUSES.has(status)?status:"pending",...result===void 0?{}:{result},...typeof error=="string"?{error}:{},...typeof sourceKey=="string"?{sourceKey}:{},...typeof icon=="string"?{icon}:{},...typeof startedAt=="number"?{startedAt}:{},...typeof endedAt=="number"?{endedAt}:{},...typeof retryCount=="number"?{retryCount}:{},redactedFields,...typeof needsApproval=="boolean"?{needsApproval}:{},...typeof approved=="boolean"?{approved}:{}})}catch{return}}function entrySourceKey(entry){return entry.sourceKey?.trim()?entry.sourceKey:void 0}function entryIdentity(entry){return JSON.stringify([entrySourceKey(entry)??null,entry.id])}function entryCorrelation(entry){const sourceKey=entrySourceKey(entry);return sourceKey===void 0?{invocationId:entry.id}:{invocationId:entry.id,sourceKey}}function defaultFormatTimestamp(date,locale){return getDateTimeFormat(locale,{hour:"numeric",minute:"2-digit"}).format(date)}class LyraToolTimeline extends LyraElement{constructor(){super(...arguments),this.entries=[],this.approvalEditable=!0,this.approvalPending=null,this.openedEntryIds=new Set,this.projectedEntriesCache=[],this.projectionTruncated=!1,this.redactionCache=new WeakMap,this.limitAnnouncementInitialized=!1,this.previouslyTruncated=!1,this.onDialogApprove=event=>{event.stopPropagation();const entry=this.reviewingEntry;if(entry===void 0)return;const key=entryIdentity(entry);if(this.emit("lr-tool-approval-decide",{...entryCorrelation(entry),approved:!0,args:event.detail.args},{cancelable:!0}).defaultPrevented&&this.entryStillNeedsApproval(key)){this.approvalPending="approve",event.preventDefault();return}this.approvalPending=null,this.reviewingEntryKey=void 0},this.onDialogDeny=event=>{event.stopPropagation();const entry=this.reviewingEntry;if(entry===void 0)return;const key=entryIdentity(entry);if(this.emit("lr-tool-approval-decide",{...entryCorrelation(entry),approved:!1},{cancelable:!0}).defaultPrevented&&this.entryStillNeedsApproval(key)){this.approvalPending="deny",event.preventDefault();return}this.approvalPending=null,this.reviewingEntryKey=void 0},this.onDialogClose=event=>{event.stopPropagation(),this.approvalPending=null,this.reviewingEntryKey=void 0}}static{this.defaultStrings={...super.defaultStrings,confirmApproved:LYRA_DEFAULT_confirmApproved,confirmDenied:LYRA_DEFAULT_confirmDenied,envListValueHidden:LYRA_DEFAULT_envListValueHidden,noData:LYRA_DEFAULT_noData,retry:LYRA_DEFAULT_retry,toolTimelineDetailsFor:LYRA_DEFAULT_toolTimelineDetailsFor,toolTimelineLimit:LYRA_DEFAULT_toolTimelineLimit}}static{this.ownedCollectionProperties=Object.freeze(["entries"])}static{this.identityCollectionProperties=Object.freeze(["entries"])}static{this.styles=[LyraElement.styles,styles,srOnly]}connectedCallback(){super.connectedCallback(),this.syncLimitAnnouncementSink(),this.limitAnnouncementInitialized=this.hasUpdated,this.previouslyTruncated=this.projectionTruncated}disconnectedCallback(){this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.syncLimitAnnouncementSink()}syncLimitAnnouncementSink(){!this.isConnected||this.limitAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}get pendingApproval(){return this.approvalPending}willUpdate(changed){if(super.willUpdate(changed),!changed.has("entries"))return;this.rebuildProjection();const projected=this.projectedEntriesCache,identities=new Set(projected.map(entryIdentity));if(this.reviewingEntryKey!==void 0){const still=projected.find(entry=>entryIdentity(entry)===this.reviewingEntryKey);(!still||!(still.needsApproval&&still.approved===void 0))&&(this.reviewingEntryKey=void 0,this.approvalPending=null)}const opened=new Set([...this.openedEntryIds].filter(key=>identities.has(key)));opened.size!==this.openedEntryIds.size&&(this.openedEntryIds=opened)}updated(changed){super.updated(changed),this.limitAnnouncementInitialized&&this.projectionTruncated&&!this.previouslyTruncated&&this.limitAnnouncementSink?.announce(this.localize("toolTimelineLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_ENTRIES)})),this.limitAnnouncementInitialized=!0,this.previouslyTruncated=this.projectionTruncated}rebuildProjection(){const entries=Array.isArray(this.entries)?this.entries:[],projected=[],projectedIndex=new Map,reservedKeys=new Set(this.openedEntryIds);this.reviewingEntryKey!==void 0&&reservedKeys.add(this.reviewingEntryKey);const displacedReserved=new Map,seen=new Set;for(const sourceEntry of entries){const entry=projectToolTimelineEntry(sourceEntry);if(!entry)continue;const key=entryIdentity(entry);seen.has(key)||(seen.add(key),projected.length<MAX_RENDERED_ENTRIES?(projectedIndex.set(key,projected.length),projected.push(entry)):reservedKeys.has(key)&&displacedReserved.set(key,entry))}for(const[key,entry]of displacedReserved){if(projectedIndex.has(key))continue;let replacement=projected.length-1;for(;replacement>=0&&reservedKeys.has(entryIdentity(projected[replacement]));)replacement--;if(replacement<0)break;projectedIndex.delete(entryIdentity(projected[replacement])),projected[replacement]=entry,projectedIndex.set(key,replacement)}this.projectedEntriesCache=projected,this.projectionTruncated=seen.size>projected.length}get sortedEntries(){return this.projectedEntriesCache.map((entry,index)=>({entry,index})).sort((a,b)=>{const ak=Number.isFinite(a.entry.startedAt)?a.entry.startedAt:Number.POSITIVE_INFINITY,bk=Number.isFinite(b.entry.startedAt)?b.entry.startedAt:Number.POSITIVE_INFINITY;return ak!==bk?ak-bk:a.index-b.index}).map(({entry})=>entry)}get reviewingEntry(){return this.reviewingEntryKey===void 0?void 0:this.projectedEntriesCache.find(entry=>entryIdentity(entry)===this.reviewingEntryKey)}durationFor(entry){if(entry.startedAt==null||entry.endedAt==null)return;const diff=entry.endedAt-entry.startedAt;return Number.isFinite(diff)?diff:void 0}normalizedDate(ms){if(ms==null||!Number.isFinite(ms))return;const date=new Date(ms);return Number.isNaN(date.getTime())?void 0:date}onChipSelect(entry,event){if(event.stopPropagation(),entry.needsApproval&&entry.approved===void 0){this.reviewingEntryKey=entryIdentity(entry);return}this.emit("lr-tool-activate",entryCorrelation(entry))}entryStillNeedsApproval(key){const entries=Array.isArray(this.entries)?this.entries:[];for(const sourceEntry of entries){const projected=projectToolTimelineEntry(sourceEntry);if(projected!==void 0&&entryIdentity(projected)===key)return projected.needsApproval===!0&&projected.approved===void 0}return!1}finalizePendingApproval(){this.approvalPending!==null&&(this.approvalPending=null,this.reviewingEntryKey=void 0)}revertPendingApproval(){this.approvalPending!==null&&(this.approvalPending=null)}onDetailsToggle(entry,event){event.stopPropagation();const key=entryIdentity(entry),next=new Set(this.openedEntryIds);event.detail.open?next.add(key):next.delete(key),this.openedEntryIds=next}stopOwnedEvent(event){event.stopPropagation()}onRenderError(entry,event){event.stopPropagation(),this.emit("lr-tool-render-error",{...entryCorrelation(entry),...event.detail})}redactedEntry(entry,placeholder){const redacted=redactToolDetail({args:entry.args,result:entry.result,error:entry.error},entry.redactedFields,placeholder,this.redactionCache.get(entry));return this.redactionCache.set(entry,redacted),redacted}openedDetailsTemplate(entry,placeholder){const redacted=this.redactedEntry(entry,placeholder);return html`
|
|
1
|
+
var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r=(c<3?d(r):c>3?d(target,key,r):d(target,key))||r);return c>3&&r&&Object.defineProperty(target,key,r),r};import{html,nothing}from"lit";import{property,state}from"lit/decorators.js";import{repeat}from"lit/directives/repeat.js";import{LyraElement}from"../../../internal/lyra-element.js";import{getDateTimeFormat,getNumberFormat}from"../../../internal/intl-cache.js";import{finiteCount}from"../../../internal/numbers.js";import{eyeOffIcon}from"../../../internal/icons.js";import{srOnly}from"../../../internal/a11y.js";import{styles}from"./tool-timeline.styles.js";import{trueDefaultBooleanConverter}from"../../../internal/converters.js";import{overallSemanticLabel}from"../semantic-owner.js";import{acquireAnnouncementSink}from"../../../internal/announcer.js";import{getOwnDataDescriptor,MISSING_OWN_DATA_DESCRIPTOR,UNSAFE_OWN_DATA_DESCRIPTOR}from"../../../internal/data-descriptors.js";import{TOOL_CALL_STATUSES}from"../tool-status.js";import{EMPTY_REDACTION_PATHS,projectedRedactionFields,redactToolDetail}from"../tool-redaction.js";import{LYRA_DEFAULT_confirmApproved,LYRA_DEFAULT_confirmDenied,LYRA_DEFAULT_envListValueHidden,LYRA_DEFAULT_noData,LYRA_DEFAULT_retry,LYRA_DEFAULT_toolTimelineDetailsFor,LYRA_DEFAULT_toolTimelineLimit}from"../../../internal/default-strings.generated.js";const MAX_RENDERED_ENTRIES=500,TOOL_STATUSES=new Set(TOOL_CALL_STATUSES);function descriptorValue(value,property2){return getOwnDataDescriptor(value,property2)}function projectToolTimelineEntry(value){try{if(value===null||typeof value!="object"||Array.isArray(value))return;const idDescriptor=descriptorValue(value,"id"),nameDescriptor=descriptorValue(value,"name"),displayNameDescriptor=descriptorValue(value,"displayName"),argsDescriptor=descriptorValue(value,"args"),statusDescriptor=descriptorValue(value,"status"),resultDescriptor=descriptorValue(value,"result"),errorDescriptor=descriptorValue(value,"error"),sourceKeyDescriptor=descriptorValue(value,"sourceKey"),iconDescriptor=descriptorValue(value,"icon"),startedAtDescriptor=descriptorValue(value,"startedAt"),endedAtDescriptor=descriptorValue(value,"endedAt"),retryCountDescriptor=descriptorValue(value,"retryCount"),redactedFieldsDescriptor=descriptorValue(value,"redactedFields"),needsApprovalDescriptor=descriptorValue(value,"needsApproval"),approvedDescriptor=descriptorValue(value,"approved");if([idDescriptor,nameDescriptor,displayNameDescriptor,argsDescriptor,statusDescriptor,resultDescriptor,errorDescriptor,sourceKeyDescriptor,iconDescriptor,startedAtDescriptor,endedAtDescriptor,retryCountDescriptor,redactedFieldsDescriptor,needsApprovalDescriptor,approvedDescriptor].some(descriptor=>descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return;const valueOf=descriptor=>{if(!(descriptor===MISSING_OWN_DATA_DESCRIPTOR||descriptor===UNSAFE_OWN_DATA_DESCRIPTOR))return descriptor.value},id=valueOf(idDescriptor);if(typeof id!="string"||id.trim().length===0)return;const redactedFieldsValue=valueOf(redactedFieldsDescriptor),redactedFields=redactedFieldsValue===void 0?EMPTY_REDACTION_PATHS:projectedRedactionFields(redactedFieldsValue);if(redactedFields===void 0)return;const name=valueOf(nameDescriptor),displayName=valueOf(displayNameDescriptor),status=valueOf(statusDescriptor),result=valueOf(resultDescriptor),error=valueOf(errorDescriptor),sourceKey=valueOf(sourceKeyDescriptor),icon=valueOf(iconDescriptor),startedAt=valueOf(startedAtDescriptor),endedAt=valueOf(endedAtDescriptor),retryCount=valueOf(retryCountDescriptor),needsApproval=valueOf(needsApprovalDescriptor),approved=valueOf(approvedDescriptor);return Object.freeze({source:value,id,name:typeof name=="string"?name:"",...typeof displayName=="string"?{displayName}:{},args:valueOf(argsDescriptor),status:TOOL_STATUSES.has(status)?status:"pending",...result===void 0?{}:{result},...typeof error=="string"?{error}:{},...typeof sourceKey=="string"?{sourceKey}:{},...typeof icon=="string"?{icon}:{},...typeof startedAt=="number"?{startedAt}:{},...typeof endedAt=="number"?{endedAt}:{},...typeof retryCount=="number"?{retryCount}:{},redactedFields,...typeof needsApproval=="boolean"?{needsApproval}:{},...typeof approved=="boolean"?{approved}:{}})}catch{return}}function entrySourceKey(entry){return entry.sourceKey?.trim()?entry.sourceKey:void 0}function entryIdentity(entry){return JSON.stringify([entrySourceKey(entry)??null,entry.id])}function entryCorrelation(entry){const sourceKey=entrySourceKey(entry);return sourceKey===void 0?{invocationId:entry.id}:{invocationId:entry.id,sourceKey}}function defaultFormatTimestamp(date,locale){return getDateTimeFormat(locale,{hour:"numeric",minute:"2-digit"}).format(date)}class LyraToolTimeline extends LyraElement{constructor(){super(...arguments),this.entries=[],this.approvalEditable=!0,this.approvalPending=null,this.openedEntryIds=new Set,this.projectedEntriesCache=[],this.projectionTruncated=!1,this.redactionCache=new WeakMap,this.limitAnnouncementInitialized=!1,this.previouslyTruncated=!1,this.onDialogApprove=event=>{event.stopPropagation();const entry=this.reviewingEntry;if(entry===void 0)return;const key=entryIdentity(entry);if(this.emit("lr-tool-approval-decide",{...entryCorrelation(entry),approved:!0,args:event.detail.args},{cancelable:!0}).defaultPrevented&&this.entryStillNeedsApproval(key)){this.approvalPending="approve",event.preventDefault();return}this.approvalPending=null,this.reviewingEntryKey=void 0},this.onDialogDeny=event=>{event.stopPropagation();const entry=this.reviewingEntry;if(entry===void 0)return;const key=entryIdentity(entry);if(this.emit("lr-tool-approval-decide",{...entryCorrelation(entry),approved:!1},{cancelable:!0}).defaultPrevented&&this.entryStillNeedsApproval(key)){this.approvalPending="deny",event.preventDefault();return}this.approvalPending=null,this.reviewingEntryKey=void 0},this.onDialogClose=event=>{event.stopPropagation(),this.approvalPending=null,this.reviewingEntryKey=void 0}}static{this.defaultStrings={...super.defaultStrings,confirmApproved:LYRA_DEFAULT_confirmApproved,confirmDenied:LYRA_DEFAULT_confirmDenied,envListValueHidden:LYRA_DEFAULT_envListValueHidden,noData:LYRA_DEFAULT_noData,retry:LYRA_DEFAULT_retry,toolTimelineDetailsFor:LYRA_DEFAULT_toolTimelineDetailsFor,toolTimelineLimit:LYRA_DEFAULT_toolTimelineLimit}}static{this.ownedCollectionProperties=Object.freeze(["entries"])}static{this.identityCollectionProperties=Object.freeze(["entries"])}static{this.styles=[LyraElement.styles,styles,srOnly]}connectedCallback(){super.connectedCallback(),this.syncLimitAnnouncementSink(),this.limitAnnouncementInitialized=this.hasUpdated,this.previouslyTruncated=this.projectionTruncated}disconnectedCallback(){this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,super.disconnectedCallback()}adoptedCallback(){super.adoptedCallback(),this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=void 0,this.syncLimitAnnouncementSink()}syncLimitAnnouncementSink(){!this.isConnected||this.limitAnnouncementSink?.element.ownerDocument===this.ownerDocument||(this.limitAnnouncementSink?.release(),this.limitAnnouncementSink=acquireAnnouncementSink("polite",{document:this.ownerDocument,source:this}))}get pendingApproval(){return this.approvalPending}willUpdate(changed){if(super.willUpdate(changed),!changed.has("entries"))return;this.rebuildProjection();const projected=this.projectedEntriesCache,identities=new Set(projected.map(entryIdentity));if(this.reviewingEntryKey!==void 0){const still=projected.find(entry=>entryIdentity(entry)===this.reviewingEntryKey);(!still||!(still.needsApproval&&still.approved===void 0))&&(this.reviewingEntryKey=void 0,this.approvalPending=null)}const opened=new Set([...this.openedEntryIds].filter(key=>identities.has(key)));opened.size!==this.openedEntryIds.size&&(this.openedEntryIds=opened)}updated(changed){super.updated(changed),this.limitAnnouncementInitialized&&this.projectionTruncated&&!this.previouslyTruncated&&this.limitAnnouncementSink?.announce(this.localize("toolTimelineLimit",void 0,{count:getNumberFormat(this.effectiveLocale).format(MAX_RENDERED_ENTRIES)})),this.limitAnnouncementInitialized=!0,this.previouslyTruncated=this.projectionTruncated}rebuildProjection(){const entries=Array.isArray(this.entries)?this.entries:[],projected=[],projectedIndex=new Map,reservedKeys=new Set(this.openedEntryIds);this.reviewingEntryKey!==void 0&&reservedKeys.add(this.reviewingEntryKey);const displacedReserved=new Map,seen=new Set;for(const sourceEntry of entries){const entry=projectToolTimelineEntry(sourceEntry);if(!entry)continue;const key=entryIdentity(entry);seen.has(key)||(seen.add(key),projected.length<MAX_RENDERED_ENTRIES?(projectedIndex.set(key,projected.length),projected.push(entry)):reservedKeys.has(key)&&displacedReserved.set(key,entry))}for(const[key,entry]of displacedReserved){if(projectedIndex.has(key))continue;let replacement=projected.length-1;for(;replacement>=0&&reservedKeys.has(entryIdentity(projected[replacement]));)replacement--;if(replacement<0)break;projectedIndex.delete(entryIdentity(projected[replacement])),projected[replacement]=entry,projectedIndex.set(key,replacement)}this.projectedEntriesCache=projected,this.projectionTruncated=seen.size>projected.length}get sortedEntries(){return this.projectedEntriesCache.map((entry,index)=>({entry,index})).sort((a,b)=>{const ak=Number.isFinite(a.entry.startedAt)?a.entry.startedAt:Number.POSITIVE_INFINITY,bk=Number.isFinite(b.entry.startedAt)?b.entry.startedAt:Number.POSITIVE_INFINITY;return ak!==bk?ak-bk:a.index-b.index}).map(({entry})=>entry)}get reviewingEntry(){return this.reviewingEntryKey===void 0?void 0:this.projectedEntriesCache.find(entry=>entryIdentity(entry)===this.reviewingEntryKey)}durationFor(entry){if(entry.startedAt==null||entry.endedAt==null)return;const diff=entry.endedAt-entry.startedAt;return Number.isFinite(diff)?diff:void 0}normalizedDate(ms){if(ms==null||!Number.isFinite(ms))return;const date=new Date(ms);return Number.isNaN(date.getTime())?void 0:date}onChipSelect(entry,event){if(event.stopPropagation(),entry.needsApproval&&entry.approved===void 0){this.reviewingEntryKey=entryIdentity(entry);return}this.emit("lr-tool-activate",entryCorrelation(entry))}entryStillNeedsApproval(key){const entries=Array.isArray(this.entries)?this.entries:[];for(const sourceEntry of entries){const projected=projectToolTimelineEntry(sourceEntry);if(projected!==void 0&&entryIdentity(projected)===key)return projected.needsApproval===!0&&projected.approved===void 0}return!1}finalizePendingApproval(){this.approvalPending!==null&&(this.approvalPending=null,this.reviewingEntryKey=void 0)}revertPendingApproval(){this.approvalPending!==null&&(this.approvalPending=null)}onDetailsToggle(entry,event){event.stopPropagation();const key=entryIdentity(entry),next=new Set(this.openedEntryIds);event.detail.open?next.add(key):next.delete(key),this.openedEntryIds=next}stopOwnedEvent(event){event.stopPropagation()}onRenderError(entry,event){event.stopPropagation(),this.emit("lr-tool-render-error",{...entryCorrelation(entry),...event.detail})}redactedEntry(entry,placeholder){const redacted=redactToolDetail({args:entry.args,result:entry.result,error:entry.error},entry.redactedFields,placeholder,this.redactionCache.get(entry));return this.redactionCache.set(entry,redacted),redacted}openedDetailsTemplate(entry,placeholder){const redacted=this.redactedEntry(entry,placeholder);return html`
|
|
2
2
|
<lr-tool-result-view
|
|
3
3
|
part="entry-result"
|
|
4
4
|
tool-name=${entry.name}
|
|
@@ -20,6 +20,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
20
20
|
${started?html`<time part="entry-timestamp" datetime=${started.toISOString()}>${formatter(started)}</time>`:nothing}
|
|
21
21
|
<lr-tool-call-chip
|
|
22
22
|
.name=${entry.name}
|
|
23
|
+
.displayName=${entry.displayName}
|
|
23
24
|
.status=${entry.status}
|
|
24
25
|
.durationMs=${durationMs}
|
|
25
26
|
.icon=${entry.icon??""}
|
|
@@ -42,7 +43,7 @@ var __decorate=function(decorators,target,key,desc){var c=arguments.length,r=c<3
|
|
|
42
43
|
</div>
|
|
43
44
|
<lr-details
|
|
44
45
|
part="entry-details"
|
|
45
|
-
.summary=${this.localize("toolTimelineDetailsFor",void 0,{name:entry.name})}
|
|
46
|
+
.summary=${this.localize("toolTimelineDetailsFor",void 0,{name:entry.displayName||entry.name})}
|
|
46
47
|
.open=${detailsOpened}
|
|
47
48
|
@lr-show=${this.stopOwnedEvent}
|
|
48
49
|
@lr-after-show=${this.stopOwnedEvent}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{css}from"lit";const styles=css`:host{--_lr-tool-timeline-gap:var(--lr-space-l);--_lr-tool-timeline-marker-size:var(--lr-size-0-625rem);--_lr-tool-timeline-denied-marker-color:var(--lr-color-warning);--_lr-tool-timeline-pending-marker-color:var(--lr-color-text-quiet);--_lr-tool-timeline-pending-approval-border-color:var(--lr-color-warning);display:block}[part=base]{gap:var(--lr-tool-timeline-gap,var(--_lr-tool-timeline-gap));flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part=entry]{grid-template-columns:var(--lr-tool-timeline-marker-size,var(--_lr-tool-timeline-marker-size)) 1fr;column-gap:var(--lr-space-m);display:grid}[part=entry-marker]{flex-direction:column;grid-area:1/1/-1;align-items:center;display:flex}[part=entry-marker]:before{content:"";inline-size:var(--lr-tool-timeline-marker-size,var(--_lr-tool-timeline-marker-size));block-size:var(--lr-tool-timeline-marker-size,var(--_lr-tool-timeline-marker-size));border-radius:var(--lr-radius-pill);background:var(--lr-tool-timeline-pending-marker-color,var(--_lr-tool-timeline-pending-marker-color));flex:none;margin-block-start:var(--lr-size-0-3em)}[part=entry]:not(:last-child) [part=entry-marker]:after{content:"";inline-size:var(--lr-border-width-thin);min-block-size:var(--lr-space-l);background:var(--lr-color-border-subtle);flex:auto;margin-block-start:var(--lr-space-2xs)}[part=entry][data-status=running] [part=entry-marker]:before{background:var(--lr-tool-timeline-running-marker-color,var(--lr-color-brand))}[part=entry][data-status=success] [part=entry-marker]:before{background:var(--lr-tool-timeline-success-marker-color,var(--lr-color-success))}[part=entry][data-status=error] [part=entry-marker]:before{background:var(--lr-tool-timeline-error-marker-color,var(--lr-color-danger))}[part=entry][data-status=denied] [part=entry-marker]:before{background:var(--lr-tool-timeline-denied-marker-color,var(--_lr-tool-timeline-denied-marker-color))}[part=entry-body]{gap:var(--lr-space-2xs);flex-direction:column;grid-column:2;min-inline-size:0;display:flex}[part=entry-header]{align-items:center;gap:var(--lr-space-s);flex-wrap:wrap;display:flex}[part=entry-header]>*{min-inline-size:0}[part=entry][data-pending-approval=true] [part=entry-body]{border-inline-start:var(--lr-border-width-medium) solid var(--lr-tool-timeline-pending-approval-border-color,var(--_lr-tool-timeline-pending-approval-border-color));padding-inline-start:var(--lr-space-s)}[part=entry-timestamp]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);font-variant-numeric:tabular-nums;flex:none}lr-tool-call-chip{min-inline-size:0;max-inline-size:100%}[part=entry-retries]{align-items:baseline;gap:var(--lr-size-0-3em);padding:var(--lr-size-0-1rem) var(--lr-space-xs);border-radius:var(--lr-radius-pill);background:var(--lr-color-surface-raised);font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);display:inline-flex}[part=entry-retries-count]{font-variant-numeric:tabular-nums;font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text)}[part=entry-approval-status]{padding:var(--lr-size-0-1rem) var(--lr-space-xs);border-radius:var(--lr-radius-pill);font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--lr-size-0-03em);flex:none}[part=entry-approval-status][data-decision=approved]{background:var(--lr-tool-timeline-approved-bg,var(--lr-color-success-quiet));color:var(--lr-tool-timeline-approved-color,var(--lr-color-success))}[part=entry-approval-status][data-decision=denied]{background:var(--lr-tool-timeline-denied-bg,var(--lr-color-danger-quiet));color:var(--lr-tool-timeline-denied-color,var(--lr-color-danger))}[part=entry-redacted-indicator]{color:var(--lr-color-text-quiet);flex:none;display:inline-flex}[part=entry-redacted-indicator] svg{inline-size:var(--lr-size-0-875em);block-size:var(--lr-size-0-875em)}[part=entry-details]{font-size:var(--lr-font-size-sm)}[part=entry-error]{color:var(--lr-tool-timeline-error-color,var(--lr-color-danger));overflow-wrap:anywhere;font-size:var(--lr-font-size-sm);white-space:pre-wrap;margin:0}[part=limit]{margin-block:var(--lr-space-s) 0;color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm)}`;export{styles};
|
|
1
|
+
import{css}from"lit";const styles=css`:host{--_lr-tool-timeline-gap:var(--lr-space-l);--_lr-tool-timeline-marker-size:var(--lr-size-0-625rem);--_lr-tool-timeline-denied-marker-color:var(--lr-color-warning);--_lr-tool-timeline-pending-marker-color:var(--lr-color-text-quiet);--_lr-tool-timeline-incomplete-marker-color:var(--lr-color-text-quiet);--_lr-tool-timeline-pending-approval-border-color:var(--lr-color-warning);display:block}[part=base]{gap:var(--lr-tool-timeline-gap,var(--_lr-tool-timeline-gap));flex-direction:column;margin:0;padding:0;list-style:none;display:flex}[part=entry]{grid-template-columns:var(--lr-tool-timeline-marker-size,var(--_lr-tool-timeline-marker-size)) 1fr;column-gap:var(--lr-space-m);display:grid}[part=entry-marker]{flex-direction:column;grid-area:1/1/-1;align-items:center;display:flex}[part=entry-marker]:before{content:"";inline-size:var(--lr-tool-timeline-marker-size,var(--_lr-tool-timeline-marker-size));block-size:var(--lr-tool-timeline-marker-size,var(--_lr-tool-timeline-marker-size));border-radius:var(--lr-radius-pill);background:var(--lr-tool-timeline-pending-marker-color,var(--_lr-tool-timeline-pending-marker-color));flex:none;margin-block-start:var(--lr-size-0-3em)}[part=entry]:not(:last-child) [part=entry-marker]:after{content:"";inline-size:var(--lr-border-width-thin);min-block-size:var(--lr-space-l);background:var(--lr-color-border-subtle);flex:auto;margin-block-start:var(--lr-space-2xs)}[part=entry][data-status=running] [part=entry-marker]:before{background:var(--lr-tool-timeline-running-marker-color,var(--lr-color-brand))}[part=entry][data-status=success] [part=entry-marker]:before{background:var(--lr-tool-timeline-success-marker-color,var(--lr-color-success))}[part=entry][data-status=error] [part=entry-marker]:before{background:var(--lr-tool-timeline-error-marker-color,var(--lr-color-danger))}[part=entry][data-status=denied] [part=entry-marker]:before{background:var(--lr-tool-timeline-denied-marker-color,var(--_lr-tool-timeline-denied-marker-color))}[part=entry][data-status=incomplete] [part=entry-marker]:before{background:var(--lr-tool-timeline-incomplete-marker-color,var(--_lr-tool-timeline-incomplete-marker-color))}[part=entry-body]{gap:var(--lr-space-2xs);flex-direction:column;grid-column:2;min-inline-size:0;display:flex}[part=entry-header]{align-items:center;gap:var(--lr-space-s);flex-wrap:wrap;display:flex}[part=entry-header]>*{min-inline-size:0}[part=entry][data-pending-approval=true] [part=entry-body]{border-inline-start:var(--lr-border-width-medium) solid var(--lr-tool-timeline-pending-approval-border-color,var(--_lr-tool-timeline-pending-approval-border-color));padding-inline-start:var(--lr-space-s)}[part=entry-timestamp]{font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);font-variant-numeric:tabular-nums;flex:none}lr-tool-call-chip{min-inline-size:0;max-inline-size:100%}[part=entry-retries]{align-items:baseline;gap:var(--lr-size-0-3em);padding:var(--lr-size-0-1rem) var(--lr-space-xs);border-radius:var(--lr-radius-pill);background:var(--lr-color-surface-raised);font-size:var(--lr-font-size-xs);color:var(--lr-color-text-quiet);display:inline-flex}[part=entry-retries-count]{font-variant-numeric:tabular-nums;font-weight:var(--lr-font-weight-semibold);color:var(--lr-color-text)}[part=entry-approval-status]{padding:var(--lr-size-0-1rem) var(--lr-space-xs);border-radius:var(--lr-radius-pill);font-size:var(--lr-font-size-xs);font-weight:var(--lr-font-weight-semibold);text-transform:uppercase;letter-spacing:var(--lr-size-0-03em);flex:none}[part=entry-approval-status][data-decision=approved]{background:var(--lr-tool-timeline-approved-bg,var(--lr-color-success-quiet));color:var(--lr-tool-timeline-approved-color,var(--lr-color-success))}[part=entry-approval-status][data-decision=denied]{background:var(--lr-tool-timeline-denied-bg,var(--lr-color-danger-quiet));color:var(--lr-tool-timeline-denied-color,var(--lr-color-danger))}[part=entry-redacted-indicator]{color:var(--lr-color-text-quiet);flex:none;display:inline-flex}[part=entry-redacted-indicator] svg{inline-size:var(--lr-size-0-875em);block-size:var(--lr-size-0-875em)}[part=entry-details]{font-size:var(--lr-font-size-sm)}[part=entry-error]{color:var(--lr-tool-timeline-error-color,var(--lr-color-danger));overflow-wrap:anywhere;font-size:var(--lr-font-size-sm);white-space:pre-wrap;margin:0}[part=limit]{margin-block:var(--lr-space-s) 0;color:var(--lr-color-text-quiet);font-size:var(--lr-font-size-sm)}`;export{styles};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type{LyraToolStatus}from'../../../internal/shared-unions.js';export type LyraSpanKind='agent'|'llm'|'tool'|'retriever'|'embedding'|'other';
|
|
2
2
|
/** The same tool-lifecycle vocabulary `<lr-tool-call-chip>`'s `ToolCallStatus` and
|
|
3
|
-
* `<lr-tool-result-dialog>`'s `ToolResultStatus`
|
|
4
|
-
* identically to the call itself. */
|
|
3
|
+
* `<lr-tool-result-dialog>`'s `ToolResultStatus` build on (those two add only `incomplete`) -- a
|
|
4
|
+
* span standing in for a call reads identically to the call itself. */
|
|
5
5
|
export type LyraSpanStatus=LyraToolStatus;
|
|
6
6
|
/** Normalizes foreign provider data before it reaches closed span-kind maps. */
|
|
7
7
|
export declare function normalizeLyraSpanKind(value:unknown):LyraSpanKind;
|
|
@@ -205,7 +205,9 @@ private forcedColorFill;private styleColor;
|
|
|
205
205
|
* hard-coded `fallback` so the token can itself default to a `--lr-*` design token (mirrors
|
|
206
206
|
* `LyraChart.styleNumber()`).
|
|
207
207
|
*/
|
|
208
|
-
private styleNumber;
|
|
208
|
+
private styleNumber;
|
|
209
|
+
/** Isolates each drawn tooltip line in its own first-strong direction (see chart-bidi.ts). */
|
|
210
|
+
private readonly tooltipIsolationPlugin;private buildConfig;private draw;private drawIfVisible;
|
|
209
211
|
/**
|
|
210
212
|
* A sibling `<lr-chart>` registering `chartjs-plugin-annotation` globally leaves this instance
|
|
211
213
|
* without the plugin's per-chart state (created only in `beforeInit`), so the plugin would throw
|